@bioturing/components 0.26.2 → 0.27.0

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 (37) hide show
  1. package/dist/components/choice-list/component.js +24 -21
  2. package/dist/components/choice-list/component.js.map +1 -1
  3. package/dist/components/cmdk/index.js.map +1 -1
  4. package/dist/components/dropdown-menu/component.js +16 -15
  5. package/dist/components/dropdown-menu/component.js.map +1 -1
  6. package/dist/components/popup-panel/component.js +142 -164
  7. package/dist/components/popup-panel/component.js.map +1 -1
  8. package/dist/components/popup-panel/style.css +1 -1
  9. package/dist/components/resizable/component.js +171 -0
  10. package/dist/components/resizable/component.js.map +1 -0
  11. package/dist/components/resizable/style.css +1 -0
  12. package/dist/components/segmented/component.js +3 -3
  13. package/dist/components/segmented/component.js.map +1 -1
  14. package/dist/components/spin/component.js +9 -8
  15. package/dist/components/spin/component.js.map +1 -1
  16. package/dist/components/splitter/splitter-panel.js +27 -44
  17. package/dist/components/splitter/splitter-panel.js.map +1 -1
  18. package/dist/components/splitter/splitter.js +94 -93
  19. package/dist/components/splitter/splitter.js.map +1 -1
  20. package/dist/components/splitter/useSizes.js +86 -0
  21. package/dist/components/splitter/useSizes.js.map +1 -0
  22. package/dist/components/upload/dragger.js +19 -10
  23. package/dist/components/upload/dragger.js.map +1 -1
  24. package/dist/components/upload/item.js +21 -18
  25. package/dist/components/upload/item.js.map +1 -1
  26. package/dist/components/utils/antdUtils.js +18 -56
  27. package/dist/components/utils/antdUtils.js.map +1 -1
  28. package/dist/components/utils/placement.js +58 -0
  29. package/dist/components/utils/placement.js.map +1 -0
  30. package/dist/components/utils/reactElement.js +5 -0
  31. package/dist/components/utils/reactElement.js.map +1 -0
  32. package/dist/index.d.ts +162 -16
  33. package/dist/index.js +164 -158
  34. package/dist/index.js.map +1 -1
  35. package/dist/metadata.js +22 -2
  36. package/dist/metadata.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/resizable/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useCallback, useEffect, useState, isValidElement } from \"react\";\nimport { useResizable, type MoveValues } from \"react-use-resizable\";\nimport mergeRefs from \"merge-refs\";\nimport {\n useCls,\n clsx,\n WithRenderProp,\n WithRenderPropProps,\n cn,\n getReactElementProp,\n} from \"../utils\";\nimport { mergeProps } from \"@base-ui-components/react\";\n\nimport \"./style.css\";\n\nexport interface ResizableProps extends WithRenderPropProps {\n /**\n * Single React element child that will be enhanced with resize handles\n */\n children: React.ReactNode;\n /**\n * Whether the component should be resizable\n * @default false\n */\n resizable?: boolean;\n /**\n * Configure which resize handles to show\n * @default { bottom: true, right: true, left: true, top: true }\n */\n handles?: {\n bottom?: boolean;\n right?: boolean;\n left?: boolean;\n top?: boolean;\n };\n /**\n * Whether to use absolute positioning for left handle resizing\n * Set to true when used in absolutely positioned containers like PopupPanel\n * @default false\n */\n absolutePositioning?: boolean;\n /**\n * Custom class names for different parts of the resizable component\n */\n classNames?: {\n root?: string;\n resizeHandle?: string;\n };\n /**\n * Key to reset dimensions to current element size\n * When this value changes, the component will recalculate its dimensions\n * Similar to React's key prop pattern for forcing component resets\n */\n resetKey?: React.Key;\n /**\n * Maximum width the component can be resized to\n */\n maxWidth?: number;\n /**\n * Maximum height the component can be resized to\n */\n maxHeight?: number;\n /**\n * Minimum width the component can be resized to\n */\n minWidth?: number;\n /**\n * Minimum height the component can be resized to\n */\n minHeight?: number;\n /**\n * Callback fired during resize operations\n */\n onResize?: (values: MoveValues) => void;\n /**\n * Whether to maintain aspect ratio during resize\n * @default false\n */\n maintainAspectRatio?: boolean;\n}\n\nexport const Resizable = ({\n children,\n resizable = false,\n handles = { bottom: true, right: true, left: true, top: true },\n absolutePositioning = false,\n classNames,\n className: containerClassName,\n style: containerStyle,\n resetKey,\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n onResize,\n maintainAspectRatio = false,\n ...rest\n}: ResizableProps) => {\n // Validate that children is a single React element\n // if (!isValidElement(children)) {\n // throw new Error(\n // \"Resizable component expects a single React element as children\"\n // );\n // }\n\n const cls = useCls();\n const [panelRef, setPanelRef] = useState<HTMLDivElement | null>(null);\n const [width, setWidth] = useState<number>();\n const [height, setHeight] = useState<number>();\n const [resizing, setResizing] = useState(false);\n\n const callbackRef = useCallback(\n (node: HTMLDivElement) => {\n setPanelRef(node);\n\n // Get initial dimensions only once when ref is set\n if (node && !width && !height) {\n const rect = node.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n setWidth(rect.width);\n setHeight(rect.height);\n }\n }\n },\n [width, height]\n );\n\n // Reset dimensions when resetKey changes\n useEffect(() => {\n if (resetKey !== undefined && panelRef) {\n // Clear the hook's inline styles to reset to natural size\n panelRef.style.width = \"\";\n panelRef.style.height = \"\";\n\n // Force a reflow to get natural dimensions\n const rect = panelRef.getBoundingClientRect();\n\n if (rect.width > 0 && rect.height > 0) {\n // Update the component state to match the reset dimensions\n setWidth(rect.width);\n setHeight(rect.height);\n\n // Apply the reset dimensions directly to ensure they stick\n panelRef.style.width = `${rect.width}px`;\n panelRef.style.height = `${rect.height}px`;\n }\n }\n }, [resetKey, panelRef]);\n\n // Initialize useResizable with current dimensions (or undefined if not ready)\n const resizableHook = useResizable({\n initialWidth: width,\n initialHeight: height,\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n onResize,\n maintainAspectRatio,\n onDragStart: () => setResizing(true),\n onDragEnd: () => setResizing(false),\n });\n\n const isChildrenValidElement = isValidElement(children);\n\n useEffect(() => {\n if (resizing) {\n document.body.style.userSelect = \"none\";\n } else {\n document.body.style.userSelect = \"\";\n }\n }, [resizing]);\n\n // Get resizable props - useResizable hook handles cases where dimensions aren't ready\n const { ref: rootRefProp, ...rootPropsWithoutRef } =\n resizableHook.getRootProps();\n const getHandleProps = resizableHook.getHandleProps;\n const rootRef = resizableHook.rootRef;\n\n // Handle reverse handle change for horizontal resizing (only for absolute positioning)\n const onReverseHandleChangeHorizontal = (\n parent: React.RefObject<HTMLDivElement>,\n values: MoveValues\n ) => {\n if (!parent.current || !absolutePositioning) return;\n const { widthDiff } = values;\n parent.current.style.left = `${\n parseInt(parent.current.style.left || \"0\") - widthDiff\n }px`;\n };\n\n // Handle reverse handle change for vertical resizing (only for absolute positioning)\n const onReverseHandleChangeVertical = (\n parent: React.RefObject<HTMLDivElement>,\n values: MoveValues\n ) => {\n if (!parent.current || !absolutePositioning) return;\n const { heightDiff } = values;\n parent.current.style.top = `${\n parseInt(parent.current.style.top || \"0\") - heightDiff\n }px`;\n };\n\n const resizeHandles = resizable\n ? [\n handles.top && (\n <div\n key=\"top\"\n className={clsx(\n cls(\"resizable-resize-handle\"),\n classNames?.resizeHandle\n )}\n data-placement=\"top-center\"\n {...getHandleProps({\n reverse: true,\n lockHorizontal: true,\n onResize: (values) =>\n onReverseHandleChangeVertical(rootRef, values),\n })}\n />\n ),\n handles.bottom && (\n <div\n key=\"bottom\"\n className={clsx(\n cls(\"resizable-resize-handle\"),\n classNames?.resizeHandle\n )}\n data-placement=\"bottom-left\"\n {...getHandleProps({\n lockHorizontal: true,\n })}\n />\n ),\n handles.left && (\n <div\n key=\"left\"\n className={clsx(\n cls(\"resizable-resize-handle\"),\n classNames?.resizeHandle\n )}\n data-placement=\"top-left\"\n {...getHandleProps({\n reverse: true,\n lockVertical: true,\n onResize: (values) =>\n onReverseHandleChangeHorizontal(rootRef, values),\n })}\n />\n ),\n handles.right && (\n <div\n key=\"right\"\n className={clsx(\n cls(\"resizable-resize-handle\"),\n classNames?.resizeHandle\n )}\n data-placement=\"top-right\"\n {...getHandleProps({\n lockVertical: true,\n })}\n />\n ),\n ]\n : [];\n\n const childElement = children as React.ReactElement & {\n ref?: React.Ref<HTMLDivElement>;\n };\n\n const childElementProps = {\n className: getReactElementProp<string>(childElement, \"className\"),\n style: getReactElementProp<React.CSSProperties>(childElement, \"style\"),\n children: getReactElementProp<React.ReactNode>(childElement, \"children\"),\n ref: childElement.ref,\n };\n\n const childProps = {\n className: cn(\n resizable && cls(\"resizable\"),\n classNames?.root,\n childElementProps.className,\n containerClassName\n ),\n ref: mergeRefs(\n resizable ? rootRefProp : undefined,\n callbackRef, // Always need this for dimension measurement\n childElement?.ref\n ),\n style: { ...childElementProps.style, ...containerStyle },\n ...(resizing ? { \"data-resizing\": true } : {}),\n children: isChildrenValidElement\n ? [\n ...(Array.isArray(childElementProps.children)\n ? childElementProps.children\n : [childElementProps.children]),\n ...resizeHandles.filter(Boolean),\n ]\n : children,\n };\n\n return (\n <WithRenderProp\n render={(props) => {\n // Merge the props from WithRenderProp with our childProps\n const mergedProps = mergeProps(\n props,\n childProps,\n resizable ? rootPropsWithoutRef : {}\n );\n if (isChildrenValidElement) {\n return React.cloneElement(childElement, mergedProps);\n } else {\n return <div {...mergedProps}>{children}</div>;\n }\n }}\n />\n );\n};\n"],"names":["Resizable","children","resizable","handles","absolutePositioning","classNames","containerClassName","containerStyle","resetKey","maxWidth","maxHeight","minWidth","minHeight","onResize","maintainAspectRatio","rest","cls","useCls","panelRef","setPanelRef","useState","width","setWidth","height","setHeight","resizing","setResizing","callbackRef","useCallback","node","rect","useEffect","resizableHook","useResizable","isChildrenValidElement","isValidElement","rootRefProp","rootPropsWithoutRef","getHandleProps","rootRef","onReverseHandleChangeHorizontal","parent","values","widthDiff","onReverseHandleChangeVertical","heightDiff","resizeHandles","jsx","clsx","childElement","childElementProps","getReactElementProp","childProps","cn","mergeRefs","WithRenderProp","props","mergedProps","mergeProps","React"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-resizable{position:relative}.ds-resizable-resize-handle{position:absolute;padding:.5rem;color:#fff;display:block}.ds-resizable-resize-handle[data-placement=top-left]{left:0;top:0;width:4px;height:100%;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;align-items:center}.ds-resizable-resize-handle[data-placement=top-right]{right:0;top:0;width:4px;height:100%;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;align-items:center}.ds-resizable-resize-handle[data-placement=bottom-left]{bottom:0;width:100%;height:4px;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;justify-content:center}.ds-resizable-resize-handle[data-placement=top-center]{top:0;width:100%;height:4px;border-top-left-radius:.5rem;border-top-right-radius:.5rem;justify-content:center}}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import { jsx as n } from "react/jsx-runtime";
3
3
  import r from "antd/es/segmented";
4
- import { forwardRef as m } from "react";
4
+ import { forwardRef as o } from "react";
5
5
  import './style.css';/* empty css */
6
- const o = ({ className: s, ...e }, t) => /* @__PURE__ */ n(r, { ref: t, ...e }), i = m(o), p = i;
6
+ const m = (e, t) => /* @__PURE__ */ n(r, { ref: t, ...e }), i = o(m), c = i;
7
7
  export {
8
- p as Segmented
8
+ c as Segmented
9
9
  };
10
10
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/segmented/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntSegmented,\n type SegmentedProps as AntSegmentedProps,\n} from \"antd/es/segmented\";\n\nimport { forwardRef } from \"react\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type RcSegmentedValue = string | number;\n\n// Define props interface with default type parameter\nexport interface SegmentedProps<T = RcSegmentedValue>\n extends AntSegmentedProps<T> {}\n\n// Create inner function with default type parameter\nconst MainSegmentedInner = <T,>(\n { className, ...rest }: SegmentedProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntSegmented>>\n) => {\n return <AntSegmented ref={ref} {...rest} />;\n};\n\n// Use forwardRef with type assertion\nconst MainSegmented = forwardRef(MainSegmentedInner) as <T = RcSegmentedValue>(\n props: SegmentedProps<T> & {\n ref?: React.Ref<React.ComponentRef<typeof AntSegmented>>;\n }\n) => ReturnType<typeof MainSegmentedInner>;\n\nexport const Segmented = MainSegmented;\n"],"names":["MainSegmentedInner","className","rest","ref","jsx","AntSegmented","MainSegmented","forwardRef","Segmented"],"mappings":";;;;;AAkBA,MAAMA,IAAqB,CACzB,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAChBC,MAEQ,gBAAAC,EAAAC,GAAA,EAAa,KAAAF,GAAW,GAAGD,EAAM,CAAA,GAIrCI,IAAgBC,EAAWP,CAAkB,GAMtCQ,IAAYF;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/segmented/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntSegmented,\n type SegmentedProps as AntSegmentedProps,\n} from \"antd/es/segmented\";\n\nimport { forwardRef } from \"react\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type RcSegmentedValue = string | number;\n\n// Define props interface with default type parameter\nexport interface SegmentedProps<T = RcSegmentedValue>\n extends AntSegmentedProps<T> {}\n\n// Create inner function with default type parameter\nconst MainSegmentedInner = <T,>(\n props: SegmentedProps<T>,\n ref: React.Ref<React.ComponentRef<typeof AntSegmented>>\n) => {\n return <AntSegmented ref={ref} {...props} />;\n};\n\n// Use forwardRef with type assertion\nconst MainSegmented = forwardRef(MainSegmentedInner) as <T = RcSegmentedValue>(\n props: SegmentedProps<T> & {\n ref?: React.Ref<React.ComponentRef<typeof AntSegmented>>;\n }\n) => ReturnType<typeof MainSegmentedInner>;\n\nexport const Segmented = MainSegmented;\n"],"names":["MainSegmentedInner","props","ref","jsx","AntSegmented","MainSegmented","forwardRef","Segmented"],"mappings":";;;;;AAkBA,MAAMA,IAAqB,CACzBC,GACAC,MAEQ,gBAAAC,EAAAC,GAAA,EAAa,KAAAF,GAAW,GAAGD,EAAO,CAAA,GAItCI,IAAgBC,EAAWN,CAAkB,GAMtCO,IAAYF;"}
@@ -1,23 +1,24 @@
1
1
  "use client";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
