@bioturing/components 0.38.0 → 0.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/components/base-menu/index.js +3 -3
  2. package/dist/components/cmdk/index.d.ts +2 -2
  3. package/dist/components/combobox/component.js.map +1 -1
  4. package/dist/components/data-table/component.js +7 -7
  5. package/dist/components/data-table/component.js.map +1 -1
  6. package/dist/components/data-table/hooks.d.ts.map +1 -1
  7. package/dist/components/data-table/hooks.js +73 -61
  8. package/dist/components/data-table/hooks.js.map +1 -1
  9. package/dist/components/dropdown-menu/component.d.ts +4 -2
  10. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  11. package/dist/components/dropdown-menu/component.js +153 -154
  12. package/dist/components/dropdown-menu/component.js.map +1 -1
  13. package/dist/components/dropdown-menu/divider.js +6 -6
  14. package/dist/components/dropdown-menu/divider.js.map +1 -1
  15. package/dist/components/dropdown-menu/item.d.ts.map +1 -1
  16. package/dist/components/dropdown-menu/item.js +27 -26
  17. package/dist/components/dropdown-menu/item.js.map +1 -1
  18. package/dist/components/dropdown-menu/style.css +1 -1
  19. package/dist/components/dropdown-menu/types.d.ts +2 -2
  20. package/dist/components/dropdown-menu/types.d.ts.map +1 -1
  21. package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -1
  22. package/dist/components/dropdown-menu/useDropdownMenu.js +72 -68
  23. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  24. package/dist/components/popup-panel/component.d.ts +13 -1
  25. package/dist/components/popup-panel/component.d.ts.map +1 -1
  26. package/dist/components/popup-panel/component.js +102 -95
  27. package/dist/components/popup-panel/component.js.map +1 -1
  28. package/dist/components/toast/function.d.ts +8 -8
  29. package/dist/components/toast/function.d.ts.map +1 -1
  30. package/dist/components/toast/function.js.map +1 -1
  31. package/dist/components/tree/components.d.ts.map +1 -1
  32. package/dist/components/tree/components.js +50 -40
  33. package/dist/components/tree/components.js.map +1 -1
  34. package/dist/components/tree/style.css +1 -1
  35. package/dist/components/tree/types.d.ts +4 -0
  36. package/dist/components/tree/types.d.ts.map +1 -1
  37. package/dist/components/tree/useTreeCommon.d.ts +1 -0
  38. package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
  39. package/dist/components/tree/useTreeCommon.js +21 -19
  40. package/dist/components/tree/useTreeCommon.js.map +1 -1
  41. package/dist/stats.html +1 -1
  42. package/package.json +4 -4
@@ -1,38 +1,37 @@
1
- import { jsx as t, jsxs as D } from "react/jsx-runtime";
2
- import { useCallback as m, useMemo as S } from "react";
3
- import { DropdownMenuItem as k } from "./item.js";
4
- import { DropdownMenuDivider as I } from "./divider.js";
5
- import { Menu as b } from "@base-ui-components/react";
6
- import { Command as L } from "../cmdk/index.js";
1
+ import { jsx as i, jsxs as w } from "react/jsx-runtime";
2
+ import { useCallback as m, useMemo as L } from "react";
3
+ import { DropdownMenuItem as I } from "./item.js";
4
+ import { DropdownMenuDivider as j } from "./divider.js";
5
+ import { Menu as v, Combobox as f } from "@base-ui-components/react";
7
6
  import './style.css';/* empty css */
8
- import { useCls as j } from "../utils/antdUtils.js";
9
- import { reactNodeToString as T } from "../utils/reactToString.js";
7
+ import { useCls as k } from "../utils/antdUtils.js";
8
+ import { reactNodeToString as x } from "../utils/reactToString.js";
10
9
  import { clsx as d } from "../utils/cn.js";
