All files / modules/72-templates-library/components/TemplateStudio/StepTemplateCanvas StepTemplateCanvas.tsx

92.31% Statements 12/13
50% Branches 1/2
50% Functions 1/2
92.31% Lines 12/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43              12x 12x 12x   12x 12x   12x 1x 1x 1x     1x       1x                                 12x  
/*
 * Copyright 2021 Harness Inc. All rights reserved.
 * Use of this source code is governed by the PolyForm Shield 1.0.0 license
 * that can be found in the licenses directory at the root of this repository, also available at
 * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
 */
 
import React from 'react'
import SplitPane from 'react-split-pane'
import { debounce } from 'lodash-es'
import type { TemplateFormRef } from '@templates-library/components/TemplateStudio/TemplateStudio'
import { StepTemplateFormWithRef } from '@templates-library/components/TemplateStudio/StepTemplateCanvas/StepTemplateForm/StepTemplateForm'
import { StepTemplateDiagram } from '@templates-library/components/TemplateStudio/StepTemplateCanvas/StepTemplateDiagram/StepTemplateDiagram'
 
const StepTemplateCanvas = (_props: unknown, formikRef: TemplateFormRef) => {
  const [splitPaneSize, setSplitPaneSize] = React.useState(200)
  const setSplitPaneSizeDeb = React.useRef(debounce(setSplitPaneSize, 200))
  const handleStageResize = (size: number): void => {
    setSplitPaneSizeDeb.current(size)
  }
  const resizerStyle = navigator.userAgent.match(/firefox/i)
    ? { display: 'flow-root list-item' }
    : { display: 'inline-table' }
 
  return (
    <SplitPane
      size={splitPaneSize}
      split="horizontal"
      minSize={160}
      maxSize={300}
      style={{ overflow: 'auto' }}
      pane2Style={{ overflow: 'initial', zIndex: 2 }}
      resizerStyle={resizerStyle}
      onChange={handleStageResize}
    >
      <StepTemplateDiagram />
      <StepTemplateFormWithRef ref={formikRef} />
    </SplitPane>
  )
}
 
export const StepTemplateCanvasWithRef = React.forwardRef(StepTemplateCanvas)