- import i from "antd/es/spin";
3
+ import e from "antd/es/spin";
4
4
  import './style.css';/* empty css */
5
- import { useCls as e } from "../utils/antdUtils.js";
6
- const d = ({ indicator: n, size: o, ...r }) => {
7
- const p = e(), s = n || /* @__PURE__ */ t("span", { className: p("spin-loader") });
5
+ import { useCls as m } from "../utils/antdUtils.js";
6
+ const f = ({ indicator: n, size: o, className: r, ...p }) => {
7
+ const s = m(), i = n || /* @__PURE__ */ t("span", { className: s("spin-loader") });
8
8
  return /* @__PURE__ */ t(
9
- i,
9
+ e,
10
10
  {
11
- indicator: s,
11
+ className: r,
12
+ indicator: i,
12
13
  size: typeof o == "number" ? "default" : o,
13
14
  style: {
14
15
  "--spin-size": typeof o == "number" ? `${o}px` : void 0
15
16
  },
16
- ...r
17
+ ...p
17
18
  }
18
19
  );
19
20
  };
20
21
  export {
21
- d as Spin
22
+ f as Spin
22
23
  };
23
24
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/spin/component.tsx"],"sourcesContent":["\"use client\";\nimport { useCls } from \"../utils\";\nimport { default as AntdSpin, SpinProps as AntdSpinProps } from \"antd/es/spin\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type SpinProps = Omit<AntdSpinProps, \"size\"> & {\n size?: \"small\" | \"default\" | \"large\" | number;\n};\n\nexport const Spin = ({ indicator, size, ...rest }: SpinProps) => {\n const cls = useCls();\n const spinIndicator = indicator || <span className={cls(\"spin-loader\")} />;\n return (\n <AntdSpin\n indicator={spinIndicator}\n size={typeof size === \"number\" ? \"default\" : size}\n style={\n {\n \"--spin-size\": typeof size == \"number\" ? `${size}px` : undefined,\n } as React.CSSProperties\n }\n {...rest}\n />\n );\n};\n"],"names":["Spin","indicator","size","rest","cls","useCls","spinIndicator","jsx","AntdSpin"],"mappings":";;;;;AAWO,MAAMA,IAAO,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,GAAGC,QAAsB;AAC/D,QAAMC,IAAMC,EAAO,GACbC,IAAgBL,KAAa,gBAAAM,EAAC,UAAK,WAAWH,EAAI,aAAa,GAAG;AAEtE,SAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,MACX,MAAM,OAAOJ,KAAS,WAAW,YAAYA;AAAA,MAC7C,OACE;AAAA,QACE,eAAe,OAAOA,KAAQ,WAAW,GAAGA,CAAI,OAAO;AAAA,MACzD;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EACN;AAEJ;"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/spin/component.tsx"],"sourcesContent":["\"use client\";\nimport { useCls } from \"../utils\";\nimport { default as AntdSpin, SpinProps as AntdSpinProps } from \"antd/es/spin\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type SpinProps = Omit<AntdSpinProps, \"size\"> & {\n size?: \"small\" | \"default\" | \"large\" | number;\n};\n\nexport const Spin = ({ indicator, size, className, ...rest }: SpinProps) => {\n const cls = useCls();\n const spinIndicator = indicator || <span className={cls(\"spin-loader\")} />;\n return (\n <AntdSpin\n className={className}\n indicator={spinIndicator}\n size={typeof size === \"number\" ? \"default\" : size}\n style={\n {\n \"--spin-size\": typeof size == \"number\" ? `${size}px` : undefined,\n } as React.CSSProperties\n }\n {...rest}\n />\n );\n};\n"],"names":["Spin","indicator","size","className","rest","cls","useCls","spinIndicator","jsx","AntdSpin"],"mappings":";;;;;AAWa,MAAAA,IAAO,CAAC,EAAE,WAAAC,GAAW,MAAAC,GAAM,WAAAC,GAAW,GAAGC,QAAsB;AAC1E,QAAMC,IAAMC,EAAO,GACbC,IAAgBN,KAAa,gBAAAO,EAAC,UAAK,WAAWH,EAAI,aAAa,GAAG;AAEtE,SAAA,gBAAAG;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAAN;AAAA,MACA,WAAWI;AAAA,MACX,MAAM,OAAOL,KAAS,WAAW,YAAYA;AAAA,MAC7C,OACE;AAAA,QACE,eAAe,OAAOA,KAAQ,WAAW,GAAGA,CAAI,OAAO;AAAA,MACzD;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EACN;AAEJ;"}
@@ -1,52 +1,35 @@
1
1
  "use client";
