@bioturing/components 0.26.2 → 0.28.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.
- package/dist/components/checkbox/component.js.map +1 -1
- package/dist/components/choice-list/component.js +24 -21
- package/dist/components/choice-list/component.js.map +1 -1
- package/dist/components/cmdk/index.js.map +1 -1
- package/dist/components/combobox/component.js +202 -0
- package/dist/components/combobox/component.js.map +1 -0
- package/dist/components/combobox/style.css +1 -0
- package/dist/components/combobox/trigger.js +89 -0
- package/dist/components/combobox/trigger.js.map +1 -0
- package/dist/components/dropdown-menu/component.js +176 -162
- package/dist/components/dropdown-menu/component.js.map +1 -1
- package/dist/components/dropdown-menu/divider.js +16 -0
- package/dist/components/dropdown-menu/divider.js.map +1 -0
- package/dist/components/dropdown-menu/item.css +1 -0
- package/dist/components/dropdown-menu/item.js +131 -0
- package/dist/components/dropdown-menu/item.js.map +1 -0
- package/dist/components/dropdown-menu/style.css +1 -1
- package/dist/components/hooks/useDraggable.js +77 -0
- package/dist/components/hooks/useDraggable.js.map +1 -0
- package/dist/components/hooks/useHover.js +26 -0
- package/dist/components/hooks/useHover.js.map +1 -0
- package/dist/components/hooks/useTransitionStatus.js +52 -0
- package/dist/components/hooks/useTransitionStatus.js.map +1 -0
- package/dist/components/nav/item.js +2 -2
- package/dist/components/popup-panel/component.js +136 -169
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/popup-panel/style.css +1 -1
- package/dist/components/resizable/component.js +239 -0
- package/dist/components/resizable/component.js.map +1 -0
- package/dist/components/resizable/style.css +1 -0
- package/dist/components/segmented/component.js +3 -3
- package/dist/components/segmented/component.js.map +1 -1
- package/dist/components/select/component.js +160 -91
- package/dist/components/select/component.js.map +1 -1
- package/dist/components/select/item.js +54 -0
- package/dist/components/select/item.js.map +1 -0
- package/dist/components/select/style.css +1 -1
- package/dist/components/spin/component.js +9 -8
- package/dist/components/spin/component.js.map +1 -1
- package/dist/components/splitter/splitter-panel.js +26 -43
- package/dist/components/splitter/splitter-panel.js.map +1 -1
- package/dist/components/splitter/splitter.js +99 -98
- package/dist/components/splitter/splitter.js.map +1 -1
- package/dist/components/splitter/useSizes.js +86 -0
- package/dist/components/splitter/useSizes.js.map +1 -0
- package/dist/components/stack/StackChild.js +9 -9
- package/dist/components/transition/component.js +1 -1
- package/dist/components/transition/component.js.map +1 -1
- package/dist/components/upload/dragger.js +19 -10
- package/dist/components/upload/dragger.js.map +1 -1
- package/dist/components/upload/item.js +21 -18
- package/dist/components/upload/item.js.map +1 -1
- package/dist/components/utils/antdUtils.js +18 -56
- package/dist/components/utils/antdUtils.js.map +1 -1
- package/dist/components/utils/placement.js +58 -0
- package/dist/components/utils/placement.js.map +1 -0
- package/dist/components/utils/reactElement.js +5 -0
- package/dist/components/utils/reactElement.js.map +1 -0
- package/dist/index.d.ts +478 -20
- package/dist/index.js +205 -189
- package/dist/index.js.map +1 -1
- package/dist/metadata.js +39 -5
- package/dist/metadata.js.map +1 -1
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n default as AntSelect,\n type BaseOptionType,\n type DefaultOptionType,\n type SelectProps as AntSelectProps,\n} from \"antd/es/select\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport { CSSProperties, forwardRef } from \"react\";\nimport {\n useFloating,\n offset,\n autoPlacement,\n shift,\n size,\n autoUpdate,\n useFloatingPortalNode,\n FloatingOverlay,\n} from \"@floating-ui/react\";\nimport { useControlledState } from \"../hooks\";\nimport React from \"react\";\nimport { clsx } from \"../utils\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { toMerged } from \"es-toolkit\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply({ availableHeight, availableWidth, elements }) {\n // 2. Or, use a CSS variable:\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n const dsPopupClassName = clsx(\n \"ds-select-popup\",\n isMultiple && \"ds-select-multiple\",\n classNames?.popup?.root || popupClassName,\n enhancePositioner && \"ds-select-popup-enhanced\"\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n return (\n <AntSelect\n // ref={ref}\n ref={(node) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n }}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n // for old version\n popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked />\n ) : (\n <Checkbox checked={false} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={clsx(\"ds-select\", className)}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={(menu) => {\n // Use a more specific type that includes both style and ref properties\n const renderMenu = () =>\n popupRender\n ? popupRender(menu)\n : dropdownRender\n ? dropdownRender(menu)\n : menu;\n if (!enhancePositioner) {\n return renderMenu();\n }\n return (\n <>\n <FloatingOverlay lockScroll onClick={() => setOpen(false)} />\n <div\n ref={(node) => {\n if (!node) return;\n const popupEl = node.closest(\n \".ds-select-dropdown\"\n ) as HTMLDivElement;\n refs.setFloating(popupEl);\n }}\n >\n {renderMenu()}\n </div>\n </>\n );\n }}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","floatingStyles","refs","useFloating","offset","autoPlacement","shift","size","availableHeight","availableWidth","elements","autoUpdate","dsPopupClassName","clsx","_a","popupWidth","PopupPanelSize","jsx","AntSelect","node","CaretDown","isSelected","Checkbox","toMerged","menu","renderMenu","jsxs","Fragment","FloatingOverlay","popupEl","MainSelect","forwardRef","Select"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/select/component.tsx"],"sourcesContent":["\"use client\";\nimport { CaretDown } from \"@bioturing/assets\";\nimport {\n autoPlacement,\n autoUpdate,\n FloatingOverlay,\n offset,\n shift,\n size,\n useFloating,\n useFloatingPortalNode,\n} from \"@floating-ui/react\";\nimport { default as Checkbox } from \"antd/es/checkbox\";\nimport {\n default as AntSelect,\n type SelectProps as AntSelectProps,\n type BaseOptionType,\n type DefaultOptionType,\n} from \"antd/es/select\";\nimport { toMerged } from \"es-toolkit\";\nimport React, {\n CSSProperties,\n forwardRef,\n isValidElement,\n useCallback,\n} from \"react\";\nimport { useControlledState } from \"../hooks\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\nimport { clsx, useCls } from \"../utils\";\n\n// Import component-specific styles\nimport { Divider } from \"antd\";\nimport { CheckboxProps } from \"../checkbox\";\nimport { SelectItem } from \"./item\";\nimport \"./style.css\";\n\n// SelectItem component props\n\n// Define props interface extending Ant Design's SelectProps\nexport interface SelectProps<\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n> extends AntSelectProps<ValueType, OptionType> {\n /**\n * Whether to enhance the positioner using floating-ui\n * @default false\n */\n enhancePositioner?: boolean;\n /**\n * Size of the popup panel\n * Will be ignored if enhancePositioner is false\n */\n popupSize?: string | number | PopupPanelSize;\n /**\n * Show selection summary instead of tags in multiple case\n * @default false\n */\n showSelectionSummary?: boolean;\n /**\n * Render function for the selection summary in multiple case\n * @default (value) => `${value.length} items selected`\n */\n selectionSummaryRender?: (value: ValueType) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n}\n\nexport type {\n BaseOptionType as SelectBaseOptionType,\n DefaultOptionType as SelectDefaultOptionType,\n};\n\n// Create inner function\nconst MainSelectInner = <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n {\n mode,\n className,\n open: openProp,\n defaultOpen,\n onOpenChange,\n popupClassName,\n onDropdownVisibleChange,\n enhancePositioner,\n getPopupContainer,\n popupSize,\n popupRender,\n dropdownRender,\n classNames,\n styles = {},\n showSelectionSummary,\n selectionSummaryRender,\n value: valueProp,\n onChange: onChangeProp,\n defaultValue,\n showSelectAll,\n selectAllRender,\n options,\n ...rest\n }: SelectProps<ValueType, OptionType>,\n ref: React.Ref<React.ComponentRef<typeof AntSelect>>\n) => {\n const portalNode = useFloatingPortalNode({});\n const isMultiple = mode === \"multiple\" || mode === \"tags\";\n const [open, setOpen] = useControlledState(\n openProp,\n onOpenChange || onDropdownVisibleChange,\n defaultOpen\n );\n const cls = useCls();\n const [value, onChange] = useControlledState(\n valueProp,\n onChangeProp,\n defaultValue\n );\n // enhancePositioner\n const { floatingStyles, refs } = useFloating({\n placement: \"bottom-start\",\n transform: false,\n open: enhancePositioner && open,\n middleware: [\n offset({\n mainAxis: 4,\n }),\n autoPlacement({\n allowedPlacements: [\n \"bottom-start\",\n \"bottom-end\",\n \"bottom\",\n \"top-start\",\n \"top-end\",\n \"top\",\n ],\n }),\n shift({\n padding: 8,\n }),\n size({\n padding: 8,\n apply({ availableHeight, availableWidth, elements }) {\n // 2. Or, use a CSS variable:\n elements.floating.style.setProperty(\n \"--available-width\",\n availableWidth + \"px\"\n );\n elements.floating.style.setProperty(\n \"--available-height\",\n availableHeight + \"px\"\n );\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const defaultSelectionSummaryRender = useCallback(\n (v: ValueType) => {\n const count = Array.isArray(v) ? v.length : 1;\n if (isMultiple) {\n return count + ` ${count == 1 ? \"item\" : \"items\"} selected`;\n }\n return <>{v}</>;\n },\n [isMultiple]\n );\n\n const dsSelectClassname = clsx(\n cls(\"select\", showSelectionSummary && \"select-selection-summary\"),\n className\n );\n\n const dsPopupClassName = clsx(\n cls(\n \"select-popup\",\n isMultiple && \"select-multiple\",\n enhancePositioner && \"select-popup-enhanced\"\n ),\n classNames?.popup?.root || popupClassName\n );\n const popupWidth =\n popupSize && typeof popupSize === \"string\" && popupSize in PopupPanelSize\n ? PopupPanelSize[popupSize as keyof typeof PopupPanelSize]\n : typeof popupSize === \"number\"\n ? popupSize + \"px\"\n : popupSize || \"fit-content\";\n const customRenderMenu = useCallback(\n (menu: React.ReactElement) => {\n const renderedMenu = popupRender\n ? popupRender(menu)\n : dropdownRender\n ? dropdownRender(menu)\n : menu;\n if (!showSelectAll) return renderedMenu;\n const checked = Array.isArray(value) && value.length > 0;\n const allValues = Array.isArray(options)\n ? options.map((option) => option.value)\n : (value as any).map((v: any) => v.value);\n const indeterminate =\n Array.isArray(value) && value.length && value.length < options.length;\n return (\n <>\n <SelectItem\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-option-active\"\n )}\n onMouseOver={(e) => {}}\n selectAllRender={selectAllRender}\n checked={checked}\n indeterminate={indeterminate}\n onSelectAll={() => onChange(allValues)}\n onDeselectAll={() => onChange([] as ValueType)}\n />\n <Divider />\n {renderedMenu}\n </>\n );\n },\n [\n popupRender,\n dropdownRender,\n showSelectAll,\n value,\n options,\n cls,\n selectAllRender,\n onChange,\n ]\n );\n return (\n <AntSelect\n // ref={ref}\n ref={(node) => {\n if (ref) {\n if (typeof ref == \"function\") {\n ref(node);\n } else {\n ref.current = node;\n }\n }\n if (!node) return;\n refs.setReference(node?.nativeElement as HTMLElement);\n }}\n suffixIcon={<CaretDown weight=\"bold\" />}\n open={open}\n onOpenChange={setOpen}\n value={value}\n onChange={onChange}\n // for old version\n popupClassName={dsPopupClassName}\n classNames={{\n popup: {\n root: dsPopupClassName,\n },\n ...classNames,\n }}\n {...(isMultiple\n ? {\n menuItemSelectedIcon: ({ isSelected }) => (\n <span className=\"ant-select-checkbox-indicator\">\n {isSelected ? (\n <Checkbox checked />\n ) : (\n <Checkbox checked={false} />\n )}\n </span>\n ),\n }\n : {})}\n mode={mode}\n className={dsSelectClassname}\n styles={\n enhancePositioner\n ? toMerged(styles, {\n popup: {\n root: {\n transition: \"none\",\n ...floatingStyles,\n \"--ds-select-popup-width\": popupWidth,\n } as CSSProperties,\n },\n })\n : styles\n }\n getPopupContainer={\n getPopupContainer ||\n (enhancePositioner ? () => portalNode || document.body : undefined)\n }\n popupRender={(menu) => {\n if (!enhancePositioner) {\n return customRenderMenu(menu);\n }\n return (\n <>\n <FloatingOverlay lockScroll onClick={() => setOpen(false)} />\n <div\n ref={(node) => {\n if (!node) return;\n const popupEl = node.closest(\n \".ds-select-dropdown\"\n ) as HTMLDivElement;\n refs.setFloating(popupEl);\n }}\n >\n {customRenderMenu(menu)}\n </div>\n </>\n );\n }}\n options={options}\n {...(showSelectionSummary\n ? {\n maxTagCount: 1,\n showSearch: false,\n labelRender: () => {\n if (selectionSummaryRender) {\n return selectionSummaryRender(value);\n }\n return defaultSelectionSummaryRender(value);\n },\n }\n : {})}\n {...rest}\n />\n );\n};\n\n// Use forwardRef with type assertion\nconst MainSelect = forwardRef(MainSelectInner) as <\n ValueType = unknown,\n OptionType extends BaseOptionType | DefaultOptionType = DefaultOptionType\n>(\n props: SelectProps<ValueType, OptionType> & {\n ref?: React.ForwardedRef<React.ComponentRef<typeof AntSelect>>;\n }\n) => ReturnType<typeof MainSelectInner>;\n\nexport const Select = Object.assign(MainSelect, {\n Option: AntSelect.Option,\n OptGroup: AntSelect.OptGroup,\n});\n"],"names":["MainSelectInner","mode","className","openProp","defaultOpen","onOpenChange","popupClassName","onDropdownVisibleChange","enhancePositioner","getPopupContainer","popupSize","popupRender","dropdownRender","classNames","styles","showSelectionSummary","selectionSummaryRender","valueProp","onChangeProp","defaultValue","showSelectAll","selectAllRender","options","rest","ref","portalNode","useFloatingPortalNode","isMultiple","open","setOpen","useControlledState","cls","useCls","value","onChange","floatingStyles","refs","useFloating","offset","autoPlacement","shift","size","availableHeight","availableWidth","elements","autoUpdate","defaultSelectionSummaryRender","useCallback","v","count","dsSelectClassname","clsx","dsPopupClassName","_a","popupWidth","PopupPanelSize","customRenderMenu","menu","renderedMenu","checked","allValues","option","indeterminate","jsxs","Fragment","jsx","SelectItem","e","Divider","AntSelect","node","CaretDown","isSelected","Checkbox","toMerged","FloatingOverlay","popupEl","MainSelect","forwardRef","Select"],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import n from "merge-refs";
|
|
3
|
+
import { forwardRef as v } from "react";
|
|
4
|
+
import { useHover as u } from "../hooks/useHover.js";
|
|
5
|
+
import { Checkbox as C } from "../checkbox/component.js";
|
|
6
|
+
import { useCls as g } from "../utils/antdUtils.js";
|
|
7
|
+
const h = v(
|
|
8
|
+
({
|
|
9
|
+
className: x,
|
|
10
|
+
onMouseOver: N,
|
|
11
|
+
selectAllRender: o,
|
|
12
|
+
checked: e,
|
|
13
|
+
indeterminate: t,
|
|
14
|
+
onSelectAll: r,
|
|
15
|
+
onDeselectAll: m,
|
|
16
|
+
...i
|
|
17
|
+
}, c) => {
|
|
18
|
+
const [l, f] = u(), p = g();
|
|
19
|
+
return /* @__PURE__ */ s(
|
|
20
|
+
"div",
|
|
21
|
+
{
|
|
22
|
+
ref: n(l, c),
|
|
23
|
+
className: p(
|
|
24
|
+
"select-item",
|
|
25
|
+
"select-item-option",
|
|
26
|
+
e && "select-item-option-selected",
|
|
27
|
+
"select-item-select-all",
|
|
28
|
+
f && "select-item-option-active"
|
|
29
|
+
),
|
|
30
|
+
...i,
|
|
31
|
+
children: o ? o({
|
|
32
|
+
onClick: e ? m : r,
|
|
33
|
+
checked: e,
|
|
34
|
+
indeterminate: t
|
|
35
|
+
}) : /* @__PURE__ */ s(
|
|
36
|
+
C,
|
|
37
|
+
{
|
|
38
|
+
checked: e,
|
|
39
|
+
indeterminate: t,
|
|
40
|
+
onChange: (a) => {
|
|
41
|
+
a.target.checked ? r() : m();
|
|
42
|
+
},
|
|
43
|
+
children: "Select all"
|
|
44
|
+
}
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
h.displayName = "SelectItem";
|
|
51
|
+
export {
|
|
52
|
+
h as SelectItem
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.js","sources":["../../../src/components/select/item.tsx"],"sourcesContent":["import mergeRefs from \"merge-refs\";\nimport { CheckboxProps, Checkbox } from \"../checkbox\";\nimport { useHover } from \"../hooks\";\nimport { useCls } from \"../utils\";\nimport { forwardRef } from \"react\";\n\nexport interface SelectItemProps extends React.ComponentPropsWithoutRef<\"div\"> {\n selectAllRender?: (props: {\n onClick: () => void;\n checked: CheckboxProps[\"checked\"];\n indeterminate: CheckboxProps[\"indeterminate\"];\n }) => React.ReactNode;\n checked: boolean;\n indeterminate: boolean;\n onSelectAll: () => void;\n onDeselectAll: () => void;\n}\n\n// SelectItem component\nexport const SelectItem: React.FC<SelectItemProps> = forwardRef<\n HTMLDivElement,\n SelectItemProps\n>(\n (\n {\n className,\n onMouseOver,\n selectAllRender,\n checked,\n indeterminate,\n onSelectAll,\n onDeselectAll,\n ...rest\n },\n forwardedRef\n ) => {\n const [ref, _hovering] = useHover<HTMLDivElement>();\n const cls = useCls();\n return (\n <div\n ref={mergeRefs(ref, forwardedRef)}\n className={cls(\n \"select-item\",\n \"select-item-option\",\n checked && \"select-item-option-selected\",\n \"select-item-select-all\",\n _hovering && \"select-item-option-active\"\n )}\n {...rest}\n >\n {selectAllRender ? (\n selectAllRender({\n onClick: checked ? onDeselectAll : onSelectAll,\n checked,\n indeterminate,\n })\n ) : (\n <Checkbox\n checked={checked}\n indeterminate={indeterminate}\n onChange={(e) => {\n if (e.target.checked) {\n onSelectAll();\n } else {\n onDeselectAll();\n }\n }}\n >\n Select all\n </Checkbox>\n )}\n </div>\n );\n }\n);\n\nSelectItem.displayName = \"SelectItem\";\n"],"names":["SelectItem","forwardRef","className","onMouseOver","selectAllRender","checked","indeterminate","onSelectAll","onDeselectAll","rest","forwardedRef","ref","_hovering","useHover","cls","useCls","jsx","mergeRefs","Checkbox","e"],"mappings":";;;;;;AAmBO,MAAMA,IAAwCC;AAAA,EAInD,CACE;AAAA,IACE,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,GAAGC;AAAA,KAELC,MACG;AACH,UAAM,CAACC,GAAKC,CAAS,IAAIC,EAAyB,GAC5CC,IAAMC,EAAO;AAEjB,WAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKC,EAAUN,GAAKD,CAAY;AAAA,QAChC,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,UACAT,KAAW;AAAA,UACX;AAAA,UACAO,KAAa;AAAA,QACf;AAAA,QACC,GAAGH;AAAA,QAEH,cACCL,EAAgB;AAAA,UACd,SAASC,IAAUG,IAAgBD;AAAA,UACnC,SAAAF;AAAA,UACA,eAAAC;AAAA,QACD,CAAA,IAED,gBAAAU;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAAAb;AAAA,YACA,eAAAC;AAAA,YACA,UAAU,CAACa,MAAM;AACX,cAAAA,EAAE,OAAO,UACCZ,EAAA,IAEEC,EAAA;AAAA,YAElB;AAAA,YACD,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAEJ;AAAA,EAAA;AAGN;AAEAR,EAAW,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer components{.ds-select-popup .ds-select-item-option-state{order:-1}.ds-select-popup .ds-select-checkbox-indicator,.ds-select-popup .ant-select-checkbox-indicator{margin-right:.5rem}.ds-select-multiple .ds-select-item-option-selected:not(.ds-select-item-option-disabled):not(:hover){background:transparent}.ds-select-popup-enhanced{transition:none;width:var(--ds-select-popup-width);height:fit-content;max-width:calc(var(--available-width) - 16px);max-height:calc(var(--available-height) - 16px)}}
|
|
1
|
+
@layer components{.ds-select-popup .ds-select-item-option-state{order:-1}.ds-select-popup .ds-select-checkbox-indicator,.ds-select-popup .ant-select-checkbox-indicator{margin-right:.5rem}.ds-select-multiple .ds-select-item-option-selected:not(.ds-select-item-option-disabled):not(:hover){background:transparent}.ds-select-popup-enhanced{transition:none;width:var(--ds-select-popup-width);height:fit-content;max-width:calc(var(--available-width) - 16px);max-height:calc(var(--available-height) - 16px)}.ds-select-selection-summary .ds-select-selection-overflow-item.ds-select-selection-overflow-item-rest{display:none}.ds-select-selection-summary .ds-select-selection-overflow-item-suffix{opacity:0}.ds-select-selection-summary .ds-select-selection-item-remove{display:none}.ds-select-selection-summary .ds-select-selection-item{background:transparent;border:none}.ds-select-item-select-all>.ds-checkbox-wrapper{width:100%;flex-grow:1}.ds-select-item-select-all+.ds-divider{padding:0;margin-top:.5rem;margin-bottom:.5rem}}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
-
import
|
|
3
|
+
import e from "antd/es/spin";
|
|
4
4
|
import './style.css';/* empty css */
|
|
5
|
-
import { useCls as
|
|
6
|
-
const
|
|
7
|
-
const
|
|
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
|
-
|
|
9
|
+
e,
|
|
10
10
|
{
|
|
11
|
-
|
|
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
|
-
...
|
|
17
|
+
...p
|
|
17
18
|
}
|
|
18
19
|
);
|
|
19
20
|
};
|
|
20
21
|
export {
|
|
21
|
-
|
|
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":";;;;;
|
|
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
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
style: f,
|
|
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: n,
|
|
9
|
+
className: s,
|
|
10
|
+
style: m,
|
|
12
11
|
defaultSize: t,
|
|
13
|
-
...
|
|
14
|
-
}) => {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
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}`)
|
|
12
|
+
...e
|
|
13
|
+
}, c) => {
|
|
14
|
+
const i = f(), r = t === "max-content" || t === "min-content" || t === "fit-content", l = x(
|
|
15
|
+
s,
|
|
16
|
+
r && i(`splitter-panel-${t}`)
|
|
34
17
|
);
|
|
35
|
-
return /* @__PURE__ */
|
|
36
|
-
|
|
18
|
+
return /* @__PURE__ */ a(
|
|
19
|
+
p,
|
|
37
20
|
{
|
|
38
|
-
className:
|
|
39
|
-
style:
|
|
40
|
-
defaultSize:
|
|
41
|
-
...
|
|
42
|
-
children:
|
|
43
|
-
|
|
44
|
-
{ ref:
|
|
45
|
-
) :
|
|
21
|
+
className: l,
|
|
22
|
+
style: m,
|
|
23
|
+
defaultSize: t,
|
|
24
|
+
...e,
|
|
25
|
+
children: r && o.isValidElement(n) ? o.cloneElement(
|
|
26
|
+
n,
|
|
27
|
+
{ ref: c }
|
|
28
|
+
) : n
|
|
46
29
|
}
|
|
47
30
|
);
|
|
48
|
-
};
|
|
31
|
+
});
|
|
49
32
|
export {
|
|
50
|
-
|
|
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
|
|
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
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { useEvent as
|
|
5
|
-
import { devUseWarning as
|
|
6
|
-
import { useComponentConfig as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import Ne from "
|
|
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
|
|
13
|
+
import ye from "antd/es/splitter/SplitBar";
|
|
14
14
|
import xe from "antd/es/splitter/style";
|
|
15
|
-
import { SplitterContext as
|
|
16
|
-
import { clsx as
|
|
17
|
-
const
|
|
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:
|
|
20
|
-
className:
|
|
21
|
-
style:
|
|
22
|
-
layout:
|
|
23
|
-
children:
|
|
24
|
-
rootClassName:
|
|
25
|
-
onResizeStart:
|
|
26
|
-
onResize:
|
|
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
|
-
lazy:
|
|
29
|
-
showSplitBar:
|
|
30
|
-
} =
|
|
31
|
-
getPrefixCls:
|
|
32
|
-
direction:
|
|
33
|
-
className:
|
|
34
|
-
style:
|
|
35
|
-
} =
|
|
28
|
+
lazy: _,
|
|
29
|
+
showSplitBar: B = !0
|
|
30
|
+
} = E, {
|
|
31
|
+
getPrefixCls: W,
|
|
32
|
+
direction: j,
|
|
33
|
+
className: D,
|
|
34
|
+
style: q
|
|
35
|
+
} = he("splitter"), n = W("splitter", V), M = de(n), [F, H, L] = xe(n, M), m = l === "vertical", p = j === "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 =
|
|
37
|
+
const t = Ce("Splitter");
|
|
38
38
|
let e = !1, s = !1;
|
|
39
|
-
|
|
39
|
+
i.forEach((r) => {
|
|
40
40
|
r.size !== void 0 ? e = !0 : s = !0;
|
|
41
|
-
}), e && s && !
|
|
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 [
|
|
47
|
+
const [h, A] = ue(), G = (t) => {
|
|
48
48
|
const { offsetWidth: e, offsetHeight: s } = t, r = m ? s : e;
|
|
49
|
-
r !== 0 &&
|
|
49
|
+
r !== 0 && A(r);
|
|
50
50
|
}, [
|
|
51
|
-
|
|
52
|
-
h,
|
|
51
|
+
J,
|
|
53
52
|
d,
|
|
54
|
-
|
|
53
|
+
g,
|
|
55
54
|
b,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
),
|
|
65
|
-
|
|
66
|
-
}),
|
|
64
|
+
), ee = z((t) => {
|
|
65
|
+
Q(t), C == null || C(d);
|
|
66
|
+
}), te = z(
|
|
67
67
|
(t, e, s) => {
|
|
68
|
-
const r =
|
|
69
|
-
s ? o == null || o(r) :
|
|
68
|
+
const r = X(t, e);
|
|
69
|
+
s ? o == null || o(r) : a == null || a(r);
|
|
70
70
|
}
|
|
71
|
-
),
|
|
72
|
-
|
|
73
|
-
}),
|
|
71
|
+
), se = z((t) => {
|
|
72
|
+
Y(), t || o == null || o(d);
|
|
73
|
+
}), re = z(
|
|
74
74
|
(t, e) => {
|
|
75
|
-
const s =
|
|
76
|
-
|
|
75
|
+
const s = Z(t, e);
|
|
76
|
+
a == null || a(s), o == null || o(s);
|
|
77
77
|
}
|
|
78
|
-
),
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
`${
|
|
78
|
+
), oe = $(
|
|
79
|
+
n,
|
|
80
|
+
U,
|
|
81
|
+
`${n}-${l}`,
|
|
82
82
|
{
|
|
83
|
-
[`${
|
|
84
|
-
[`${
|
|
83
|
+
[`${n}-rtl`]: p,
|
|
84
|
+
[`${n}-hide-bars`]: !B
|
|
85
85
|
},
|
|
86
|
-
w,
|
|
87
86
|
R,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
D,
|
|
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 <
|
|
95
|
-
e +=
|
|
94
|
+
for (let s = 0; s < i.length; s += 1)
|
|
95
|
+
e += g[s], t.push(e);
|
|
96
96
|
return t;
|
|
97
|
-
}, [
|
|
98
|
-
return
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
|
|
101
|
-
const s = /* @__PURE__ */
|
|
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:
|
|
106
|
-
size:
|
|
105
|
+
prefixCls: n,
|
|
106
|
+
size: J[e],
|
|
107
|
+
ref: N[e]
|
|
107
108
|
}
|
|
108
109
|
);
|
|
109
110
|
let r = null;
|
|
110
|
-
const S =
|
|
111
|
+
const S = x[e];
|
|
111
112
|
if (S) {
|
|
112
|
-
const ie = (
|
|
113
|
-
r = /* @__PURE__ */
|
|
114
|
-
|
|
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
|
-
lazy:
|
|
117
|
+
lazy: _,
|
|
117
118
|
index: e,
|
|
118
|
-
active:
|
|
119
|
-
prefixCls:
|
|
119
|
+
active: I === e,
|
|
120
|
+
prefixCls: n,
|
|
120
121
|
vertical: m,
|
|
121
122
|
resizable: S.resizable,
|
|
122
|
-
ariaNow:
|
|
123
|
-
ariaMin: Math.max(ie,
|
|
124
|
-
ariaMax: Math.min(
|
|
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:
|
|
128
|
-
onOffsetUpdate: (
|
|
129
|
-
let
|
|
130
|
-
|
|
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:
|
|
133
|
-
onCollapse:
|
|
134
|
-
containerSize:
|
|
133
|
+
onOffsetEnd: se,
|
|
134
|
+
onCollapse: re,
|
|
135
|
+
containerSize: h || 0
|
|
135
136
|
}
|
|
136
137
|
);
|
|
137
138
|
}
|
|
138
|
-
return /* @__PURE__ */
|
|
139
|
+
return /* @__PURE__ */ P(u.Fragment, { children: [
|
|
139
140
|
s,
|
|
140
141
|
r
|
|
141
142
|
] }, `split-panel-${e}`);
|
|
142
143
|
}),
|
|
143
|
-
typeof
|
|
144
|
+
typeof I == "number" && /* @__PURE__ */ f(
|
|
144
145
|
"div",
|
|
145
146
|
{
|
|
146
147
|
"aria-hidden": !0,
|
|
147
|
-
className:
|
|
148
|
+
className: $(O, `${O}-${l}`)
|
|
148
149
|
}
|
|
149
150
|
)
|
|
150
151
|
] }) }) })
|
|
151
152
|
);
|
|
152
153
|
};
|
|
153
|
-
process.env.NODE_ENV !== "production" && (
|
|
154
|
+
process.env.NODE_ENV !== "production" && (Oe.displayName = "Splitter");
|
|
154
155
|
export {
|
|
155
|
-
|
|
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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"}
|