11
- const U = ({
12
- items: f,
13
- inCombobox: u = !1,
10
+ const J = ({
11
+ items: s,
12
+ inCombobox: n = !1,
14
13
  classNames: o = {},
15
- selectedItemKeys: s,
16
- keepOpenOnSelect: h,
17
- showCheckbox: a = !1,
18
- getItemKeywords: g = (p) => [String(p.key), T(p.label)],
19
- onOpenChange: G,
14
+ selectedItemKeys: h,
15
+ keepOpenOnSelect: a,
16
+ showCheckbox: G = !1,
17
+ getItemKeywords: b = (l) => [String(l.key), x(l.label)],
18
+ onOpenChange: g,
20
19
  itemRender: y,
21
20
  itemLabelRender: M
22
21
  }) => {
23
- const p = j(), l = m(
24
- (e, r, i) => e.type === "item" ? /* @__PURE__ */ t(
25
- k,
22
+ const l = k(), p = m(
23
+ (e, r, t) => e.type === "item" ? /* @__PURE__ */ i(
24
+ I,
26
25
  {
27
26
  item: e,
28
- inCombobox: u,
29
- selected: s?.includes(e.key),
27
+ inCombobox: n,
28
+ selected: h?.includes(e.key),
30
29
  afterSelect: () => {
31
- h || G?.(!1);
30
+ a || g?.(!1);
32
31
  },
33
32
  itemRender: y,
34
- showCheckbox: a,
35
- getItemKeywords: g,
33
+ showCheckbox: G,
34
+ getItemKeywords: b,
36
35
  itemLabelRender: M,
37
36
  classNames: {
38
37
  item: o.item,
@@ -40,85 +39,90 @@ const U = ({
40
39
  itemSuffix: o.itemSuffix
41
40
  }
42
41
  },
43
- r + "-" + i
44
- ) : e.type === "divider" ? /* @__PURE__ */ t(
45
- I,
42
+ r + "-" + t
43
+ ) : e.type === "divider" ? /* @__PURE__ */ i(
44
+ j,
46
45
  {
47
- inCombobox: u,
46
+ inCombobox: n,
48
47
  className: o?.divider
49
48
  },
50
- r + "-" + i
49
+ r + "-" + t
51
50
  ) : null,
52
51
  [
53
52
  o,
54
53
  y,
55
- G,
56
- u,
57
- h,
58
- s,
59
- a,
60
54
  g,
55
+ n,
56
+ a,
57
+ h,
58
+ G,
59
+ b,
61
60
  M
62
61
  ]
63
- ), v = m(
64
- (e, r) => /* @__PURE__ */ D(
65
- b.Group,
62
+ ), D = m(
63
+ (e, r) => /* @__PURE__ */ w(
64
+ v.Group,
66
65
  {
67
- className: d(p("dropdown-menu-group"), o?.group),
66
+ className: d(l("dropdown-menu-group"), o?.group),
68
67
  children: [
69
- e.label && /* @__PURE__ */ t(
70
- b.GroupLabel,
68
+ e.label && /* @__PURE__ */ i(
69
+ v.GroupLabel,
71
70
  {
72
71
  className: d(
73
- p("dropdown-menu-header"),
72
+ l("dropdown-menu-header"),
74
73
  o?.groupLabel
75
74
  ),
76
- children: /* @__PURE__ */ t("span", { children: e.label })
75
+ children: /* @__PURE__ */ i("span", { children: e.label })
77
76
  }
78
77
  ),
79
- e.items.map((i, n) => l(i, r, n))
78
+ e.items.map((t, u) => p(t, r, u))
80
79
  ]
81
80
  },
82
81
  "group" + r
83
82
  ),
84
- [p, o, l]
85
- ), w = m(
86
- (e, r) => e.label ? /* @__PURE__ */ t(
87
- L.Group,
83
+ [l, o, p]
84
+ ), S = m(
85
+ (e, r) => e.label ? /* @__PURE__ */ w(
86
+ f.Group,
88
87
  {
89
- className: d(p("dropdown-menu-group"), o?.group),
90
- heading: /* @__PURE__ */ t(
91
- "div",
92
- {
93
- className: d(
94
- p("dropdown-menu-header"),
95
- o?.groupLabel
96
- ),
97
- children: /* @__PURE__ */ t("span", { children: e.label })
98
- }
99
- ),
100
- children: e.items.map((i, n) => l(i, r, n))
88
+ className: d(l("dropdown-menu-group"), o?.group),
89
+ items: e.items,
90
+ children: [
91
+ /* @__PURE__ */ i(
92
+ f.GroupLabel,
93
+ {
94
+ className: d(
95
+ l("dropdown-menu-header"),
96
+ o?.groupLabel
97
+ ),
98
+ children: /* @__PURE__ */ i("span", { children: e.label })
99
+ }
100
+ ),
101
+ /* @__PURE__ */ i(f.Collection, { children: (t, u) => p(t, r, u) })
102
+ ]
101
103
  },
102
104
  "group" + r
103
- ) : e.items.map((i, n) => l(i, r, n)),
104
- [p, o, l]
105
+ ) : e.items.map((t, u) => p(t, r, u)),
106
+ [l, o, p]
105
107
  );
106
108
  return {
107
- itemGroups: S(
108
- () => f.reduce((e, r) => (e.length === 0 && r.type !== "header" && e.push({
109
+ itemGroups: L(
110
+ () => s.reduce((e, r) => (e.length === 0 && r.type !== "header" && e.push({
109
111
  label: null,
110
112
  items: []
111
113
  }), r.type === "header" ? e.push({
112
114
  label: r.title,
113
115
  items: []
114
- }) : (r.type === "item" || r.type === "divider") && e.length > 0 && e[e.length - 1].items.push(r), e), []),
115
- [f]
116
+ }) : (r.type === "item" || r.type === "divider") && e.length > 0 && e[e.length - 1].items.push({
117
+ ...r
118
+ }), e), []),
119
+ [s]
116
120
  ),
117
- renderMenuItem: l,
118
- renderGroup: u ? w : v
121
+ renderMenuItem: p,
122
+ renderGroup: n ? S : D
119
123
  };
120
124
  };
121
125
  export {
122
- U as useDropdownMenu
126
+ J as useDropdownMenu
123
127
  };
124
128
  //# sourceMappingURL=useDropdownMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDropdownMenu.js","sources":["../../../src/components/dropdown-menu/useDropdownMenu.tsx"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { DropdownMenuItemType, DropdownMenuGroup } from \"./types\";\nimport { DropdownMenuItem } from \"./item\";\nimport { DropdownMenuDivider } from \"./divider\";\nimport { reactNodeToString, clsx, useCls } from \"../utils\";\nimport { Menu } from \"@base-ui-components/react\";\nimport { Command } from \"../cmdk\";\n\nimport \"./style.css\";\n\nexport interface UseDropdownMenuProps {\n /**\n * Callback function to handle the open state change of the dropdown menu.\n */\n onOpenChange?: (open: boolean) => void;\n items: DropdownMenuItemType[];\n inCombobox?: boolean;\n classNames?: {\n item?: string;\n itemIcon?: string;\n itemSuffix?: string;\n group?: string;\n groupLabel?: string;\n divider?: string;\n };\n /**\n * Custom render function for menu items\n */\n itemRender?: (\n item: DropdownMenuItemType,\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /**\n * Custom render function for menu item labels\n */\n itemLabelRender?: (\n item: DropdownMenuItemType & { type: \"item\" },\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /**\n * Whether to keep the dropdown open when an item is selected\n * @default false\n */\n keepOpenOnSelect?: boolean;\n /**\n * Control the highlighted state of the menu item\n */\n highlightedItemKey?: React.Key;\n /**\n * Control the selected state of the menu item\n */\n selectedItemKeys?: React.Key[];\n /**\n * Whether to show checkbox\n * @default false\n */\n showCheckbox?: boolean;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (item) => [String(item.key), reactNodeToString(item.label)]\n */\n getItemKeywords?: (item: DropdownMenuItemType & { type: \"item\" }) => string[];\n}\n\nexport const useDropdownMenu = ({\n items,\n inCombobox = false,\n classNames = {},\n selectedItemKeys,\n keepOpenOnSelect,\n showCheckbox = false,\n getItemKeywords = (item) => [String(item.key), reactNodeToString(item.label)],\n onOpenChange,\n itemRender,\n itemLabelRender,\n}: UseDropdownMenuProps) => {\n const cls = useCls();\n const renderMenuItem = useCallback(\n (item: DropdownMenuItemType, i: number, j: number) => {\n if (item.type === \"item\") {\n return (\n <DropdownMenuItem\n key={i + \"-\" + j}\n item={item}\n inCombobox={inCombobox}\n selected={selectedItemKeys?.includes(item.key)}\n afterSelect={() => {\n if (!keepOpenOnSelect) onOpenChange?.(false);\n }}\n itemRender={itemRender}\n showCheckbox={showCheckbox}\n getItemKeywords={getItemKeywords}\n itemLabelRender={itemLabelRender}\n classNames={{\n item: classNames.item,\n itemIcon: classNames.itemIcon,\n itemSuffix: classNames.itemSuffix,\n }}\n />\n );\n } else if (item.type === \"divider\") {\n return (\n <DropdownMenuDivider\n key={i + \"-\" + j}\n inCombobox={inCombobox}\n className={classNames?.divider}\n />\n );\n }\n return null;\n },\n [\n classNames,\n itemRender,\n onOpenChange,\n inCombobox,\n keepOpenOnSelect,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n ]\n );\n\n const renderGroup = useCallback(\n (group: DropdownMenuGroup, index: number) => (\n <Menu.Group\n key={\"group\" + index}\n className={clsx(cls(\"dropdown-menu-group\"), classNames?.group)}\n >\n {group.label && (\n <Menu.GroupLabel\n className={clsx(\n cls(\"dropdown-menu-header\"),\n classNames?.groupLabel\n )}\n >\n <span>{group.label}</span>\n </Menu.GroupLabel>\n )}\n {group.items.map((item, j) => renderMenuItem(item, index, j))}\n </Menu.Group>\n ),\n [cls, classNames, renderMenuItem]\n );\n\n const renderGroupCombobox = useCallback(\n (group: DropdownMenuGroup, index: number) =>\n group.label ? (\n <Command.Group\n key={\"group\" + index}\n className={clsx(cls(\"dropdown-menu-group\"), classNames?.group)}\n heading={\n <div\n className={clsx(\n cls(\"dropdown-menu-header\"),\n classNames?.groupLabel\n )}\n >\n <span>{group.label}</span>\n </div>\n }\n >\n {group.items.map((item, j) => renderMenuItem(item, index, j))}\n </Command.Group>\n ) : (\n group.items.map((item, j) => renderMenuItem(item, index, j))\n ),\n [cls, classNames, renderMenuItem]\n );\n\n const itemGroups = useMemo(\n () =>\n items.reduce<DropdownMenuGroup[]>((acc, current) => {\n // If no groups exist yet and current item is not a header, create default group\n if (acc.length === 0 && current.type !== \"header\") {\n acc.push({\n label: null,\n items: [],\n });\n }\n\n // If it's a header, create a new group\n if (current.type === \"header\") {\n acc.push({\n label: current.title,\n items: [],\n });\n }\n // If it's an item and we have at least one group, add it to the last group's items\n else if (\n (current.type === \"item\" || current.type === \"divider\") &&\n acc.length > 0\n ) {\n acc[acc.length - 1].items.push(current);\n }\n // Skip dividers\n return acc;\n }, []),\n [items]\n );\n return {\n itemGroups,\n renderMenuItem,\n renderGroup: inCombobox ? renderGroupCombobox : renderGroup,\n };\n};\n"],"names":["useDropdownMenu","items","inCombobox","classNames","selectedItemKeys","keepOpenOnSelect","showCheckbox","getItemKeywords","item","reactNodeToString","onOpenChange","itemRender","itemLabelRender","cls","useCls","renderMenuItem","useCallback","i","j","jsx","DropdownMenuItem","DropdownMenuDivider","renderGroup","group","index","jsxs","Menu","clsx","renderGroupCombobox","Command","useMemo","acc","current"],"mappings":"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"}
1
+ {"version":3,"file":"useDropdownMenu.js","sources":["../../../src/components/dropdown-menu/useDropdownMenu.tsx"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { DropdownMenuItemType, DropdownMenuGroup } from \"./types\";\nimport { DropdownMenuItem } from \"./item\";\nimport { DropdownMenuDivider } from \"./divider\";\nimport { reactNodeToString, clsx, useCls } from \"../utils\";\nimport { Combobox, Menu } from \"@base-ui-components/react\";\n\nimport \"./style.css\";\n\nexport interface UseDropdownMenuProps {\n /**\n * Callback function to handle the open state change of the dropdown menu.\n */\n onOpenChange?: (open: boolean) => void;\n items: DropdownMenuItemType[];\n inCombobox?: boolean;\n classNames?: {\n item?: string;\n itemIcon?: string;\n itemSuffix?: string;\n group?: string;\n groupLabel?: string;\n divider?: string;\n };\n /**\n * Custom render function for menu items\n */\n itemRender?: (\n item: DropdownMenuItemType,\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /**\n * Custom render function for menu item labels\n */\n itemLabelRender?: (\n item: DropdownMenuItemType & { type: \"item\" },\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /**\n * Whether to keep the dropdown open when an item is selected\n * @default false\n */\n keepOpenOnSelect?: boolean;\n /**\n * Control the highlighted state of the menu item\n */\n highlightedItemKey?: React.Key;\n /**\n * Control the selected state of the menu item\n */\n selectedItemKeys?: React.Key[];\n /**\n * Whether to show checkbox\n * @default false\n */\n showCheckbox?: boolean;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (item) => [String(item.key), reactNodeToString(item.label)]\n */\n getItemKeywords?: (item: DropdownMenuItemType & { type: \"item\" }) => string[];\n}\n\nexport const useDropdownMenu = ({\n items,\n inCombobox = false,\n classNames = {},\n selectedItemKeys,\n keepOpenOnSelect,\n showCheckbox = false,\n getItemKeywords = (item) => [String(item.key), reactNodeToString(item.label)],\n onOpenChange,\n itemRender,\n itemLabelRender,\n}: UseDropdownMenuProps) => {\n const cls = useCls();\n const renderMenuItem = useCallback(\n (item: DropdownMenuItemType, i: number, j: number) => {\n if (item.type === \"item\") {\n return (\n <DropdownMenuItem\n key={i + \"-\" + j}\n item={item}\n inCombobox={inCombobox}\n selected={selectedItemKeys?.includes(item.key)}\n afterSelect={() => {\n if (!keepOpenOnSelect) onOpenChange?.(false);\n }}\n itemRender={itemRender}\n showCheckbox={showCheckbox}\n getItemKeywords={getItemKeywords}\n itemLabelRender={itemLabelRender}\n classNames={{\n item: classNames.item,\n itemIcon: classNames.itemIcon,\n itemSuffix: classNames.itemSuffix,\n }}\n />\n );\n } else if (item.type === \"divider\") {\n return (\n <DropdownMenuDivider\n key={i + \"-\" + j}\n inCombobox={inCombobox}\n className={classNames?.divider}\n />\n );\n }\n return null;\n },\n [\n classNames,\n itemRender,\n onOpenChange,\n inCombobox,\n keepOpenOnSelect,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n ]\n );\n\n const renderGroup = useCallback(\n (group: DropdownMenuGroup, index: number) => (\n <Menu.Group\n key={\"group\" + index}\n className={clsx(cls(\"dropdown-menu-group\"), classNames?.group)}\n >\n {group.label && (\n <Menu.GroupLabel\n className={clsx(\n cls(\"dropdown-menu-header\"),\n classNames?.groupLabel\n )}\n >\n <span>{group.label}</span>\n </Menu.GroupLabel>\n )}\n {group.items.map((item, j) => renderMenuItem(item, index, j))}\n </Menu.Group>\n ),\n [cls, classNames, renderMenuItem]\n );\n\n const renderGroupCombobox = useCallback(\n (group: DropdownMenuGroup, index: number) =>\n group.label ? (\n <Combobox.Group\n key={\"group\" + index}\n className={clsx(cls(\"dropdown-menu-group\"), classNames?.group)}\n items={group.items}\n >\n <Combobox.GroupLabel\n className={clsx(\n cls(\"dropdown-menu-header\"),\n classNames?.groupLabel\n )}\n >\n <span>{group.label}</span>\n </Combobox.GroupLabel>\n <Combobox.Collection>\n {(item, i) => renderMenuItem(item, index, i)}\n </Combobox.Collection>\n </Combobox.Group>\n ) : (\n group.items.map((item, j) => renderMenuItem(item, index, j))\n ),\n [cls, classNames, renderMenuItem]\n );\n\n const itemGroups = useMemo(\n () =>\n items.reduce<DropdownMenuGroup[]>((acc, current) => {\n // If no groups exist yet and current item is not a header, create default group\n if (acc.length === 0 && current.type !== \"header\") {\n acc.push({\n label: null,\n items: [],\n });\n }\n\n // If it's a header, create a new group\n if (current.type === \"header\") {\n acc.push({\n label: current.title,\n items: [],\n });\n }\n // If it's an item and we have at least one group, add it to the last group's items\n else if (\n (current.type === \"item\" || current.type === \"divider\") &&\n acc.length > 0\n ) {\n acc[acc.length - 1].items.push({\n ...current,\n });\n }\n // Skip dividers\n return acc;\n }, []),\n [items]\n );\n return {\n itemGroups,\n renderMenuItem,\n renderGroup: inCombobox ? renderGroupCombobox : renderGroup,\n };\n};\n"],"names":["useDropdownMenu","items","inCombobox","classNames","selectedItemKeys","keepOpenOnSelect","showCheckbox","getItemKeywords","item","reactNodeToString","onOpenChange","itemRender","itemLabelRender","cls","useCls","renderMenuItem","useCallback","i","j","jsx","DropdownMenuItem","DropdownMenuDivider","renderGroup","group","index","jsxs","Menu","clsx","renderGroupCombobox","Combobox","useMemo","acc","current"],"mappings":"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"}
@@ -95,6 +95,18 @@ export interface PopupPanelProps extends Omit<React.ComponentPropsWithRef<"div">
95
95
  * Callback function when the placement changes
96
96
  */
97
97
  onPlacementChange?: (placement: PopoverProps["placement"]) => void;
98
+ /**
99
+ * Props to pass to the positioner
100
+ */
101
+ positionerProps?: Popover.Positioner.Props;
102
+ /**
103
+ * Props to pass to the trigger
104
+ */
105
+ triggerProps?: Popover.Trigger.Props;
106
+ /**
107
+ * Props to pass to the portal
108
+ */
109
+ portalProps?: Popover.Portal.Props;
98
110
  }
99
- export declare const PopupPanel: ({ children, placement, openOnHover, open: outsideOpen, onOpenChange: outsideOnOpenChange, content, title, trigger, className, anchor, beforeCloseButton, afterCloseButton, afterTitle, size, footer, defaultOpen, resizable, draggable, maintainAspectRatio, classNames, modal, closeOnClickOutside, onPlacementChange, ...rest }: PopupPanelProps) => import("react/jsx-runtime").JSX.Element;
111
+ export declare const PopupPanel: ({ children, placement, openOnHover, open: outsideOpen, onOpenChange: outsideOnOpenChange, content, title, trigger, className, anchor, beforeCloseButton, afterCloseButton, afterTitle, size, footer, defaultOpen, resizable, draggable, maintainAspectRatio, classNames, modal, closeOnClickOutside, onPlacementChange, positionerProps, triggerProps, portalProps, ...rest }: PopupPanelProps) => import("react/jsx-runtime").JSX.Element;
100
112
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAW5D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMpD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,aAAa,CAAC;AAGrB,MAAM,WAAW,eACf,SAAQ,IAAI,CACR,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAClC,OAAO,GAAG,SAAS,GAAG,UAAU,CACjC,EACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;IACtC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClE,2DAA2D;IAC3D,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClD,gDAAgD;IAChD,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,8CAA8C;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACpC,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,yCAAyC;IACzC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EACH,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;CACpE;AAED,eAAO,MAAM,UAAU,GAAI,mUAyBxB,eAAe,4CA+MjB,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/popup-panel/component.tsx"],"names":[],"mappings":"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"}
@@ -1,86 +1,90 @@
1
1
  "use client";
2
2
  import { jsx as e, jsxs as c } from "react/jsx-runtime";
3
3
  import { Popover as a } from "@base-ui-components/react/popover";
4
- import { X as Y } from "@bioturing/assets";
5
- import { useMemo as Z, useRef as S, useState as A, useEffect as _, useCallback as B } from "react";
6
- import { Stack as ee } from "../stack/index.js";
7
- import { PopupPanelSize as re } from "./constants.js";
4
+ import { mergeProps as S } from "@base-ui-components/react";
5
+ import { X as re } from "@bioturing/assets";
6
+ import { useMemo as te, useRef as A, useState as x, useEffect as ne, useCallback as oe } from "react";
7
+ import { Stack as ie } from "../stack/index.js";
8
+ import { PopupPanelSize as ae } from "./constants.js";
8
9
  import './style.css';/* empty css */
9
- import { anchorToResizeHandles as te } from "./utils.js";
10
- import { parseAntdPlacement as ne, buildAntdPlacement as oe } from "../utils/placement.js";
11
- import { useDraggable as ie } from "../hooks/useDraggable.js";
12
- import { Resizable as ae } from "../resizable/component.js";
13
- import { useControlledState as pe } from "../hooks/useControlledState.js";
14
- import { useCls as le } from "../utils/antdUtils.js";
15
- import { useTheme as se } from "../theme-provider/context/themeStore.js";
10
+ import { anchorToResizeHandles as pe } from "./utils.js";
11
+ import { parseAntdPlacement as se, buildAntdPlacement as le } from "../utils/placement.js";
12
+ import { useDraggable as ce } from "../hooks/useDraggable.js";
13
+ import { Resizable as ue } from "../resizable/component.js";
14
+ import { useControlledState as de } from "../hooks/useControlledState.js";
15
+ import { useCls as me } from "../utils/antdUtils.js";
16
+ import { useTheme as fe } from "../theme-provider/context/themeStore.js";
16
17
  import { clsx as p } from "../utils/cn.js";
17
- import { IconButton as ce } from "../icon-button/component.js";
18
- const Ae = ({
19
- children: x,
20
- placement: z,
21
- openOnHover: H = !1,
22
- open: k,
23
- onOpenChange: E,
24
- content: I,
18
+ import { IconButton as ge } from "../icon-button/component.js";
19
+ const Ie = ({
20
+ children: z,
21
+ placement: H,
22
+ openOnHover: k = !1,
23
+ open: E,
24
+ onOpenChange: I,
25
+ content: K,
25
26
  title: h,
26
- trigger: K = "click",
27
- className: T,
28
- anchor: j,
27
+ trigger: T = "click",
28
+ className: j,
29
+ anchor: M,
29
30
  beforeCloseButton: N,
30
31
  afterCloseButton: w,
31
32
  afterTitle: b,
32
33
  size: P = "medium",
33
34
  footer: u,
34
- defaultOpen: M = !1,
35
+ defaultOpen: D = !1,
35
36
  resizable: y = !1,
36
- draggable: D = !1,
37
- maintainAspectRatio: F = !1,
37
+ draggable: F = !1,
38
+ maintainAspectRatio: U = !1,
38
39
  classNames: n,
39
- modal: U = !1,
40
- closeOnClickOutside: V = !0,
40
+ modal: V = !1,
41
+ closeOnClickOutside: X = !0,
41
42
  onPlacementChange: v,
42
- ...X
43
+ positionerProps: $ = {},
44
+ triggerProps: q = {},
45
+ portalProps: G = {},
46
+ ...J
43
47
  }) => {
44
- const [R, C] = pe(
45
- k,
48
+ const [R, C] = de(
46
49
  E,
47
- M
50
+ I,
51
+ D
48
52
  // Always provide a default value to prevent undefined
49
- ), r = le(), { className: $ } = se(), d = ne(z), O = Z(() => /* @__PURE__ */ e(Y, { size: 16 }), []), f = S(d.side), m = S(d.align), [q, G] = A(0), [s, J] = A(
53
+ ), r = me(), { className: L } = fe(), d = se(H), O = te(() => /* @__PURE__ */ e(re, { size: 16 }), []), m = A(d.side), f = A(d.align), [Q, W] = x(0), [l, Y] = x(
50
54
  null
51
55
  );
52
- _(() => {
53
- if (!s || !R) return;
54
- const i = new MutationObserver((l) => {
56
+ ne(() => {
57
+ if (!l || !R) return;
58
+ const i = new MutationObserver((s) => {
55
59
  let g = !1;
56
- if (l.forEach((t) => {
60
+ if (s.forEach((t) => {
57
61
  if (t.type === "attributes" && t.attributeName === "data-side") {
58
- const o = s.getAttribute(t.attributeName);
59
- o && o !== f.current && (f.current = o, g = !0);
62
+ const o = l.getAttribute(t.attributeName);
63
+ o && o !== m.current && (m.current = o, g = !0);
60
64
  }
61
65
  if (t.type === "attributes" && t.attributeName === "data-align") {
62
- const o = s.getAttribute(t.attributeName);
63
- o && o !== m.current && (m.current = o, g = !0);
66
+ const o = l.getAttribute(t.attributeName);
67
+ o && o !== f.current && (f.current = o, g = !0);
64
68
  }
65
69
  }), g) {
66
- const t = oe({
67
- side: f.current,
68
- align: m.current
70
+ const t = le({
71
+ side: m.current,
72
+ align: f.current
69
73
  });
70
- G((o) => o + 1), v && v(t);
74
+ W((o) => o + 1), v && v(t);
71
75
  }
72
76
  });
73
- return i.observe(s, {
77
+ return i.observe(l, {
74
78
  attributes: !0,
75
79
  attributeFilter: ["data-side", "data-align"],
76
80
  attributeOldValue: !0
77
81
  }), () => {
78
82
  i.disconnect();
79
83
  };
80
- }, [v, R, s]);
81
- const L = B(() => /* @__PURE__ */ c("div", { className: p(r("popup-panel-header"), n?.header), children: [
84
+ }, [v, R, l]);
85
+ const Z = oe(() => /* @__PURE__ */ c("div", { className: p(r("popup-panel-header"), n?.header), children: [
82
86
  /* @__PURE__ */ c(
83
- ee,
87
+ ie,
84
88
  {
85
89
  align: "center",
86
90
  gap: 8,
@@ -97,7 +101,7 @@ const Ae = ({
97
101
  /* @__PURE__ */ e(
98
102
  a.Close,
99
103
  {
100
- render: /* @__PURE__ */ e(ce, { children: O })
104
+ render: /* @__PURE__ */ e(ge, { children: O })
101
105
  }
102
106
  ),
103
107
  w
@@ -115,75 +119,78 @@ const Ae = ({
115
119
  n?.title,
116
120
  O,
117
121
  h
118
- ]), { ref: Q } = ie(D), W = /* @__PURE__ */ c(
122
+ ]), { ref: _ } = ce(F), B = /* @__PURE__ */ c(
119
123
  a.Popup,
120
124
  {
121
125
  className: p(
122
126
  r("popup-panel"),
123
127
  r(`popup-panel-size-${P}`),
124
- T,
128
+ j,
125
129
  n?.popup
126
130
  ),
127
- ref: Q,
131
+ ref: _,
128
132
  children: [
129
- h && L(),
130
- /* @__PURE__ */ e("div", { className: p(r("popup-panel-content"), n?.content), children: /* @__PURE__ */ e("div", { className: r("popup-panel-content-inner"), children: I }) }),
133
+ h && Z(),
134
+ /* @__PURE__ */ e("div", { className: p(r("popup-panel-content"), n?.content), children: /* @__PURE__ */ e("div", { className: r("popup-panel-content-inner"), children: K }) }),
131
135
  u && /* @__PURE__ */ e("div", { className: p(r("popup-panel-footer"), n?.footer), children: typeof u == "function" ? u({ close: () => C(!1) }) : u })
132
136
  ]
133
137
  }
134
- );
138
+ ), ee = {
139
+ ref: Y,
140
+ className: p(r("popup-panel-root"), L, n?.root),
141
+ side: d.side,
142
+ align: d.align,
143
+ sideOffset: 4,
144
+ anchor: M,
145
+ style: {
146
+ "--size-width": P ? ae[P] : void 0
147
+ },
148
+ render: ({ children: i, onDragEnd: s, onDragStart: g, ...t }) => y ? /* @__PURE__ */ e(
149
+ ue,
150
+ {
151
+ resizable: y,
152
+ resetKey: Q,
153
+ maintainAspectRatio: U,
154
+ classNames: {
155
+ resizeHandle: n?.resizeHandle
156
+ },
157
+ handles: pe(
158
+ m.current,
159
+ f.current
160
+ ),
161
+ ...t,
162
+ children: i
163
+ }
164
+ ) : /* @__PURE__ */ e("div", { ...t, children: i })
165
+ };
135
166
  return /* @__PURE__ */ c(
136
167
  a.Root,
137
168
  {
138
- openOnHover: K === "hover" ? !0 : H,
139
169
  open: R,
140
- onOpenChange: (i, l) => {
141
- (l.reason === "outside-press" || l.reason === "focus-out") && !V || C(i, l);
170
+ onOpenChange: (i, s) => {
171
+ (s.reason === "outside-press" || s.reason === "focus-out") && !X || C(i, s);
142
172
  },
143
- modal: U,
144
- ...X,
173
+ modal: V,
174
+ ...J,
145
175
  children: [
146
176
  /* @__PURE__ */ e(
147
177
  a.Trigger,
148
178
  {
149
- render: x,
150
- className: p(r("popup-panel-trigger"), n?.trigger)
179
+ ...S(
180
+ {
181
+ render: z,
182
+ className: p(r("popup-panel-trigger"), n?.trigger),
183
+ openOnHover: T === "hover" ? !0 : k
184
+ },
185
+ q
186
+ )
151
187
  }
152
188
  ),
153
- /* @__PURE__ */ e(a.Portal, { children: /* @__PURE__ */ e(
189
+ /* @__PURE__ */ e(a.Portal, { ...G, children: /* @__PURE__ */ e(
154
190
  a.Positioner,
155
191
  {
156
- ref: J,
157
- className: p(
158
- r("popup-panel-root"),
159
- $,
160
- n?.root
161
- ),
162
- side: d.side,
163
- align: d.align,
164
- sideOffset: 4,
165
- anchor: j,
166
- style: {
167
- "--size-width": P ? re[P] : void 0
168
- },
169
- render: ({ children: i, onDragEnd: l, onDragStart: g, ...t }) => y ? /* @__PURE__ */ e(
170
- ae,
171
- {
172
- resizable: y,
173
- resetKey: q,
174
- maintainAspectRatio: F,
175
- classNames: {
176
- resizeHandle: n?.resizeHandle
177
- },
178
- handles: te(
179
- f.current,
180
- m.current
181
- ),
182
- ...t,
183
- children: i
184
- }
185
- ) : /* @__PURE__ */ e("div", { ...t, children: i }),
186
- children: W
192
+ ...S(ee, $),
193
+ children: B
187
194
  }
188
195
  ) })
189
196
  ]
@@ -191,6 +198,6 @@ const Ae = ({
191
198
  );
192
199
  };
193
200
  export {
194
- Ae as PopupPanel
201
+ Ie as PopupPanel
195
202
  };
196
203
  //# sourceMappingURL=component.js.map