2
- import { jsx as v } from "react/jsx-runtime";
3
- import u, { useRef as z, useState as E, useContext as R, useEffect as w } from "react";
4
- import { SplitterContext as I } from "./context.js";
5
- import { InternalPanel as N } from "antd/es/splitter/Panel";
6
- import { useCls as M } from "../utils/antdUtils.js";
7
- import { clsx as O } from "../utils/cn.js";
8
- const V = ({
9
- children: o,
10
- className: p,
11
- style: f,
12
- defaultSize: t,
13
- ...h
14
- }) => {
15
- const y = M(), s = z(null), [d, C] = E(), { layout: i = "horizontal" } = R(I), n = t === "max-content" || t === "min-content" || t === "fit-content";
16
- w(() => {
17
- if (!n || !s.current)
18
- return;
19
- const r = s.current, l = () => {
20
- const e = r.cloneNode(!0);
21
- e.style.position = "absolute", e.style.visibility = "hidden", e.style.pointerEvents = "none", e.style.zIndex = "-1", e.style.top = "0", e.style.left = "0", i === "horizontal" ? (e.style.width = t, e.style.height = "100%") : (e.style.width = "100%", e.style.height = t), document.body.appendChild(e);
22
- const m = e.getBoundingClientRect(), a = i === "horizontal" ? m.width : m.height;
23
- document.body.removeChild(e), a > 0 && C(Math.ceil(a));
24
- }, g = setTimeout(l, 0), c = new ResizeObserver(() => {
25
- l();
26
- });
27
- return c.observe(r), () => {
28
- clearTimeout(g), c.disconnect();
29
- };
30
- }, [n, i, o, t]);
31
- const b = n ? d : t, x = O(
32
- p,
33
- n && y(`splitter-panel-${t}`)
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ import o from "react";
4
+ import { InternalPanel as p } from "antd/es/splitter/Panel";
5
+ import { useCls as f } from "../utils/antdUtils.js";
6
+ import { clsx as x } from "../utils/cn.js";
7
+ const R = o.forwardRef(({
8
+ children: t,
9
+ className: s,
10
+ style: m,
11
+ defaultSize: n,
12
+ ...e
13
+ }, c) => {
14
+ const i = f(), r = n === "max-content" || n === "min-content" || n === "fit-content", l = x(
15
+ s,
16
+ r && i(`splitter-panel-${n}`)
34
17
  );
35
- return /* @__PURE__ */ v(
36
- N,
18
+ return /* @__PURE__ */ a(
19
+ p,
37
20
  {
38
- className: x,
39
- style: f,
40
- defaultSize: b,
41
- ...h,
42
- children: n && u.isValidElement(o) ? u.cloneElement(
43
- o,
44
- { ref: s }
45
- ) : o
21
+ className: l,
22
+ style: m,
23
+ defaultSize: n,
24
+ ...e,
25
+ children: r && o.isValidElement(t) ? o.cloneElement(
26
+ t,
27
+ { ref: c }
28
+ ) : t
46
29
  }
47
30
  );
48
- };
31
+ });
49
32
  export {
50
- V as SplitterPanel
33
+ R as SplitterPanel
51
34
  };
52
35
  //# sourceMappingURL=splitter-panel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"splitter-panel.js","sources":["../../../src/components/splitter/splitter-panel.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect, useRef, useState, useContext } from \"react\";\nimport { useCls, clsx } from \"../utils\";\nimport { SplitterContext } from \"./context\";\nimport { InternalPanel } from \"antd/es/splitter/Panel\";\nimport type { InternalPanelProps } from \"antd/es/splitter/interface\";\n\nexport type SplitterPanelProps = InternalPanelProps & {\n children?: React.ReactNode | undefined;\n} & React.RefAttributes<HTMLDivElement> & {\n /**\n * Default size of the panel. Can be a percentage string, number, or CSS intrinsic sizing values\n */\n defaultSize?: string | number | \"max-content\" | \"min-content\" | \"fit-content\";\n };\n\nexport const SplitterPanel: React.FC<SplitterPanelProps> = ({\n children,\n className,\n style,\n defaultSize,\n ...rest\n}) => {\n const cls = useCls();\n const contentRef = useRef<HTMLDivElement>(null);\n const [measuredSize, setMeasuredSize] = useState<number | undefined>();\n const { layout = \"horizontal\" } = useContext(SplitterContext);\n\n // Handle intrinsic sizing\n const isIntrinsicSizing = defaultSize === \"max-content\" || defaultSize === \"min-content\" || defaultSize === \"fit-content\";\n\n useEffect(() => {\n if (!isIntrinsicSizing) {\n return;\n }\n\n if (!contentRef.current) {\n return;\n }\n\n const element = contentRef.current;\n const measureContent = () => {\n // Clone the entire element to preserve all styles including padding, borders, etc.\n const clonedElement = element.cloneNode(true) as HTMLElement;\n \n // Set up the cloned element for measurement\n clonedElement.style.position = \"absolute\";\n clonedElement.style.visibility = \"hidden\";\n clonedElement.style.pointerEvents = \"none\";\n clonedElement.style.zIndex = \"-1\";\n clonedElement.style.top = \"0\";\n clonedElement.style.left = \"0\";\n\n if (layout === \"horizontal\") {\n clonedElement.style.width = defaultSize as string;\n clonedElement.style.height = \"100%\";\n } else {\n clonedElement.style.width = \"100%\";\n clonedElement.style.height = defaultSize as string;\n }\n\n document.body.appendChild(clonedElement);\n\n const rect = clonedElement.getBoundingClientRect();\n const size = layout === \"horizontal\" ? rect.width : rect.height;\n\n document.body.removeChild(clonedElement);\n\n if (size > 0) {\n setMeasuredSize(Math.ceil(size));\n }\n };\n\n // Small delay to ensure content is rendered\n const timeoutId = setTimeout(measureContent, 0);\n\n // Use ResizeObserver to track content size changes\n const resizeObserver = new ResizeObserver(() => {\n measureContent();\n });\n\n resizeObserver.observe(element);\n\n return () => {\n clearTimeout(timeoutId);\n resizeObserver.disconnect();\n };\n }, [isIntrinsicSizing, layout, children, defaultSize]);\n\n const finalDefaultSize = isIntrinsicSizing ? measuredSize : defaultSize;\n const finalClassName = clsx(\n className,\n isIntrinsicSizing && cls(`splitter-panel-${defaultSize}`)\n );\n\n return (\n <InternalPanel\n className={finalClassName}\n style={style}\n defaultSize={finalDefaultSize}\n {...rest}\n >\n {isIntrinsicSizing && React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<React.RefAttributes<HTMLElement>>,\n { ref: contentRef }\n )\n : children}\n </InternalPanel>\n );\n};\n"],"names":["SplitterPanel","children","className","style","defaultSize","rest","cls","useCls","contentRef","useRef","measuredSize","setMeasuredSize","useState","layout","useContext","SplitterContext","isIntrinsicSizing","useEffect","element","measureContent","clonedElement","rect","size","timeoutId","resizeObserver","finalDefaultSize","finalClassName","clsx","jsx","InternalPanel","React"],"mappings":";;;;;;;AAgBO,MAAMA,IAA8C,CAAC;AAAA,EAC1D,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAMC,EAAO,GACbC,IAAaC,EAAuB,IAAI,GACxC,CAACC,GAAcC,CAAe,IAAIC,EAA6B,GAC/D,EAAE,QAAAC,IAAS,iBAAiBC,EAAWC,CAAe,GAGtDC,IAAoBZ,MAAgB,iBAAiBA,MAAgB,iBAAiBA,MAAgB;AAE5G,EAAAa,EAAU,MAAM;AAKV,QAJA,CAACD,KAID,CAACR,EAAW;AACd;AAGF,UAAMU,IAAUV,EAAW,SACrBW,IAAiB,MAAM;AAErB,YAAAC,IAAgBF,EAAQ,UAAU,EAAI;AAG5C,MAAAE,EAAc,MAAM,WAAW,YAC/BA,EAAc,MAAM,aAAa,UACjCA,EAAc,MAAM,gBAAgB,QACpCA,EAAc,MAAM,SAAS,MAC7BA,EAAc,MAAM,MAAM,KAC1BA,EAAc,MAAM,OAAO,KAEvBP,MAAW,gBACbO,EAAc,MAAM,QAAQhB,GAC5BgB,EAAc,MAAM,SAAS,WAE7BA,EAAc,MAAM,QAAQ,QAC5BA,EAAc,MAAM,SAAShB,IAGtB,SAAA,KAAK,YAAYgB,CAAa;AAEjC,YAAAC,IAAOD,EAAc,sBAAsB,GAC3CE,IAAOT,MAAW,eAAeQ,EAAK,QAAQA,EAAK;AAEhD,eAAA,KAAK,YAAYD,CAAa,GAEnCE,IAAO,KACOX,EAAA,KAAK,KAAKW,CAAI,CAAC;AAAA,IAEnC,GAGMC,IAAY,WAAWJ,GAAgB,CAAC,GAGxCK,IAAiB,IAAI,eAAe,MAAM;AAC/B,MAAAL,EAAA;AAAA,IAAA,CAChB;AAED,WAAAK,EAAe,QAAQN,CAAO,GAEvB,MAAM;AACX,mBAAaK,CAAS,GACtBC,EAAe,WAAW;AAAA,IAC5B;AAAA,KACC,CAACR,GAAmBH,GAAQZ,GAAUG,CAAW,CAAC;AAE/C,QAAAqB,IAAmBT,IAAoBN,IAAeN,GACtDsB,IAAiBC;AAAA,IACrBzB;AAAA,IACAc,KAAqBV,EAAI,kBAAkBF,CAAW,EAAE;AAAA,EAC1D;AAGE,SAAA,gBAAAwB;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWH;AAAA,MACX,OAAAvB;AAAA,MACA,aAAasB;AAAA,MACZ,GAAGpB;AAAA,MAEH,UAAqBW,KAAAc,EAAM,eAAe7B,CAAQ,IAC/C6B,EAAM;AAAA,QACJ7B;AAAA,QACA,EAAE,KAAKO,EAAW;AAAA,MAAA,IAEpBP;AAAA,IAAA;AAAA,EACN;AAEJ;"}
1
+ {"version":3,"file":"splitter-panel.js","sources":["../../../src/components/splitter/splitter-panel.tsx"],"sourcesContent":["\"use client\";\nimport React from \"react\";\nimport { useCls, clsx } from \"../utils\";\nimport { InternalPanel } from \"antd/es/splitter/Panel\";\nimport type { InternalPanelProps } from \"antd/es/splitter/interface\";\n\nexport type SplitterPanelProps = InternalPanelProps & {\n children?: React.ReactNode;\n} & React.RefAttributes<HTMLElement> & {\n /**\n * Default size of the panel. Can be a percentage string, number, or CSS intrinsic sizing values\n */\n defaultSize?:\n | string\n | number\n | \"max-content\"\n | \"min-content\"\n | \"fit-content\";\n };\n\nexport const SplitterPanel = React.forwardRef<HTMLElement, SplitterPanelProps>(({\n children,\n className,\n style,\n defaultSize,\n ...rest\n}, ref) => {\n const cls = useCls();\n\n const isIntrinsicSizing =\n defaultSize === \"max-content\" ||\n defaultSize === \"min-content\" ||\n defaultSize === \"fit-content\";\n\n const finalClassName = clsx(\n className,\n isIntrinsicSizing && cls(`splitter-panel-${defaultSize}`)\n );\n\n return (\n <InternalPanel\n className={finalClassName}\n style={style}\n defaultSize={defaultSize}\n {...rest}\n >\n {isIntrinsicSizing && React.isValidElement(children)\n ? React.cloneElement(\n children as React.ReactElement<React.RefAttributes<HTMLElement>>,\n { ref }\n )\n : children}\n </InternalPanel>\n );\n});\n"],"names":["SplitterPanel","React","children","className","style","defaultSize","rest","ref","cls","useCls","isIntrinsicSizing","finalClassName","clsx","jsx","InternalPanel"],"mappings":";;;;;;AAoBa,MAAAA,IAAgBC,EAAM,WAA4C,CAAC;AAAA,EAC9E,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,GAAGC;AACL,GAAGC,MAAQ;AACT,QAAMC,IAAMC,EAAO,GAEbC,IACJL,MAAgB,iBAChBA,MAAgB,iBAChBA,MAAgB,eAEZM,IAAiBC;AAAA,IACrBT;AAAA,IACAO,KAAqBF,EAAI,kBAAkBH,CAAW,EAAE;AAAA,EAC1D;AAGE,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWH;AAAA,MACX,OAAAP;AAAA,MACA,aAAAC;AAAA,MACC,GAAGC;AAAA,MAEH,UAAqBI,KAAAT,EAAM,eAAeC,CAAQ,IAC/CD,EAAM;AAAA,QACJC;AAAA,QACA,EAAE,KAAAK,EAAI;AAAA,MAAA,IAERL;AAAA,IAAA;AAAA,EACN;AAEJ,CAAC;"}
@@ -1,157 +1,158 @@
1
- import { jsx as c, jsxs as I } from "react/jsx-runtime";
2
- import O, { useState as Se } from "react";
3
- import ue from "rc-resize-observer";
4
- import { useEvent as u } from "rc-util";
5
- import { devUseWarning as ze } from "antd/es/_util/warning";
6
- import { useComponentConfig as Ce } from "antd/es/config-provider/context";
7
- import he from "antd/es/config-provider/hooks/useCSSVarCls";
8
- import de from "antd/es/splitter/hooks/useItems";
9
- import ge from "antd/es/splitter/hooks/useResizable";
10
- import ve from "antd/es/splitter/hooks/useResize";
11
- import Ne from "antd/es/splitter/hooks/useSizes";
1
+ import { jsx as f, jsxs as P } from "react/jsx-runtime";
2
+ import u, { useState as ue } from "react";
3
+ import ze from "rc-resize-observer";
4
+ import { useEvent as z } from "rc-util";
5
+ import { devUseWarning as Ce } from "antd/es/_util/warning";
6
+ import { useComponentConfig as he } from "antd/es/config-provider/context";
7
+ import de from "antd/es/config-provider/hooks/useCSSVarCls";
8
+ import ge from "antd/es/splitter/hooks/useItems";
9
+ import ve from "antd/es/splitter/hooks/useResizable";
10
+ import Me from "antd/es/splitter/hooks/useResize";
11
+ import Ne from "./useSizes.js";
12
12
  import { SplitterPanel as be } from "./splitter-panel.js";
13
- import Me from "antd/es/splitter/SplitBar";
13
+ import ye from "antd/es/splitter/SplitBar";
14
14
  import xe from "antd/es/splitter/style";
15
- import { SplitterContext as ye } from "./context.js";
16
- import { clsx as P } from "../utils/cn.js";
17
- const Ie = ($) => {
15
+ import { SplitterContext as Ie } from "./context.js";
16
+ import { clsx as $ } from "../utils/cn.js";
17
+ const Oe = (E) => {
18
18
  const {
19
- prefixCls: E,
20
- className: V,
21
- style: U,
22
- layout: f = "horizontal",
23
- children: k,
24
- rootClassName: w,
25
- onResizeStart: z,
26
- onResize: n,
19
+ prefixCls: V,
20
+ className: U,
21
+ style: k,
22
+ layout: l = "horizontal",
23
+ children: w,
24
+ rootClassName: R,
25
+ onResizeStart: C,
26
+ onResize: a,
27
27
  onResizeEnd: o,
28
28
  lazy: B,
29
29
  showSplitBar: W = !0
30
- } = $, {
30
+ } = E, {
31
31
  getPrefixCls: j,
32
32
  direction: D,
33
- className: R,
34
- style: _
35
- } = Ce("splitter"), i = j("splitter", E), v = he(i), [q, F, H] = xe(i, v), m = f === "vertical", p = D === "rtl", L = !m && p, a = de(k);
33
+ className: _,
34
+ style: q
35
+ } = he("splitter"), n = j("splitter", V), M = de(n), [F, H, L] = xe(n, M), m = l === "vertical", p = D === "rtl", T = !m && p, i = ge(w), N = u.useMemo(() => i.map(() => u.createRef()), [i.length]);
36
36
  if (process.env.NODE_ENV !== "production") {
37
- const t = ze("Splitter");
37
+ const t = Ce("Splitter");
38
38
  let e = !1, s = !1;
39
- a.forEach((r) => {
39
+ i.forEach((r) => {
40
40
  r.size !== void 0 ? e = !0 : s = !0;
41
- }), e && s && !n && t(
41
+ }), e && s && !a && t(
42
42
  !1,
43
43
  "usage",
44
44
  "When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`."
45
45
  );
46
46
  }
47
- const [C, T] = Se(), A = (t) => {
47
+ const [h, A] = ue(), G = (t) => {
48
48
  const { offsetWidth: e, offsetHeight: s } = t, r = m ? s : e;
49
- r !== 0 && T(r);
49
+ r !== 0 && A(r);
50
50
  }, [
51
- G,
52
- h,
51
+ J,
53
52
  d,
54
- N,
53
+ g,
55
54
  b,
56
- J
57
- ] = Ne(a, C), M = ge(a, h, p), [K, Q, X, Y, x] = ve(
58
- a,
59
- M,
60
- d,
61
- C,
62
- J,
55
+ y,
56
+ K
57
+ ] = Ne(i, h, l, N), x = ve(i, d, p), [Q, X, Y, Z, I] = Me(
58
+ i,
59
+ x,
60
+ g,
61
+ h,
62
+ K,
63
63
  p
64
- ), Z = u((t) => {
65
- K(t), z == null || z(h);
66
- }), ee = u(
64
+ ), ee = z((t) => {
65
+ Q(t), C == null || C(d);
66
+ }), te = z(
67
67
  (t, e, s) => {
68
- const r = Q(t, e);
69
- s ? o == null || o(r) : n == null || n(r);
68
+ const r = X(t, e);
69
+ s ? o == null || o(r) : a == null || a(r);
70
70
  }
71
- ), te = u((t) => {
72
- X(), t || o == null || o(h);
73
- }), se = u(
71
+ ), se = z((t) => {
72
+ Y(), t || o == null || o(d);
73
+ }), re = z(
74
74
  (t, e) => {
75
- const s = Y(t, e);
76
- n == null || n(s), o == null || o(s);
75
+ const s = Z(t, e);
76
+ a == null || a(s), o == null || o(s);
77
77
  }
78
- ), re = P(
79
- i,
80
- V,
81
- `${i}-${f}`,
78
+ ), oe = $(
79
+ n,
80
+ U,
81
+ `${n}-${l}`,
82
82
  {
83
- [`${i}-rtl`]: p,
84
- [`${i}-hide-bars`]: !W
83
+ [`${n}-rtl`]: p,
84
+ [`${n}-hide-bars`]: !W
85
85
  },
86
- w,
87
86
  R,
88
- H,
89
- v,
90
- F
91
- ), y = `${i}-mask`, l = O.useMemo(() => {
87
+ _,
88
+ L,
89
+ M,
90
+ H
91
+ ), O = `${n}-mask`, c = u.useMemo(() => {
92
92
  const t = [];
93
93
  let e = 0;
94
- for (let s = 0; s < a.length; s += 1)
95
- e += d[s], t.push(e);
94
+ for (let s = 0; s < i.length; s += 1)
95
+ e += g[s], t.push(e);
96
96
  return t;
97
- }, [d]), oe = { ..._, ...U };
98
- return q(
99
- /* @__PURE__ */ c(ye.Provider, { value: { layout: f }, children: /* @__PURE__ */ c(ue, { onResize: A, children: /* @__PURE__ */ I("div", { style: oe, className: re, children: [
100
- a.map((t, e) => {
101
- const s = /* @__PURE__ */ c(
97
+ }, [g]), ne = { ...q, ...k };
98
+ return F(
99
+ /* @__PURE__ */ f(Ie.Provider, { value: { layout: l }, children: /* @__PURE__ */ f(ze, { onResize: G, children: /* @__PURE__ */ P("div", { style: ne, className: oe, children: [
100
+ i.map((t, e) => {
101
+ const s = /* @__PURE__ */ f(
102
102
  be,
103
103
  {
104
104
  ...t,
105
- prefixCls: i,
106
- size: G[e]
105
+ prefixCls: n,
106
+ size: J[e],
107
+ ref: N[e]
107
108
  }
108
109
  );
109
110
  let r = null;
110
- const S = M[e];
111
+ const S = x[e];
111
112
  if (S) {
112
- const ie = (l[e - 1] || 0) + N[e], ne = (l[e + 1] || 100) - b[e + 1], ae = (l[e - 1] || 0) + b[e], le = (l[e + 1] || 100) - N[e + 1];
113
- r = /* @__PURE__ */ c(
114
- Me,
113
+ const ie = (c[e - 1] || 0) + b[e], ae = (c[e + 1] || 100) - y[e + 1], le = (c[e - 1] || 0) + y[e], ce = (c[e + 1] || 100) - b[e + 1];
114
+ r = /* @__PURE__ */ f(
115
+ ye,
115
116
  {
116
117
  lazy: B,
117
118
  index: e,
118
- active: x === e,
119
- prefixCls: i,
119
+ active: I === e,
120
+ prefixCls: n,
120
121
  vertical: m,
121
122
  resizable: S.resizable,
122
- ariaNow: l[e] * 100,
123
- ariaMin: Math.max(ie, ne) * 100,
124
- ariaMax: Math.min(ae, le) * 100,
123
+ ariaNow: c[e] * 100,
124
+ ariaMin: Math.max(ie, ae) * 100,
125
+ ariaMax: Math.min(le, ce) * 100,
125
126
  startCollapsible: S.startCollapsible,
126
127
  endCollapsible: S.endCollapsible,
127
- onOffsetStart: Z,
128
- onOffsetUpdate: (ce, fe, me, pe) => {
129
- let g = m ? me : fe;
130
- L && (g = -g), ee(ce, g, pe);
128
+ onOffsetStart: ee,
129
+ onOffsetUpdate: (fe, me, pe, Se) => {
130
+ let v = m ? pe : me;
131
+ T && (v = -v), te(fe, v, Se);
131
132
  },
132
- onOffsetEnd: te,
133
- onCollapse: se,
134
- containerSize: C || 0
133
+ onOffsetEnd: se,
134
+ onCollapse: re,
135
+ containerSize: h || 0
135
136
  }
136
137
  );
137
138
  }
138
- return /* @__PURE__ */ I(O.Fragment, { children: [
139
+ return /* @__PURE__ */ P(u.Fragment, { children: [
139
140
  s,
140
141
  r
141
142
  ] }, `split-panel-${e}`);
142
143
  }),
143
- typeof x == "number" && /* @__PURE__ */ c(
144
+ typeof I == "number" && /* @__PURE__ */ f(
144
145
  "div",
145
146
  {
146
147
  "aria-hidden": !0,
147
- className: P(y, `${y}-${f}`)
148
+ className: $(O, `${O}-${l}`)
148
149
  }
149
150
  )
150
151
  ] }) }) })
151
152
  );
152
153
  };
153
- process.env.NODE_ENV !== "production" && (Ie.displayName = "Splitter");
154
+ process.env.NODE_ENV !== "production" && (Oe.displayName = "Splitter");
154
155
  export {
155
- Ie as MainSplitter
156
+ Oe as MainSplitter
156
157
  };
157
158
  //# sourceMappingURL=splitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"splitter.js","sources":["../../../src/components/splitter/splitter.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { clsx } from \"../utils\";\nimport ResizeObserver from \"rc-resize-observer\";\nimport { useEvent } from \"rc-util\";\n\nimport type { GetProp } from \"antd/es/_util/type\";\nimport { devUseWarning } from \"antd/es/_util/warning\";\nimport { useComponentConfig } from \"antd/es/config-provider/context\";\nimport useCSSVarCls from \"antd/es/config-provider/hooks/useCSSVarCls\";\nimport useItems from \"antd/es/splitter/hooks/useItems\";\nimport useResizable from \"antd/es/splitter/hooks/useResizable\";\nimport useResize from \"antd/es/splitter/hooks/useResize\";\nimport useSizes from \"antd/es/splitter/hooks/useSizes\";\nimport type { SplitterProps as AntdSplitterProps } from \"antd/es/splitter/interface\";\nimport { SplitterPanel } from \"./splitter-panel\";\nimport SplitBar from \"antd/es/splitter/SplitBar\";\nimport useStyle from \"antd/es/splitter/style\";\nimport { SplitterContext } from \"./context\";\n\nexport interface SplitterProps extends AntdSplitterProps {\n /**\n * Whether to show the split bars between panels\n * @default true\n */\n showSplitBar?: boolean;\n}\n\nexport const MainSplitter: React.FC<React.PropsWithChildren<SplitterProps>> = (\n props\n) => {\n const {\n prefixCls: customizePrefixCls,\n className,\n style,\n layout = \"horizontal\",\n children,\n rootClassName,\n onResizeStart,\n onResize,\n onResizeEnd,\n lazy,\n showSplitBar = true,\n } = props;\n\n const {\n getPrefixCls,\n direction,\n className: contextClassName,\n style: contextStyle,\n } = useComponentConfig(\"splitter\");\n const prefixCls = getPrefixCls(\"splitter\", customizePrefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n\n // ======================== Direct ========================\n const isVertical = layout === \"vertical\";\n const isRTL = direction === \"rtl\";\n const reverse = !isVertical && isRTL;\n\n // ====================== Items Data ======================\n const items = useItems(children);\n\n // >>> Warning for uncontrolled\n if (process.env.NODE_ENV !== \"production\") {\n const warning = devUseWarning(\"Splitter\");\n\n let existSize = false;\n let existUndefinedSize = false;\n\n items.forEach((item) => {\n if (item.size !== undefined) {\n existSize = true;\n } else {\n existUndefinedSize = true;\n }\n });\n\n if (existSize && existUndefinedSize && !onResize) {\n warning(\n false,\n \"usage\",\n \"When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`.\"\n );\n }\n }\n\n // ====================== Container =======================\n const [containerSize, setContainerSize] = useState<number | undefined>();\n\n const onContainerResize: GetProp<typeof ResizeObserver, \"onResize\"> = (\n size\n ) => {\n const { offsetWidth, offsetHeight } = size;\n const containerSize = isVertical ? offsetHeight : offsetWidth;\n // Skip when container has no size, Such as nested in a hidden tab panel\n // to fix: https://github.com/ant-design/ant-design/issues/51106\n if (containerSize === 0) {\n return;\n }\n setContainerSize(containerSize);\n };\n\n // ========================= Size =========================\n const [\n panelSizes,\n itemPxSizes,\n itemPtgSizes,\n itemPtgMinSizes,\n itemPtgMaxSizes,\n updateSizes,\n ] = useSizes(items, containerSize);\n\n // ====================== Resizable =======================\n const resizableInfos = useResizable(items, itemPxSizes, isRTL);\n\n const [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex] =\n useResize(\n items,\n resizableInfos,\n itemPtgSizes,\n containerSize,\n updateSizes,\n isRTL\n );\n\n // ======================== Events ========================\n const onInternalResizeStart = useEvent((index: number) => {\n onOffsetStart(index);\n onResizeStart?.(itemPxSizes);\n });\n\n const onInternalResizeUpdate = useEvent(\n (index: number, offset: number, lazyEnd?: boolean) => {\n const nextSizes = onOffsetUpdate(index, offset);\n\n if (lazyEnd) {\n onResizeEnd?.(nextSizes);\n } else {\n onResize?.(nextSizes);\n }\n }\n );\n\n const onInternalResizeEnd = useEvent((lazyEnd?: boolean) => {\n onOffsetEnd();\n\n if (!lazyEnd) {\n onResizeEnd?.(itemPxSizes);\n }\n });\n\n const onInternalCollapse = useEvent(\n (index: number, type: \"start\" | \"end\") => {\n const nextSizes = onCollapse(index, type);\n onResize?.(nextSizes);\n onResizeEnd?.(nextSizes);\n }\n );\n\n // ======================== Styles ========================\n const containerClassName = clsx(\n prefixCls,\n className,\n `${prefixCls}-${layout}`,\n {\n [`${prefixCls}-rtl`]: isRTL,\n [`${prefixCls}-hide-bars`]: !showSplitBar,\n },\n rootClassName,\n contextClassName,\n cssVarCls,\n rootCls,\n hashId\n );\n\n // ======================== Render ========================\n const maskCls = `${prefixCls}-mask`;\n\n const stackSizes = React.useMemo(() => {\n const mergedSizes: number[] = [];\n\n let stack = 0;\n for (let i = 0; i < items.length; i += 1) {\n stack += itemPtgSizes[i];\n mergedSizes.push(stack);\n }\n\n return mergedSizes;\n }, [itemPtgSizes]);\n\n const mergedStyle: React.CSSProperties = { ...contextStyle, ...style };\n\n return wrapCSSVar(\n <SplitterContext.Provider value={{ layout }}>\n <ResizeObserver onResize={onContainerResize}>\n <div style={mergedStyle} className={containerClassName}>\n {items.map((item, idx) => {\n // Panel\n const panel = (\n <SplitterPanel\n {...item}\n prefixCls={prefixCls}\n size={panelSizes[idx]}\n />\n );\n\n // Split Bar\n let splitBar: React.ReactElement | null = null;\n\n const resizableInfo = resizableInfos[idx];\n if (resizableInfo) {\n const ariaMinStart =\n (stackSizes[idx - 1] || 0) + itemPtgMinSizes[idx];\n const ariaMinEnd =\n (stackSizes[idx + 1] || 100) - itemPtgMaxSizes[idx + 1];\n\n const ariaMaxStart =\n (stackSizes[idx - 1] || 0) + itemPtgMaxSizes[idx];\n const ariaMaxEnd =\n (stackSizes[idx + 1] || 100) - itemPtgMinSizes[idx + 1];\n\n splitBar = (\n <SplitBar\n lazy={lazy}\n index={idx}\n active={movingIndex === idx}\n prefixCls={prefixCls}\n vertical={isVertical}\n resizable={resizableInfo.resizable}\n ariaNow={stackSizes[idx] * 100}\n ariaMin={Math.max(ariaMinStart, ariaMinEnd) * 100}\n ariaMax={Math.min(ariaMaxStart, ariaMaxEnd) * 100}\n startCollapsible={resizableInfo.startCollapsible}\n endCollapsible={resizableInfo.endCollapsible}\n onOffsetStart={onInternalResizeStart}\n onOffsetUpdate={(index, offsetX, offsetY, lazyEnd) => {\n let offset = isVertical ? offsetY : offsetX;\n if (reverse) {\n offset = -offset;\n }\n onInternalResizeUpdate(index, offset, lazyEnd);\n }}\n onOffsetEnd={onInternalResizeEnd}\n onCollapse={onInternalCollapse}\n containerSize={containerSize || 0}\n />\n );\n }\n\n return (\n <React.Fragment key={`split-panel-${idx}`}>\n {panel}\n {splitBar}\n </React.Fragment>\n );\n })}\n\n {/* Fake mask for cursor */}\n {typeof movingIndex === \"number\" && (\n <div\n aria-hidden\n className={clsx(maskCls, `${maskCls}-${layout}`)}\n />\n )}\n </div>\n </ResizeObserver>\n </SplitterContext.Provider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n MainSplitter.displayName = \"Splitter\";\n}\n"],"names":["MainSplitter","props","customizePrefixCls","className","style","layout","children","rootClassName","onResizeStart","onResize","onResizeEnd","lazy","showSplitBar","getPrefixCls","direction","contextClassName","contextStyle","useComponentConfig","prefixCls","rootCls","useCSSVarCls","wrapCSSVar","hashId","cssVarCls","useStyle","isVertical","isRTL","reverse","items","useItems","warning","devUseWarning","existSize","existUndefinedSize","item","containerSize","setContainerSize","useState","onContainerResize","size","offsetWidth","offsetHeight","panelSizes","itemPxSizes","itemPtgSizes","itemPtgMinSizes","itemPtgMaxSizes","updateSizes","useSizes","resizableInfos","useResizable","onOffsetStart","onOffsetUpdate","onOffsetEnd","onCollapse","movingIndex","useResize","onInternalResizeStart","useEvent","index","onInternalResizeUpdate","offset","lazyEnd","nextSizes","onInternalResizeEnd","onInternalCollapse","type","containerClassName","clsx","maskCls","stackSizes","React","mergedSizes","stack","i","mergedStyle","SplitterContext","jsx","ResizeObserver","jsxs","idx","panel","SplitterPanel","splitBar","resizableInfo","ariaMinStart","ariaMinEnd","ariaMaxStart","ariaMaxEnd","SplitBar","offsetX","offsetY"],"mappings":"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"}
1
+ {"version":3,"file":"splitter.js","sources":["../../../src/components/splitter/splitter.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { clsx } from \"../utils\";\nimport ResizeObserver from \"rc-resize-observer\";\nimport { useEvent } from \"rc-util\";\n\nimport type { GetProp } from \"antd/es/_util/type\";\nimport { devUseWarning } from \"antd/es/_util/warning\";\nimport { useComponentConfig } from \"antd/es/config-provider/context\";\nimport useCSSVarCls from \"antd/es/config-provider/hooks/useCSSVarCls\";\nimport useItems from \"antd/es/splitter/hooks/useItems\";\nimport useResizable from \"antd/es/splitter/hooks/useResizable\";\nimport useResize from \"antd/es/splitter/hooks/useResize\";\nimport useSizes from \"./useSizes\";\nimport type { SplitterProps as AntdSplitterProps } from \"antd/es/splitter/interface\";\nimport { SplitterPanel } from \"./splitter-panel\";\nimport SplitBar from \"antd/es/splitter/SplitBar\";\nimport useStyle from \"antd/es/splitter/style\";\nimport { SplitterContext } from \"./context\";\n\nexport interface SplitterProps extends AntdSplitterProps {\n /**\n * Whether to show the split bars between panels\n * @default true\n */\n showSplitBar?: boolean;\n}\n\nexport const MainSplitter: React.FC<React.PropsWithChildren<SplitterProps>> = (\n props\n) => {\n const {\n prefixCls: customizePrefixCls,\n className,\n style,\n layout = \"horizontal\",\n children,\n rootClassName,\n onResizeStart,\n onResize,\n onResizeEnd,\n lazy,\n showSplitBar = true,\n } = props;\n\n const {\n getPrefixCls,\n direction,\n className: contextClassName,\n style: contextStyle,\n } = useComponentConfig(\"splitter\");\n const prefixCls = getPrefixCls(\"splitter\", customizePrefixCls);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n\n // ======================== Direct ========================\n const isVertical = layout === \"vertical\";\n const isRTL = direction === \"rtl\";\n const reverse = !isVertical && isRTL;\n\n // ====================== Items Data ======================\n const items = useItems(children);\n \n // Create refs for intrinsic panels to pass to useSizes\n const elementRefs = React.useMemo(() => {\n return items.map(() => React.createRef<HTMLElement>());\n }, [items.length]);\n\n // >>> Warning for uncontrolled\n if (process.env.NODE_ENV !== \"production\") {\n const warning = devUseWarning(\"Splitter\");\n\n let existSize = false;\n let existUndefinedSize = false;\n\n items.forEach((item) => {\n if (item.size !== undefined) {\n existSize = true;\n } else {\n existUndefinedSize = true;\n }\n });\n\n if (existSize && existUndefinedSize && !onResize) {\n warning(\n false,\n \"usage\",\n \"When part of `Splitter.Panel` has `size`, `onResize` is required or change `size` to `defaultSize`.\"\n );\n }\n }\n\n // ====================== Container =======================\n const [containerSize, setContainerSize] = useState<number | undefined>();\n\n const onContainerResize: GetProp<typeof ResizeObserver, \"onResize\"> = (\n size\n ) => {\n const { offsetWidth, offsetHeight } = size;\n const containerSize = isVertical ? offsetHeight : offsetWidth;\n // Skip when container has no size, Such as nested in a hidden tab panel\n // to fix: https://github.com/ant-design/ant-design/issues/51106\n if (containerSize === 0) {\n return;\n }\n setContainerSize(containerSize);\n };\n\n // ========================= Size =========================\n const [\n panelSizes,\n itemPxSizes,\n itemPtgSizes,\n itemPtgMinSizes,\n itemPtgMaxSizes,\n updateSizes,\n ] = useSizes(items, containerSize, layout, elementRefs);\n\n // ====================== Resizable =======================\n const resizableInfos = useResizable(items, itemPxSizes, isRTL);\n\n const [onOffsetStart, onOffsetUpdate, onOffsetEnd, onCollapse, movingIndex] =\n useResize(\n items,\n resizableInfos,\n itemPtgSizes,\n containerSize,\n updateSizes,\n isRTL\n );\n\n // ======================== Events ========================\n const onInternalResizeStart = useEvent((index: number) => {\n onOffsetStart(index);\n onResizeStart?.(itemPxSizes);\n });\n\n const onInternalResizeUpdate = useEvent(\n (index: number, offset: number, lazyEnd?: boolean) => {\n const nextSizes = onOffsetUpdate(index, offset);\n\n if (lazyEnd) {\n onResizeEnd?.(nextSizes);\n } else {\n onResize?.(nextSizes);\n }\n }\n );\n\n const onInternalResizeEnd = useEvent((lazyEnd?: boolean) => {\n onOffsetEnd();\n\n if (!lazyEnd) {\n onResizeEnd?.(itemPxSizes);\n }\n });\n\n const onInternalCollapse = useEvent(\n (index: number, type: \"start\" | \"end\") => {\n const nextSizes = onCollapse(index, type);\n onResize?.(nextSizes);\n onResizeEnd?.(nextSizes);\n }\n );\n\n // ======================== Styles ========================\n const containerClassName = clsx(\n prefixCls,\n className,\n `${prefixCls}-${layout}`,\n {\n [`${prefixCls}-rtl`]: isRTL,\n [`${prefixCls}-hide-bars`]: !showSplitBar,\n },\n rootClassName,\n contextClassName,\n cssVarCls,\n rootCls,\n hashId\n );\n\n // ======================== Render ========================\n const maskCls = `${prefixCls}-mask`;\n\n const stackSizes = React.useMemo(() => {\n const mergedSizes: number[] = [];\n\n let stack = 0;\n for (let i = 0; i < items.length; i += 1) {\n stack += itemPtgSizes[i];\n mergedSizes.push(stack);\n }\n\n return mergedSizes;\n }, [itemPtgSizes]);\n\n const mergedStyle: React.CSSProperties = { ...contextStyle, ...style };\n\n return wrapCSSVar(\n <SplitterContext.Provider value={{ layout }}>\n <ResizeObserver onResize={onContainerResize}>\n <div style={mergedStyle} className={containerClassName}>\n {items.map((item, idx) => {\n // Panel\n const panel = (\n <SplitterPanel\n {...item}\n prefixCls={prefixCls}\n size={panelSizes[idx]}\n ref={elementRefs[idx]}\n />\n );\n\n // Split Bar\n let splitBar: React.ReactElement | null = null;\n\n const resizableInfo = resizableInfos[idx];\n if (resizableInfo) {\n const ariaMinStart =\n (stackSizes[idx - 1] || 0) + itemPtgMinSizes[idx];\n const ariaMinEnd =\n (stackSizes[idx + 1] || 100) - itemPtgMaxSizes[idx + 1];\n\n const ariaMaxStart =\n (stackSizes[idx - 1] || 0) + itemPtgMaxSizes[idx];\n const ariaMaxEnd =\n (stackSizes[idx + 1] || 100) - itemPtgMinSizes[idx + 1];\n\n splitBar = (\n <SplitBar\n lazy={lazy}\n index={idx}\n active={movingIndex === idx}\n prefixCls={prefixCls}\n vertical={isVertical}\n resizable={resizableInfo.resizable}\n ariaNow={stackSizes[idx] * 100}\n ariaMin={Math.max(ariaMinStart, ariaMinEnd) * 100}\n ariaMax={Math.min(ariaMaxStart, ariaMaxEnd) * 100}\n startCollapsible={resizableInfo.startCollapsible}\n endCollapsible={resizableInfo.endCollapsible}\n onOffsetStart={onInternalResizeStart}\n onOffsetUpdate={(index, offsetX, offsetY, lazyEnd) => {\n let offset = isVertical ? offsetY : offsetX;\n if (reverse) {\n offset = -offset;\n }\n onInternalResizeUpdate(index, offset, lazyEnd);\n }}\n onOffsetEnd={onInternalResizeEnd}\n onCollapse={onInternalCollapse}\n containerSize={containerSize || 0}\n />\n );\n }\n\n return (\n <React.Fragment key={`split-panel-${idx}`}>\n {panel}\n {splitBar}\n </React.Fragment>\n );\n })}\n\n {/* Fake mask for cursor */}\n {typeof movingIndex === \"number\" && (\n <div\n aria-hidden\n className={clsx(maskCls, `${maskCls}-${layout}`)}\n />\n )}\n </div>\n </ResizeObserver>\n </SplitterContext.Provider>\n );\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n MainSplitter.displayName = \"Splitter\";\n}\n"],"names":["MainSplitter","props","customizePrefixCls","className","style","layout","children","rootClassName","onResizeStart","onResize","onResizeEnd","lazy","showSplitBar","getPrefixCls","direction","contextClassName","contextStyle","useComponentConfig","prefixCls","rootCls","useCSSVarCls","wrapCSSVar","hashId","cssVarCls","useStyle","isVertical","isRTL","reverse","items","useItems","elementRefs","React","warning","devUseWarning","existSize","existUndefinedSize","item","containerSize","setContainerSize","useState","onContainerResize","size","offsetWidth","offsetHeight","panelSizes","itemPxSizes","itemPtgSizes","itemPtgMinSizes","itemPtgMaxSizes","updateSizes","useSizes","resizableInfos","useResizable","onOffsetStart","onOffsetUpdate","onOffsetEnd","onCollapse","movingIndex","useResize","onInternalResizeStart","useEvent","index","onInternalResizeUpdate","offset","lazyEnd","nextSizes","onInternalResizeEnd","onInternalCollapse","type","containerClassName","clsx","maskCls","stackSizes","mergedSizes","stack","i","mergedStyle","SplitterContext","jsx","ResizeObserver","jsxs","idx","panel","SplitterPanel","splitBar","resizableInfo","ariaMinStart","ariaMinEnd","ariaMaxStart","ariaMaxEnd","SplitBar","offsetX","offsetY"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import u from "react";
2
+ const I = (s, l, p) => {
3
+ const o = s.cloneNode(!0);
4
+ o.style.position = "absolute", o.style.visibility = "hidden", o.style.pointerEvents = "none", o.style.zIndex = "-1", o.style.top = "0", o.style.left = "0", p === "horizontal" ? (o.style.width = l, o.style.height = "100%") : (o.style.width = "100%", o.style.height = l), document.body.appendChild(o);
5
+ const d = o.getBoundingClientRect(), a = p === "horizontal" ? d.width : d.height;
6
+ return document.body.removeChild(o), a > 0 ? Math.ceil(a) : 0;
7
+ };
8
+ function y(s) {
9
+ return Number(s.slice(0, -1)) / 100;
10
+ }
11
+ function M(s) {
12
+ return typeof s == "string" && s.endsWith("%");
13
+ }
14
+ function B(s, l, p = "horizontal", o = []) {
15
+ const d = s.map((e) => e.size), a = s.length, c = l || 0, w = (e) => e * c, [v, C] = u.useState(() => s.map((e) => e.defaultSize)), [z, P] = u.useState(/* @__PURE__ */ new Map()), b = (e) => e === "max-content" || e === "min-content" || e === "fit-content";
16
+ u.useEffect(() => {
17
+ const e = /* @__PURE__ */ new Map();
18
+ let i = !1;
19
+ s.forEach((r, n) => {
20
+ if (b(r.defaultSize)) {
21
+ const t = o[n];
22
+ if (t != null && t.current) {
23
+ const f = I(t.current, r.defaultSize, p);
24
+ if (f > 0) {
25
+ const g = z.get(n);
26
+ g === void 0 || g !== f ? (e.set(n, f), i = !0) : e.set(n, g);
27
+ }
28
+ }
29
+ }
30
+ }), i && P((r) => new Map([...r, ...e]));
31
+ }, [s, o, p, l]);
32
+ const m = u.useMemo(() => {
33
+ const e = [];
34
+ for (let i = 0; i < a; i += 1) {
35
+ let r = d[i] ?? v[i];
36
+ b(r) && z.has(i) && (r = z.get(i)), e[i] = r;
37
+ }
38
+ return e;
39
+ }, [a, v, d, z]), h = u.useMemo(() => {
40
+ let e = [], i = 0;
41
+ for (let n = 0; n < a; n += 1) {
42
+ const t = m[n];
43
+ if (M(t))
44
+ e[n] = y(t);
45
+ else if (t || t === 0) {
46
+ const f = Number(t);
47
+ Number.isNaN(f) || (e[n] = f / c);
48
+ } else
49
+ i += 1, e[n] = void 0;
50
+ }
51
+ const r = e.reduce((n, t) => n + (t || 0), 0);
52
+ if (r > 1 || !i) {
53
+ const n = 1 / r;
54
+ e = e.map((t) => t === void 0 ? 0 : t * n);
55
+ } else {
56
+ const n = (1 - r) / i;
57
+ e = e.map((t) => t === void 0 ? n : t);
58
+ }
59
+ return e;
60
+ }, [m, c]), S = u.useMemo(
61
+ () => h.map(w),
62
+ [h, c]
63
+ ), x = u.useMemo(
64
+ () => s.map((e) => M(e.min) ? y(e.min) : (e.min || 0) / c),
65
+ [s, c]
66
+ ), N = u.useMemo(
67
+ () => s.map((e) => M(e.max) ? y(e.max) : (e.max || c) / c),
68
+ [s, c]
69
+ );
70
+ return [
71
+ u.useMemo(
72
+ () => l ? S : m,
73
+ [S, l]
74
+ ),
75
+ S,
76
+ h,
77
+ x,
78
+ N,
79
+ C
80
+ ];
81
+ }
82
+ export {
83
+ B as default,
84
+ y as getPtg
85
+ };
86
+ //# sourceMappingURL=useSizes.js.map