@bioturing/components 0.14.1 → 0.15.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/Badge/component.js +21 -0
- package/dist/components/Badge/component.js.map +1 -0
- package/dist/components/Badge/style.css +1 -0
- package/dist/components/Breadcrumb/component.js +46 -0
- package/dist/components/Breadcrumb/component.js.map +1 -0
- package/dist/components/Breadcrumb/style.css +1 -0
- package/dist/components/Breadcrumb/useItemRender.js +27 -0
- package/dist/components/Breadcrumb/useItemRender.js.map +1 -0
- package/dist/components/Button/component.js +9 -0
- package/dist/components/Button/component.js.map +1 -0
- package/dist/components/Button/style.css +1 -0
- package/dist/components/Checkbox/component.js +11 -0
- package/dist/components/Checkbox/component.js.map +1 -0
- package/dist/components/Checkbox/style.css +1 -0
- package/dist/components/CodeBlock/component.js +127 -0
- package/dist/components/CodeBlock/component.js.map +1 -0
- package/dist/components/CodeBlock/style.css +1 -0
- package/dist/components/DSRoot/component.js +21 -0
- package/dist/components/DSRoot/component.js.map +1 -0
- package/dist/components/DSRoot/context.js +9 -0
- package/dist/components/DSRoot/context.js.map +1 -0
- package/dist/components/DSRoot/style.css +1 -0
- package/dist/components/DropdownMenu/component.js +103 -0
- package/dist/components/DropdownMenu/component.js.map +1 -0
- package/dist/components/DropdownMenu/style.css +1 -0
- package/dist/components/Empty/component.js +48 -0
- package/dist/components/Empty/component.js.map +1 -0
- package/dist/components/Empty/style.css +1 -0
- package/dist/components/Field/component.js +30 -0
- package/dist/components/Field/component.js.map +1 -0
- package/dist/components/Field/style.css +1 -0
- package/dist/components/Form/component.js +23 -0
- package/dist/components/Form/component.js.map +1 -0
- package/dist/components/Form/item.js +30 -0
- package/dist/components/Form/item.js.map +1 -0
- package/dist/components/Form/style.css +1 -0
- package/dist/components/IconButton/component.js +49 -0
- package/dist/components/IconButton/component.js.map +1 -0
- package/dist/components/IconButton/style.css +1 -0
- package/dist/components/Input/component.js +25 -0
- package/dist/components/Input/component.js.map +1 -0
- package/dist/components/Modal/Modal.js +161 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/ModalProvider.js +70 -0
- package/dist/components/Modal/ModalProvider.js.map +1 -0
- package/dist/components/Modal/ModalService.js +25 -0
- package/dist/components/Modal/ModalService.js.map +1 -0
- package/dist/components/Modal/constants.js +5 -0
- package/dist/components/Modal/constants.js.map +1 -0
- package/dist/components/Modal/functions.js +27 -0
- package/dist/components/Modal/functions.js.map +1 -0
- package/dist/components/Modal/index.js +20 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Modal/style.css +1 -0
- package/dist/components/Popover/component.js +12 -0
- package/dist/components/Popover/component.js.map +1 -0
- package/dist/components/PopupPanel/component.js +190 -0
- package/dist/components/PopupPanel/component.js.map +1 -0
- package/dist/components/PopupPanel/constants.js +5 -0
- package/dist/components/PopupPanel/constants.js.map +1 -0
- package/dist/components/PopupPanel/style.css +1 -0
- package/dist/components/Radio/component.js +22 -0
- package/dist/components/Radio/component.js.map +1 -0
- package/dist/components/Radio/style.css +1 -0
- package/dist/components/ScrollArea/component.js +40 -0
- package/dist/components/ScrollArea/component.js.map +1 -0
- package/dist/components/ScrollArea/style.css +1 -0
- package/dist/components/Segmented/component.js +9 -0
- package/dist/components/Segmented/component.js.map +1 -0
- package/dist/components/Segmented/style.css +1 -0
- package/dist/components/Select/component.js +135 -0
- package/dist/components/Select/component.js.map +1 -0
- package/dist/components/Select/style.css +1 -0
- package/dist/components/Slider/component.js +23 -0
- package/dist/components/Slider/component.js.map +1 -0
- package/dist/components/Spin/component.js +12 -0
- package/dist/components/Spin/component.js.map +1 -0
- package/dist/components/Spin/style.css +1 -0
- package/dist/components/Splitter/component.js +40 -0
- package/dist/components/Splitter/component.js.map +1 -0
- package/dist/components/Splitter/style.css +1 -0
- package/dist/components/Stack/Stack.js +37 -0
- package/dist/components/Stack/Stack.js.map +1 -0
- package/dist/components/Stack/StackChild.js +57 -0
- package/dist/components/Stack/StackChild.js.map +1 -0
- package/dist/components/Stack/index.js +9 -0
- package/dist/components/Stack/index.js.map +1 -0
- package/dist/components/Stack/style.css +1 -0
- package/dist/components/Switch/component.js +9 -0
- package/dist/components/Switch/component.js.map +1 -0
- package/dist/components/Switch/style.css +1 -0
- package/dist/components/Table/component.js +68 -0
- package/dist/components/Table/component.js.map +1 -0
- package/dist/components/Table/style.css +1 -0
- package/dist/components/Tag/component.js +30 -0
- package/dist/components/Tag/component.js.map +1 -0
- package/dist/components/Tag/style.css +1 -0
- package/dist/components/ThemeProvider/component.js +41 -0
- package/dist/components/ThemeProvider/component.js.map +1 -0
- package/dist/components/ThemeProvider/style.css +1 -0
- package/dist/components/Toast/component.js +101 -0
- package/dist/components/Toast/component.js.map +1 -0
- package/dist/components/Toast/function.js +25 -0
- package/dist/components/Toast/function.js.map +1 -0
- package/dist/components/Toast/style.css +1 -0
- package/dist/components/Tooltip/component.js +26 -0
- package/dist/components/Tooltip/component.js.map +1 -0
- package/dist/components/Tooltip/style.css +1 -0
- package/dist/components/Tour/component.js +35 -0
- package/dist/components/Tour/component.js.map +1 -0
- package/dist/components/Tour/style.css +1 -0
- package/dist/components/Transition/component.js +44 -0
- package/dist/components/Transition/component.js.map +1 -0
- package/dist/components/Tree/components.js +67 -0
- package/dist/components/Tree/components.js.map +1 -0
- package/dist/components/Tree/helpers.js +53 -0
- package/dist/components/Tree/helpers.js.map +1 -0
- package/dist/components/Tree/useTreeCommon.js +86 -0
- package/dist/components/Tree/useTreeCommon.js.map +1 -0
- package/dist/components/Tree/useUniqueKeysTree.js +142 -0
- package/dist/components/Tree/useUniqueKeysTree.js.map +1 -0
- package/dist/components/Truncate/component.js +93 -0
- package/dist/components/Truncate/component.js.map +1 -0
- package/dist/components/Truncate/helpers.js +36 -0
- package/dist/components/Truncate/helpers.js.map +1 -0
- package/dist/components/Truncate/style.css +1 -0
- package/dist/components/Upload/component.js +39 -0
- package/dist/components/Upload/component.js.map +1 -0
- package/dist/components/Upload/dragger.js +23 -0
- package/dist/components/Upload/dragger.js.map +1 -0
- package/dist/components/Upload/hooks.js +18 -0
- package/dist/components/Upload/hooks.js.map +1 -0
- package/dist/components/Upload/item.js +84 -0
- package/dist/components/Upload/item.js.map +1 -0
- package/dist/components/Upload/utils.js +7 -0
- package/dist/components/Upload/utils.js.map +1 -0
- package/dist/components/VerticalCollapsiblePanel/component.js +125 -0
- package/dist/components/VerticalCollapsiblePanel/component.js.map +1 -0
- package/dist/components/VerticalCollapsiblePanel/style.css +1 -0
- package/dist/components/hooks/antd.js +22 -0
- package/dist/components/hooks/antd.js.map +1 -0
- package/dist/components/hooks/base-ui.js +47 -0
- package/dist/components/hooks/base-ui.js.map +1 -0
- package/dist/components/hooks/useCharts.js +28 -0
- package/dist/components/hooks/useCharts.js.map +1 -0
- package/dist/components/hooks/useControlledState.js +15 -0
- package/dist/components/hooks/useControlledState.js.map +1 -0
- package/dist/components/utils/WithAntdTokens.js +24 -0
- package/dist/components/utils/WithAntdTokens.js.map +1 -0
- package/dist/components/utils/antdUtils.js +58 -0
- package/dist/components/utils/antdUtils.js.map +1 -0
- package/dist/components/utils/cn.js +27 -0
- package/dist/components/utils/cn.js.map +1 -0
- package/dist/components/utils/isTracebackError.js +10 -0
- package/dist/components/utils/isTracebackError.js.map +1 -0
- package/dist/components/utils/reactToString.js +23 -0
- package/dist/components/utils/reactToString.js.map +1 -0
- package/dist/index.d.ts +2497 -2
- package/dist/index.js +188 -3376
- package/dist/index.js.map +1 -0
- package/dist/metadata.js +513 -0
- package/dist/metadata.js.map +1 -0
- package/dist/tailwind.css +1 -4
- package/dist/tailwind.d.ts +1 -0
- package/dist/tokens/and-theme/tokens.js +351 -0
- package/dist/tokens/and-theme/tokens.js.map +1 -0
- package/dist/tokens/charts/index.js +18 -0
- package/dist/tokens/charts/index.js.map +1 -0
- package/dist/tokens/charts/tokens.js +208 -0
- package/dist/tokens/charts/tokens.js.map +1 -0
- package/dist/tokens/utils.js +37 -0
- package/dist/tokens/utils.js.map +1 -0
- package/package.json +10 -108
- package/dist/Badge.js +0 -41
- package/dist/Breadcrumb.js +0 -92
- package/dist/Checkbox.js +0 -12
- package/dist/CodeBlock.js +0 -641
- package/dist/Collapse.js +0 -49
- package/dist/DSRoot.js +0 -1181
- package/dist/DropdownMenu.js +0 -211
- package/dist/Empty.js +0 -53
- package/dist/Field.js +0 -66
- package/dist/Form.js +0 -125
- package/dist/IconButton.js +0 -82
- package/dist/Input.js +0 -48
- package/dist/Modal.js +0 -430
- package/dist/Popover.js +0 -10
- package/dist/PopupPanel.css +0 -116
- package/dist/PopupPanel.js +0 -333
- package/dist/Radio.js +0 -24
- package/dist/ScrollArea.js +0 -50
- package/dist/Segmented.js +0 -10
- package/dist/Select.js +0 -157
- package/dist/Slider.js +0 -39
- package/dist/Spin.js +0 -33
- package/dist/Splitter.js +0 -47
- package/dist/Switch.js +0 -10
- package/dist/Table.js +0 -126
- package/dist/Tag.js +0 -24
- package/dist/ThemeProvider.js +0 -403
- package/dist/Toast.js +0 -1154
- package/dist/Tooltip.js +0 -36
- package/dist/Tour.js +0 -54
- package/dist/Tree.js +0 -318
- package/dist/Truncate.js +0 -160
- package/dist/Upload.js +0 -460
- package/dist/VerticalCollapsiblePanel.js +0 -413
- package/dist/components/Badge/component.d.ts +0 -3
- package/dist/components/Badge/index.d.ts +0 -1
- package/dist/components/Breadcrumb/component.d.ts +0 -5
- package/dist/components/Breadcrumb/index.d.ts +0 -2
- package/dist/components/Breadcrumb/types.d.ts +0 -18
- package/dist/components/Breadcrumb/useItemRender.d.ts +0 -6
- package/dist/components/Button/component.d.ts +0 -7
- package/dist/components/Button/index.d.ts +0 -1
- package/dist/components/Checkbox/component.d.ts +0 -10
- package/dist/components/Checkbox/index.d.ts +0 -1
- package/dist/components/CodeBlock/component.d.ts +0 -2
- package/dist/components/CodeBlock/index.d.ts +0 -2
- package/dist/components/CodeBlock/types.d.ts +0 -47
- package/dist/components/Collapse/component.d.ts +0 -13
- package/dist/components/Collapse/index.d.ts +0 -1
- package/dist/components/DSRoot/component.d.ts +0 -13
- package/dist/components/DSRoot/context.d.ts +0 -7
- package/dist/components/DSRoot/index.d.ts +0 -1
- package/dist/components/DropdownMenu/component.d.ts +0 -30
- package/dist/components/DropdownMenu/index.d.ts +0 -2
- package/dist/components/Empty/component.d.ts +0 -12
- package/dist/components/Empty/index.d.ts +0 -1
- package/dist/components/Field/component.d.ts +0 -41
- package/dist/components/Field/index.d.ts +0 -1
- package/dist/components/Form/component.d.ts +0 -18
- package/dist/components/Form/index.d.ts +0 -1
- package/dist/components/Form/item.d.ts +0 -5
- package/dist/components/IconButton/component.d.ts +0 -29
- package/dist/components/IconButton/index.d.ts +0 -1
- package/dist/components/Input/component.d.ts +0 -30
- package/dist/components/Input/index.d.ts +0 -1
- package/dist/components/Modal/Modal.d.ts +0 -84
- package/dist/components/Modal/ModalProvider.d.ts +0 -5
- package/dist/components/Modal/ModalService.d.ts +0 -33
- package/dist/components/Modal/constants.d.ts +0 -9
- package/dist/components/Modal/functions.d.ts +0 -27
- package/dist/components/Modal/index.d.ts +0 -14
- package/dist/components/Popover/component.d.ts +0 -9
- package/dist/components/Popover/index.d.ts +0 -1
- package/dist/components/PopupPanel/component.d.ts +0 -61
- package/dist/components/PopupPanel/constants.d.ts +0 -7
- package/dist/components/PopupPanel/index.d.ts +0 -1
- package/dist/components/Radio/component.d.ts +0 -7
- package/dist/components/Radio/index.d.ts +0 -2
- package/dist/components/Radio/interface.d.ts +0 -5
- package/dist/components/ScrollArea/component.d.ts +0 -10
- package/dist/components/ScrollArea/index.d.ts +0 -1
- package/dist/components/Segmented/component.d.ts +0 -9
- package/dist/components/Segmented/index.d.ts +0 -1
- package/dist/components/Select/component.d.ts +0 -23
- package/dist/components/Select/index.d.ts +0 -1
- package/dist/components/Slider/component.d.ts +0 -5
- package/dist/components/Slider/index.d.ts +0 -1
- package/dist/components/Spin/component.d.ts +0 -3
- package/dist/components/Spin/index.d.ts +0 -1
- package/dist/components/Splitter/component.d.ts +0 -12
- package/dist/components/Splitter/index.d.ts +0 -1
- package/dist/components/Switch/component.d.ts +0 -8
- package/dist/components/Switch/index.d.ts +0 -1
- package/dist/components/Table/component.d.ts +0 -19
- package/dist/components/Table/index.d.ts +0 -1
- package/dist/components/Tag/component.d.ts +0 -11
- package/dist/components/Tag/index.d.ts +0 -1
- package/dist/components/ThemeProvider/component.d.ts +0 -6
- package/dist/components/ThemeProvider/index.d.ts +0 -1
- package/dist/components/Toast/component.d.ts +0 -14
- package/dist/components/Toast/function.d.ts +0 -10
- package/dist/components/Toast/index.d.ts +0 -3
- package/dist/components/Toast/types.d.ts +0 -3
- package/dist/components/Tooltip/component.d.ts +0 -9
- package/dist/components/Tooltip/index.d.ts +0 -1
- package/dist/components/Tour/component.d.ts +0 -7
- package/dist/components/Tour/index.d.ts +0 -1
- package/dist/components/Transition/component.d.ts +0 -17
- package/dist/components/Transition/index.d.ts +0 -1
- package/dist/components/Tree/components.d.ts +0 -13
- package/dist/components/Tree/helpers.d.ts +0 -4
- package/dist/components/Tree/index.d.ts +0 -4
- package/dist/components/Tree/types.d.ts +0 -55
- package/dist/components/Tree/useTreeCommon.d.ts +0 -178
- package/dist/components/Tree/useUniqueKeysTree.d.ts +0 -33
- package/dist/components/Truncate/component.d.ts +0 -12
- package/dist/components/Truncate/helpers.d.ts +0 -5
- package/dist/components/Truncate/index.d.ts +0 -1
- package/dist/components/Upload/component.d.ts +0 -16
- package/dist/components/Upload/dragger.d.ts +0 -13
- package/dist/components/Upload/hooks.d.ts +0 -5
- package/dist/components/Upload/index.d.ts +0 -3
- package/dist/components/Upload/item.d.ts +0 -11
- package/dist/components/Upload/utils.d.ts +0 -1
- package/dist/components/VerticalCollapsiblePanel/component.d.ts +0 -64
- package/dist/components/VerticalCollapsiblePanel/index.d.ts +0 -1
- package/dist/components/hooks/antd.d.ts +0 -11
- package/dist/components/hooks/base-ui.d.ts +0 -7
- package/dist/components/hooks/index.d.ts +0 -4
- package/dist/components/hooks/useCharts.d.ts +0 -22
- package/dist/components/hooks/useControlledState.d.ts +0 -1
- package/dist/components/index.d.ts +0 -40
- package/dist/components/utils/WithAntdTokens.d.ts +0 -7
- package/dist/components/utils/antdUtils.d.ts +0 -15
- package/dist/components/utils/client.d.ts +0 -2
- package/dist/components/utils/cn.d.ts +0 -4
- package/dist/components/utils/index.d.ts +0 -3
- package/dist/components/utils/isTracebackError.d.ts +0 -1
- package/dist/components/utils/main.d.ts +0 -3
- package/dist/components/utils/reactToString.d.ts +0 -2
- package/dist/components/utils/types.d.ts +0 -9
- package/dist/hooks.js +0 -961
- package/dist/index.css +0 -116
- package/dist/style.css +0 -1392
- package/dist/style.js +0 -0
- package/dist/tailwind.js +0 -0
- package/dist/tokens/and-theme/index.d.ts +0 -1
- package/dist/tokens/and-theme/tokens.d.ts +0 -5
- package/dist/tokens/charts/index.d.ts +0 -6
- package/dist/tokens/charts/tokens.d.ts +0 -455
- package/dist/tokens/index.d.ts +0 -2
- package/dist/tokens/utils.d.ts +0 -16
- package/dist/utils.js +0 -120
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer components{.ds-truncate{white-space:nowrap;overflow:hidden;width:100%;flex-grow:1;min-width:0;max-width:100%;display:block}.ds-truncate-end{text-overflow:ellipsis}.ds-truncate-middle{text-overflow:clip}.ds-truncate-multiline{display:-webkit-box;-webkit-line-clamp:var(--ds-line-clamp, 2);line-clamp:var(--ds-line-clamp, 2);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-overflow:ellipsis;word-break:break-word}}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import n from "antd/es/upload";
|
|
3
|
+
import { CloudArrowUp as d } from "@bioturing/assets";
|
|
4
|
+
import { Dragger as a } from "./dragger.js";
|
|
5
|
+
import { useUploadItemRender as c } from "./hooks.js";
|
|
6
|
+
import { UploadItem as f } from "./item.js";
|
|
7
|
+
import { Button as u } from "../Button/component.js";
|
|
8
|
+
import { useCls as U } from "../utils/antdUtils.js";
|
|
9
|
+
import { clsx as g } from "../utils/cn.js";
|
|
10
|
+
const h = ({
|
|
11
|
+
// icon = <CloudArrowUp size={24} />,
|
|
12
|
+
showRemoveButton: r = !0,
|
|
13
|
+
// showFileList = true,
|
|
14
|
+
className: t,
|
|
15
|
+
fileList: e,
|
|
16
|
+
children: m,
|
|
17
|
+
...l
|
|
18
|
+
}) => {
|
|
19
|
+
const p = U(), i = /* @__PURE__ */ o(u, { icon: /* @__PURE__ */ o(d, { size: 24 }), type: "default", children: "Upload Files" }), s = c({ showRemoveButton: r });
|
|
20
|
+
return /* @__PURE__ */ o(
|
|
21
|
+
n,
|
|
22
|
+
{
|
|
23
|
+
className: g(p("upload"), t),
|
|
24
|
+
...l,
|
|
25
|
+
fileList: e,
|
|
26
|
+
itemRender: s,
|
|
27
|
+
children: m || i
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}, z = Object.assign(h, {
|
|
31
|
+
// Dragger,
|
|
32
|
+
Dragger: a,
|
|
33
|
+
Item: f
|
|
34
|
+
});
|
|
35
|
+
export {
|
|
36
|
+
h as DefaultUpload,
|
|
37
|
+
z as Upload
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/Upload/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntUpload,\n type UploadFile as AntUploadFile,\n type UploadProps as AntUploadProps,\n type RcFile,\n type UploadChangeParam,\n} from \"antd/es/upload\";\nimport { Button } from \"..\";\nimport { CloudArrowUp } from \"@bioturing/assets\";\nimport { clsx, useCls } from \"../utils\";\nimport { Dragger } from \"./dragger\";\nimport { useUploadItemRender } from \"./hooks\";\nimport { UploadItem } from \"./item\";\n\n// Re-export UploadFile and other types for consumers\nexport type UploadFile = AntUploadFile;\nexport type { RcFile, UploadChangeParam };\n\nexport type { UploadItemProps, UploadFileStatus } from \"./item\";\n\n// Define props interface extending Ant Design's UploadProps\nexport interface UploadProps extends AntUploadProps {\n /**\n * Show remove button for uploaded files\n * @default true\n */\n showRemoveButton?: boolean;\n // /**\n // * Show file list\n // * @default true\n // */\n // showFileList?: boolean;\n // /**\n // * Custom icon\n // */\n // icon?: React.ReactNode;\n}\n\n// Default icons for file types\nexport const DefaultUpload = ({\n // icon = <CloudArrowUp size={24} />,\n showRemoveButton = true,\n // showFileList = true,\n className,\n fileList,\n children,\n ...restProps\n}: UploadProps) => {\n const cls = useCls();\n const icon = <CloudArrowUp size={24} />;\n\n // Default children if none provided\n const defaultChildren = (\n <Button icon={icon} type=\"default\">\n Upload Files\n </Button>\n );\n const itemRender = useUploadItemRender({ showRemoveButton });\n\n return (\n <AntUpload\n className={clsx(cls(\"upload\"), className)}\n {...restProps}\n fileList={fileList}\n itemRender={itemRender}\n >\n {children || defaultChildren}\n </AntUpload>\n );\n};\n\nexport const Upload = Object.assign(DefaultUpload, {\n // Dragger,\n Dragger: Dragger,\n Item: UploadItem,\n});\n"],"names":["DefaultUpload","showRemoveButton","className","fileList","children","restProps","cls","useCls","defaultChildren","jsx","Button","CloudArrowUp","itemRender","useUploadItemRender","AntUpload","clsx","Upload","Dragger","UploadItem"],"mappings":";;;;;;;;;AAwCO,MAAMA,IAAgB,CAAC;AAAA;AAAA,EAE5B,kBAAAC,IAAmB;AAAA;AAAA,EAEnB,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,MAAmB;AACjB,QAAMC,IAAMC,EAAO,GAIbC,IACH,gBAAAC,EAAAC,GAAA,EAAO,MAJG,gBAAAD,EAACE,GAAa,EAAA,MAAM,GAAI,CAAA,GAIf,MAAK,WAAU,UAEnC,gBAAA,GAEIC,IAAaC,EAAoB,EAAE,kBAAAZ,GAAkB;AAGzD,SAAA,gBAAAQ;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKT,EAAI,QAAQ,GAAGJ,CAAS;AAAA,MACvC,GAAGG;AAAA,MACJ,UAAAF;AAAA,MACA,YAAAS;AAAA,MAEC,UAAYR,KAAAI;AAAA,IAAA;AAAA,EACf;AAEJ,GAEaQ,IAAS,OAAO,OAAOhB,GAAe;AAAA;AAAA,EAEjD,SAAAiB;AAAA,EACA,MAAMC;AACR,CAAC;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as r, jsxs as p, Fragment as i } from "react/jsx-runtime";
|
|
2
|
+
import m from "antd/es/upload";
|
|
3
|
+
import { CloudArrowUp as u } from "@bioturing/assets";
|
|
4
|
+
import { useUploadItemRender as c } from "./hooks.js";
|
|
5
|
+
import { useCls as f } from "../utils/antdUtils.js";
|
|
6
|
+
const N = ({
|
|
7
|
+
children: o,
|
|
8
|
+
uploadTitle: t = "Click or drag file to this area to upload",
|
|
9
|
+
uploadDescription: l = "Support for a single or bulk upload.",
|
|
10
|
+
itemRender: a,
|
|
11
|
+
...n
|
|
12
|
+
}) => {
|
|
13
|
+
const e = f(), s = () => /* @__PURE__ */ p(i, { children: [
|
|
14
|
+
/* @__PURE__ */ r("p", { className: e("upload-drag-icon"), children: /* @__PURE__ */ r(u, { size: 40 }) }),
|
|
15
|
+
/* @__PURE__ */ r("p", { className: e("upload-text"), children: t }),
|
|
16
|
+
/* @__PURE__ */ r("p", { className: e("upload-hint"), children: l })
|
|
17
|
+
] }), d = c({ showRemoveButton: !0 });
|
|
18
|
+
return /* @__PURE__ */ r(m.Dragger, { itemRender: a || d, ...n, children: o || s() });
|
|
19
|
+
};
|
|
20
|
+
export {
|
|
21
|
+
N as Dragger
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=dragger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dragger.js","sources":["../../../src/components/Upload/dragger.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntUpload,\n type DraggerProps as AntDraggerProps,\n} from \"antd/es/upload\";\nimport React from \"react\";\nimport { CloudArrowUp } from \"@bioturing/assets\";\nimport { useCls } from \"../utils\";\nimport { useUploadItemRender } from \"./hooks\";\n\nexport interface DraggerProps extends AntDraggerProps {\n /**\n * Custom title for the upload component\n */\n uploadTitle?: React.ReactNode;\n /**\n * Custom description for the upload component\n **/\n uploadDescription?: React.ReactNode;\n}\n\nexport const Dragger = ({\n children,\n uploadTitle = \"Click or drag file to this area to upload\",\n uploadDescription = \"Support for a single or bulk upload.\",\n itemRender,\n ...rest\n}: DraggerProps) => {\n const cls = useCls();\n const renderChildren = () => {\n return (\n <>\n <p className={cls(\"upload-drag-icon\")}>\n <CloudArrowUp size={40} />\n </p>\n <p className={cls(\"upload-text\")}>{uploadTitle}</p>\n <p className={cls(\"upload-hint\")}>{uploadDescription}</p>\n </>\n );\n };\n const defaultItemRender = useUploadItemRender({ showRemoveButton: true });\n return (\n <AntUpload.Dragger itemRender={itemRender || defaultItemRender} {...rest}>\n {children ? children : renderChildren()}\n </AntUpload.Dragger>\n );\n};\n"],"names":["Dragger","children","uploadTitle","uploadDescription","itemRender","rest","cls","useCls","renderChildren","jsxs","Fragment","jsx","CloudArrowUp","defaultItemRender","useUploadItemRender","AntUpload"],"mappings":";;;;;AAqBO,MAAMA,IAAU,CAAC;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,mBAAAC,IAAoB;AAAA,EACpB,YAAAC;AAAA,EACA,GAAGC;AACL,MAAoB;AAClB,QAAMC,IAAMC,EAAO,GACbC,IAAiB,MAGjB,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAA,KAAA,EAAE,WAAWL,EAAI,kBAAkB,GAClC,UAAC,gBAAAK,EAAAC,GAAA,EAAa,MAAM,GAAA,CAAI,EAC1B,CAAA;AAAA,sBACC,KAAE,EAAA,WAAWN,EAAI,aAAa,GAAI,UAAYJ,GAAA;AAAA,sBAC9C,KAAE,EAAA,WAAWI,EAAI,aAAa,GAAI,UAAkBH,EAAA,CAAA;AAAA,EAAA,GACvD,GAGEU,IAAoBC,EAAoB,EAAE,kBAAkB,IAAM;AACxE,SACG,gBAAAH,EAAAI,EAAU,SAAV,EAAkB,YAAYX,KAAcS,GAAoB,GAAGR,GACjE,UAAAJ,KAAsBO,EACzB,EAAA,CAAA;AAEJ;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback as o } from "react";
|
|
3
|
+
import { UploadItem as n } from "./item.js";
|
|
4
|
+
const c = ({ showRemoveButton: r = !0 }) => o((a, e, s, t) => /* @__PURE__ */ m(
|
|
5
|
+
n,
|
|
6
|
+
{
|
|
7
|
+
fileName: e.name,
|
|
8
|
+
fileType: e.type,
|
|
9
|
+
status: e.status,
|
|
10
|
+
percent: e.percent,
|
|
11
|
+
removable: r,
|
|
12
|
+
onRemove: () => t.remove()
|
|
13
|
+
}
|
|
14
|
+
), [r]);
|
|
15
|
+
export {
|
|
16
|
+
c as useUploadItemRender
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../../../src/components/Upload/hooks.tsx"],"sourcesContent":["\"use client\";\nimport { type UploadProps } from \"antd/es/upload\";\nimport { useCallback } from \"react\";\nimport { UploadItem } from \"./item\";\n\nexport type UseUploadItemRenderProps = {\n showRemoveButton?: boolean;\n};\n\nexport const useUploadItemRender: (\n props: UseUploadItemRenderProps\n) => UploadProps[\"itemRender\"] = ({ showRemoveButton = true }) => {\n // If showFileList is false, don't render anything\n // if (!showFileList) return null;\n\n // Custom rendering of file items\n const itemRender: UploadProps[\"itemRender\"] = (\n _originNode,\n file,\n _fileList,\n actions\n ) => {\n return (\n <UploadItem\n fileName={file.name}\n fileType={file.type}\n status={file.status}\n percent={file.percent}\n removable={showRemoveButton}\n onRemove={() => actions.remove()}\n />\n );\n };\n return useCallback(itemRender, [showRemoveButton]);\n};\n"],"names":["useUploadItemRender","showRemoveButton","useCallback","_originNode","file","_fileList","actions","jsx","UploadItem"],"mappings":";;;AASO,MAAMA,IAEoB,CAAC,EAAE,kBAAAC,IAAmB,SAsB9CC,EAjBuC,CAC5CC,GACAC,GACAC,GACAC,MAGE,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,UAAUJ,EAAK;AAAA,IACf,UAAUA,EAAK;AAAA,IACf,QAAQA,EAAK;AAAA,IACb,SAASA,EAAK;AAAA,IACd,WAAWH;AAAA,IACX,UAAU,MAAMK,EAAQ,OAAO;AAAA,EAAA;AACjC,GAG2B,CAACL,CAAgB,CAAC;"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as e, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import n from "antd/es/flex";
|
|
3
|
+
import g from "antd/es/progress";
|
|
4
|
+
import { Trash as u } from "@bioturing/assets";
|
|
5
|
+
import { Truncate as f } from "../Truncate/component.js";
|
|
6
|
+
import { getUploadFileIcon as h } from "./utils.js";
|
|
7
|
+
import { useCls as x } from "../utils/antdUtils.js";
|
|
8
|
+
import { clsx as N } from "../utils/cn.js";
|
|
9
|
+
import { IconButton as v } from "../IconButton/component.js";
|
|
10
|
+
const U = ({
|
|
11
|
+
fileName: t,
|
|
12
|
+
fileType: s,
|
|
13
|
+
status: o = "pending",
|
|
14
|
+
percent: a,
|
|
15
|
+
removable: m = !0,
|
|
16
|
+
onRemove: c,
|
|
17
|
+
extraActions: p
|
|
18
|
+
}) => {
|
|
19
|
+
const r = x(), d = Math.round(a || 0), l = {
|
|
20
|
+
done: "success",
|
|
21
|
+
error: "exception",
|
|
22
|
+
uploading: "active",
|
|
23
|
+
removed: "normal",
|
|
24
|
+
pending: "normal"
|
|
25
|
+
};
|
|
26
|
+
return /* @__PURE__ */ e(
|
|
27
|
+
n,
|
|
28
|
+
{
|
|
29
|
+
className: N(r("upload-item")),
|
|
30
|
+
justify: "space-between",
|
|
31
|
+
align: "center",
|
|
32
|
+
"data-error": o === "error",
|
|
33
|
+
children: /* @__PURE__ */ i(
|
|
34
|
+
n,
|
|
35
|
+
{
|
|
36
|
+
align: "center",
|
|
37
|
+
gap: 16,
|
|
38
|
+
flex: 1,
|
|
39
|
+
className: r("upload-item-content"),
|
|
40
|
+
children: [
|
|
41
|
+
/* @__PURE__ */ e("span", { className: r("upload-item-icon"), children: h(s) }),
|
|
42
|
+
/* @__PURE__ */ i(
|
|
43
|
+
n,
|
|
44
|
+
{
|
|
45
|
+
align: "start",
|
|
46
|
+
vertical: !0,
|
|
47
|
+
flex: 1,
|
|
48
|
+
className: r("upload-item-name-progress"),
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ e(f, { position: "middle", children: t }),
|
|
51
|
+
/* @__PURE__ */ e(
|
|
52
|
+
g,
|
|
53
|
+
{
|
|
54
|
+
percent: d,
|
|
55
|
+
size: "small",
|
|
56
|
+
className: r("upload-item-progress"),
|
|
57
|
+
status: o && o in l ? l[o] : "normal"
|
|
58
|
+
}
|
|
59
|
+
)
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
/* @__PURE__ */ i(n, { gap: 8, align: "center", children: [
|
|
64
|
+
p,
|
|
65
|
+
m && /* @__PURE__ */ e(
|
|
66
|
+
v,
|
|
67
|
+
{
|
|
68
|
+
label: "Remove",
|
|
69
|
+
children: /* @__PURE__ */ e(u, { size: 16 }),
|
|
70
|
+
onClick: c,
|
|
71
|
+
size: "small"
|
|
72
|
+
}
|
|
73
|
+
)
|
|
74
|
+
] })
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
export {
|
|
82
|
+
U as UploadItem
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"item.js","sources":["../../../src/components/Upload/item.tsx"],"sourcesContent":["import Flex from \"antd/es/flex\";\nimport Progress from \"antd/es/progress\";\nimport { type ProgressProps } from \"antd/es/progress\";\nimport { Trash } from \"@bioturing/assets\";\nimport { IconButton } from \"../IconButton\";\nimport { Truncate } from \"../Truncate/component\";\nimport { clsx, useCls } from \"../utils\";\nimport { getUploadFileIcon } from \"./utils\";\n\nexport type UploadFileStatus =\n | \"error\"\n | \"done\"\n | \"uploading\"\n | \"removed\"\n | \"pending\";\n\nexport interface UploadItemProps {\n fileName: string;\n fileType?: string;\n status?: UploadFileStatus;\n percent?: number;\n removable?: boolean;\n onRemove?: () => void;\n extraActions?: React.ReactNode;\n}\n\nexport const UploadItem = ({\n fileName,\n fileType,\n status = \"pending\",\n percent,\n removable = true,\n onRemove,\n extraActions,\n}: UploadItemProps) => {\n const cls = useCls();\n const showPercent = Math.round(percent || 0);\n const statusWithProgress: Record<UploadFileStatus, ProgressProps[\"status\"]> =\n {\n done: \"success\",\n error: \"exception\",\n uploading: \"active\",\n removed: \"normal\",\n pending: \"normal\",\n };\n return (\n <Flex\n className={clsx(cls(\"upload-item\"))}\n justify=\"space-between\"\n align=\"center\"\n data-error={status === \"error\"}\n >\n <Flex\n align=\"center\"\n gap={16}\n flex={1}\n className={cls(\"upload-item-content\")}\n >\n <span className={cls(\"upload-item-icon\")}>\n {getUploadFileIcon(fileType)}\n </span>\n <Flex\n align=\"start\"\n vertical\n flex={1}\n className={cls(\"upload-item-name-progress\")}\n >\n <Truncate position=\"middle\">{fileName}</Truncate>\n <Progress\n percent={showPercent}\n size=\"small\"\n className={cls(\"upload-item-progress\")}\n status={\n status && status in statusWithProgress\n ? statusWithProgress[status]\n : \"normal\"\n }\n />\n </Flex>\n <Flex gap={8} align=\"center\">\n {extraActions}\n {removable && (\n <IconButton\n label=\"Remove\"\n children={<Trash size={16} />}\n onClick={onRemove}\n size=\"small\"\n />\n )}\n </Flex>\n </Flex>\n </Flex>\n );\n};\n"],"names":["UploadItem","fileName","fileType","status","percent","removable","onRemove","extraActions","cls","useCls","showPercent","statusWithProgress","jsx","Flex","clsx","jsxs","getUploadFileIcon","Truncate","Progress","IconButton","Trash"],"mappings":";;;;;;;;;AA0BO,MAAMA,IAAa,CAAC;AAAA,EACzB,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,cAAAC;AACF,MAAuB;AACrB,QAAMC,IAAMC,EAAO,GACbC,IAAc,KAAK,MAAMN,KAAW,CAAC,GACrCO,IACJ;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAEA,SAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAKN,EAAI,aAAa,CAAC;AAAA,MAClC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,cAAYL,MAAW;AAAA,MAEvB,UAAA,gBAAAY;AAAA,QAACF;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,WAAWL,EAAI,qBAAqB;AAAA,UAEpC,UAAA;AAAA,YAAA,gBAAAI,EAAC,UAAK,WAAWJ,EAAI,kBAAkB,GACpC,UAAAQ,EAAkBd,CAAQ,GAC7B;AAAA,YACA,gBAAAa;AAAA,cAACF;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,UAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,WAAWL,EAAI,2BAA2B;AAAA,gBAE1C,UAAA;AAAA,kBAAC,gBAAAI,EAAAK,GAAA,EAAS,UAAS,UAAU,UAAShB,GAAA;AAAA,kBACtC,gBAAAW;AAAA,oBAACM;AAAA,oBAAA;AAAA,sBACC,SAASR;AAAA,sBACT,MAAK;AAAA,sBACL,WAAWF,EAAI,sBAAsB;AAAA,sBACrC,QACEL,KAAUA,KAAUQ,IAChBA,EAAmBR,CAAM,IACzB;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAER;AAAA,cAAA;AAAA,YACF;AAAA,YACC,gBAAAY,EAAAF,GAAA,EAAK,KAAK,GAAG,OAAM,UACjB,UAAA;AAAA,cAAAN;AAAA,cACAF,KACC,gBAAAO;AAAA,gBAACO;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,UAAU,gBAAAP,EAACQ,GAAM,EAAA,MAAM,GAAI,CAAA;AAAA,kBAC3B,SAASd;AAAA,kBACT,MAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YACP,EAEJ,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Folder as o, File as l } from "@bioturing/assets";
|
|
3
|
+
const f = (i) => i === "folder" ? /* @__PURE__ */ e(o, { size: 20, weight: "fill" }) : /* @__PURE__ */ e(l, { size: 20, weight: "fill" });
|
|
4
|
+
export {
|
|
5
|
+
f as getUploadFileIcon
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/Upload/utils.tsx"],"sourcesContent":["import { File, Folder } from \"@bioturing/assets\";\n\nexport const getUploadFileIcon = (fileType?: string) => {\n return fileType === \"folder\" ? (\n <Folder size={20} weight=\"fill\" />\n ) : (\n <File size={20} weight=\"fill\" />\n );\n};\n"],"names":["getUploadFileIcon","fileType","jsx","Folder","File"],"mappings":";;AAEa,MAAAA,IAAoB,CAACC,MACzBA,MAAa,WACjB,gBAAAC,EAAAC,GAAA,EAAO,MAAM,IAAI,QAAO,OAAO,CAAA,IAE/B,gBAAAD,EAAAE,GAAA,EAAK,MAAM,IAAI,QAAO,QAAO;"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsxs as r, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { useState as j, useRef as k, useEffect as A } from "react";
|
|
3
|
+
import { Collapsible as i } from "@base-ui-components/react";
|
|
4
|
+
import { MinusCircle as F, PlusCircle as M } from "@bioturing/assets";
|
|
5
|
+
import { useControlledState as R } from "../hooks/useControlledState.js";
|
|
6
|
+
import { Truncate as S } from "../Truncate/component.js";
|
|
7
|
+
import './style.css';/* empty css */
|
|
8
|
+
import { Transition as E } from "../Transition/component.js";
|
|
9
|
+
import { useCls as $, useAntdCssVarClassname as q } from "../utils/antdUtils.js";
|
|
10
|
+
import { useAnimationsFinished as z } from "../hooks/base-ui.js";
|
|
11
|
+
import { clsx as o } from "../utils/cn.js";
|
|
12
|
+
import { IconButton as f } from "../IconButton/component.js";
|
|
13
|
+
const Z = ({
|
|
14
|
+
children: h,
|
|
15
|
+
title: n,
|
|
16
|
+
defaultOpen: b = !1,
|
|
17
|
+
open: u,
|
|
18
|
+
onOpenChange: N,
|
|
19
|
+
className: C,
|
|
20
|
+
headerClassName: y,
|
|
21
|
+
headerInnerClassName: v,
|
|
22
|
+
bodyClassName: x,
|
|
23
|
+
contentPadding: a = "16px",
|
|
24
|
+
afterTitle: p,
|
|
25
|
+
actions: O,
|
|
26
|
+
useTitleAsTrigger: c = !0,
|
|
27
|
+
keepMounted: w = !1
|
|
28
|
+
}) => {
|
|
29
|
+
const e = $(), [s, t] = R(
|
|
30
|
+
u,
|
|
31
|
+
N,
|
|
32
|
+
b
|
|
33
|
+
), [B, I] = j(s), m = k(null), d = z(m, s), V = q();
|
|
34
|
+
return A(() => {
|
|
35
|
+
d(() => {
|
|
36
|
+
I(s);
|
|
37
|
+
});
|
|
38
|
+
}, [s, d]), /* @__PURE__ */ r(
|
|
39
|
+
i.Root,
|
|
40
|
+
{
|
|
41
|
+
className: o(e("collapsible-panel"), V, C),
|
|
42
|
+
open: s,
|
|
43
|
+
onOpenChange: t,
|
|
44
|
+
ref: m,
|
|
45
|
+
children: [
|
|
46
|
+
/* @__PURE__ */ r("div", { className: o(e("collapsible-panel-header"), y), children: [
|
|
47
|
+
/* @__PURE__ */ r(
|
|
48
|
+
"div",
|
|
49
|
+
{
|
|
50
|
+
className: o(
|
|
51
|
+
e("collapsible-panel-header-inner"),
|
|
52
|
+
v
|
|
53
|
+
),
|
|
54
|
+
children: [
|
|
55
|
+
/* @__PURE__ */ l(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
className: e("collapsible-panel-header-text"),
|
|
59
|
+
onClick: c ? () => t((g) => !g) : void 0,
|
|
60
|
+
style: c ? {
|
|
61
|
+
cursor: "pointer"
|
|
62
|
+
} : {},
|
|
63
|
+
children: typeof n == "string" ? /* @__PURE__ */ l(S, { children: n }) : n
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ r("div", { className: e("collapsible-panel-header-actions"), children: [
|
|
67
|
+
s && O,
|
|
68
|
+
/* @__PURE__ */ l(
|
|
69
|
+
i.Trigger,
|
|
70
|
+
{
|
|
71
|
+
className: e("collapsible-panel-trigger"),
|
|
72
|
+
render: s ? /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l(
|
|
73
|
+
F,
|
|
74
|
+
{
|
|
75
|
+
weight: "bold",
|
|
76
|
+
className: o(
|
|
77
|
+
e("collapsible-panel-caret"),
|
|
78
|
+
s && e("collapsible-panel-caret-open")
|
|
79
|
+
)
|
|
80
|
+
}
|
|
81
|
+
) }) : /* @__PURE__ */ l(f, { children: /* @__PURE__ */ l(
|
|
82
|
+
M,
|
|
83
|
+
{
|
|
84
|
+
weight: "bold",
|
|
85
|
+
className: o(
|
|
86
|
+
e("collapsible-panel-caret"),
|
|
87
|
+
s && e("collapsible-panel-caret-open")
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
) })
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
] })
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
s && p && /* @__PURE__ */ l("div", { className: e("collapsible-panel-header-after"), children: p })
|
|
98
|
+
] }),
|
|
99
|
+
/* @__PURE__ */ l(
|
|
100
|
+
i.Panel,
|
|
101
|
+
{
|
|
102
|
+
className: e("collapsible-panel-content"),
|
|
103
|
+
style: typeof a < "u" ? {
|
|
104
|
+
"--ds-content-padding": a === !1 || a === 0 ? "0" : typeof a == "number" ? `${a}px` : a
|
|
105
|
+
} : {},
|
|
106
|
+
keepMounted: w,
|
|
107
|
+
children: /* @__PURE__ */ l(
|
|
108
|
+
E,
|
|
109
|
+
{
|
|
110
|
+
show: B,
|
|
111
|
+
className: o(e("collapsible-panel-body"), x),
|
|
112
|
+
keepMounted: !0,
|
|
113
|
+
children: /* @__PURE__ */ l("div", { children: h })
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
);
|
|
121
|
+
};
|
|
122
|
+
export {
|
|
123
|
+
Z as VerticalCollapsiblePanel
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/VerticalCollapsiblePanel/component.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { Collapsible } from \"@base-ui-components/react\";\nimport { MinusCircle, PlusCircle } from \"@bioturing/assets\";\nimport { useCls, clsx, useAntdCssVarClassname } from \"../utils\";\nimport { useControlledState } from \"../hooks/useControlledState\";\nimport { Transition } from \"../Transition\";\nimport { useAnimationsFinished } from \"../hooks\";\nimport { IconButton } from \"../IconButton\";\nimport { Truncate } from \"../Truncate/component\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface VerticalCollapsiblePanelProps {\n /**\n * The content of the panel that will be toggled\n */\n children: React.ReactNode;\n /**\n * The header of the panel\n */\n title?: React.ReactNode;\n /**\n * Indicate if the title should be used as a trigger\n * @default true\n */\n useTitleAsTrigger?: boolean;\n /**\n * Custom Content Padding\n * @default \"24px\"\n */\n contentPadding?: number | string | boolean;\n /**\n * Add more content below the title\n * Only show when panel is open\n */\n afterTitle?: React.ReactNode;\n\n /**\n * Whether the panel is expanded by default\n */\n defaultOpen?: boolean;\n /**\n * Control the open state (makes the component controlled)\n */\n open?: boolean;\n /**\n * Callback when the open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Additional class name for the component\n */\n className?: string;\n /**\n * Addtional class name for the header\n */\n headerClassName?: string;\n /**\n * Addtional class name for the header\n */\n headerInnerClassName?: string;\n /**\n * Addtional class name for the body\n * */\n bodyClassName?: string;\n /**\n * Actions to be displayed in the header\n * Only show when panel is open\n */\n actions?: React.ReactNode;\n /**\n * Keeping it as mounted, just hide the content\n */\n keepMounted?: boolean;\n}\n\nexport const VerticalCollapsiblePanel: React.FC<\n VerticalCollapsiblePanelProps\n> = ({\n children,\n title,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n className,\n headerClassName,\n headerInnerClassName,\n bodyClassName,\n contentPadding = \"16px\",\n afterTitle,\n actions,\n useTitleAsTrigger = true,\n keepMounted = false,\n}) => {\n const cls = useCls();\n // Use useControlledState for open state\n const [isOpen, setIsOpen] = useControlledState(\n controlledOpen,\n onOpenChange,\n defaultOpen\n );\n const [isBodyOpen, setIsBodyOpen] = useState(isOpen);\n const ref = useRef<HTMLDivElement>(null);\n const runOnceAnimationsFinish = useAnimationsFinished(ref, isOpen);\n const cssVars = useAntdCssVarClassname();\n useEffect(() => {\n runOnceAnimationsFinish(() => {\n setIsBodyOpen(isOpen);\n });\n }, [isOpen, runOnceAnimationsFinish]);\n return (\n <Collapsible.Root\n className={clsx(cls(\"collapsible-panel\"), cssVars, className)}\n open={isOpen}\n onOpenChange={setIsOpen}\n ref={ref}\n >\n <div className={clsx(cls(\"collapsible-panel-header\"), headerClassName)}>\n <div\n className={clsx(\n cls(\"collapsible-panel-header-inner\"),\n headerInnerClassName\n )}\n >\n <div\n className={cls(\"collapsible-panel-header-text\")}\n onClick={\n useTitleAsTrigger ? () => setIsOpen((open) => !open) : undefined\n }\n style={\n useTitleAsTrigger\n ? {\n cursor: \"pointer\",\n }\n : {}\n }\n >\n {typeof title == \"string\" ? <Truncate>{title}</Truncate> : title}\n </div>\n <div className={cls(\"collapsible-panel-header-actions\")}>\n {isOpen && actions}\n <Collapsible.Trigger\n className={cls(\"collapsible-panel-trigger\")}\n render={\n isOpen ? (\n <IconButton>\n <MinusCircle\n weight=\"bold\"\n className={clsx(\n cls(\"collapsible-panel-caret\"),\n isOpen && cls(\"collapsible-panel-caret-open\")\n )}\n />\n </IconButton>\n ) : (\n <IconButton>\n <PlusCircle\n weight=\"bold\"\n className={clsx(\n cls(\"collapsible-panel-caret\"),\n isOpen && cls(\"collapsible-panel-caret-open\")\n )}\n />\n </IconButton>\n )\n }\n ></Collapsible.Trigger>\n </div>\n </div>\n {isOpen && afterTitle && (\n <div className={cls(\"collapsible-panel-header-after\")}>\n {afterTitle}\n </div>\n )}\n </div>\n <Collapsible.Panel\n className={cls(\"collapsible-panel-content\")}\n style={\n (typeof contentPadding != \"undefined\"\n ? {\n \"--ds-content-padding\":\n contentPadding === false || contentPadding === 0\n ? \"0\"\n : typeof contentPadding == \"number\"\n ? `${contentPadding}px`\n : contentPadding,\n }\n : {}) as React.CSSProperties\n }\n keepMounted={keepMounted}\n >\n <Transition\n show={isBodyOpen}\n className={clsx(cls(\"collapsible-panel-body\"), bodyClassName)}\n keepMounted\n >\n <div>{children}</div>\n </Transition>\n </Collapsible.Panel>\n </Collapsible.Root>\n );\n};\n"],"names":["VerticalCollapsiblePanel","children","title","defaultOpen","controlledOpen","onOpenChange","className","headerClassName","headerInnerClassName","bodyClassName","contentPadding","afterTitle","actions","useTitleAsTrigger","keepMounted","cls","useCls","isOpen","setIsOpen","useControlledState","isBodyOpen","setIsBodyOpen","useState","ref","useRef","runOnceAnimationsFinish","useAnimationsFinished","cssVars","useAntdCssVarClassname","useEffect","jsxs","Collapsible","clsx","jsx","open","Truncate","IconButton","MinusCircle","PlusCircle","Transition"],"mappings":";;;;;;;;;;;;AA8EO,MAAMA,IAET,CAAC;AAAA,EACH,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,YAAAC;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC,IAAoB;AAAA,EACpB,aAAAC,IAAc;AAChB,MAAM;AACJ,QAAMC,IAAMC,EAAO,GAEb,CAACC,GAAQC,CAAS,IAAIC;AAAA,IAC1Bf;AAAA,IACAC;AAAA,IACAF;AAAA,EACF,GACM,CAACiB,GAAYC,CAAa,IAAIC,EAASL,CAAM,GAC7CM,IAAMC,EAAuB,IAAI,GACjCC,IAA0BC,EAAsBH,GAAKN,CAAM,GAC3DU,IAAUC,EAAuB;AACvC,SAAAC,EAAU,MAAM;AACd,IAAAJ,EAAwB,MAAM;AAC5B,MAAAJ,EAAcJ,CAAM;AAAA,IAAA,CACrB;AAAA,EAAA,GACA,CAACA,GAAQQ,CAAuB,CAAC,GAElC,gBAAAK;AAAA,IAACC,EAAY;AAAA,IAAZ;AAAA,MACC,WAAWC,EAAKjB,EAAI,mBAAmB,GAAGY,GAASrB,CAAS;AAAA,MAC5D,MAAMW;AAAA,MACN,cAAcC;AAAA,MACd,KAAAK;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAO,EAAC,SAAI,WAAWE,EAAKjB,EAAI,0BAA0B,GAAGR,CAAe,GACnE,UAAA;AAAA,UAAA,gBAAAuB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWE;AAAA,gBACTjB,EAAI,gCAAgC;AAAA,gBACpCP;AAAA,cACF;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAyB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAWlB,EAAI,+BAA+B;AAAA,oBAC9C,SACEF,IAAoB,MAAMK,EAAU,CAACgB,MAAS,CAACA,CAAI,IAAI;AAAA,oBAEzD,OACErB,IACI;AAAA,sBACE,QAAQ;AAAA,oBAAA,IAEV,CAAC;AAAA,oBAGN,iBAAOX,KAAS,WAAY,gBAAA+B,EAAAE,GAAA,EAAU,aAAM,IAAcjC;AAAA,kBAAA;AAAA,gBAC7D;AAAA,gBACC,gBAAA4B,EAAA,OAAA,EAAI,WAAWf,EAAI,kCAAkC,GACnD,UAAA;AAAA,kBAAUE,KAAAL;AAAA,kBACX,gBAAAqB;AAAA,oBAACF,EAAY;AAAA,oBAAZ;AAAA,sBACC,WAAWhB,EAAI,2BAA2B;AAAA,sBAC1C,QACEE,IACE,gBAAAgB,EAACG,GACC,EAAA,UAAA,gBAAAH;AAAA,wBAACI;AAAA,wBAAA;AAAA,0BACC,QAAO;AAAA,0BACP,WAAWL;AAAA,4BACTjB,EAAI,yBAAyB;AAAA,4BAC7BE,KAAUF,EAAI,8BAA8B;AAAA,0BAAA;AAAA,wBAC9C;AAAA,sBACF,EAAA,CACF,IAEA,gBAAAkB,EAACG,GACC,EAAA,UAAA,gBAAAH;AAAA,wBAACK;AAAA,wBAAA;AAAA,0BACC,QAAO;AAAA,0BACP,WAAWN;AAAA,4BACTjB,EAAI,yBAAyB;AAAA,4BAC7BE,KAAUF,EAAI,8BAA8B;AAAA,0BAAA;AAAA,wBAC9C;AAAA,sBAAA,EAEJ,CAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAGL,EACH,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,UACCE,KAAUN,KACR,gBAAAsB,EAAA,OAAA,EAAI,WAAWlB,EAAI,gCAAgC,GACjD,UACHJ,EAAA,CAAA;AAAA,QAAA,GAEJ;AAAA,QACA,gBAAAsB;AAAA,UAACF,EAAY;AAAA,UAAZ;AAAA,YACC,WAAWhB,EAAI,2BAA2B;AAAA,YAC1C,OACG,OAAOL,IAAkB,MACtB;AAAA,cACE,wBACEA,MAAmB,MAASA,MAAmB,IAC3C,MACA,OAAOA,KAAkB,WACzB,GAAGA,CAAc,OACjBA;AAAA,YAAA,IAER,CAAC;AAAA,YAEP,aAAAI;AAAA,YAEA,UAAA,gBAAAmB;AAAA,cAACM;AAAA,cAAA;AAAA,gBACC,MAAMnB;AAAA,gBACN,WAAWY,EAAKjB,EAAI,wBAAwB,GAAGN,CAAa;AAAA,gBAC5D,aAAW;AAAA,gBAEX,UAAA,gBAAAwB,EAAC,SAAK,UAAAhC,EAAS,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACjB;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer components{.ds-collapsible-panel{overflow:hidden;flex-basis:fit-content;flex-grow:0;flex-shrink:0;display:flex;max-height:100%;flex-direction:column}.ds-collapsible-panel[data-closed]{transition:all .2s ease-out}.ds-collapsible-panel[data-open]{transition:all .2s ease-in;flex-grow:1}.ds-collapsible-panel-trigger{background:none;border:none;padding:0;cursor:pointer;text-align:left}.ds-collapsible-panel-header{display:flex;flex-direction:column;flex-grow:0;transition:all .2s ease-in-out;border-bottom:1px solid transparent}.ds-collapsible-panel-header-inner{display:flex;align-items:center;transition:width .2s ease;padding:.75rem 1rem;gap:.5rem}.ds-collapsible-panel-header-after{display:flex;align-items:center;padding:0 1rem .75rem;gap:.5rem}.ds-collapsible-panel[data-open] .ds-collapsible-panel-header{border-bottom:1px solid var(--ds-color-split)}.ds-collapsible-panel[data-open] .ds-collapsible-panel-header-inner{justify-content:flex-start;flex-grow:1}.ds-collapsible-panel-trigger:hover .ds-collapsible-panel-header{background-color:var(--ds-color-bg-hover)}.ds-collapsible-panel-header-actions{display:flex;align-items:center;justify-content:center;flex-shrink:0;gap:.5rem;flex-grow:0}.ds-collapsible-panel-header-text{flex-grow:1;display:inline-block;font-size:var(--text-ds-h5);font-weight:var(--text-ds-h5--font-weight);line-height:var(--text-ds-h5--line-height);color:var(--ds-color-text)}.ds-collapsible-panel[data-closed] .ds-collapsible-panel-header-inner{transform:rotate(180deg);writing-mode:vertical-rl}.ds-collapsible-panel-content{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;overflow-y:auto}.ds-collapsible-panel-content[data-closed]{display:none}.ds-collapsible-panel-body{padding:var(--ds-content-padding);flex-grow:1;transition:opacity .2s ease-in-out}.ds-collapsible-panel-body[data-starting],.ds-collapsible-panel-body[data-ending]{opacity:0}}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import s from "antd/es/theme";
|
|
2
|
+
import r from "antd/es/grid";
|
|
3
|
+
import o from "antd/es/app/useApp";
|
|
4
|
+
import { default as d } from "antd/es/app/useApp";
|
|
5
|
+
import { useForm as l, useWatch as x } from "antd/es/form/Form";
|
|
6
|
+
const n = s.useToken, p = r.useBreakpoint, a = () => {
|
|
7
|
+
const { message: e } = o();
|
|
8
|
+
return e;
|
|
9
|
+
}, c = () => {
|
|
10
|
+
const { modal: e } = o();
|
|
11
|
+
return e;
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
d as useApp,
|
|
15
|
+
p as useBreakpoint,
|
|
16
|
+
l as useForm,
|
|
17
|
+
a as useMessage,
|
|
18
|
+
c as useModal,
|
|
19
|
+
n as useToken,
|
|
20
|
+
x as useWatch
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=antd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antd.js","sources":["../../../src/components/hooks/antd.ts"],"sourcesContent":["\"use client\";\nimport theme from \"antd/es/theme\";\nimport Grid from \"antd/es/grid\";\nimport useApp from \"antd/es/app/useApp\";\n\nexport const useToken = theme.useToken;\nexport const useBreakpoint = Grid.useBreakpoint;\n\nexport { useForm, useWatch } from \"antd/es/form/Form\";\n\nexport const useMessage = () => {\n const { message } = useApp();\n return message;\n};\n\nexport const useModal = () => {\n const { modal } = useApp();\n return modal;\n};\n\nexport { useApp };\n"],"names":["useToken","theme","useBreakpoint","Grid","useMessage","message","useApp","useModal","modal"],"mappings":";;;;;AAKO,MAAMA,IAAWC,EAAM,UACjBC,IAAgBC,EAAK,eAIrBC,IAAa,MAAM;AACxB,QAAA,EAAE,SAAAC,EAAQ,IAAIC,EAAO;AACpB,SAAAD;AACT,GAEaE,IAAW,MAAM;AACtB,QAAA,EAAE,OAAAC,EAAM,IAAIF,EAAO;AAClB,SAAAE;AACT;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useLayoutEffect as d, useEffect as a, useRef as i, useCallback as p } from "react";
|
|
2
|
+
import { flushSync as h } from "react-dom";
|
|
3
|
+
const m = typeof window < "u" ? d : a;
|
|
4
|
+
function f(t) {
|
|
5
|
+
const e = i(t);
|
|
6
|
+
return m(() => {
|
|
7
|
+
e.current = t;
|
|
8
|
+
}), p(
|
|
9
|
+
(...r) => {
|
|
10
|
+
var n;
|
|
11
|
+
return (n = e.current) == null ? void 0 : n.call(e, ...r);
|
|
12
|
+
},
|
|
13
|
+
[]
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
function y(t) {
|
|
17
|
+
const e = i(t);
|
|
18
|
+
return m(() => {
|
|
19
|
+
e.current = t;
|
|
20
|
+
}), e;
|
|
21
|
+
}
|
|
22
|
+
function E(t, e = !1) {
|
|
23
|
+
const r = i(-1), n = i(-1), u = f(() => {
|
|
24
|
+
cancelAnimationFrame(r.current), clearTimeout(n.current);
|
|
25
|
+
});
|
|
26
|
+
return a(() => u, [u]), f((o) => {
|
|
27
|
+
u();
|
|
28
|
+
const c = t.current;
|
|
29
|
+
c && (typeof c.getAnimations != "function" ? o() : r.current = requestAnimationFrame(() => {
|
|
30
|
+
function s() {
|
|
31
|
+
c && Promise.allSettled(
|
|
32
|
+
c.getAnimations().map((l) => l.finished)
|
|
33
|
+
).then(() => {
|
|
34
|
+
h(o);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
e ? n.current = window.setTimeout(s) : s();
|
|
38
|
+
}));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
E as useAnimationsFinished,
|
|
43
|
+
m as useEnhancedEffect,
|
|
44
|
+
f as useEventCallback,
|
|
45
|
+
y as useLatestRef
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=base-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-ui.js","sources":["../../../src/components/hooks/base-ui.ts"],"sourcesContent":["\"use client\";\nimport { useLayoutEffect, useEffect, useRef, useCallback } from \"react\";\nimport { flushSync } from \"react-dom\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyFunction = (...args: any[]) => any;\n\nexport const useEnhancedEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n\nexport function useEventCallback<Fn extends AnyFunction>(fn?: Fn) {\n const ref = useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return useCallback<AnyFunction>(\n (...args) => ref.current?.(...args),\n []\n ) as Fn;\n}\n\nexport function useLatestRef<T>(value: T) {\n const ref = useRef(value);\n useEnhancedEffect(() => {\n ref.current = value;\n });\n return ref;\n}\n\nexport function useAnimationsFinished(\n ref: React.RefObject<HTMLElement | null>,\n waitForNextTick = false\n) {\n const frameRef = useRef(-1);\n const timeoutRef = useRef(-1);\n\n const cancelTasks = useEventCallback(() => {\n cancelAnimationFrame(frameRef.current);\n clearTimeout(timeoutRef.current);\n });\n\n useEffect(() => cancelTasks, [cancelTasks]);\n\n return useEventCallback((fnToExecute: () => void) => {\n cancelTasks();\n\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (typeof element.getAnimations !== \"function\") {\n fnToExecute();\n } else {\n frameRef.current = requestAnimationFrame(() => {\n function exec() {\n if (!element) {\n return;\n }\n\n Promise.allSettled(\n element.getAnimations().map((anim) => anim.finished)\n ).then(() => {\n // Synchronously flush the unmounting of the component so that the browser doesn't\n // paint: https://github.com/mui/base-ui/issues/979\n flushSync(fnToExecute);\n });\n }\n\n // `open: true` animations need to wait for the next tick to be detected\n if (waitForNextTick) {\n timeoutRef.current = window.setTimeout(exec);\n } else {\n exec();\n }\n });\n }\n });\n}\n"],"names":["useEnhancedEffect","useLayoutEffect","useEffect","useEventCallback","fn","ref","useRef","useCallback","args","_a","useLatestRef","value","useAnimationsFinished","waitForNextTick","frameRef","timeoutRef","cancelTasks","fnToExecute","element","exec","anim","flushSync"],"mappings":";;AAOO,MAAMA,IACX,OAAO,SAAW,MAAcC,IAAkBC;AAE7C,SAASC,EAAyCC,GAAS;AAC1D,QAAAC,IAAMC,EAAOF,CAAE;AACrB,SAAAJ,EAAkB,MAAM;AACtB,IAAAK,EAAI,UAAUD;AAAA,EAAA,CACf,GACMG;AAAA,IACL,IAAIC,MAAS;;AAAA,cAAAC,IAAAJ,EAAI,YAAJ,gBAAAI,EAAA,KAAAJ,GAAc,GAAGG;AAAA;AAAA,IAC9B,CAAA;AAAA,EACF;AACF;AAEO,SAASE,EAAgBC,GAAU;AAClC,QAAAN,IAAMC,EAAOK,CAAK;AACxB,SAAAX,EAAkB,MAAM;AACtB,IAAAK,EAAI,UAAUM;AAAA,EAAA,CACf,GACMN;AACT;AAEgB,SAAAO,EACdP,GACAQ,IAAkB,IAClB;AACM,QAAAC,IAAWR,EAAO,EAAE,GACpBS,IAAaT,EAAO,EAAE,GAEtBU,IAAcb,EAAiB,MAAM;AACzC,yBAAqBW,EAAS,OAAO,GACrC,aAAaC,EAAW,OAAO;AAAA,EAAA,CAChC;AAED,SAAAb,EAAU,MAAMc,GAAa,CAACA,CAAW,CAAC,GAEnCb,EAAiB,CAACc,MAA4B;AACvC,IAAAD,EAAA;AAEZ,UAAME,IAAUb,EAAI;AAEpB,IAAKa,MAID,OAAOA,EAAQ,iBAAkB,aACvBD,EAAA,IAEHH,EAAA,UAAU,sBAAsB,MAAM;AAC7C,eAASK,IAAO;AACd,QAAKD,KAIG,QAAA;AAAA,UACNA,EAAQ,cAAc,EAAE,IAAI,CAACE,MAASA,EAAK,QAAQ;AAAA,QACrD,EAAE,KAAK,MAAM;AAGX,UAAAC,EAAUJ,CAAW;AAAA,QAAA,CACtB;AAAA,MAAA;AAIH,MAAIJ,IACSE,EAAA,UAAU,OAAO,WAAWI,CAAI,IAEtCA,EAAA;AAAA,IACP,CACD;AAAA,EACH,CACD;AACH;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useDS as l } from "../DSRoot/context.js";
|
|
2
|
+
import { getTokensByTheme as n, getColorsByTheme as a } from "../../tokens/utils.js";
|
|
3
|
+
import { categoricalChartColorTokens as c } from "../../tokens/charts/index.js";
|
|
4
|
+
import { chartColorTokens as C } from "../../tokens/charts/tokens.js";
|
|
5
|
+
const p = () => {
|
|
6
|
+
const { theme: r } = l(), o = n(C, r), e = o.colorChartsLineAxis, t = o.colorChartsLineGrid, s = o.colorChartsLabelAxis, i = a(
|
|
7
|
+
c,
|
|
8
|
+
r
|
|
9
|
+
);
|
|
10
|
+
return {
|
|
11
|
+
axisLineColor: e,
|
|
12
|
+
splitLineColor: t,
|
|
13
|
+
axisLabelColor: s,
|
|
14
|
+
categoricalColors: i,
|
|
15
|
+
echartsAxisConfig: {
|
|
16
|
+
axisLine: { lineStyle: { color: e } },
|
|
17
|
+
splitLine: { lineStyle: { color: t } },
|
|
18
|
+
axisLabel: {
|
|
19
|
+
color: s,
|
|
20
|
+
fontFamily: "InterVariable, Inter, Helvetica, Arial, sans-serif"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export {
|
|
26
|
+
p as useCharts
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=useCharts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCharts.js","sources":["../../../src/components/hooks/useCharts.ts"],"sourcesContent":["import { useDS } from \"../DSRoot/context\";\nimport { getColorsByTheme, getTokensByTheme } from \"../../tokens/utils\";\nimport {\n chartColorTokens,\n categoricalChartColorTokens,\n} from \"../../tokens/charts\";\n\nexport const useCharts = () => {\n const { theme } = useDS();\n const themedChartColorTokens = getTokensByTheme(chartColorTokens, theme);\n const axisLineColor = themedChartColorTokens[\"colorChartsLineAxis\"];\n const splitLineColor = themedChartColorTokens[\"colorChartsLineGrid\"];\n const axisLabelColor = themedChartColorTokens[\"colorChartsLabelAxis\"];\n const categoricalColors = getColorsByTheme(\n categoricalChartColorTokens,\n theme\n );\n const echartsAxisConfig = {\n axisLine: { lineStyle: { color: axisLineColor } },\n splitLine: { lineStyle: { color: splitLineColor } },\n axisLabel: {\n color: axisLabelColor,\n fontFamily: \"InterVariable, Inter, Helvetica, Arial, sans-serif\",\n },\n };\n\n return {\n axisLineColor,\n splitLineColor,\n axisLabelColor,\n categoricalColors,\n echartsAxisConfig,\n };\n};\n"],"names":["useCharts","theme","useDS","themedChartColorTokens","getTokensByTheme","chartColorTokens","axisLineColor","splitLineColor","axisLabelColor","categoricalColors","getColorsByTheme","categoricalChartColorTokens"],"mappings":";;;;AAOO,MAAMA,IAAY,MAAM;AACvB,QAAA,EAAE,OAAAC,EAAM,IAAIC,EAAM,GAClBC,IAAyBC,EAAiBC,GAAkBJ,CAAK,GACjEK,IAAgBH,EAAuB,qBACvCI,IAAiBJ,EAAuB,qBACxCK,IAAiBL,EAAuB,sBACxCM,IAAoBC;AAAA,IACxBC;AAAA,IACAV;AAAA,EACF;AAUO,SAAA;AAAA,IACL,eAAAK;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,mBAdwB;AAAA,MACxB,UAAU,EAAE,WAAW,EAAE,OAAOH,IAAgB;AAAA,MAChD,WAAW,EAAE,WAAW,EAAE,OAAOC,IAAiB;AAAA,MAClD,WAAW;AAAA,QACT,OAAOC;AAAA,QACP,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,EAQA;AACF;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useState as a, useCallback as l } from "react";
|
|
2
|
+
function S(t, o, s) {
|
|
3
|
+
const [f, c] = a(s), n = typeof t < "u", i = l(
|
|
4
|
+
(e) => {
|
|
5
|
+
const r = typeof e == "function" ? e(t) : e;
|
|
6
|
+
typeof o == "function" && o(r), n || c(e);
|
|
7
|
+
},
|
|
8
|
+
[t, o, n]
|
|
9
|
+
);
|
|
10
|
+
return [n ? t : f, i];
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
S as useControlledState
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useControlledState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControlledState.js","sources":["../../../src/components/hooks/useControlledState.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useState } from \"react\";\n\n// Ref:\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/utils/src/useControlledState.ts\n// https://github.com/chakra-ui/chakra-ui/tree/main/packages/hooks/use-controllable-state\n\nexport function useControlledState<T>(\n value: T | undefined,\n onChange: ((value: T, ...args: any[]) => void) | undefined,\n defaultValue: T | undefined\n) {\n const [internalState, setInternalState] = useState(defaultValue);\n\n const isControlled = typeof value !== \"undefined\";\n\n const setState = useCallback(\n (next: T) => {\n const nextValue = typeof next === \"function\" ? next(value) : next;\n if (typeof onChange === \"function\") onChange(nextValue);\n if (!isControlled) setInternalState(next);\n },\n [value, onChange, isControlled]\n );\n\n const state = isControlled ? value : internalState;\n\n return [state, setState] as [T, React.Dispatch<React.SetStateAction<T>>];\n}\n"],"names":["useControlledState","value","onChange","defaultValue","internalState","setInternalState","useState","isControlled","setState","useCallback","next","nextValue"],"mappings":";AAOgB,SAAAA,EACdC,GACAC,GACAC,GACA;AACA,QAAM,CAACC,GAAeC,CAAgB,IAAIC,EAASH,CAAY,GAEzDI,IAAe,OAAON,IAAU,KAEhCO,IAAWC;AAAA,IACf,CAACC,MAAY;AACX,YAAMC,IAAY,OAAOD,KAAS,aAAaA,EAAKT,CAAK,IAAIS;AAC7D,MAAI,OAAOR,KAAa,cAAYA,EAASS,CAAS,GACjDJ,KAAcF,EAAiBK,CAAI;AAAA,IAC1C;AAAA,IACA,CAACT,GAAOC,GAAUK,CAAY;AAAA,EAChC;AAIO,SAAA,CAFOA,IAAeN,IAAQG,GAEtBI,CAAQ;AACzB;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
2
|
+
import { useRender as a } from "@base-ui-components/react";
|
|
3
|
+
import { useAntdCssVarClassname as c } from "./antdUtils.js";
|
|
4
|
+
import { clsx as d } from "./cn.js";
|
|
5
|
+
const x = ({
|
|
6
|
+
as: r = "div",
|
|
7
|
+
ref: s,
|
|
8
|
+
className: e,
|
|
9
|
+
...o
|
|
10
|
+
}) => {
|
|
11
|
+
const n = r, t = c(), { renderElement: m } = a({
|
|
12
|
+
render: /* @__PURE__ */ p(n, {}),
|
|
13
|
+
refs: [s],
|
|
14
|
+
props: {
|
|
15
|
+
...o,
|
|
16
|
+
className: d(e, t)
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
return m();
|
|
20
|
+
};
|
|
21
|
+
export {
|
|
22
|
+
x as WithAntdTokens
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=WithAntdTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WithAntdTokens.js","sources":["../../../src/components/utils/WithAntdTokens.tsx"],"sourcesContent":["\"use client\";\n\nimport { useRender } from \"@base-ui-components/react\";\nimport type {\n ElementType,\n JSX,\n ComponentProps,\n JSXElementConstructor,\n} from \"react\";\nimport { useAntdCssVarClassname } from \"./antdUtils\";\nimport { clsx } from \"./cn\";\n\ntype IntrinsicElement =\n | keyof JSX.IntrinsicElements\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n | JSXElementConstructor<any>;\n\nexport type WidthAntdTokensProps<T extends IntrinsicElement> = {\n as?: IntrinsicElement;\n} & ComponentProps<T>;\n\nexport const WithAntdTokens = <T extends IntrinsicElement = \"div\">({\n as: Tag = \"div\",\n ref,\n className,\n ...rest\n}: WidthAntdTokensProps<T>) => {\n const Component = Tag as ElementType;\n const cssVar = useAntdCssVarClassname();\n const { renderElement } = useRender({\n render: <Component />,\n refs: [ref],\n props: {\n ...rest,\n className: clsx(className, cssVar),\n },\n });\n return renderElement();\n};\n"],"names":["WithAntdTokens","Tag","ref","className","rest","Component","cssVar","useAntdCssVarClassname","renderElement","useRender","clsx"],"mappings":";;;;AAqBO,MAAMA,IAAiB,CAAqC;AAAA,EACjE,IAAIC,IAAM;AAAA,EACV,KAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAA+B;AAC7B,QAAMC,IAAYJ,GACZK,IAASC,EAAuB,GAChC,EAAE,eAAAC,EAAc,IAAIC,EAAU;AAAA,IAClC,0BAASJ,GAAU,EAAA;AAAA,IACnB,MAAM,CAACH,CAAG;AAAA,IACV,OAAO;AAAA,MACL,GAAGE;AAAA,MACH,WAAWM,EAAKP,GAAWG,CAAM;AAAA,IAAA;AAAA,EACnC,CACD;AACD,SAAOE,EAAc;AACvB;"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import n from "antd/es/config-provider";
|
|
2
|
+
import a from "antd/es/theme/useToken";
|
|
3
|
+
import { useContext as i } from "react";
|
|
4
|
+
import { cx as c } from "./cn.js";
|
|
5
|
+
const C = () => {
|
|
6
|
+
const { getPrefixCls: o } = i(n.ConfigContext);
|
|
7
|
+
return { getPrefixCls: o };
|
|
8
|
+
}, g = () => {
|
|
9
|
+
var t;
|
|
10
|
+
return (t = a()[4]) == null ? void 0 : t.key;
|
|
11
|
+
}, b = () => {
|
|
12
|
+
const { getPrefixCls: o } = i(n.ConfigContext);
|
|
13
|
+
return (...t) => c(...t).map((e) => o(e)).join(" ");
|
|
14
|
+
};
|
|
15
|
+
function f(o) {
|
|
16
|
+
const t = [];
|
|
17
|
+
let e = "";
|
|
18
|
+
for (const r of o)
|
|
19
|
+
r >= "A" && r <= "Z" ? (e && t.push(e), e = r.toLowerCase()) : e += r;
|
|
20
|
+
return e && t.push(e), t.length > 0 ? t : [o];
|
|
21
|
+
}
|
|
22
|
+
const h = (o = "bottomLeft") => {
|
|
23
|
+
const [t, e] = f(o);
|
|
24
|
+
let r, s = "center";
|
|
25
|
+
if (t === "top" || t === "bottom") {
|
|
26
|
+
if (r = t, e)
|
|
27
|
+
switch (e) {
|
|
28
|
+
case "left":
|
|
29
|
+
s = "start";
|
|
30
|
+
break;
|
|
31
|
+
case "right":
|
|
32
|
+
s = "end";
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
} else if (t === "left" || t === "right") {
|
|
36
|
+
if (r = t, e)
|
|
37
|
+
switch (e) {
|
|
38
|
+
case "top":
|
|
39
|
+
s = "start";
|
|
40
|
+
break;
|
|
41
|
+
case "bottom":
|
|
42
|
+
s = "end";
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
} else
|
|
46
|
+
r = "bottom";
|
|
47
|
+
return {
|
|
48
|
+
placement: r,
|
|
49
|
+
align: s
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
export {
|
|
53
|
+
h as parseAntdPlacement,
|
|
54
|
+
g as useAntdCssVarClassname,
|
|
55
|
+
b as useCls,
|
|
56
|
+
C as useGetPrefixCls
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=antdUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antdUtils.js","sources":["../../../src/components/utils/antdUtils.ts"],"sourcesContent":["\"use client\";\nimport { default as ConfigProvider } from \"antd/es/config-provider\";\nimport useToken from \"antd/es/theme/useToken\";\nimport { useContext } from \"react\";\nimport type { ClassValue } from \"./types\";\nimport { cx } from \"./cn\";\nimport { PopoverProps } from \"antd/es/popover\";\n\nexport const useGetPrefixCls = () => {\n const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);\n return { getPrefixCls };\n};\n\n/**\n *\n * @returns the antd classname providing css variables\n */\nexport const useAntdCssVarClassname = () => {\n const token = useToken();\n return token[4]?.key;\n};\n\nexport const useCls = () => {\n const { getPrefixCls } = useContext(ConfigProvider.ConfigContext);\n return (...args: ClassValue[]) => {\n return cx(...args)\n .map((cls) => getPrefixCls(cls))\n .join(\" \");\n };\n};\n\nfunction splitCamelCase(text: string): string[] {\n const result: string[] = [];\n let currentWord = \"\";\n\n for (const char of text) {\n if (char >= \"A\" && char <= \"Z\") {\n if (currentWord) {\n result.push(currentWord);\n }\n currentWord = char.toLowerCase();\n } else {\n currentWord += char;\n }\n }\n\n if (currentWord) {\n result.push(currentWord);\n }\n\n return result.length > 0 ? result : [text];\n}\n\nexport const parseAntdPlacement = (\n placement: PopoverProps[\"placement\"] = \"bottomLeft\"\n): {\n placement: \"top\" | \"bottom\" | \"left\" | \"right\";\n align: \"start\" | \"end\" | \"center\";\n} => {\n const [position1, position2] = splitCamelCase(placement);\n\n // Determine primary placement\n let primaryPlacement: \"top\" | \"bottom\" | \"left\" | \"right\";\n let align: \"start\" | \"end\" | \"center\" = \"center\";\n\n // First check if it's a vertical or horizontal primary placement\n if (position1 === \"top\" || position1 === \"bottom\") {\n primaryPlacement = position1;\n if (position2) {\n switch (position2) {\n case \"left\":\n align = \"start\";\n break;\n case \"right\":\n align = \"end\";\n break;\n // \"top\" or \"bottom\" as second position is invalid, defaults to center\n }\n }\n } else if (position1 === \"left\" || position1 === \"right\") {\n primaryPlacement = position1;\n if (position2) {\n switch (position2) {\n case \"top\":\n align = \"start\";\n break;\n case \"bottom\":\n align = \"end\";\n break;\n // \"left\" or \"right\" as second position is invalid, defaults to center\n }\n }\n } else {\n // Fallback for invalid placement\n primaryPlacement = \"bottom\";\n }\n\n return {\n placement: primaryPlacement,\n align,\n };\n};\n"],"names":["useGetPrefixCls","getPrefixCls","useContext","ConfigProvider","useAntdCssVarClassname","_a","useToken","useCls","args","cx","cls","splitCamelCase","text","result","currentWord","char","parseAntdPlacement","placement","position1","position2","primaryPlacement","align"],"mappings":";;;;AAQO,MAAMA,IAAkB,MAAM;AACnC,QAAM,EAAE,cAAAC,EAAiB,IAAAC,EAAWC,EAAe,aAAa;AAChE,SAAO,EAAE,cAAAF,EAAa;AACxB,GAMaG,IAAyB,MAAM;;AAEnC,UAAAC,IADOC,EAAS,EACV,CAAC,MAAP,gBAAAD,EAAU;AACnB,GAEaE,IAAS,MAAM;AAC1B,QAAM,EAAE,cAAAN,EAAiB,IAAAC,EAAWC,EAAe,aAAa;AAChE,SAAO,IAAIK,MACFC,EAAG,GAAGD,CAAI,EACd,IAAI,CAACE,MAAQT,EAAaS,CAAG,CAAC,EAC9B,KAAK,GAAG;AAEf;AAEA,SAASC,EAAeC,GAAwB;AAC9C,QAAMC,IAAmB,CAAC;AAC1B,MAAIC,IAAc;AAElB,aAAWC,KAAQH;AACb,IAAAG,KAAQ,OAAOA,KAAQ,OACrBD,KACFD,EAAO,KAAKC,CAAW,GAEzBA,IAAcC,EAAK,YAAY,KAEhBD,KAAAC;AAInB,SAAID,KACFD,EAAO,KAAKC,CAAW,GAGlBD,EAAO,SAAS,IAAIA,IAAS,CAACD,CAAI;AAC3C;AAEa,MAAAI,IAAqB,CAChCC,IAAuC,iBAIpC;AACH,QAAM,CAACC,GAAWC,CAAS,IAAIR,EAAeM,CAAS;AAGnD,MAAAG,GACAC,IAAoC;AAGpC,MAAAH,MAAc,SAASA,MAAc;AAEvC,QADmBE,IAAAF,GACfC;AACF,cAAQA,GAAW;AAAA,QACjB,KAAK;AACK,UAAAE,IAAA;AACR;AAAA,QACF,KAAK;AACK,UAAAA,IAAA;AACR;AAAA,MAAA;AAAA,aAIGH,MAAc,UAAUA,MAAc;AAE/C,QADmBE,IAAAF,GACfC;AACF,cAAQA,GAAW;AAAA,QACjB,KAAK;AACK,UAAAE,IAAA;AACR;AAAA,QACF,KAAK;AACK,UAAAA,IAAA;AACR;AAAA,MAAA;AAAA;AAMa,IAAAD,IAAA;AAGd,SAAA;AAAA,IACL,WAAWA;AAAA,IACX,OAAAC;AAAA,EACF;AACF;"}
|