|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import type { FC } from 'react'
- import {
- useCallback,
- useMemo,
- } from 'react'
- import { debounce } from 'lodash-es'
- import { useStore } from '../store'
- import { useResizePanel } from '../nodes/_base/hooks/use-resize-panel'
- import Panel from './panel'
- import cn from '@/utils/classnames'
-
- const VariableInspectPanel: FC = () => {
- const showVariableInspectPanel = useStore(s => s.showVariableInspectPanel)
- const workflowCanvasHeight = useStore(s => s.workflowCanvasHeight)
- const variableInspectPanelHeight = useStore(s => s.variableInspectPanelHeight)
- const setVariableInspectPanelHeight = useStore(s => s.setVariableInspectPanelHeight)
-
- const maxHeight = useMemo(() => {
- if (!workflowCanvasHeight)
- return 480
- return workflowCanvasHeight - 60
- }, [workflowCanvasHeight])
-
- const handleResize = useCallback((width: number, height: number) => {
- localStorage.setItem('workflow-variable-inpsect-panel-height', `${height}`)
- setVariableInspectPanelHeight(height)
- }, [setVariableInspectPanelHeight])
-
- const {
- triggerRef,
- containerRef,
- } = useResizePanel({
- direction: 'vertical',
- triggerDirection: 'top',
- minHeight: 120,
- maxHeight,
- onResize: debounce(handleResize),
- })
-
- if (!showVariableInspectPanel)
- return null
-
- return (
- <div className={cn('relative pb-1')}>
- <div
- ref={triggerRef}
- className='absolute -top-1 left-0 flex h-1 w-full cursor-row-resize resize-y items-center justify-center'>
- <div className='h-0.5 w-10 rounded-sm bg-state-base-handle hover:w-full hover:bg-state-accent-solid active:w-full active:bg-state-accent-solid'></div>
- </div>
- <div
- ref={containerRef}
- className={cn('overflow-hidden rounded-2xl border-[0.5px] border-components-panel-border bg-components-panel-bg shadow-xl')}
- style={{ height: `${variableInspectPanelHeight}px` }}
- >
- <Panel />
- </div>
- </div>
- )
- }
-
- export default VariableInspectPanel
|