UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 4.4 kB
{"version":3,"file":"DraggablePanel.mjs","names":[],"sources":["../../../src/base-ui/DraggablePanel/DraggablePanel.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, useCallback } from 'react';\n\nimport {\n DraggablePanelContent,\n DraggablePanelHandle,\n DraggablePanelRoot,\n DraggablePanelToggle,\n} from './atoms';\nimport { AXES } from './core/axes';\nimport type { DraggablePanelProps, DraggablePanelSize } from './type';\n\nconst toNumber = (value: number | string | undefined) =>\n typeof value === 'number' ? Math.max(value, 0) : undefined;\n\nconst DraggablePanel = memo<DraggablePanelProps>(\n ({\n backgroundColor,\n children,\n className,\n classNames,\n collapseThreshold,\n defaultExpand,\n defaultSize,\n expand,\n expandable = true,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n mode = 'fixed',\n onExpandChange,\n onSizeChange,\n onSizeDragging,\n placement = 'right',\n showBorder = true,\n showHandleWhenCollapsed,\n showHandleWideArea = true,\n size,\n style,\n styles: customStyles,\n ...rest\n }) => {\n const { vertical } = AXES[placement];\n\n const toSize = useCallback(\n (value: number): DraggablePanelSize =>\n vertical ? { height: value, width: '100%' } : { height: '100%', width: value },\n [vertical],\n );\n const toDelta = useCallback(\n (value: number): DraggablePanelSize =>\n vertical ? { height: value, width: 0 } : { height: 0, width: value },\n [vertical],\n );\n\n const handleSizeChange = useCallback(\n (next: number, delta: number) => onSizeChange?.(toDelta(delta), toSize(next)),\n [onSizeChange, toDelta, toSize],\n );\n const handleSizeDragging = useCallback(\n (next: number, delta: number) => onSizeDragging?.(toDelta(delta), toSize(next)),\n [onSizeDragging, toDelta, toSize],\n );\n\n return (\n <DraggablePanelRoot\n backgroundColor={backgroundColor}\n className={className}\n collapseThreshold={collapseThreshold}\n defaultExpand={defaultExpand}\n defaultSize={toNumber(vertical ? defaultSize?.height : defaultSize?.width)}\n expand={expand}\n expandable={expandable}\n max={toNumber(vertical ? maxHeight : maxWidth)}\n min={toNumber(vertical ? minHeight : minWidth) ?? 0}\n mode={mode}\n placement={placement}\n showBorder={showBorder}\n size={toNumber(vertical ? size?.height : size?.width)}\n onExpandChange={onExpandChange}\n onSizeChange={handleSizeChange}\n onSizeDragging={handleSizeDragging}\n {...rest}\n >\n <DraggablePanelToggle showHandleWhenCollapsed={showHandleWhenCollapsed} />\n <DraggablePanelContent\n className={cx(classNames?.content)}\n style={{ ...customStyles?.content, ...style }}\n >\n {children}\n </DraggablePanelContent>\n <DraggablePanelHandle wideArea={showHandleWideArea} />\n </DraggablePanelRoot>\n );\n },\n);\n\nDraggablePanel.displayName = 'DraggablePanel';\n\nexport default DraggablePanel;\n"],"mappings":";;;;;;;AAcA,MAAM,YAAY,UAChB,OAAO,UAAU,WAAW,KAAK,IAAI,OAAO,CAAC,IAAI,KAAA;AAEnD,MAAM,iBAAiB,MACpB,EACC,iBACA,UACA,WACA,YACA,mBACA,eACA,aACA,QACA,aAAa,MACb,WACA,UACA,WACA,UACA,OAAO,SACP,gBACA,cACA,gBACA,YAAY,SACZ,aAAa,MACb,yBACA,qBAAqB,MACrB,MACA,OACA,QAAQ,cACR,GAAG,WACC;CACJ,MAAM,EAAE,aAAa,KAAK;CAE1B,MAAM,SAAS,aACZ,UACC,WAAW;EAAE,QAAQ;EAAO,OAAO;CAAO,IAAI;EAAE,QAAQ;EAAQ,OAAO;CAAM,GAC/E,CAAC,QAAQ,CACX;CACA,MAAM,UAAU,aACb,UACC,WAAW;EAAE,QAAQ;EAAO,OAAO;CAAE,IAAI;EAAE,QAAQ;EAAG,OAAO;CAAM,GACrE,CAAC,QAAQ,CACX;CAEA,MAAM,mBAAmB,aACtB,MAAc,UAAkB,eAAe,QAAQ,KAAK,GAAG,OAAO,IAAI,CAAC,GAC5E;EAAC;EAAc;EAAS;CAAM,CAChC;CACA,MAAM,qBAAqB,aACxB,MAAc,UAAkB,iBAAiB,QAAQ,KAAK,GAAG,OAAO,IAAI,CAAC,GAC9E;EAAC;EAAgB;EAAS;CAAM,CAClC;CAEA,OACE,qBAAC,oBAAD;EACmB;EACN;EACQ;EACJ;EACf,aAAa,SAAS,WAAW,aAAa,SAAS,aAAa,KAAK;EACjE;EACI;EACZ,KAAK,SAAS,WAAW,YAAY,QAAQ;EAC7C,KAAK,SAAS,WAAW,YAAY,QAAQ,KAAK;EAC5C;EACK;EACC;EACZ,MAAM,SAAS,WAAW,MAAM,SAAS,MAAM,KAAK;EACpC;EAChB,cAAc;EACd,gBAAgB;EAChB,GAAI;EAjBN,UAAA;GAmBE,oBAAC,sBAAD,EAA+C,wBAA0B,CAAA;GACzE,oBAAC,uBAAD;IACE,WAAW,GAAG,YAAY,OAAO;IACjC,OAAO;KAAE,GAAG,cAAc;KAAS,GAAG;IAAM;IAE3C;GACoB,CAAA;GACvB,oBAAC,sBAAD,EAAsB,UAAU,mBAAqB,CAAA;EACnC;;AAExB,CACF;AAEA,eAAe,cAAc"}