@bioturing/components 0.38.0 → 0.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/components/base-menu/index.js +3 -3
  2. package/dist/components/cmdk/index.d.ts +2 -2
  3. package/dist/components/combobox/component.js.map +1 -1
  4. package/dist/components/data-table/component.js +7 -7
  5. package/dist/components/data-table/component.js.map +1 -1
  6. package/dist/components/data-table/hooks.d.ts.map +1 -1
  7. package/dist/components/data-table/hooks.js +73 -61
  8. package/dist/components/data-table/hooks.js.map +1 -1
  9. package/dist/components/dropdown-menu/component.d.ts +4 -2
  10. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  11. package/dist/components/dropdown-menu/component.js +153 -154
  12. package/dist/components/dropdown-menu/component.js.map +1 -1
  13. package/dist/components/dropdown-menu/divider.js +6 -6
  14. package/dist/components/dropdown-menu/divider.js.map +1 -1
  15. package/dist/components/dropdown-menu/item.d.ts.map +1 -1
  16. package/dist/components/dropdown-menu/item.js +27 -26
  17. package/dist/components/dropdown-menu/item.js.map +1 -1
  18. package/dist/components/dropdown-menu/style.css +1 -1
  19. package/dist/components/dropdown-menu/types.d.ts +2 -2
  20. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  21. package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -1
  22. package/dist/components/dropdown-menu/useDropdownMenu.js +72 -68
  23. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  24. package/dist/components/popup-panel/component.d.ts +13 -1
  25. package/dist/components/popup-panel/component.d.ts.map +1 -1
  26. package/dist/components/popup-panel/component.js +102 -95
  27. package/dist/components/popup-panel/component.js.map +1 -1
  28. package/dist/components/toast/function.d.ts +8 -8
  29. package/dist/components/toast/function.d.ts.map +1 -1
  30. package/dist/components/toast/function.js.map +1 -1
  31. package/dist/components/tree/components.d.ts.map +1 -1
  32. package/dist/components/tree/components.js +50 -40
  33. package/dist/components/tree/components.js.map +1 -1
  34. package/dist/components/tree/style.css +1 -1
  35. package/dist/components/tree/types.d.ts +4 -0
  36. package/dist/components/tree/types.d.ts.map +1 -1
  37. package/dist/components/tree/useTreeCommon.d.ts +1 -0
  38. package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
  39. package/dist/components/tree/useTreeCommon.js +21 -19
  40. package/dist/components/tree/useTreeCommon.js.map +1 -1
  41. package/dist/stats.html +1 -1
  42. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport { Popover } from \"@base-ui-components/react/popover\";\nimport {\n BaseUIAlign,\n BaseUISide,\n buildAntdPlacement,\n clsx,\n parseAntdPlacement,\n useCls,\n} from \"../utils\";\n\nimport { X } from \"@bioturing/assets\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useControlledState, useDraggable } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\nimport { PopupPanelSize } from \"./constants\";\n\n// Import component-specific styles\nimport { useRef } from \"react\";\nimport { useTheme } from \"../theme-provider\";\nimport \"./style.css\";\nimport { anchorToResizeHandles } from \"./utils\";\n\nexport interface PopupPanelProps\n extends Omit<\n React.ComponentPropsWithRef<\"div\">,\n \"title\" | \"content\" | \"children\"\n >,\n Omit<Popover.Root.Props, \"children\"> {\n /** The trigger element that opens the popup panel */\n children?: React.ComponentProps<typeof Popover.Trigger>[\"render\"];\n /** Placement of the popup panel relative to its trigger */\n placement?: PopoverProps[\"placement\"];\n /** Whether to open the popup panel on hover */\n openOnHover?: boolean;\n /** Controls the open state of the popup panel */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: Popover.Root.Props[\"onOpenChange\"];\n /** Content to display inside the popup panel */\n content?: React.ReactNode;\n /** Title text or element to display in the panel header */\n title?: React.ReactNode;\n /** The event that triggers the popup panel */\n /**\n * @default \"click\"\n */\n trigger?: \"click\" | \"hover\";\n /** Custom anchor element for positioning the panel */\n anchor?: Popover.Positioner.Props[\"anchor\"];\n /** Content to display before the close button */\n beforeCloseButton?: React.ReactNode;\n /** Content to display after the close button */\n afterCloseButton?: React.ReactNode;\n /** Content to display after the title */\n afterTitle?: React.ReactNode;\n /**\n * Predefined sizes for the popup panel\n * - xsmall: 320px\n * - small: 400px\n * - medium: 480px (default)\n * - large: 640px\n * - xlarge: 840px\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?: keyof typeof PopupPanelSize;\n /**\n * Footer content for the popup panel\n * Can be a React node or a function that returns a React node\n */\n footer?:\n | React.ReactNode\n | ((props: { close: () => void }) => React.ReactNode);\n /**\n * Whether the panel should be open by default when uncontrolled\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Whether the panel should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Whether the panel should be draggable\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether to maintain aspect ratio when resizing\n * Only applies when resizable is true\n * @default false\n */\n maintainAspectRatio?: boolean;\n /**\n * Custom class names for different parts of the popup panel\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n header?: string;\n title?: string;\n content?: string;\n footer?: string;\n resizeHandle?: string;\n };\n /**\n * Whether to close the panel when clicking outside\n * @default true\n */\n closeOnClickOutside?: boolean;\n /**\n * Whether to use modal mode\n * @default false\n */\n modal?: Popover.Root.Props[\"modal\"];\n /**\n * Callback function when the placement changes\n */\n onPlacementChange?: (placement: PopoverProps[\"placement\"]) => void;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen = false,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n // const positionerRef = useRef<HTMLDivElement>(null);\n\n const currentSideRef = useRef<BaseUISide>(baseUIPlacement.side);\n const currentAlignRef = useRef<BaseUIAlign>(baseUIPlacement.align);\n const [placementChangeKey, setPlacementChangeKey] = useState(0);\n const [positionerRef, setPositionerRef] = useState<HTMLDivElement | null>(\n null\n );\n\n useEffect(() => {\n if (!positionerRef || !open) return; // Only observe when popup is open\n\n // Create MutationObserver to watch for data-side changes\n const observer = new MutationObserver((mutations) => {\n let hasPlacementChanged = false;\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-side\"\n ) {\n const newSide = positionerRef.getAttribute(mutation.attributeName);\n if (newSide && newSide !== currentSideRef.current) {\n currentSideRef.current = newSide as BaseUISide;\n hasPlacementChanged = true;\n }\n }\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-align\"\n ) {\n const newAlign = positionerRef.getAttribute(mutation.attributeName);\n if (newAlign && newAlign !== currentAlignRef.current) {\n currentAlignRef.current = newAlign as BaseUIAlign;\n hasPlacementChanged = true;\n }\n }\n });\n\n // Only trigger callbacks if placement actually changed\n if (hasPlacementChanged) {\n const newPlacement = buildAntdPlacement({\n side: currentSideRef.current,\n align: currentAlignRef.current,\n });\n\n // Trigger resizable dimensions reset when placement changes\n setPlacementChangeKey((prev) => prev + 1);\n\n if (onPlacementChange) {\n onPlacementChange(newPlacement);\n }\n }\n });\n\n // Start observing\n observer.observe(positionerRef, {\n attributes: true,\n attributeFilter: [\"data-side\", \"data-align\"],\n attributeOldValue: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, [onPlacementChange, open, positionerRef]);\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n );\n\n return (\n <Popover.Root\n openOnHover={trigger === \"hover\" ? true : openOnHover}\n open={open}\n onOpenChange={(open, eventDetails) => {\n if (\n (eventDetails.reason === \"outside-press\" ||\n eventDetails.reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(open, eventDetails);\n }}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n render={children}\n className={clsx(cls(\"popup-panel-trigger\"), classNames?.trigger)}\n ></Popover.Trigger>\n <Popover.Portal>\n <Popover.Positioner\n ref={setPositionerRef}\n className={clsx(\n cls(\"popup-panel-root\"),\n themeClassName,\n classNames?.root\n )}\n side={baseUIPlacement.side}\n align={baseUIPlacement.align}\n sideOffset={4}\n anchor={anchor}\n style={\n {\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties\n }\n render={({ children, onDragEnd, onDragStart, ...props }) => {\n return resizable ? (\n <Resizable\n resizable={resizable}\n resetKey={placementChangeKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n handles={anchorToResizeHandles(\n currentSideRef.current,\n currentAlignRef.current\n )}\n {...props}\n >\n {children}\n </Resizable>\n ) : (\n <div {...props}>{children}</div>\n );\n }}\n >\n {popup}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["PopupPanel","children","placement","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","onPlacementChange","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","defaultCloseIcon","useMemo","jsx","X","currentSideRef","useRef","currentAlignRef","placementChangeKey","setPlacementChangeKey","useState","positionerRef","setPositionerRef","useEffect","observer","mutations","hasPlacementChanged","mutation","newSide","newAlign","newPlacement","buildAntdPlacement","prev","renderTitle","useCallback","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","eventDetails","PopupPanelSize","onDragEnd","onDragStart","props","Resizable","anchorToResizeHandles"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/popup-panel/component.tsx"],"sourcesContent":["\"use client\";\nimport { Popover } from \"@base-ui-components/react/popover\";\nimport {\n BaseUIAlign,\n BaseUISide,\n buildAntdPlacement,\n clsx,\n parseAntdPlacement,\n useCls,\n} from \"../utils\";\n\nimport { mergeProps } from \"@base-ui-components/react\";\nimport { X } from \"@bioturing/assets\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useControlledState, useDraggable } from \"../hooks\";\nimport { IconButton } from \"../icon-button\";\nimport { Resizable } from \"../resizable\";\nimport { Stack } from \"../stack\";\nimport { PopupPanelSize } from \"./constants\";\n\n// Import component-specific styles\nimport { useRef } from \"react\";\nimport { useTheme } from \"../theme-provider\";\nimport \"./style.css\";\nimport { anchorToResizeHandles } from \"./utils\";\n\nexport interface PopupPanelProps\n extends Omit<\n React.ComponentPropsWithRef<\"div\">,\n \"title\" | \"content\" | \"children\"\n >,\n Omit<Popover.Root.Props, \"children\"> {\n /** The trigger element that opens the popup panel */\n children?: React.ComponentProps<typeof Popover.Trigger>[\"render\"];\n /** Placement of the popup panel relative to its trigger */\n placement?: PopoverProps[\"placement\"];\n /** Whether to open the popup panel on hover */\n openOnHover?: boolean;\n /** Controls the open state of the popup panel */\n open?: boolean;\n /** Callback fired when the open state changes */\n onOpenChange?: Popover.Root.Props[\"onOpenChange\"];\n /** Content to display inside the popup panel */\n content?: React.ReactNode;\n /** Title text or element to display in the panel header */\n title?: React.ReactNode;\n /** The event that triggers the popup panel */\n /**\n * @default \"click\"\n */\n trigger?: \"click\" | \"hover\";\n /** Custom anchor element for positioning the panel */\n anchor?: Popover.Positioner.Props[\"anchor\"];\n /** Content to display before the close button */\n beforeCloseButton?: React.ReactNode;\n /** Content to display after the close button */\n afterCloseButton?: React.ReactNode;\n /** Content to display after the title */\n afterTitle?: React.ReactNode;\n /**\n * Predefined sizes for the popup panel\n * - xsmall: 320px\n * - small: 400px\n * - medium: 480px (default)\n * - large: 640px\n * - xlarge: 840px\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?: keyof typeof PopupPanelSize;\n /**\n * Footer content for the popup panel\n * Can be a React node or a function that returns a React node\n */\n footer?:\n | React.ReactNode\n | ((props: { close: () => void }) => React.ReactNode);\n /**\n * Whether the panel should be open by default when uncontrolled\n * @default false\n */\n defaultOpen?: boolean;\n /**\n * Whether the panel should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Whether the panel should be draggable\n * @default false\n */\n draggable?: boolean;\n /**\n * Whether to maintain aspect ratio when resizing\n * Only applies when resizable is true\n * @default false\n */\n maintainAspectRatio?: boolean;\n /**\n * Custom class names for different parts of the popup panel\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n header?: string;\n title?: string;\n content?: string;\n footer?: string;\n resizeHandle?: string;\n };\n /**\n * Whether to close the panel when clicking outside\n * @default true\n */\n closeOnClickOutside?: boolean;\n /**\n * Whether to use modal mode\n * @default false\n */\n modal?: Popover.Root.Props[\"modal\"];\n /**\n * Callback function when the placement changes\n */\n onPlacementChange?: (placement: PopoverProps[\"placement\"]) => void;\n /**\n * Props to pass to the positioner\n */\n positionerProps?: Popover.Positioner.Props;\n /**\n * Props to pass to the trigger\n */\n triggerProps?: Popover.Trigger.Props;\n /**\n * Props to pass to the portal\n */\n portalProps?: Popover.Portal.Props;\n}\n\nexport const PopupPanel = ({\n children,\n placement,\n openOnHover = false,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n content,\n title,\n trigger = \"click\",\n className,\n anchor,\n beforeCloseButton,\n afterCloseButton,\n afterTitle,\n size = \"medium\",\n footer,\n defaultOpen = false,\n resizable = false,\n draggable = false,\n maintainAspectRatio = false,\n classNames,\n modal = false,\n closeOnClickOutside = true,\n onPlacementChange,\n positionerProps = {},\n triggerProps = {},\n portalProps = {},\n ...rest\n}: PopupPanelProps) => {\n // Use controlled state with proper initialization to prevent switching between controlled/uncontrolled\n const [open, setOpen] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen // Always provide a default value to prevent undefined\n );\n\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n\n const defaultCloseIcon = useMemo(() => <X size={16} />, []);\n\n // const positionerRef = useRef<HTMLDivElement>(null);\n\n const currentSideRef = useRef<BaseUISide>(baseUIPlacement.side);\n const currentAlignRef = useRef<BaseUIAlign>(baseUIPlacement.align);\n const [placementChangeKey, setPlacementChangeKey] = useState(0);\n const [positionerRef, setPositionerRef] = useState<HTMLDivElement | null>(\n null\n );\n\n useEffect(() => {\n if (!positionerRef || !open) return; // Only observe when popup is open\n\n // Create MutationObserver to watch for data-side changes\n const observer = new MutationObserver((mutations) => {\n let hasPlacementChanged = false;\n mutations.forEach((mutation) => {\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-side\"\n ) {\n const newSide = positionerRef.getAttribute(mutation.attributeName);\n if (newSide && newSide !== currentSideRef.current) {\n currentSideRef.current = newSide as BaseUISide;\n hasPlacementChanged = true;\n }\n }\n if (\n mutation.type === \"attributes\" &&\n mutation.attributeName === \"data-align\"\n ) {\n const newAlign = positionerRef.getAttribute(mutation.attributeName);\n if (newAlign && newAlign !== currentAlignRef.current) {\n currentAlignRef.current = newAlign as BaseUIAlign;\n hasPlacementChanged = true;\n }\n }\n });\n\n // Only trigger callbacks if placement actually changed\n if (hasPlacementChanged) {\n const newPlacement = buildAntdPlacement({\n side: currentSideRef.current,\n align: currentAlignRef.current,\n });\n\n // Trigger resizable dimensions reset when placement changes\n setPlacementChangeKey((prev) => prev + 1);\n\n if (onPlacementChange) {\n onPlacementChange(newPlacement);\n }\n }\n });\n\n // Start observing\n observer.observe(positionerRef, {\n attributes: true,\n attributeFilter: [\"data-side\", \"data-align\"],\n attributeOldValue: true,\n });\n\n return () => {\n observer.disconnect();\n };\n }, [onPlacementChange, open, positionerRef]);\n\n const renderTitle = useCallback(() => {\n return (\n <div className={clsx(cls(\"popup-panel-header\"), classNames?.header)}>\n <Stack\n align=\"center\"\n gap={8}\n className={cls(\"popup-panel-title-wrapper\")}\n >\n <Popover.Title\n render={\n <div className={clsx(cls(\"grow\", \"truncate\"), classNames?.title)}>\n {title}\n </div>\n }\n ></Popover.Title>\n <div className=\"flex items-center gap-2\">\n {beforeCloseButton}\n <Popover.Close\n render={<IconButton>{defaultCloseIcon}</IconButton>}\n />\n {afterCloseButton}\n </div>\n </Stack>\n {afterTitle ? afterTitle : null}\n </div>\n );\n }, [\n afterCloseButton,\n afterTitle,\n beforeCloseButton,\n cls,\n classNames?.header,\n classNames?.title,\n defaultCloseIcon,\n title,\n ]);\n\n const { ref: draggableRef } = useDraggable(draggable);\n\n const popup = (\n <Popover.Popup\n className={clsx(\n cls(\"popup-panel\"),\n cls(`popup-panel-size-${size}`),\n className,\n classNames?.popup\n )}\n ref={draggableRef}\n >\n {title && renderTitle()}\n <div className={clsx(cls(\"popup-panel-content\"), classNames?.content)}>\n <div className={cls(\"popup-panel-content-inner\")}>{content}</div>\n </div>\n {footer && (\n <div className={clsx(cls(\"popup-panel-footer\"), classNames?.footer)}>\n {typeof footer === \"function\"\n ? footer({ close: () => setOpen(false) })\n : footer}\n </div>\n )}\n </Popover.Popup>\n );\n\n const defaultPositionerProps = {\n ref: setPositionerRef,\n className: clsx(cls(\"popup-panel-root\"), themeClassName, classNames?.root),\n side: baseUIPlacement.side,\n align: baseUIPlacement.align,\n sideOffset: 4,\n anchor,\n style: {\n \"--size-width\": size ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties,\n render: ({ children, onDragEnd, onDragStart, ...props }) => {\n return resizable ? (\n <Resizable\n resizable={resizable}\n resetKey={placementChangeKey}\n maintainAspectRatio={maintainAspectRatio}\n classNames={{\n resizeHandle: classNames?.resizeHandle,\n }}\n handles={anchorToResizeHandles(\n currentSideRef.current,\n currentAlignRef.current\n )}\n {...props}\n >\n {children}\n </Resizable>\n ) : (\n <div {...props}>{children}</div>\n );\n },\n };\n\n return (\n <Popover.Root\n open={open}\n onOpenChange={(open, eventDetails) => {\n if (\n (eventDetails.reason === \"outside-press\" ||\n eventDetails.reason === \"focus-out\") &&\n !closeOnClickOutside\n )\n return;\n setOpen(open, eventDetails);\n }}\n modal={modal}\n {...rest}\n >\n <Popover.Trigger\n {...mergeProps(\n {\n render: children,\n className: clsx(cls(\"popup-panel-trigger\"), classNames?.trigger),\n openOnHover: trigger === \"hover\" ? true : openOnHover,\n },\n triggerProps\n )}\n ></Popover.Trigger>\n <Popover.Portal {...portalProps}>\n <Popover.Positioner\n {...mergeProps(defaultPositionerProps, positionerProps)}\n >\n {popup}\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["PopupPanel","children","placement","openOnHover","outsideOpen","outsideOnOpenChange","content","title","trigger","className","anchor","beforeCloseButton","afterCloseButton","afterTitle","size","footer","defaultOpen","resizable","draggable","maintainAspectRatio","classNames","modal","closeOnClickOutside","onPlacementChange","positionerProps","triggerProps","portalProps","rest","open","setOpen","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","defaultCloseIcon","useMemo","jsx","X","currentSideRef","useRef","currentAlignRef","placementChangeKey","setPlacementChangeKey","useState","positionerRef","setPositionerRef","useEffect","observer","mutations","hasPlacementChanged","mutation","newSide","newAlign","newPlacement","buildAntdPlacement","prev","renderTitle","useCallback","jsxs","clsx","Stack","Popover","IconButton","draggableRef","useDraggable","popup","defaultPositionerProps","PopupPanelSize","onDragEnd","onDragStart","props","Resizable","anchorToResizeHandles","eventDetails","mergeProps"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { Toast as BaseToast } from '@base-ui-components/react';
1
+ import { ToastManagerAddOptions } from '@base-ui-components/react';
2
2
  import { ToastData } from './types';
3
- export declare const toastManager: BaseToast.createToastManager.ToastManager;
4
- export declare const toast: ((message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string) & {
5
- info: (message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string;
6
- success: (message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string;
7
- error: (message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string;
8
- warning: (message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string;
9
- progress: (message: string, options?: Omit<BaseToast.useToastManager.AddOptions<ToastData>, "data" | "description">) => string;
3
+ export declare const toastManager: import('@base-ui-components/react').ToastManager;
4
+ export declare const toast: ((message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string) & {
5
+ info: (message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string;
6
+ success: (message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string;
7
+ error: (message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string;
8
+ warning: (message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string;
9
+ progress: (message: string, options?: Omit<ToastManagerAddOptions<ToastData>, "data" | "description">) => string;
10
10
  };
11
11
  //# sourceMappingURL=function.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/components/toast/function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,YAAY,2CAAiC,CAAC;AAuB3D,eAAO,MAAM,KAAK,aAnBL,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;oBAJQ,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;uBAJQ,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;qBAJQ,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;uBAJQ,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;wBAJQ,MAAM,YACL,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAC/C,MAAM,GAAG,aAAa,CACvB;CAqBH,CAAC"}
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/components/toast/function.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,YAAY,kDAAiC,CAAC;AAoB3D,eAAO,MAAM,KAAK,aAhBL,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;oBADhE,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;uBADhE,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;qBADhE,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;uBADhE,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;wBADhE,MAAM,YACL,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAqB3E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"function.js","sources":["../../../src/components/toast/function.ts"],"sourcesContent":["\"use client\";\nimport { Toast as BaseToast } from \"@base-ui-components/react\";\nimport type { ToastData } from \"./types\";\n\nexport const toastManager = BaseToast.createToastManager();\n\nfunction createToastTypeFunction(type: ToastData[\"type\"]) {\n return (\n message: string,\n options?: Omit<\n BaseToast.useToastManager.AddOptions<ToastData>,\n \"data\" | \"description\"\n >\n ) => {\n const toastId = toastManager.add<ToastData>({\n description: message,\n data: {\n type: type,\n },\n // progress and error toasts should not auto close\n ...(type === \"progress\" ? { timeout: 0 } : {}),\n ...options,\n });\n return toastId;\n };\n}\n\nexport const toast = Object.assign(createToastTypeFunction(\"info\"), {\n info: createToastTypeFunction(\"info\"),\n success: createToastTypeFunction(\"success\"),\n error: createToastTypeFunction(\"error\"),\n warning: createToastTypeFunction(\"warning\"),\n progress: createToastTypeFunction(\"progress\"),\n});\n"],"names":["toastManager","BaseToast","createToastTypeFunction","type","message","options","toast"],"mappings":";;AAIO,MAAMA,IAAeC,EAAU,mBAAA;AAEtC,SAASC,EAAwBC,GAAyB;AACxD,SAAO,CACLC,GACAC,MAKgBL,EAAa,IAAe;AAAA,IAC1C,aAAaI;AAAA,IACb,MAAM;AAAA,MACJ,MAAAD;AAAA,IAAA;AAAA;AAAA,IAGF,GAAIA,MAAS,aAAa,EAAE,SAAS,EAAA,IAAM,CAAA;AAAA,IAC3C,GAAGE;AAAA,EAAA,CACJ;AAGL;AAEO,MAAMC,IAAQ,OAAO,OAAOJ,EAAwB,MAAM,GAAG;AAAA,EAClE,MAAMA,EAAwB,MAAM;AAAA,EACpC,SAASA,EAAwB,SAAS;AAAA,EAC1C,OAAOA,EAAwB,OAAO;AAAA,EACtC,SAASA,EAAwB,SAAS;AAAA,EAC1C,UAAUA,EAAwB,UAAU;AAC9C,CAAC;"}
1
+ {"version":3,"file":"function.js","sources":["../../../src/components/toast/function.ts"],"sourcesContent":["\"use client\";\nimport {\n Toast as BaseToast,\n ToastManagerAddOptions,\n} from \"@base-ui-components/react\";\nimport type { ToastData } from \"./types\";\n\nexport const toastManager = BaseToast.createToastManager();\n\nfunction createToastTypeFunction(type: ToastData[\"type\"]) {\n return (\n message: string,\n options?: Omit<ToastManagerAddOptions<ToastData>, \"data\" | \"description\">\n ) => {\n const toastId = toastManager.add<ToastData>({\n description: message,\n data: {\n type: type,\n },\n // progress and error toasts should not auto close\n ...(type === \"progress\" ? { timeout: 0 } : {}),\n ...options,\n });\n return toastId;\n };\n}\n\nexport const toast = Object.assign(createToastTypeFunction(\"info\"), {\n info: createToastTypeFunction(\"info\"),\n success: createToastTypeFunction(\"success\"),\n error: createToastTypeFunction(\"error\"),\n warning: createToastTypeFunction(\"warning\"),\n progress: createToastTypeFunction(\"progress\"),\n});\n"],"names":["toastManager","BaseToast","createToastTypeFunction","type","message","options","toast"],"mappings":";;AAOO,MAAMA,IAAeC,EAAU,mBAAA;AAEtC,SAASC,EAAwBC,GAAyB;AACxD,SAAO,CACLC,GACAC,MAEgBL,EAAa,IAAe;AAAA,IAC1C,aAAaI;AAAA,IACb,MAAM;AAAA,MACJ,MAAAD;AAAA,IAAA;AAAA;AAAA,IAGF,GAAIA,MAAS,aAAa,EAAE,SAAS,EAAA,IAAM,CAAA;AAAA,IAC3C,GAAGE;AAAA,EAAA,CACJ;AAGL;AAEO,MAAMC,IAAQ,OAAO,OAAOJ,EAAwB,MAAM,GAAG;AAAA,EAClE,MAAMA,EAAwB,MAAM;AAAA,EACpC,SAASA,EAAwB,SAAS;AAAA,EAC1C,OAAOA,EAAwB,OAAO;AAAA,EACtC,SAASA,EAAwB,SAAS;AAAA,EAC1C,UAAUA,EAAwB,UAAU;AAC9C,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/components/tree/components.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,KAAK,QAAQ,IAAI,eAAe,EACjC,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG3E,OAAO,aAAa,CAAC;AAIrB,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,eAAe,GAAG,YAAY,EAC7D,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,4CA8BtD,CAAC;AAGF,QAAA,MAAM,kBAAkB,GAAI,CAAC,SAAS,eAAe,GAAG,YAAY,EAClE,OAAO,kBAAkB,CAAC,CAAC,CAAC,EAC5B,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,4CA8BtD,CAAC;AAsBF,eAAO,MAAM,IAAI,IAjBf,CAAC,SAAS,eAAe,2BAElB,SAAS,CAAC,CAAC,CAAC,GAAG;IACpB,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,KACE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;oBAItC,CAAC,SAAS,eAAe,2BAElB,kBAAkB,CAAC,CAAC,CAAC,GAAG;QAC7B,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE,KACE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;;CAM3C,CAAC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/components/tree/components.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,KAAK,QAAQ,IAAI,eAAe,EACjC,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG3E,OAAO,aAAa,CAAC;AAIrB,QAAA,MAAM,aAAa,GAAI,CAAC,SAAS,eAAe,GAAG,YAAY,EAC7D,OAAO,SAAS,CAAC,CAAC,CAAC,EACnB,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,4CAmCtD,CAAC;AAGF,QAAA,MAAM,kBAAkB,GAAI,CAAC,SAAS,eAAe,GAAG,YAAY,EAClE,OAAO,kBAAkB,CAAC,CAAC,CAAC,EAC5B,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,4CAmCtD,CAAC;AAsBF,eAAO,MAAM,IAAI,IAjBf,CAAC,SAAS,eAAe,2BAElB,SAAS,CAAC,CAAC,CAAC,GAAG;IACpB,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjE,KACE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;oBAItC,CAAC,SAAS,eAAe,2BAElB,kBAAkB,CAAC,CAAC,CAAC,GAAG;QAC7B,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjE,KACE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;;CAM3C,CAAC"}
@@ -1,69 +1,79 @@
1
1
  "use client";
2
2
  import { jsx as T } from "react/jsx-runtime";
3
- import p from "antd/es/tree";
4
- import { forwardRef as l } from "react";
5
- import { useTreeCommon as u } from "./useTreeCommon.js";
3
+ import m from "antd/es/tree";
4
+ import { forwardRef as u } from "react";
5
+ import { useTreeCommon as k } from "./useTreeCommon.js";
6
6
  import './style.css';/* empty css */
7
- import { clsx as k } from "../utils/cn.js";
8
- const y = (e, r) => {
7
+ import { clsx as y } from "../utils/cn.js";
8
+ const x = (r, n) => {
9
9
  const {
10
- cls: c,
11
- customSwitcherIcon: n,
10
+ cls: e,
11
+ customSwitcherIcon: c,
12
12
  processedTreeData: t,
13
- currentUniqueExpandedKeys: s,
14
- currentUniqueCheckedKeys: o,
13
+ currentUniqueExpandedKeys: o,
14
+ currentUniqueCheckedKeys: s,
15
15
  handleAntTreeExpand: a,
16
16
  handleAntTreeCheck: d,
17
- restProps: h,
18
- className: i,
19
- switcherIcon: m
20
- } = u(e);
17
+ restProps: i,
18
+ className: h,
19
+ switcherIcon: p,
20
+ nodeVerticalAlign: l
21
+ } = k(r);
21
22
  return /* @__PURE__ */ T(
22
- p,
23
+ m,
23
24
  {
24
- ref: r,
25
- className: k(c("tree"), i),
26
- switcherIcon: m || n,
25
+ ref: n,
26
+ className: y(
27
+ e("tree"),
28
+ l === "top" && e("tree-align-top"),
29
+ h
30
+ ),
31
+ switcherIcon: p || c,
27
32
  treeData: t,
28
- expandedKeys: s,
33
+ expandedKeys: o,
29
34
  onExpand: a,
30
- checkedKeys: { checked: o, halfChecked: [] },
35
+ checkedKeys: { checked: s, halfChecked: [] },
31
36
  onCheck: d,
32
- ...h
37
+ ...i
33
38
  }
34
39
  );
35
- }, x = (e, r) => {
40
+ }, f = (r, n) => {
36
41
  const {
37
- cls: c,
38
- customSwitcherIcon: n,
42
+ cls: e,
43
+ customSwitcherIcon: c,
39
44
  processedTreeData: t,
40
- currentUniqueExpandedKeys: s,
41
- currentUniqueCheckedKeys: o,
45
+ currentUniqueExpandedKeys: o,
46
+ currentUniqueCheckedKeys: s,
42
47
  handleAntTreeExpand: a,
43
48
  handleAntTreeCheck: d,
44
- restProps: h,
45
- className: i,
46
- switcherIcon: m
47
- } = u(e);
49
+ restProps: i,
50
+ className: h,
51
+ switcherIcon: p,
52
+ nodeVerticalAlign: l
53
+ } = k(r);
48
54
  return /* @__PURE__ */ T(
49
- p.DirectoryTree,
55
+ m.DirectoryTree,
50
56
  {
51
- ref: r,
52
- className: k(c("directory-tree"), i),
53
- switcherIcon: m || n,
57
+ ref: n,
58
+ className: y(
59
+ e("directory-tree"),
60
+ l === "top" && e("tree-align-top"),
61
+ h
62
+ ),
63
+ switcherIcon: p || c,
54
64
  treeData: t,
55
- expandedKeys: s,
65
+ expandedKeys: o,
56
66
  onExpand: a,
57
- checkedKeys: { checked: o, halfChecked: [] },
67
+ checkedKeys: { checked: s, halfChecked: [] },
58
68
  onCheck: d,
59
- ...h
69
+ ...i
60
70
  }
61
71
  );
62
- }, f = l(y), C = l(x), A = Object.assign(f, {
63
- DirectoryTree: C,
64
- TreeNode: p.TreeNode
72
+ }, C = u(x), I = u(f), g = Object.assign(C, {
73
+ DirectoryTree: I,
74
+ TreeNode: m.TreeNode
65
75
  });
66
76
  export {
67
- A as Tree
77
+ g as Tree
68
78
  };
69
79
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sources":["../../../src/components/tree/components.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntTree,\n type DataNode as AntTreeDataNode,\n} from \"antd/es/tree\";\n\nimport { forwardRef } from \"react\";\nimport { clsx } from \"../utils\";\nimport type { TreeDataNode, TreeProps, DirectoryTreeProps } from \"./types\";\nimport { useTreeCommon } from \"./useTreeCommon\";\n\nimport \"./style.css\";\n\n// Create inner function for main Tree with forwarded ref\n// Ensure generic constraint matches TreeProps if it uses AntTreeDataNode\nconst MainTreeInner = <T extends AntTreeDataNode = TreeDataNode>(\n props: TreeProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntTree<T>>>\n) => {\n const {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n } = useTreeCommon(props);\n\n return (\n <AntTree\n ref={ref}\n className={clsx(cls(\"tree\"), className)}\n switcherIcon={switcherIcon || customSwitcherIcon}\n // Pass processed props to AntTree\n treeData={processedTreeData}\n expandedKeys={currentUniqueExpandedKeys}\n onExpand={handleAntTreeExpand}\n // Pass checked keys in the object format\n checkedKeys={{ checked: currentUniqueCheckedKeys, halfChecked: [] }}\n onCheck={handleAntTreeCheck}\n {...restProps} // Pass other props like checkable, showLine, etc.\n />\n );\n};\n\n// Create inner function for DirectoryTree with forwarded ref\nconst DirectoryTreeInner = <T extends AntTreeDataNode = TreeDataNode>(\n props: DirectoryTreeProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntTree<T>>>\n) => {\n const {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n } = useTreeCommon(props as any);\n\n return (\n <AntTree.DirectoryTree\n ref={ref}\n className={clsx(cls(\"directory-tree\"), className)}\n switcherIcon={switcherIcon || customSwitcherIcon}\n // Pass processed props to AntTree.DirectoryTree\n treeData={processedTreeData as T[]}\n expandedKeys={currentUniqueExpandedKeys}\n onExpand={handleAntTreeExpand}\n // Pass checked keys in the object format\n checkedKeys={{ checked: currentUniqueCheckedKeys, halfChecked: [] }}\n onCheck={handleAntTreeCheck}\n {...restProps} // Pass other props like checkable, showLine, etc.\n />\n );\n};\n\n// Use forwardRef with type assertion for main Tree\n// Ensure the generic constraint here matches TreeProps\nconst MainTree = forwardRef(MainTreeInner) as <\n T extends AntTreeDataNode = TreeDataNode // Use AntTreeDataNode if TreeProps uses it\n>(\n props: TreeProps<T> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntTree<T>>>;\n }\n) => ReturnType<typeof MainTreeInner<T>>;\n\n// Use forwardRef with type assertion for DirectoryTree\nconst DirectoryTree = forwardRef(DirectoryTreeInner) as <\n T extends AntTreeDataNode = AntTreeDataNode\n>(\n props: DirectoryTreeProps<T> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntTree<T>>>; // Check ref type consistency\n }\n) => ReturnType<typeof DirectoryTreeInner<T>>;\n\n// Create the final component with DirectoryTree property\nexport const Tree = Object.assign(MainTree, {\n DirectoryTree,\n TreeNode: AntTree.TreeNode,\n});\n"],"names":["MainTreeInner","props","ref","cls","customSwitcherIcon","processedTreeData","currentUniqueExpandedKeys","currentUniqueCheckedKeys","handleAntTreeExpand","handleAntTreeCheck","restProps","className","switcherIcon","useTreeCommon","jsx","AntTree","clsx","DirectoryTreeInner","MainTree","forwardRef","DirectoryTree","Tree"],"mappings":";;;;;;;AAeA,MAAMA,IAAgB,CACpBC,GACAC,MACG;AACH,QAAM;AAAA,IACJ,KAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEC,EAAcZ,CAAK;AAEvB,SACE,gBAAAa;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAb;AAAA,MACA,WAAWc,EAAKb,EAAI,MAAM,GAAGQ,CAAS;AAAA,MACtC,cAAcC,KAAgBR;AAAA,MAE9B,UAAUC;AAAA,MACV,cAAcC;AAAA,MACd,UAAUE;AAAA,MAEV,aAAa,EAAE,SAASD,GAA0B,aAAa,CAAA,EAAC;AAAA,MAChE,SAASE;AAAA,MACR,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV,GAGMO,IAAqB,CACzBhB,GACAC,MACG;AACH,QAAM;AAAA,IACJ,KAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,EAAA,IACEC,EAAcZ,CAAY;AAE9B,SACE,gBAAAa;AAAA,IAACC,EAAQ;AAAA,IAAR;AAAA,MACC,KAAAb;AAAA,MACA,WAAWc,EAAKb,EAAI,gBAAgB,GAAGQ,CAAS;AAAA,MAChD,cAAcC,KAAgBR;AAAA,MAE9B,UAAUC;AAAA,MACV,cAAcC;AAAA,MACd,UAAUE;AAAA,MAEV,aAAa,EAAE,SAASD,GAA0B,aAAa,CAAA,EAAC;AAAA,MAChE,SAASE;AAAA,MACR,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV,GAIMQ,IAAWC,EAAWnB,CAAa,GASnCoB,IAAgBD,EAAWF,CAAkB,GAStCI,IAAO,OAAO,OAAOH,GAAU;AAAA,EAC1C,eAAAE;AAAA,EACA,UAAUL,EAAQ;AACpB,CAAC;"}
1
+ {"version":3,"file":"components.js","sources":["../../../src/components/tree/components.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntTree,\n type DataNode as AntTreeDataNode,\n} from \"antd/es/tree\";\n\nimport { forwardRef } from \"react\";\nimport { clsx } from \"../utils\";\nimport type { TreeDataNode, TreeProps, DirectoryTreeProps } from \"./types\";\nimport { useTreeCommon } from \"./useTreeCommon\";\n\nimport \"./style.css\";\n\n// Create inner function for main Tree with forwarded ref\n// Ensure generic constraint matches TreeProps if it uses AntTreeDataNode\nconst MainTreeInner = <T extends AntTreeDataNode = TreeDataNode>(\n props: TreeProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntTree<T>>>\n) => {\n const {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n nodeVerticalAlign,\n } = useTreeCommon(props);\n\n return (\n <AntTree\n ref={ref}\n className={clsx(\n cls(\"tree\"),\n nodeVerticalAlign === \"top\" && cls(\"tree-align-top\"),\n className\n )}\n switcherIcon={switcherIcon || customSwitcherIcon}\n // Pass processed props to AntTree\n treeData={processedTreeData}\n expandedKeys={currentUniqueExpandedKeys}\n onExpand={handleAntTreeExpand}\n // Pass checked keys in the object format\n checkedKeys={{ checked: currentUniqueCheckedKeys, halfChecked: [] }}\n onCheck={handleAntTreeCheck}\n {...restProps} // Pass other props like checkable, showLine, etc.\n />\n );\n};\n\n// Create inner function for DirectoryTree with forwarded ref\nconst DirectoryTreeInner = <T extends AntTreeDataNode = TreeDataNode>(\n props: DirectoryTreeProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntTree<T>>>\n) => {\n const {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n nodeVerticalAlign,\n } = useTreeCommon(props as any);\n\n return (\n <AntTree.DirectoryTree\n ref={ref}\n className={clsx(\n cls(\"directory-tree\"),\n nodeVerticalAlign === \"top\" && cls(\"tree-align-top\"),\n className\n )}\n switcherIcon={switcherIcon || customSwitcherIcon}\n // Pass processed props to AntTree.DirectoryTree\n treeData={processedTreeData as T[]}\n expandedKeys={currentUniqueExpandedKeys}\n onExpand={handleAntTreeExpand}\n // Pass checked keys in the object format\n checkedKeys={{ checked: currentUniqueCheckedKeys, halfChecked: [] }}\n onCheck={handleAntTreeCheck}\n {...restProps} // Pass other props like checkable, showLine, etc.\n />\n );\n};\n\n// Use forwardRef with type assertion for main Tree\n// Ensure the generic constraint here matches TreeProps\nconst MainTree = forwardRef(MainTreeInner) as <\n T extends AntTreeDataNode = TreeDataNode // Use AntTreeDataNode if TreeProps uses it\n>(\n props: TreeProps<T> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntTree<T>>>;\n }\n) => ReturnType<typeof MainTreeInner<T>>;\n\n// Use forwardRef with type assertion for DirectoryTree\nconst DirectoryTree = forwardRef(DirectoryTreeInner) as <\n T extends AntTreeDataNode = AntTreeDataNode\n>(\n props: DirectoryTreeProps<T> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntTree<T>>>; // Check ref type consistency\n }\n) => ReturnType<typeof DirectoryTreeInner<T>>;\n\n// Create the final component with DirectoryTree property\nexport const Tree = Object.assign(MainTree, {\n DirectoryTree,\n TreeNode: AntTree.TreeNode,\n});\n"],"names":["MainTreeInner","props","ref","cls","customSwitcherIcon","processedTreeData","currentUniqueExpandedKeys","currentUniqueCheckedKeys","handleAntTreeExpand","handleAntTreeCheck","restProps","className","switcherIcon","nodeVerticalAlign","useTreeCommon","jsx","AntTree","clsx","DirectoryTreeInner","MainTree","forwardRef","DirectoryTree","Tree"],"mappings":";;;;;;;AAeA,MAAMA,IAAgB,CACpBC,GACAC,MACG;AACH,QAAM;AAAA,IACJ,KAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACEC,EAAcb,CAAK;AAEvB,SACE,gBAAAc;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,KAAAd;AAAA,MACA,WAAWe;AAAA,QACTd,EAAI,MAAM;AAAA,QACVU,MAAsB,SAASV,EAAI,gBAAgB;AAAA,QACnDQ;AAAA,MAAA;AAAA,MAEF,cAAcC,KAAgBR;AAAA,MAE9B,UAAUC;AAAA,MACV,cAAcC;AAAA,MACd,UAAUE;AAAA,MAEV,aAAa,EAAE,SAASD,GAA0B,aAAa,CAAA,EAAC;AAAA,MAChE,SAASE;AAAA,MACR,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV,GAGMQ,IAAqB,CACzBjB,GACAC,MACG;AACH,QAAM;AAAA,IACJ,KAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA,IACEC,EAAcb,CAAY;AAE9B,SACE,gBAAAc;AAAA,IAACC,EAAQ;AAAA,IAAR;AAAA,MACC,KAAAd;AAAA,MACA,WAAWe;AAAA,QACTd,EAAI,gBAAgB;AAAA,QACpBU,MAAsB,SAASV,EAAI,gBAAgB;AAAA,QACnDQ;AAAA,MAAA;AAAA,MAEF,cAAcC,KAAgBR;AAAA,MAE9B,UAAUC;AAAA,MACV,cAAcC;AAAA,MACd,UAAUE;AAAA,MAEV,aAAa,EAAE,SAASD,GAA0B,aAAa,CAAA,EAAC;AAAA,MAChE,SAASE;AAAA,MACR,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV,GAIMS,IAAWC,EAAWpB,CAAa,GASnCqB,IAAgBD,EAAWF,CAAkB,GAStCI,IAAO,OAAO,OAAOH,GAAU;AAAA,EAC1C,eAAAE;AAAA,EACA,UAAUL,EAAQ;AACpB,CAAC;"}
@@ -1 +1 @@
1
- @layer components{.ds-tree{background:none}.ds-tree-treenode{display:flex;width:100%}.ds-tree-node-content-wrapper{display:flex;flex-grow:1}.ds-tree-title{flex:1}.ds-tree-switcher{display:flex;align-items:center;justify-content:center}.ds-tree-icon__customize{display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--ds-color-icon);margin-right:.5rem}.ds-tree-treenode-selected .ds-tree-icon__customize{color:var(--ds-tree-directory-node-selected-color)}.ds-tree-treenode:not(.ds-tree-treenode-disabled).ds-tree-treenode-selected .ds-tree-node-content-wrapper:hover{color:var(--ds-tree-directory-node-selected-color)}.ds-tree-switcher .ds-tree-switcher-icon{font-size:.75rem}.ds-caret-switcher-icon{transition:transform .2s ease-in-out}.ds-tree-switcher_open .ds-caret-switcher-icon{transform:rotate(90deg)}.ds-tree .ds-tree-switcher:before{height:max(100%,var(--ds-tree-title-height))}}
1
+ @layer components{.ds-tree{background:none}.ds-tree-treenode{display:flex;width:100%}.ds-tree-node-content-wrapper{display:flex;flex-grow:1}.ds-tree-title{flex:1}.ds-tree-switcher{display:flex;align-items:center;justify-content:center}.ds-tree-align-top .ds-tree-checkbox{align-self:flex-start;margin-top:.25rem}.ds-tree-icon__customize{display:flex;align-items:center;justify-content:center;font-size:1rem;color:var(--ds-color-icon);margin-right:.5rem}.ds-tree-treenode:not(.ds-tree-treenode-disabled).ds-tree-treenode-selected .ds-tree-node-content-wrapper:hover{color:var(--ds-tree-node-selected-color)}.ds-directory-tree .ds-tree-treenode-selected .ds-tree-icon__customize{color:var(--ds-tree-directory-node-selected-color)}.ds-directory-tree .ds-tree-treenode:not(.ds-tree-treenode-disabled).ds-tree-treenode-selected .ds-tree-node-content-wrapper:hover{color:var(--ds-tree-directory-node-selected-color)}.ds-tree-switcher .ds-tree-switcher-icon{font-size:.75rem}.ds-caret-switcher-icon{transition:transform .2s ease-in-out}.ds-tree-switcher_open .ds-caret-switcher-icon{transform:rotate(90deg)}.ds-tree .ds-tree-switcher:before{height:max(100%,var(--ds-tree-title-height))}}
@@ -35,6 +35,8 @@ export interface TreeProps<T extends AntTreeDataNode = TreeDataNode> extends Omi
35
35
  allowDuplicatedKeys?: boolean;
36
36
  /** Draggable configuration for tree items */
37
37
  draggable?: AntTreeProps<T>["draggable"];
38
+ /** Vertical alignment of tree nodes (default: 'center') */
39
+ nodeVerticalAlign?: "center" | "top";
38
40
  }
39
41
  export interface DirectoryTreeProps<T extends AntTreeDataNode = TreeDataNode> extends Omit<AntDirectoryTreeProps<T>, "treeData" | "expandedKeys" | "defaultExpandedKeys" | "onExpand" | "checkedKeys" | "defaultCheckedKeys" | "onCheck" | "draggable"> {
40
42
  treeData?: T[];
@@ -52,5 +54,7 @@ export interface DirectoryTreeProps<T extends AntTreeDataNode = TreeDataNode> ex
52
54
  allowDuplicatedKeys?: boolean;
53
55
  /** Draggable configuration for directory tree items */
54
56
  draggable?: AntDirectoryTreeProps<T>["draggable"];
57
+ /** Vertical alignment of tree nodes (default: 'center') */
58
+ nodeVerticalAlign?: "center" | "top";
55
59
  }
56
60
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/tree/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,IAAI,YAAY,EAC9B,KAAK,aAAa,EAClB,KAAK,QAAQ,IAAI,eAAe,EAChC,KAAK,kBAAkB,IAAI,qBAAqB,EAChD,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,WAAW,SAAS,CAAC,YAAY,SAAS,aAAa,GAAG,YAAY;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,YAAY,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,EAAE,CAAC;IACJ,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;CACzB;AAGD,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAG3C,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,IAAI;IAClD,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,GAAG,CAAC;CAC5B,CAAC;AAIF,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,CACjE,SAAQ,IAAI,CACV,YAAY,CAAC,CAAC,CAAC,EACb,UAAU,GACV,cAAc,GACd,qBAAqB,GACrB,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,SAAS,GACT,WAAW,CACd;IACD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAEf,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9D,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC7D,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,WAAW,EAAE,GAAG,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;QAAE,oBAAoB,CAAC,EAAE,GAAG,CAAA;KAAE,KAChD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CAC1C;AAID,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,CAC1E,SAAQ,IAAI,CACV,qBAAqB,CAAC,CAAC,CAAC,EACtB,UAAU,GACV,cAAc,GACd,qBAAqB,GACrB,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,SAAS,GACT,WAAW,CACd;IACD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAEf,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9D,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC7D,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,WAAW,EAAE,GAAG,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;QAAE,oBAAoB,CAAC,EAAE,GAAG,CAAA;KAAE,KAChD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;CACnD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/tree/types.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,SAAS,IAAI,YAAY,EAC9B,KAAK,aAAa,EAClB,KAAK,QAAQ,IAAI,eAAe,EAChC,KAAK,kBAAkB,IAAI,qBAAqB,EAChD,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,WAAW,SAAS,CAAC,YAAY,SAAS,aAAa,GAAG,YAAY;IAC1E,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,qBAAqB,CAAC,EAAE;QACtB,IAAI,EAAE,YAAY,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;KACb,EAAE,CAAC;IACJ,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;CACzB;AAGD,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAG3C,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,IAAI;IAClD,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,GAAG,CAAC;CAC5B,CAAC;AAIF,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,CACjE,SAAQ,IAAI,CACV,YAAY,CAAC,CAAC,CAAC,EACb,UAAU,GACV,cAAc,GACd,qBAAqB,GACrB,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,SAAS,GACT,WAAW,CACd;IACD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAEf,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9D,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC7D,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,WAAW,EAAE,GAAG,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;QAAE,oBAAoB,CAAC,EAAE,GAAG,CAAA;KAAE,KAChD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACzC,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CACtC;AAID,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,eAAe,GAAG,YAAY,CAC1E,SAAQ,IAAI,CACV,qBAAqB,CAAC,CAAC,CAAC,EACtB,UAAU,GACV,cAAc,GACd,qBAAqB,GACrB,UAAU,GACV,aAAa,GACb,oBAAoB,GACpB,SAAS,GACT,WAAW,CACd;IACD,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAEf,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAE9D,WAAW,CAAC,EAAE,GAAG,EAAE,GAAG;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,WAAW,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAC7D,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,CACR,WAAW,EAAE,GAAG,EAAE,EAClB,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;QAAE,oBAAoB,CAAC,EAAE,GAAG,CAAA;KAAE,KAChD,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,uDAAuD;IACvD,SAAS,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAClD,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CACtC"}
@@ -175,5 +175,6 @@ export declare function useTreeCommon<T extends AntTreeDataNode>(props: TreeProp
175
175
  };
176
176
  className: string;
177
177
  switcherIcon: import('antd/es/tree/Tree').SwitcherIcon;
178
+ nodeVerticalAlign: "center" | "top";
178
179
  };
179
180
  //# sourceMappingURL=useTreeCommon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTreeCommon.d.ts","sourceRoot":"","sources":["../../../src/components/tree/useTreeCommon.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAgB,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG3E,wBAAgB,aAAa,CAAC,CAAC,SAAS,eAAe,EACrD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;iEAHxB,MAAQ,SAAQ;;;;;;;;;;;;;;;gBAwG0hC,MAAO,aAAa;mBAAiK,MAAO,SAAS;;;;;;kBAlC7vC,MAAO,iBACN;iBACD,MAAO,iBACb;;;;;oBACQ,MAAO,oBACJ;;wBACW,MACnB,iBAAa;;;;;;;;;;;;;;;;;;;;;;;;mBAIK,MACjB,cACC;;;;;;qGA7EmB,MAAO,SAC1B;;;;oBAiGsoD,MAAO,aAAa;;;;;;;;;;;;;;mCAxC5pD,MAAE,SAAS;iGAIH,MAAO,SACjB;;;mBAmCkgB,MAAO,UAAU;;;;;;;8BAAuqB,MAAO,SAAS;;;;gBAA7I,MAAO,aAAa;mBAAiK,MAAO,SAAS;;;;;;kBAlC7vC,MAAO,iBACN;iBACD,MAAO,iBACb;;;;;oBACQ,MAAO,oBACJ;;wBACW,MACnB,iBAAa;;;;;;;;;;;;;;;;;;;;;;;;mBAIK,MACjB,cACC;;;;;;qGA7EmB,MAAO,SAC1B;;;;oBAiGsoD,MAAO,aAAa;;;;;;;;;;;;;;mCAxC5pD,MAAE,SAAS;iGAIH,MAAO,SACjB;;;mBAmCkgB,MAAO,UAAU;;;;;;;8BAAuqB,MAAO,SAAS;;;;;EAD3sC"}
1
+ {"version":3,"file":"useTreeCommon.d.ts","sourceRoot":"","sources":["../../../src/components/tree/useTreeCommon.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAW,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAgB,SAAS,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG3E,wBAAgB,aAAa,CAAC,CAAC,SAAS,eAAe,EACrD,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;;iEAHxB,MAAQ,SAAQ;;;;;;;;;;;;;;;gBA0Gi+B,MAAO,aAAa;mBAAiK,MAAO,SAAS;;;;;;kBArClsC,MAAO,iBACT;iBAEH,MAAO,iBAAiB;;;;;oBAExB,MAAG,oBACL;;wBACa,MAAO,iBACT;;;;;;;;;;;;;;;;;;;;;;;;mBAIR,MAAO,cACH;;;;;;qGA5EgB,MAAO,SAC1B;;;;oBAmG6kD,MAAO,aAAa;;;;;;;;;;;;;;mCA3ChmD,MAAO,SACX;iGAEW,MAAO,SACpB;;;mBAuC0c,MAAO,UAAU;;;;;;;8BAAuqB,MAAO,SAAS;;;;gBAA7I,MAAO,aAAa;mBAAiK,MAAO,SAAS;;;;;;kBArClsC,MAAO,iBACT;iBAEH,MAAO,iBAAiB;;;;;oBAExB,MAAG,oBACL;;wBACa,MAAO,iBACT;;;;;;;;;;;;;;;;;;;;;;;;mBAIR,MAAO,cACH;;;;;;qGA5EgB,MAAO,SAC1B;;;;oBAmG6kD,MAAO,aAAa;;;;;;;;;;;;;;mCA3ChmD,MAAO,SACX;iGAEW,MAAO,SACpB;;;mBAuC0c,MAAO,UAAU;;;;;;;8BAAuqB,MAAO,SAAS;;;;;;EADlpC"}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
- import { jsx as v } from "react/jsx-runtime";
3
- import { useMemo as I } from "react";
4
- import { CaretRight as M } from "@bioturing/assets";
5
- import { useUniqueKeysTree as S } from "./useUniqueKeysTree.js";
6
- import { useCls as U } from "../utils/antdUtils.js";
2
+ import { jsx as I } from "react/jsx-runtime";
3
+ import { useMemo as M } from "react";
4
+ import { CaretRight as S } from "@bioturing/assets";
5
+ import { useUniqueKeysTree as U } from "./useUniqueKeysTree.js";
6
+ import { useCls as N } from "../utils/antdUtils.js";
7
7
  function z(h) {
8
8
  const {
9
9
  treeData: o = [],
@@ -18,8 +18,9 @@ function z(h) {
18
18
  allowDuplicatedKeys: E,
19
19
  className: K,
20
20
  switcherIcon: k,
21
- ...w
22
- } = h, A = I(() => {
21
+ nodeVerticalAlign: w = "center",
22
+ ...A
23
+ } = h, g = M(() => {
23
24
  if (d) {
24
25
  const t = [], s = (c = []) => {
25
26
  c.forEach((r) => {
@@ -55,30 +56,31 @@ function z(h) {
55
56
  ]), {
56
57
  processedTreeData: C,
57
58
  currentUniqueExpandedKeys: D,
58
- currentUniqueCheckedKeys: g,
59
- handleAntTreeExpand: T,
60
- handleAntTreeCheck: q
61
- } = S({
59
+ currentUniqueCheckedKeys: T,
60
+ handleAntTreeExpand: q,
61
+ handleAntTreeCheck: v
62
+ } = U({
62
63
  treeData: o,
63
64
  expandedKeys: u,
64
- defaultExpandedKeys: A,
65
+ defaultExpandedKeys: g,
65
66
  onExpand: f,
66
67
  checkedKeys: y,
67
68
  defaultCheckedKeys: m,
68
69
  onCheck: x,
69
70
  allowDuplicatedKeys: E
70
- }), p = U();
71
+ }), p = N();
71
72
  return {
72
73
  cls: p,
73
- customSwitcherIcon: () => /* @__PURE__ */ v(M, { weight: "bold", className: p("caret-switcher-icon") }),
74
+ customSwitcherIcon: () => /* @__PURE__ */ I(S, { weight: "bold", className: p("caret-switcher-icon") }),
74
75
  processedTreeData: C,
75
76
  currentUniqueExpandedKeys: D,
76
- currentUniqueCheckedKeys: g,
77
- handleAntTreeExpand: T,
78
- handleAntTreeCheck: q,
79
- restProps: w,
77
+ currentUniqueCheckedKeys: T,
78
+ handleAntTreeExpand: q,
79
+ handleAntTreeCheck: v,
80
+ restProps: A,
80
81
  className: K,
81
- switcherIcon: k
82
+ switcherIcon: k,
83
+ nodeVerticalAlign: w
82
84
  };
83
85
  }
84
86
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"useTreeCommon.js","sources":["../../../src/components/tree/useTreeCommon.tsx"],"sourcesContent":["\"use client\";\nimport { type DataNode as AntTreeDataNode } from \"antd/es/tree\";\n\nimport { useMemo, type Key } from \"react\";\nimport { useCls } from \"../utils\";\nimport { CaretRight } from \"@bioturing/assets\";\nimport type { TreeDataNode, TreeProps, DirectoryTreeProps } from \"./types\";\nimport { useUniqueKeysTree } from \"./useUniqueKeysTree\";\n\nexport function useTreeCommon<T extends AntTreeDataNode>(\n props: TreeProps<T> | DirectoryTreeProps<T>\n) {\n const {\n treeData: originTreeData = [],\n expandedKeys: propExpandedKeys,\n defaultExpandedKeys: propDefaultExpandedKeys = [],\n defaultExpandAll = false,\n defaultExpandParent = true,\n onExpand: propOnExpand,\n checkedKeys,\n defaultCheckedKeys,\n onCheck,\n allowDuplicatedKeys,\n className,\n switcherIcon,\n ...restProps\n } = props;\n\n // compute resolved defaultExpandedKeys\n const resolvedDefaultExpandedKeys = useMemo<Key[]>(() => {\n if (defaultExpandAll) {\n const keys: Key[] = [];\n const traverse = (nodes: TreeDataNode[] = []) => {\n nodes.forEach((node) => {\n keys.push(node.key);\n if (Array.isArray(node.children))\n traverse(node.children as TreeDataNode[]);\n });\n };\n traverse(originTreeData as TreeDataNode[]);\n return keys;\n }\n if (defaultExpandParent && propDefaultExpandedKeys?.length) {\n // build parent map\n const parentMap = new Map<Key, Key>();\n const traverse = (nodes: TreeDataNode[], parent?: TreeDataNode) => {\n nodes.forEach((node) => {\n if (parent) parentMap.set(node.key, parent.key);\n const children = Array.isArray(node.children)\n ? (node.children as TreeDataNode[])\n : [];\n if (children.length) traverse(children, node);\n });\n };\n traverse(originTreeData as TreeDataNode[]);\n // collect all expansions: original keys + their ancestors\n const expanded = new Set<Key>(propDefaultExpandedKeys);\n propDefaultExpandedKeys.forEach((key) => {\n let k = key;\n while (parentMap.has(k)) {\n const p = parentMap.get(k)!;\n if (!expanded.has(p)) expanded.add(p);\n k = p;\n }\n });\n return Array.from(expanded);\n }\n return propDefaultExpandedKeys ?? [];\n }, [\n originTreeData,\n defaultExpandAll,\n defaultExpandParent,\n propDefaultExpandedKeys,\n ]);\n\n // use unique keys hook\n const {\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n } = useUniqueKeysTree({\n treeData: originTreeData,\n expandedKeys: propExpandedKeys,\n defaultExpandedKeys: resolvedDefaultExpandedKeys,\n onExpand: propOnExpand,\n checkedKeys,\n defaultCheckedKeys,\n onCheck,\n allowDuplicatedKeys,\n });\n\n const cls = useCls();\n const customSwitcherIcon: TreeProps<T>[\"switcherIcon\"] = () => (\n <CaretRight weight=\"bold\" className={cls(\"caret-switcher-icon\")} />\n );\n\n return {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n };\n}\n"],"names":["useTreeCommon","props","originTreeData","propExpandedKeys","propDefaultExpandedKeys","defaultExpandAll","defaultExpandParent","propOnExpand","checkedKeys","defaultCheckedKeys","onCheck","allowDuplicatedKeys","className","switcherIcon","restProps","resolvedDefaultExpandedKeys","useMemo","keys","traverse","nodes","node","parentMap","parent","children","expanded","key","k","p","processedTreeData","currentUniqueExpandedKeys","currentUniqueCheckedKeys","handleAntTreeExpand","handleAntTreeCheck","useUniqueKeysTree","cls","useCls","jsx","CaretRight"],"mappings":";;;;;;AASO,SAASA,EACdC,GACA;AACA,QAAM;AAAA,IACJ,UAAUC,IAAiB,CAAA;AAAA,IAC3B,cAAcC;AAAA,IACd,qBAAqBC,IAA0B,CAAA;AAAA,IAC/C,kBAAAC,IAAmB;AAAA,IACnB,qBAAAC,IAAsB;AAAA,IACtB,UAAUC;AAAA,IACV,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDb,GAGEc,IAA8BC,EAAe,MAAM;AACvD,QAAIX,GAAkB;AACpB,YAAMY,IAAc,CAAA,GACdC,IAAW,CAACC,IAAwB,OAAO;AAC/C,QAAAA,EAAM,QAAQ,CAACC,MAAS;AACtB,UAAAH,EAAK,KAAKG,EAAK,GAAG,GACd,MAAM,QAAQA,EAAK,QAAQ,KAC7BF,EAASE,EAAK,QAA0B;AAAA,QAC5C,CAAC;AAAA,MACH;AACA,aAAAF,EAAShB,CAAgC,GAClCe;AAAA,IACT;AACA,QAAIX,KAAuBF,GAAyB,QAAQ;AAE1D,YAAMiB,wBAAgB,IAAA,GAChBH,IAAW,CAACC,GAAuBG,MAA0B;AACjE,QAAAH,EAAM,QAAQ,CAACC,MAAS;AACtB,UAAIE,KAAQD,EAAU,IAAID,EAAK,KAAKE,EAAO,GAAG;AAC9C,gBAAMC,IAAW,MAAM,QAAQH,EAAK,QAAQ,IACvCA,EAAK,WACN,CAAA;AACJ,UAAIG,EAAS,UAAQL,EAASK,GAAUH,CAAI;AAAA,QAC9C,CAAC;AAAA,MACH;AACA,MAAAF,EAAShB,CAAgC;AAEzC,YAAMsB,IAAW,IAAI,IAASpB,CAAuB;AACrD,aAAAA,EAAwB,QAAQ,CAACqB,MAAQ;AACvC,YAAIC,IAAID;AACR,eAAOJ,EAAU,IAAIK,CAAC,KAAG;AACvB,gBAAMC,IAAIN,EAAU,IAAIK,CAAC;AACzB,UAAKF,EAAS,IAAIG,CAAC,KAAGH,EAAS,IAAIG,CAAC,GACpCD,IAAIC;AAAA,QACN;AAAA,MACF,CAAC,GACM,MAAM,KAAKH,CAAQ;AAAA,IAC5B;AACA,WAAOpB,KAA2B,CAAA;AAAA,EACpC,GAAG;AAAA,IACDF;AAAA,IACAG;AAAA,IACAC;AAAA,IACAF;AAAA,EAAA,CACD,GAGK;AAAA,IACJ,mBAAAwB;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEC,EAAkB;AAAA,IACpB,UAAU/B;AAAA,IACV,cAAcC;AAAA,IACd,qBAAqBY;AAAA,IACrB,UAAUR;AAAA,IACV,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,EAAA,CACD,GAEKuB,IAAMC,EAAA;AAKZ,SAAO;AAAA,IACL,KAAAD;AAAA,IACA,oBANuD,MACvD,gBAAAE,EAACC,GAAA,EAAW,QAAO,QAAO,WAAWH,EAAI,qBAAqB,GAAG;AAAA,IAMjE,mBAAAN;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAlB;AAAA,IACA,WAAAF;AAAA,IACA,cAAAC;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"useTreeCommon.js","sources":["../../../src/components/tree/useTreeCommon.tsx"],"sourcesContent":["\"use client\";\nimport { type DataNode as AntTreeDataNode } from \"antd/es/tree\";\n\nimport { useMemo, type Key } from \"react\";\nimport { useCls } from \"../utils\";\nimport { CaretRight } from \"@bioturing/assets\";\nimport type { TreeDataNode, TreeProps, DirectoryTreeProps } from \"./types\";\nimport { useUniqueKeysTree } from \"./useUniqueKeysTree\";\n\nexport function useTreeCommon<T extends AntTreeDataNode>(\n props: TreeProps<T> | DirectoryTreeProps<T>\n) {\n const {\n treeData: originTreeData = [],\n expandedKeys: propExpandedKeys,\n defaultExpandedKeys: propDefaultExpandedKeys = [],\n defaultExpandAll = false,\n defaultExpandParent = true,\n onExpand: propOnExpand,\n checkedKeys,\n defaultCheckedKeys,\n onCheck,\n allowDuplicatedKeys,\n className,\n switcherIcon,\n nodeVerticalAlign = \"center\",\n ...restProps\n } = props;\n\n // compute resolved defaultExpandedKeys\n const resolvedDefaultExpandedKeys = useMemo<Key[]>(() => {\n if (defaultExpandAll) {\n const keys: Key[] = [];\n const traverse = (nodes: TreeDataNode[] = []) => {\n nodes.forEach((node) => {\n keys.push(node.key);\n if (Array.isArray(node.children))\n traverse(node.children as TreeDataNode[]);\n });\n };\n traverse(originTreeData as TreeDataNode[]);\n return keys;\n }\n if (defaultExpandParent && propDefaultExpandedKeys?.length) {\n // build parent map\n const parentMap = new Map<Key, Key>();\n const traverse = (nodes: TreeDataNode[], parent?: TreeDataNode) => {\n nodes.forEach((node) => {\n if (parent) parentMap.set(node.key, parent.key);\n const children = Array.isArray(node.children)\n ? (node.children as TreeDataNode[])\n : [];\n if (children.length) traverse(children, node);\n });\n };\n traverse(originTreeData as TreeDataNode[]);\n // collect all expansions: original keys + their ancestors\n const expanded = new Set<Key>(propDefaultExpandedKeys);\n propDefaultExpandedKeys.forEach((key) => {\n let k = key;\n while (parentMap.has(k)) {\n const p = parentMap.get(k)!;\n if (!expanded.has(p)) expanded.add(p);\n k = p;\n }\n });\n return Array.from(expanded);\n }\n return propDefaultExpandedKeys ?? [];\n }, [\n originTreeData,\n defaultExpandAll,\n defaultExpandParent,\n propDefaultExpandedKeys,\n ]);\n\n // use unique keys hook\n const {\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n } = useUniqueKeysTree({\n treeData: originTreeData,\n expandedKeys: propExpandedKeys,\n defaultExpandedKeys: resolvedDefaultExpandedKeys,\n onExpand: propOnExpand,\n checkedKeys,\n defaultCheckedKeys,\n onCheck,\n allowDuplicatedKeys,\n });\n\n const cls = useCls();\n const customSwitcherIcon: TreeProps<T>[\"switcherIcon\"] = () => (\n <CaretRight weight=\"bold\" className={cls(\"caret-switcher-icon\")} />\n );\n\n return {\n cls,\n customSwitcherIcon,\n processedTreeData,\n currentUniqueExpandedKeys,\n currentUniqueCheckedKeys,\n handleAntTreeExpand,\n handleAntTreeCheck,\n restProps,\n className,\n switcherIcon,\n nodeVerticalAlign,\n };\n}\n"],"names":["useTreeCommon","props","originTreeData","propExpandedKeys","propDefaultExpandedKeys","defaultExpandAll","defaultExpandParent","propOnExpand","checkedKeys","defaultCheckedKeys","onCheck","allowDuplicatedKeys","className","switcherIcon","nodeVerticalAlign","restProps","resolvedDefaultExpandedKeys","useMemo","keys","traverse","nodes","node","parentMap","parent","children","expanded","key","k","p","processedTreeData","currentUniqueExpandedKeys","currentUniqueCheckedKeys","handleAntTreeExpand","handleAntTreeCheck","useUniqueKeysTree","cls","useCls","jsx","CaretRight"],"mappings":";;;;;;AASO,SAASA,EACdC,GACA;AACA,QAAM;AAAA,IACJ,UAAUC,IAAiB,CAAA;AAAA,IAC3B,cAAcC;AAAA,IACd,qBAAqBC,IAA0B,CAAA;AAAA,IAC/C,kBAAAC,IAAmB;AAAA,IACnB,qBAAAC,IAAsB;AAAA,IACtB,UAAUC;AAAA,IACV,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC,IAAoB;AAAA,IACpB,GAAGC;AAAA,EAAA,IACDd,GAGEe,IAA8BC,EAAe,MAAM;AACvD,QAAIZ,GAAkB;AACpB,YAAMa,IAAc,CAAA,GACdC,IAAW,CAACC,IAAwB,OAAO;AAC/C,QAAAA,EAAM,QAAQ,CAACC,MAAS;AACtB,UAAAH,EAAK,KAAKG,EAAK,GAAG,GACd,MAAM,QAAQA,EAAK,QAAQ,KAC7BF,EAASE,EAAK,QAA0B;AAAA,QAC5C,CAAC;AAAA,MACH;AACA,aAAAF,EAASjB,CAAgC,GAClCgB;AAAA,IACT;AACA,QAAIZ,KAAuBF,GAAyB,QAAQ;AAE1D,YAAMkB,wBAAgB,IAAA,GAChBH,IAAW,CAACC,GAAuBG,MAA0B;AACjE,QAAAH,EAAM,QAAQ,CAACC,MAAS;AACtB,UAAIE,KAAQD,EAAU,IAAID,EAAK,KAAKE,EAAO,GAAG;AAC9C,gBAAMC,IAAW,MAAM,QAAQH,EAAK,QAAQ,IACvCA,EAAK,WACN,CAAA;AACJ,UAAIG,EAAS,UAAQL,EAASK,GAAUH,CAAI;AAAA,QAC9C,CAAC;AAAA,MACH;AACA,MAAAF,EAASjB,CAAgC;AAEzC,YAAMuB,IAAW,IAAI,IAASrB,CAAuB;AACrD,aAAAA,EAAwB,QAAQ,CAACsB,MAAQ;AACvC,YAAIC,IAAID;AACR,eAAOJ,EAAU,IAAIK,CAAC,KAAG;AACvB,gBAAMC,IAAIN,EAAU,IAAIK,CAAC;AACzB,UAAKF,EAAS,IAAIG,CAAC,KAAGH,EAAS,IAAIG,CAAC,GACpCD,IAAIC;AAAA,QACN;AAAA,MACF,CAAC,GACM,MAAM,KAAKH,CAAQ;AAAA,IAC5B;AACA,WAAOrB,KAA2B,CAAA;AAAA,EACpC,GAAG;AAAA,IACDF;AAAA,IACAG;AAAA,IACAC;AAAA,IACAF;AAAA,EAAA,CACD,GAGK;AAAA,IACJ,mBAAAyB;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEC,EAAkB;AAAA,IACpB,UAAUhC;AAAA,IACV,cAAcC;AAAA,IACd,qBAAqBa;AAAA,IACrB,UAAUT;AAAA,IACV,aAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,qBAAAC;AAAA,EAAA,CACD,GAEKwB,IAAMC,EAAA;AAKZ,SAAO;AAAA,IACL,KAAAD;AAAA,IACA,oBANuD,MACvD,gBAAAE,EAACC,GAAA,EAAW,QAAO,QAAO,WAAWH,EAAI,qBAAqB,GAAG;AAAA,IAMjE,mBAAAN;AAAA,IACA,2BAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAlB;AAAA,IACA,WAAAH;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,EAAA;AAEJ;"}