@bioturing/components 0.39.1 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/base.d.ts +35 -1
  2. package/dist/base.d.ts.map +1 -1
  3. package/dist/base.js +47 -1
  4. package/dist/base.js.map +1 -1
  5. package/dist/components/alert/component.d.ts +61 -0
  6. package/dist/components/alert/component.d.ts.map +1 -0
  7. package/dist/components/alert/component.js +76 -0
  8. package/dist/components/alert/component.js.map +1 -0
  9. package/dist/components/alert/index.d.ts +2 -0
  10. package/dist/components/alert/index.d.ts.map +1 -0
  11. package/dist/components/alert/style.css +1 -0
  12. package/dist/components/base-menu/component.d.ts +1 -1
  13. package/dist/components/base-menu/index.d.ts +1 -1
  14. package/dist/components/base-menu/index.d.ts.map +1 -1
  15. package/dist/components/base-menu/item.d.ts +1 -1
  16. package/dist/components/base-menu/item.d.ts.map +1 -1
  17. package/dist/components/base-menu/item.js +1 -1
  18. package/dist/components/base-menu/item.js.map +1 -1
  19. package/dist/components/button/component.d.ts +1 -1
  20. package/dist/components/button/component.d.ts.map +1 -1
  21. package/dist/components/button/component.js +18 -17
  22. package/dist/components/button/component.js.map +1 -1
  23. package/dist/components/button/style.css +1 -1
  24. package/dist/components/checkbox/component.d.ts.map +1 -1
  25. package/dist/components/choice-list/component.d.ts +8 -4
  26. package/dist/components/choice-list/component.d.ts.map +1 -1
  27. package/dist/components/choice-list/component.js +89 -94
  28. package/dist/components/choice-list/component.js.map +1 -1
  29. package/dist/components/color-select/component.js +6 -6
  30. package/dist/components/combobox/component.js +1 -1
  31. package/dist/components/combobox/component.js.map +1 -1
  32. package/dist/components/command-palette/component.d.ts +6 -0
  33. package/dist/components/command-palette/component.d.ts.map +1 -1
  34. package/dist/components/command-palette/component.js +182 -63
  35. package/dist/components/command-palette/component.js.map +1 -1
  36. package/dist/components/command-palette/index.d.ts +3 -1
  37. package/dist/components/command-palette/index.d.ts.map +1 -1
  38. package/dist/components/command-palette/style.css +1 -1
  39. package/dist/components/drag-drop/draggable.js +1 -1
  40. package/dist/components/drag-drop/draggable.js.map +1 -1
  41. package/dist/components/drag-drop/droppable.js +1 -1
  42. package/dist/components/drag-drop/droppable.js.map +1 -1
  43. package/dist/components/drag-drop/types.d.ts +1 -1
  44. package/dist/components/drag-drop/types.d.ts.map +1 -1
  45. package/dist/components/drag-drop/value.js +13 -13
  46. package/dist/components/dropdown-menu/component.d.ts +1 -1
  47. package/dist/components/dropdown-menu/component.d.ts.map +1 -1
  48. package/dist/components/dropdown-menu/component.js +162 -135
  49. package/dist/components/dropdown-menu/component.js.map +1 -1
  50. package/dist/components/dropdown-menu/divider.js +2 -2
  51. package/dist/components/dropdown-menu/divider.js.map +1 -1
  52. package/dist/components/dropdown-menu/item.js +2 -2
  53. package/dist/components/dropdown-menu/item.js.map +1 -1
  54. package/dist/components/dropdown-menu/style.css +1 -1
  55. package/dist/components/dropdown-menu/useDropdownMenu.js +1 -1
  56. package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
  57. package/dist/components/hooks/antd.d.ts.map +1 -1
  58. package/dist/components/hooks/index.d.ts +1 -0
  59. package/dist/components/hooks/index.d.ts.map +1 -1
  60. package/dist/components/hooks/useBaseUIPlacement.d.ts +64 -0
  61. package/dist/components/hooks/useBaseUIPlacement.d.ts.map +1 -0
  62. package/dist/components/hooks/useBaseUIPlacement.js +61 -0
  63. package/dist/components/hooks/useBaseUIPlacement.js.map +1 -0
  64. package/dist/components/hooks/useControlledState.d.ts +1 -0
  65. package/dist/components/hooks/useControlledState.d.ts.map +1 -1
  66. package/dist/components/hooks/useControlledState.js +16 -16
  67. package/dist/components/hooks/useControlledState.js.map +1 -1
  68. package/dist/components/hooks/useTransitionStatus.js +2 -2
  69. package/dist/components/hooks/useTransitionStatus.js.map +1 -1
  70. package/dist/components/icon-button/style.css +1 -1
  71. package/dist/components/index.d.ts +3 -2
  72. package/dist/components/index.d.ts.map +1 -1
  73. package/dist/components/nav/index.d.ts.map +1 -1
  74. package/dist/components/nav/item.d.ts +1 -1
  75. package/dist/components/nav/item.d.ts.map +1 -1
  76. package/dist/components/nav/item.js +1 -1
  77. package/dist/components/nav/item.js.map +1 -1
  78. package/dist/components/popup-panel/component.d.ts +4 -4
  79. package/dist/components/popup-panel/component.d.ts.map +1 -1
  80. package/dist/components/popup-panel/component.js +142 -152
  81. package/dist/components/popup-panel/component.js.map +1 -1
  82. package/dist/components/resizable/component.js +1 -1
  83. package/dist/components/resizable/component.js.map +1 -1
  84. package/dist/components/scroll-area/component.d.ts +1 -1
  85. package/dist/components/scroll-area/component.d.ts.map +1 -1
  86. package/dist/components/scroll-area/component.js +1 -1
  87. package/dist/components/scroll-area/component.js.map +1 -1
  88. package/dist/components/select/component.d.ts.map +1 -1
  89. package/dist/components/select/component.js +153 -138
  90. package/dist/components/select/component.js.map +1 -1
  91. package/dist/components/select/item.js +13 -13
  92. package/dist/components/select-trigger/component.js +19 -19
  93. package/dist/components/splitter/splitter.d.ts.map +1 -1
  94. package/dist/components/splitter/splitter.js +53 -51
  95. package/dist/components/splitter/splitter.js.map +1 -1
  96. package/dist/components/stack/StackChild.js +2 -2
  97. package/dist/components/stack/StackChild.js.map +1 -1
  98. package/dist/components/toast/component.d.ts +1 -1
  99. package/dist/components/toast/component.d.ts.map +1 -1
  100. package/dist/components/toast/component.js +1 -1
  101. package/dist/components/toast/component.js.map +1 -1
  102. package/dist/components/toast/function.d.ts +2 -2
  103. package/dist/components/toast/function.d.ts.map +1 -1
  104. package/dist/components/toast/function.js +1 -1
  105. package/dist/components/toast/function.js.map +1 -1
  106. package/dist/components/transition/component.d.ts +1 -1
  107. package/dist/components/transition/component.d.ts.map +1 -1
  108. package/dist/components/transition/component.js +2 -2
  109. package/dist/components/transition/component.js.map +1 -1
  110. package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
  111. package/dist/components/utils/WithRenderProp.d.ts +1 -1
  112. package/dist/components/utils/WithRenderProp.d.ts.map +1 -1
  113. package/dist/components/utils/WithRenderProp.js +1 -1
  114. package/dist/components/utils/WithRenderProp.js.map +1 -1
  115. package/dist/components/utils/index.d.ts +1 -0
  116. package/dist/components/utils/index.d.ts.map +1 -1
  117. package/dist/components/utils/renderProp.d.ts +24 -0
  118. package/dist/components/utils/renderProp.d.ts.map +1 -0
  119. package/dist/components/utils/renderProp.js +19 -0
  120. package/dist/components/utils/renderProp.js.map +1 -0
  121. package/dist/components/vertical-collapsible-panel/component.js +1 -1
  122. package/dist/components/vertical-collapsible-panel/component.js.map +1 -1
  123. package/dist/index.js +271 -266
  124. package/dist/index.js.map +1 -1
  125. package/dist/metadata.d.ts +9 -0
  126. package/dist/metadata.d.ts.map +1 -1
  127. package/dist/metadata.js +29 -14
  128. package/dist/metadata.js.map +1 -1
  129. package/dist/stats.html +1 -1
  130. package/dist/tailwind.css +125 -1
  131. package/package.json +4 -4
  132. package/dist/components/cmdk/command-score.d.ts +0 -2
  133. package/dist/components/cmdk/command-score.d.ts.map +0 -1
  134. package/dist/components/cmdk/command-score.js +0 -48
  135. package/dist/components/cmdk/command-score.js.map +0 -1
  136. package/dist/components/cmdk/index.d.ts +0 -440
  137. package/dist/components/cmdk/index.d.ts.map +0 -1
  138. package/dist/components/cmdk/index.js +0 -595
  139. package/dist/components/cmdk/index.js.map +0 -1
@@ -1,142 +1,137 @@
1
1
  "use client";
2
2
  import { jsxs as v, jsx as t } from "react/jsx-runtime";
3
- import { Command as d } from "../cmdk/index.js";
4
- import { useMemo as P, useContext as b, useCallback as p } from "react";
5
- import { FormItemInputContext as x } from "antd/es/form/context";
6
- import R from "antd/es/config-provider/DisabledContext";
3
+ import { Autocomplete as u } from "@base-ui/react/autocomplete";
4
+ import { useMemo as j, useContext as b, useCallback as f } from "react";
5
+ import { FormItemInputContext as p } from "antd/es/form/context";
6
+ import B from "antd/es/config-provider/DisabledContext";
7
7
  import './style.css';/* empty css */
8
- import { Radio as T } from "../radio/component.js";
9
- import { useControlledState as q } from "../hooks/useControlledState.js";
10
- import { useCls as w } from "../utils/antdUtils.js";
11
- import { cn as z } from "../utils/cn.js";
12
- import { Input as G } from "../input/component.js";
13
- import { Checkbox as S } from "../checkbox/component.js";
14
- import { ScrollArea as H } from "../scroll-area/component.js";
15
- import { reactNodeToString as J } from "../utils/reactToString.js";
16
- const ae = ({
17
- options: i,
18
- multiple: a,
19
- value: g,
20
- defaultValue: C,
8
+ import { Radio as E } from "../radio/component.js";
9
+ import { useControlledState as F } from "../hooks/useControlledState.js";
10
+ import { useCls as L } from "../utils/antdUtils.js";
11
+ import { Input as P } from "../input/component.js";
12
+ import { Checkbox as x } from "../checkbox/component.js";
13
+ import { ScrollArea as R } from "../scroll-area/component.js";
14
+ const Z = ({
15
+ options: o,
16
+ multiple: l,
17
+ value: C,
18
+ defaultValue: g,
21
19
  onChange: A,
22
- searchProps: k = { placeholder: "Search..." },
23
- showSelectAll: I = !1,
24
- className: N,
25
- placeholder: y = "Search",
26
- disabled: D = !1,
27
- status: V,
28
- getItemKeywords: m,
29
- ...j
20
+ searchProps: I = { placeholder: "Search..." },
21
+ showSelectAll: S = !1,
22
+ className: M,
23
+ placeholder: k = "Search",
24
+ disabled: N = !1,
25
+ status: T
30
26
  }) => {
31
- const [l, n] = q(
32
- g,
27
+ const [r, n] = F(
28
+ C,
33
29
  A,
34
- C
35
- ), s = P(() => a ? Array.isArray(l) ? l : l ? [l] : [] : Array.isArray(l) ? l.length > 0 ? [l[0]] : [] : l ? [l] : [], [l, a]), { status: B } = b(x), E = b(R), F = V || B, c = D || E, o = w(), L = p(() => {
36
- if (a) {
37
- const e = i.map((r) => r.value).filter(Boolean);
30
+ g
31
+ ), a = j(() => l ? Array.isArray(r) ? r : r ? [r] : [] : Array.isArray(r) ? r.length > 0 ? [r[0]] : [] : r ? [r] : [], [r, l]);
32
+ b(p);
33
+ const y = b(B), s = N || y, i = L(), V = f(() => {
34
+ if (l) {
35
+ const e = o.map((c) => c.value).filter(Boolean);
38
36
  n(e);
39
37
  }
40
- }, [a, i, n]), M = p(() => {
41
- a && n([]);
42
- }, [a, n]);
38
+ }, [l, o, n]), w = f(() => {
39
+ l && n([]);
40
+ }, [l, n]), D = f(
41
+ (e) => {
42
+ if (!s)
43
+ if (l) {
44
+ const c = a.includes(e) ? a.filter((d) => d !== e) : [.../* @__PURE__ */ new Set([...a, e])];
45
+ n(c);
46
+ } else
47
+ n(e);
48
+ },
49
+ [s, l, a, n]
50
+ );
43
51
  return /* @__PURE__ */ v(
44
- d,
52
+ u.Root,
45
53
  {
46
- className: z(o("choice-list"), N),
47
- "data-disabled": c,
48
- "data-status": F,
49
- ...j,
54
+ items: o,
55
+ itemToStringValue: (e) => e?.value || "",
56
+ open: !0,
57
+ inline: !0,
58
+ modal: !1,
50
59
  children: [
51
- /* @__PURE__ */ t(x.Provider, { value: {}, children: /* @__PURE__ */ t(
52
- d.Input,
60
+ /* @__PURE__ */ t(p.Provider, { value: {}, children: /* @__PURE__ */ t(
61
+ u.Input,
53
62
  {
54
- render: (
55
- // isolate the input from the form context
56
- /* @__PURE__ */ t(
57
- G.Search,
58
- {
59
- allowClear: !0,
60
- disabled: c,
61
- className: o("choice-list-search"),
62
- placeholder: y
63
- }
64
- )
65
- ),
66
- ...k
63
+ render: (e) => /* @__PURE__ */ t(
64
+ P.Search,
65
+ {
66
+ ...e,
67
+ ...I,
68
+ allowClear: !0,
69
+ disabled: s,
70
+ className: i("choice-list-search"),
71
+ placeholder: k
72
+ }
73
+ )
67
74
  }
68
75
  ) }),
69
- I && a && i.length > 0 && (() => {
70
- const e = i.map((f) => f.value).filter(Boolean), r = s.filter(
71
- (f) => e.includes(f)
72
- ), u = r.length === e.length && e.length > 0, h = r.length > 0 && r.length < e.length;
76
+ S && l && o.length > 0 && (() => {
77
+ const e = o.map((h) => h.value).filter(Boolean), c = a.filter(
78
+ (h) => e.includes(h)
79
+ ), d = c.length === e.length && e.length > 0, m = c.length > 0 && c.length < e.length;
73
80
  return /* @__PURE__ */ t(
74
81
  "div",
75
82
  {
76
- className: o("choice-list-item"),
83
+ className: i("choice-list-item"),
77
84
  onClick: () => {
78
- c || (h || u ? M() : L());
85
+ s || (m || d ? w() : V());
79
86
  },
80
87
  children: /* @__PURE__ */ t(
81
- S,
88
+ x,
82
89
  {
83
90
  tabIndex: -1,
84
- checked: u,
85
- indeterminate: h,
86
- disabled: c,
91
+ checked: d,
92
+ indeterminate: m,
93
+ disabled: s,
87
94
  children: "Select All"
88
95
  }
89
96
  )
90
97
  }
91
98
  );
92
99
  })(),
93
- /* @__PURE__ */ t(H, { className: o("choice-list-items"), fadeEdges: !0, children: /* @__PURE__ */ v(d.List, { children: [
94
- /* @__PURE__ */ t(d.Empty, { className: o("choice-list-empty"), children: "No results found." }),
95
- i.map((e) => /* @__PURE__ */ t(
96
- d.Item,
100
+ /* @__PURE__ */ v(R, { className: i("choice-list-items"), fadeEdges: !0, children: [
101
+ /* @__PURE__ */ t(u.List, { children: (e) => /* @__PURE__ */ t(
102
+ u.Item,
97
103
  {
98
- className: o("choice-list-item"),
99
- keywords: m ? m(e) : [e.value || "", J(e.label)],
100
- value: e.value,
101
- "data-in-choice": e.value ? s.includes(e.value) : !1,
102
- onSelect: (r) => {
103
- if (!c)
104
- if (a) {
105
- const u = s.includes(r) ? s.filter((h) => h !== r) : [.../* @__PURE__ */ new Set([...s, r])];
106
- n(
107
- u
108
- );
109
- } else
110
- n(
111
- r
112
- );
113
- },
114
- children: a ? /* @__PURE__ */ t(
115
- S,
104
+ className: i("choice-list-item"),
105
+ value: e.value || "",
106
+ "data-in-choice": e.value ? a.includes(e.value) : !1,
107
+ onClick: () => e.value && D(e.value),
108
+ children: l ? /* @__PURE__ */ t(
109
+ x,
116
110
  {
117
111
  tabIndex: -1,
118
- checked: e.value ? s.includes(e.value) : !1,
119
- disabled: c,
112
+ checked: e.value ? a.includes(e.value) : !1,
113
+ disabled: s,
120
114
  children: e.label
121
115
  }
122
116
  ) : /* @__PURE__ */ t(
123
- T,
117
+ E,
124
118
  {
125
119
  tabIndex: -1,
126
- checked: e.value ? s.includes(e.value) : !1,
127
- disabled: c,
120
+ checked: e.value ? a.includes(e.value) : !1,
121
+ disabled: s,
128
122
  children: e.label
129
123
  }
130
124
  )
131
125
  },
132
126
  e.value
133
- ))
134
- ] }) })
127
+ ) }),
128
+ /* @__PURE__ */ t(u.Empty, { className: i("choice-list-empty"), children: "No results found." })
129
+ ] })
135
130
  ]
136
131
  }
137
132
  );
138
133
  };
139
134
  export {
140
- ae as ChoiceList
135
+ Z as ChoiceList
141
136
  };
142
137
  //# sourceMappingURL=component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/choice-list/component.tsx"],"sourcesContent":["\"use client\";\nimport { Command, CommandProps } from \"../cmdk\";\nimport { Input } from \"../input\";\nimport { useCallback, useMemo, useContext } from \"react\";\nimport { useCls, cn, reactNodeToString } from \"../utils\";\nimport { useControlledState } from \"../hooks\";\nimport { Radio } from \"../radio\";\nimport { Checkbox } from \"../checkbox\";\nimport { ScrollArea } from \"../scroll-area\";\n\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\n\nexport type ChoiceListOption = {\n label: React.ReactNode;\n value?: string;\n};\n\nimport \"./style.css\";\n\nexport interface ChoiceListProps<M extends boolean = false>\n extends Omit<CommandProps, \"value\" | \"onChange\" | \"defaultValue\"> {\n options: ChoiceListOption[];\n multiple?: M;\n value?: M extends true ? string[] : string;\n defaultValue?: M extends true ? string[] : string;\n onChange?: (value: M extends true ? string[] : string) => void;\n searchProps?: React.ComponentProps<typeof Command.Input>;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n placeholder?: string;\n /**\n * Whether the choice list is disabled\n * @default false\n */\n disabled?: boolean;\n /**\n * Validation status\n */\n status?: \"error\" | \"warning\" | \"success\" | \"validating\";\n /**\n * Function to extract keywords from the item for search filtering\n * @default (item) => [item.value, reactNodeToString(item.label)]\n */\n getItemKeywords?: (item: ChoiceListOption) => string[];\n}\n\nexport const ChoiceList = <M extends boolean = false>({\n options,\n multiple,\n value,\n defaultValue,\n onChange,\n searchProps = { placeholder: \"Search...\" },\n showSelectAll = false,\n className,\n placeholder = \"Search\",\n disabled: disabledProp = false,\n status: statusProp,\n getItemKeywords,\n ...rest\n}: ChoiceListProps<M>) => {\n const [internalValue, setInternalValue] = useControlledState(\n value,\n onChange,\n defaultValue\n );\n\n const usedValue = useMemo(() => {\n if (multiple) {\n // Ensure we always return an array for multiple mode\n if (Array.isArray(internalValue)) {\n return internalValue;\n }\n return internalValue ? [internalValue as string] : [];\n } else {\n // For single mode, convert to array for consistent usage\n if (Array.isArray(internalValue)) {\n return internalValue.length > 0 ? [internalValue[0]] : [];\n }\n return internalValue ? [internalValue as string] : [];\n }\n }, [internalValue, multiple]);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const cls = useCls();\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options\n .map((item) => item.value)\n .filter(Boolean) as string[];\n setInternalValue(allValues as M extends true ? string[] : string);\n }\n }, [multiple, options, setInternalValue]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n setInternalValue([] as M extends true ? string[] : string);\n }\n }, [multiple, setInternalValue]);\n\n return (\n <Command\n className={cn(cls(\"choice-list\"), className)}\n data-disabled={disabled}\n data-status={mergedStatus}\n {...rest}\n >\n <FormItemInputContext.Provider value={{}}>\n <Command.Input\n render={\n // isolate the input from the form context\n <Input.Search\n allowClear\n disabled={disabled}\n className={cls(\"choice-list-search\")}\n placeholder={placeholder}\n />\n }\n {...searchProps}\n />\n </FormItemInputContext.Provider>\n {showSelectAll &&\n multiple &&\n options.length > 0 &&\n (() => {\n const allValues = options\n .map((item) => item.value)\n .filter(Boolean) as string[];\n const selectedFromAll = usedValue.filter((val) =>\n allValues.includes(val)\n );\n const checked =\n selectedFromAll.length === allValues.length && allValues.length > 0;\n const indeterminate =\n selectedFromAll.length > 0 &&\n selectedFromAll.length < allValues.length;\n\n return (\n <div\n className={cls(\"choice-list-item\")}\n onClick={() => {\n if (disabled) return;\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n }}\n >\n <Checkbox\n tabIndex={-1}\n checked={checked}\n indeterminate={indeterminate}\n disabled={disabled}\n >\n Select All\n </Checkbox>\n </div>\n );\n })()}\n <ScrollArea className={cls(\"choice-list-items\")} fadeEdges>\n <Command.List>\n <Command.Empty className={cls(\"choice-list-empty\")}>\n No results found.\n </Command.Empty>\n {options.map((item) => (\n <Command.Item\n key={item.value}\n className={cls(\"choice-list-item\")}\n keywords={\n getItemKeywords\n ? getItemKeywords(item)\n : [item.value || \"\", reactNodeToString(item.label)]\n }\n value={item.value}\n data-in-choice={\n item.value ? usedValue.includes(item.value) : false\n }\n onSelect={(newValue) => {\n if (disabled) return;\n if (multiple) {\n const newValues = usedValue.includes(newValue)\n ? usedValue.filter((value) => value !== newValue)\n : [...new Set([...usedValue, newValue])];\n setInternalValue(\n newValues as M extends true ? string[] : string\n );\n } else {\n setInternalValue(\n newValue as M extends true ? string[] : string\n );\n }\n }}\n >\n {multiple ? (\n <Checkbox\n tabIndex={-1}\n checked={item.value ? usedValue.includes(item.value) : false}\n disabled={disabled}\n >\n {item.label}\n </Checkbox>\n ) : (\n <Radio\n tabIndex={-1}\n checked={item.value ? usedValue.includes(item.value) : false}\n disabled={disabled}\n >\n {item.label}\n </Radio>\n )}\n </Command.Item>\n ))}\n </Command.List>\n </ScrollArea>\n </Command>\n );\n};\n"],"names":["ChoiceList","options","multiple","value","defaultValue","onChange","searchProps","showSelectAll","className","placeholder","disabledProp","statusProp","getItemKeywords","rest","internalValue","setInternalValue","useControlledState","usedValue","useMemo","contextStatus","useContext","FormItemInputContext","contextDisabled","DisabledContext","mergedStatus","disabled","cls","useCls","handleSelectAll","useCallback","allValues","item","handleDeselectAll","jsxs","Command","cn","jsx","Input","selectedFromAll","val","checked","indeterminate","Checkbox","ScrollArea","reactNodeToString","newValue","newValues","Radio"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/choice-list/component.tsx"],"sourcesContent":["\"use client\";\nimport { Autocomplete } from \"@base-ui/react/autocomplete\";\nimport { Input } from \"../input\";\nimport { useCallback, useMemo, useContext } from \"react\";\nimport { useCls, cn } from \"../utils\";\nimport { useControlledState } from \"../hooks\";\nimport { Radio } from \"../radio\";\nimport { Checkbox } from \"../checkbox\";\nimport { ScrollArea } from \"../scroll-area\";\n\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\n\nexport type ChoiceListOption = {\n label: React.ReactNode;\n value?: string;\n};\n\nimport \"./style.css\";\n\nexport interface ChoiceListProps<M extends boolean = false> {\n options: ChoiceListOption[];\n multiple?: M;\n value?: M extends true ? string[] : string;\n defaultValue?: M extends true ? string[] : string;\n onChange?: (value: M extends true ? string[] : string) => void;\n searchProps?: React.ComponentProps<typeof Input.Search>;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n placeholder?: string;\n /**\n * Whether the choice list is disabled\n * @default false\n */\n disabled?: boolean;\n /**\n * Validation status\n */\n status?: \"error\" | \"warning\" | \"success\" | \"validating\";\n /**\n * Function to extract keywords from the item for search filtering\n * @default (item) => [item.value, reactNodeToString(item.label)]\n */\n getItemKeywords?: (item: ChoiceListOption) => string[];\n /**\n * Additional CSS class name\n */\n className?: string;\n}\n\nexport const ChoiceList = <M extends boolean = false>({\n options,\n multiple,\n value,\n defaultValue,\n onChange,\n searchProps = { placeholder: \"Search...\" },\n showSelectAll = false,\n className,\n placeholder = \"Search\",\n disabled: disabledProp = false,\n status: statusProp,\n}: ChoiceListProps<M>) => {\n const [internalValue, setInternalValue] = useControlledState(\n value,\n onChange,\n defaultValue\n );\n\n const usedValue = useMemo(() => {\n if (multiple) {\n // Ensure we always return an array for multiple mode\n if (Array.isArray(internalValue)) {\n return internalValue;\n }\n return internalValue ? [internalValue as string] : [];\n } else {\n // For single mode, convert to array for consistent usage\n if (Array.isArray(internalValue)) {\n return internalValue.length > 0 ? [internalValue[0]] : [];\n }\n return internalValue ? [internalValue as string] : [];\n }\n }, [internalValue, multiple]);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const cls = useCls();\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options\n .map((item) => item.value)\n .filter(Boolean) as string[];\n setInternalValue(allValues as M extends true ? string[] : string);\n }\n }, [multiple, options, setInternalValue]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n setInternalValue([] as M extends true ? string[] : string);\n }\n }, [multiple, setInternalValue]);\n\n const handleItemSelect = useCallback(\n (selectedValue: string) => {\n if (disabled) return;\n if (multiple) {\n const newValues = usedValue.includes(selectedValue)\n ? usedValue.filter((v) => v !== selectedValue)\n : [...new Set([...usedValue, selectedValue])];\n setInternalValue(newValues as M extends true ? string[] : string);\n } else {\n setInternalValue(selectedValue as M extends true ? string[] : string);\n }\n },\n [disabled, multiple, usedValue, setInternalValue]\n );\n\n return (\n <Autocomplete.Root\n items={options}\n itemToStringValue={(item) => item?.value || \"\"}\n open={true}\n inline\n modal={false}\n >\n <FormItemInputContext.Provider value={{}}>\n <Autocomplete.Input\n render={(props) => (\n <Input.Search\n {...props}\n {...searchProps}\n allowClear\n disabled={disabled}\n className={cls(\"choice-list-search\")}\n placeholder={placeholder}\n />\n )}\n />\n </FormItemInputContext.Provider>\n {showSelectAll &&\n multiple &&\n options.length > 0 &&\n (() => {\n const allValues = options\n .map((item) => item.value)\n .filter(Boolean) as string[];\n const selectedFromAll = usedValue.filter((val) =>\n allValues.includes(val)\n );\n const checked =\n selectedFromAll.length === allValues.length && allValues.length > 0;\n const indeterminate =\n selectedFromAll.length > 0 &&\n selectedFromAll.length < allValues.length;\n\n return (\n <div\n className={cls(\"choice-list-item\")}\n onClick={() => {\n if (disabled) return;\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n }}\n >\n <Checkbox\n tabIndex={-1}\n checked={checked}\n indeterminate={indeterminate}\n disabled={disabled}\n >\n Select All\n </Checkbox>\n </div>\n );\n })()}\n <ScrollArea className={cls(\"choice-list-items\")} fadeEdges>\n <Autocomplete.List>\n {(item) => (\n <Autocomplete.Item\n key={item.value}\n className={cls(\"choice-list-item\")}\n value={item.value || \"\"}\n data-in-choice={\n item.value ? usedValue.includes(item.value) : false\n }\n onClick={() => item.value && handleItemSelect(item.value)}\n >\n {multiple ? (\n <Checkbox\n tabIndex={-1}\n checked={item.value ? usedValue.includes(item.value) : false}\n disabled={disabled}\n >\n {item.label}\n </Checkbox>\n ) : (\n <Radio\n tabIndex={-1}\n checked={item.value ? usedValue.includes(item.value) : false}\n disabled={disabled}\n >\n {item.label}\n </Radio>\n )}\n </Autocomplete.Item>\n )}\n </Autocomplete.List>\n <Autocomplete.Empty className={cls(\"choice-list-empty\")}>\n No results found.\n </Autocomplete.Empty>\n </ScrollArea>\n </Autocomplete.Root>\n );\n};\n"],"names":["ChoiceList","options","multiple","value","defaultValue","onChange","searchProps","showSelectAll","className","placeholder","disabledProp","statusProp","internalValue","setInternalValue","useControlledState","usedValue","useMemo","useContext","FormItemInputContext","contextDisabled","DisabledContext","disabled","cls","useCls","handleSelectAll","useCallback","allValues","item","handleDeselectAll","handleItemSelect","selectedValue","newValues","v","jsxs","Autocomplete","jsx","props","Input","selectedFromAll","val","checked","indeterminate","Checkbox","ScrollArea","Radio"],"mappings":"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"}
@@ -16,21 +16,21 @@ const ce = ({
16
16
  className: ue,
17
17
  value: q,
18
18
  defaultValue: O,
19
- onChange: h,
19
+ onChange: g,
20
20
  colorPickerProps: F,
21
21
  presetColors: P,
22
22
  open: U,
23
- onOpenChange: g,
23
+ onOpenChange: h,
24
24
  defaultOpen: W,
25
25
  ...X
26
26
  }, N) => {
27
27
  const a = re(), [s, u] = $(
28
28
  q,
29
- h,
29
+ g,
30
30
  O
31
31
  ), [C, S] = w(null), [i, D] = w(""), [E, M] = w(""), [k, n] = $(
32
32
  U,
33
- g,
33
+ h,
34
34
  W
35
35
  ), [Y, T] = w(!1), y = I(null), d = I(null), z = I(!1), x = I({
36
36
  x: 0,
@@ -63,10 +63,10 @@ const ce = ({
63
63
  ), r = [], o = t.reduce((l, m) => (R(m, !0) ? l.push(m) : r.push(m), l), []);
64
64
  r.length && ne(`Invalid colors: ${r.join(", ")}`);
65
65
  const p = /* @__PURE__ */ new Set([...s, ...o]);
66
- h && h([...p]), g && g(!1), D(""), M(""), n(!1), requestAnimationFrame(() => {
66
+ g && g([...p]), h && h(!1), D(""), M(""), n(!1), requestAnimationFrame(() => {
67
67
  n(!0);
68
68
  });
69
- }, [i, s, h, g, n]), B = c(
69
+ }, [i, s, g, h, n]), B = c(
70
70
  (e) => {
71
71
  e.key === "Enter" && A(), e.key === "Backspace" && !i && (e.ctrlKey || e.metaKey ? u([]) : u(s.slice(0, -1)));
72
72
  },
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as o, jsxs as f, Fragment as q } from "react/jsx-runtime";
3
- import { Combobox as t } from "@base-ui-components/react/combobox";
3
+ import { Combobox as t } from "@base-ui/react/combobox";
4
4
  import se from "antd/es/config-provider/DisabledContext";
5
5
  import { FormItemInputContext as ae } from "antd/es/form/context";
6
6
  import { forwardRef as ie, useRef as de, useContext as G, useCallback as y, useMemo as O } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../src/components/combobox/component.tsx"],"sourcesContent":["\"use client\";\nimport { Combobox as BaseCombobox } from \"@base-ui-components/react/combobox\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport { ValidateStatus } from \"antd/es/form/FormItem\";\nimport type { PopoverProps } from \"antd/es/popover\";\nimport React, {\n ForwardedRef,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from \"react\";\nimport { BaseMenuItem } from \"../base-menu\";\nimport { useControlledState } from \"../hooks\";\nimport { SelectTrigger } from \"../select-trigger\";\nimport { clsx, reactNodeToString, useCls } from \"../utils\";\n\nimport { XIcon } from \"@bioturing/assets\";\nimport { BaseMenu } from \"../base-menu\";\nimport { Empty } from \"../empty\";\nimport \"./style.css\";\n\nexport type ComboboxOption<\n T extends React.Key,\n O extends Record<string, unknown> = {}\n> = {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactNode;\n} & O;\n\nexport interface ComboboxProps<\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n> {\n /** Array of options to be displayed in the combobox */\n options?: ComboboxOption<T, O>[];\n /** Current value of the combobox */\n value?: M extends true ? T[] : T;\n /** Default value when uncontrolled */\n defaultValue?: M extends true ? T[] : T;\n /** Callback when value changes */\n onChange?: (value: M extends true ? T[] : T) => void;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Validation status */\n status?: ValidateStatus;\n /** Whether to allow clearing the selection */\n allowClear?: boolean;\n /** Whether to allow multiple selections */\n multiple?: M;\n /** Maximum number of tags to show */\n maxTagCount?: number;\n /** Whether to show search functionality */\n showSearch?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: PopoverProps[\"placement\"];\n /** Custom className for the component */\n className?: string;\n /** Custom class names for different parts */\n classNames?: {\n trigger?: string;\n input?: string;\n option?: string;\n optionIcon?: string;\n optionText?: string;\n list?: string;\n portal?: string;\n };\n /** Size of the combobox */\n size?: \"small\" | \"middle\" | \"large\";\n /** Loading state */\n loading?: boolean;\n /** Custom render for options */\n optionRender?: (\n option: ComboboxOption<T, O>,\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /** Filter function for search */\n filterOption?:\n | boolean\n | ((input: string, option: ComboboxOption<T, O>) => boolean);\n /** Callback when search input changes */\n onSearch?: (value: string) => void;\n /** Custom dropdown render */\n dropdownRender?: (menu: React.ReactElement) => React.ReactElement;\n /** Custom clear icon */\n clearIcon?: React.ReactNode;\n /** Custom suffix icon */\n suffixIcon?: React.ReactNode;\n // /**\n // * Show selection summary instead of individual tags when multiple\n // * @default false\n // */\n // showSelectionSummary?: boolean;\n // /**\n // * Render function for the selection summary in multiple case\n // * @default (selectedValues) => `${selectedValues.length} items selected`\n // */\n // selectionSummaryRender?: (selectedValues: T[]) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onSelectAll: () => void;\n onDeselectAll: () => void;\n checked: boolean;\n indeterminate: boolean;\n }) => React.ReactNode;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (option) => [String(option.key), reactNodeToString(option.label)]\n */\n getOptionKeywords?: (option: ComboboxOption<T, O>) => string[];\n /**\n * Render function for the option label\n */\n optionLabelRender?: (\n option: ComboboxOption<T, O>,\n props?: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n}\n\nconst ComboboxInner = <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n>(\n {\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select...\",\n disabled: disabledProp = false,\n status: statusProp,\n allowClear = false,\n multiple = false as M,\n showSearch: _showSearch = true,\n open: controlledOpen,\n onOpenChange,\n className,\n classNames,\n size = \"middle\",\n optionRender,\n onSearch,\n clearIcon,\n suffixIcon,\n // showSelectionSummary: _showSelectionSummary = false,\n // selectionSummaryRender,\n showSelectAll = false,\n optionLabelRender,\n getOptionKeywords: _getOptionKeywords = (option: ComboboxOption<T, O>) => [\n String(option.value),\n reactNodeToString(option.label),\n ],\n ...rest\n }: ComboboxProps<T, M, O>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [value, setValue] = useControlledState(\n controlledValue,\n onChange,\n defaultValue !== undefined\n ? defaultValue\n : multiple\n ? ([] as T[])\n : undefined\n );\n\n const [open, setOpen] = useControlledState(\n controlledOpen,\n onOpenChange,\n false\n );\n\n const cls = useCls();\n const inputContainerRef = useRef<HTMLDivElement>(null);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const handleValueChange = useCallback(\n (newValue: M extends true ? T[] : T) => {\n setValue(newValue);\n onChange?.(newValue);\n },\n [setValue, onChange]\n );\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options.map((option) => option.value);\n (handleValueChange as (v: T[]) => void)(allValues);\n }\n }, [multiple, options, handleValueChange]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n }\n }, [multiple, handleValueChange]);\n\n const handleClear = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n } else {\n (handleValueChange as (v: T) => void)(undefined as T);\n }\n }, [multiple, handleValueChange]);\n\n // Prepare selected values\n const selectedValues = useMemo(() => {\n return Array.isArray(value) ? value : value ? [value] : [];\n }, [value]);\n\n // Select all option logic\n const selectAllOption = useMemo(() => {\n if (!showSelectAll || !multiple || options.length === 0) {\n return null;\n }\n\n const selectedFromFiltered = selectedValues.filter((val) =>\n options.some((opt) => opt.value === val)\n );\n const checked =\n selectedFromFiltered.length === options.length && options.length > 0;\n const indeterminate =\n selectedFromFiltered.length > 0 &&\n selectedFromFiltered.length < options.length;\n\n return {\n checked,\n indeterminate,\n onToggle: () => {\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n },\n };\n }, [\n showSelectAll,\n multiple,\n options,\n selectedValues,\n handleDeselectAll,\n handleSelectAll,\n ]);\n\n // Convert options to Base UI format\n const baseUIItems = useMemo(() => options.map((opt) => opt.value), [options]);\n\n // Get display value for SelectTrigger\n const displayValue = useMemo(() => {\n if (multiple) {\n return selectedValues.length > 0\n ? `${selectedValues.length} item${\n selectedValues.length === 1 ? \"\" : \"s\"\n } selected`\n : null;\n } else {\n const selectedOption = options.find(\n (opt) => opt.value === selectedValues[0]\n );\n return selectedOption?.label || null;\n }\n }, [multiple, selectedValues, options]);\n\n const inputClassName = clsx(\n cls(\"combobox-input\"),\n cls(`combobox-input-${size}`),\n mergedStatus && cls(`combobox-input-${mergedStatus}`),\n classNames?.input\n );\n\n return (\n <div ref={ref} className={clsx(cls(\"combobox\"), className)} {...rest}>\n <BaseCombobox.Root<T, M>\n value={\n (multiple\n ? selectedValues\n : selectedValues[0] ?? null) as M extends true ? T[] : T | null\n }\n onValueChange={(newValue) => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)(\n Array.isArray(newValue) ? (newValue as T[]) : []\n );\n } else {\n (handleValueChange as (v: T) => void)(newValue as T);\n }\n }}\n open={open}\n onOpenChange={setOpen}\n multiple={multiple}\n disabled={disabled}\n items={baseUIItems}\n itemToStringLabel={(itemValue) => {\n const option = options.find((opt) => opt.value === itemValue);\n return reactNodeToString(option?.label || String(itemValue));\n }}\n >\n {/* Single Selection Layout using SelectTrigger compound components */}\n {!multiple ? (\n <SelectTrigger.Root\n ref={inputContainerRef}\n as=\"div\"\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-single\")\n )}\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Input\n placeholder={placeholder}\n className={clsx(className, inputClassName)}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n {...rest}\n />\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n ) : (\n /* Multiple Selection Layout using SelectTrigger compound components */\n <SelectTrigger.Root\n ref={inputContainerRef}\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-multiple\")\n )}\n as=\"div\"\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Chips\n className={clsx(cls(\"combobox-chips\"), className)}\n {...rest}\n >\n <BaseCombobox.Value>\n {(selectedItems) => (\n <>\n {selectedItems.map((item: T) => {\n const option = options.find(\n (opt) => opt.value === item\n );\n return (\n <BaseCombobox.Chip\n key={item}\n className={clsx(cls(\"combobox-chip\"))}\n >\n {option?.icon && (\n <span\n className={clsx(cls(\"combobox-chip-icon\"))}\n >\n {option.icon}\n </span>\n )}\n <span className={clsx(cls(\"combobox-chip-text\"))}>\n {option\n ? optionLabelRender\n ? optionLabelRender(option)\n : option.label\n : item}\n </span>\n <BaseCombobox.ChipRemove\n className={clsx(cls(\"combobox-chip-remove\"))}\n >\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n })}\n\n <BaseCombobox.Input\n placeholder={\n selectedItems.length > 0 ? \"\" : placeholder\n }\n className={inputClassName}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n />\n </>\n )}\n </BaseCombobox.Value>\n </BaseCombobox.Chips>\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n )}\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n anchor={inputContainerRef.current}\n sideOffset={4}\n render={(props) => <BaseMenu.Root {...props}></BaseMenu.Root>}\n >\n <BaseCombobox.Popup\n className={clsx(cls(\"combobox-popup\"), classNames?.portal)}\n render={(props) => <BaseMenu.Popup {...props}></BaseMenu.Popup>}\n >\n {/* Select All Option */}\n {selectAllOption && (\n <>\n <BaseMenuItem\n as=\"button\"\n type=\"button\"\n className={clsx(cls(\"combobox-select-all\"))}\n selected={selectAllOption.checked}\n onClick={selectAllOption.onToggle}\n indeterminate={selectAllOption.indeterminate}\n showCheckbox\n >\n Select All\n </BaseMenuItem>\n <BaseCombobox.Separator\n render={(props) => <BaseMenu.Divider {...props} />}\n />\n </>\n )}\n <BaseCombobox.List\n className={clsx(cls(\"combobox-list\"), classNames?.list)}\n render={(props) => <BaseMenu.List {...props}></BaseMenu.List>}\n >\n {(item: T) => {\n const option = options.find((opt) => opt.value === item);\n const isSelected = (selectedValues as T[]).includes(item);\n return optionRender ? (\n optionRender(option, {})\n ) : (\n <BaseMenuItem\n key={option.value}\n disabled={option.disabled}\n selected={isSelected}\n showCheckbox={multiple}\n icon={option.icon}\n classNames={{\n root: clsx(classNames?.option),\n icon: classNames?.optionIcon,\n text: classNames?.optionText,\n }}\n labelRender={\n optionLabelRender\n ? (props: React.HTMLAttributes<HTMLElement>) =>\n optionLabelRender(option, props)\n : undefined\n }\n render={(props: React.HTMLAttributes<HTMLElement>) => (\n <BaseCombobox.Item\n value={item as T}\n disabled={option.disabled}\n {...props}\n data-disabled={option.disabled}\n data-selected={isSelected}\n />\n )}\n >\n {option.label}\n </BaseMenuItem>\n );\n }}\n </BaseCombobox.List>\n\n <BaseCombobox.Empty className={clsx(cls(\"combobox-empty\"))}>\n <Empty description=\"No options found\" />\n </BaseCombobox.Empty>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n </div>\n );\n};\n\nconst MainCombobox = forwardRef(ComboboxInner) as <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n>(\n props: ComboboxProps<T, M, O> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof ComboboxInner>;\n\nexport const Combobox = Object.assign(MainCombobox, {\n // Add any sub components here if needed\n});\n\nexport default Combobox;\n"],"names":["ComboboxInner","options","controlledValue","defaultValue","onChange","placeholder","disabledProp","statusProp","allowClear","multiple","_showSearch","controlledOpen","onOpenChange","className","classNames","size","optionRender","onSearch","clearIcon","suffixIcon","showSelectAll","optionLabelRender","_getOptionKeywords","option","reactNodeToString","rest","ref","value","setValue","useControlledState","open","setOpen","cls","useCls","inputContainerRef","useRef","contextStatus","useContext","FormItemInputContext","contextDisabled","DisabledContext","mergedStatus","disabled","handleValueChange","useCallback","newValue","handleSelectAll","allValues","handleDeselectAll","handleClear","selectedValues","useMemo","selectAllOption","selectedFromFiltered","val","opt","checked","indeterminate","baseUIItems","displayValue","inputClassName","clsx","jsx","jsxs","BaseCombobox","itemValue","SelectTrigger","children","selectedItems","Fragment","item","XIcon","event","props","icon","BaseMenu","BaseMenuItem","isSelected","Empty","MainCombobox","forwardRef","Combobox"],"mappings":"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"}
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/combobox/component.tsx"],"sourcesContent":["\"use client\";\nimport { Combobox as BaseCombobox } from \"@base-ui/react/combobox\";\nimport DisabledContext from \"antd/es/config-provider/DisabledContext\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\nimport { ValidateStatus } from \"antd/es/form/FormItem\";\nimport type { PopoverProps } from \"antd/es/popover\";\nimport React, {\n ForwardedRef,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from \"react\";\nimport { BaseMenuItem } from \"../base-menu\";\nimport { useControlledState } from \"../hooks\";\nimport { SelectTrigger } from \"../select-trigger\";\nimport { clsx, reactNodeToString, useCls } from \"../utils\";\n\nimport { XIcon } from \"@bioturing/assets\";\nimport { BaseMenu } from \"../base-menu\";\nimport { Empty } from \"../empty\";\nimport \"./style.css\";\n\nexport type ComboboxOption<\n T extends React.Key,\n O extends Record<string, unknown> = {}\n> = {\n value: T;\n label: React.ReactNode;\n disabled?: boolean;\n icon?: React.ReactNode;\n} & O;\n\nexport interface ComboboxProps<\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n> {\n /** Array of options to be displayed in the combobox */\n options?: ComboboxOption<T, O>[];\n /** Current value of the combobox */\n value?: M extends true ? T[] : T;\n /** Default value when uncontrolled */\n defaultValue?: M extends true ? T[] : T;\n /** Callback when value changes */\n onChange?: (value: M extends true ? T[] : T) => void;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Validation status */\n status?: ValidateStatus;\n /** Whether to allow clearing the selection */\n allowClear?: boolean;\n /** Whether to allow multiple selections */\n multiple?: M;\n /** Maximum number of tags to show */\n maxTagCount?: number;\n /** Whether to show search functionality */\n showSearch?: boolean;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the dropdown */\n placement?: PopoverProps[\"placement\"];\n /** Custom className for the component */\n className?: string;\n /** Custom class names for different parts */\n classNames?: {\n trigger?: string;\n input?: string;\n option?: string;\n optionIcon?: string;\n optionText?: string;\n list?: string;\n portal?: string;\n };\n /** Size of the combobox */\n size?: \"small\" | \"middle\" | \"large\";\n /** Loading state */\n loading?: boolean;\n /** Custom render for options */\n optionRender?: (\n option: ComboboxOption<T, O>,\n props: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n /** Filter function for search */\n filterOption?:\n | boolean\n | ((input: string, option: ComboboxOption<T, O>) => boolean);\n /** Callback when search input changes */\n onSearch?: (value: string) => void;\n /** Custom dropdown render */\n dropdownRender?: (menu: React.ReactElement) => React.ReactElement;\n /** Custom clear icon */\n clearIcon?: React.ReactNode;\n /** Custom suffix icon */\n suffixIcon?: React.ReactNode;\n // /**\n // * Show selection summary instead of individual tags when multiple\n // * @default false\n // */\n // showSelectionSummary?: boolean;\n // /**\n // * Render function for the selection summary in multiple case\n // * @default (selectedValues) => `${selectedValues.length} items selected`\n // */\n // selectionSummaryRender?: (selectedValues: T[]) => React.ReactNode;\n /**\n * Show select all option when in multiple mode\n * @default false\n */\n showSelectAll?: boolean;\n /**\n * Render function for the select all option\n */\n selectAllRender?: (props: {\n onSelectAll: () => void;\n onDeselectAll: () => void;\n checked: boolean;\n indeterminate: boolean;\n }) => React.ReactNode;\n /**\n * Function to extract keywords from the item for search filtering\n * @default (option) => [String(option.key), reactNodeToString(option.label)]\n */\n getOptionKeywords?: (option: ComboboxOption<T, O>) => string[];\n /**\n * Render function for the option label\n */\n optionLabelRender?: (\n option: ComboboxOption<T, O>,\n props?: React.HTMLAttributes<HTMLElement>\n ) => React.ReactElement;\n}\n\nconst ComboboxInner = <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n>(\n {\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select...\",\n disabled: disabledProp = false,\n status: statusProp,\n allowClear = false,\n multiple = false as M,\n showSearch: _showSearch = true,\n open: controlledOpen,\n onOpenChange,\n className,\n classNames,\n size = \"middle\",\n optionRender,\n onSearch,\n clearIcon,\n suffixIcon,\n // showSelectionSummary: _showSelectionSummary = false,\n // selectionSummaryRender,\n showSelectAll = false,\n optionLabelRender,\n getOptionKeywords: _getOptionKeywords = (option: ComboboxOption<T, O>) => [\n String(option.value),\n reactNodeToString(option.label),\n ],\n ...rest\n }: ComboboxProps<T, M, O>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [value, setValue] = useControlledState(\n controlledValue,\n onChange,\n defaultValue !== undefined\n ? defaultValue\n : multiple\n ? ([] as T[])\n : undefined\n );\n\n const [open, setOpen] = useControlledState(\n controlledOpen,\n onOpenChange,\n false\n );\n\n const cls = useCls();\n const inputContainerRef = useRef<HTMLDivElement>(null);\n\n // Get form context values\n const { status: contextStatus } = useContext(FormItemInputContext);\n const contextDisabled = useContext(DisabledContext);\n\n // Merge context values with props\n const mergedStatus = statusProp || contextStatus;\n const disabled = disabledProp || contextDisabled;\n\n const handleValueChange = useCallback(\n (newValue: M extends true ? T[] : T) => {\n setValue(newValue);\n onChange?.(newValue);\n },\n [setValue, onChange]\n );\n\n const handleSelectAll = useCallback(() => {\n if (multiple) {\n const allValues = options.map((option) => option.value);\n (handleValueChange as (v: T[]) => void)(allValues);\n }\n }, [multiple, options, handleValueChange]);\n\n const handleDeselectAll = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n }\n }, [multiple, handleValueChange]);\n\n const handleClear = useCallback(() => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)([]);\n } else {\n (handleValueChange as (v: T) => void)(undefined as T);\n }\n }, [multiple, handleValueChange]);\n\n // Prepare selected values\n const selectedValues = useMemo(() => {\n return Array.isArray(value) ? value : value ? [value] : [];\n }, [value]);\n\n // Select all option logic\n const selectAllOption = useMemo(() => {\n if (!showSelectAll || !multiple || options.length === 0) {\n return null;\n }\n\n const selectedFromFiltered = selectedValues.filter((val) =>\n options.some((opt) => opt.value === val)\n );\n const checked =\n selectedFromFiltered.length === options.length && options.length > 0;\n const indeterminate =\n selectedFromFiltered.length > 0 &&\n selectedFromFiltered.length < options.length;\n\n return {\n checked,\n indeterminate,\n onToggle: () => {\n if (indeterminate || checked) {\n handleDeselectAll();\n } else {\n handleSelectAll();\n }\n },\n };\n }, [\n showSelectAll,\n multiple,\n options,\n selectedValues,\n handleDeselectAll,\n handleSelectAll,\n ]);\n\n // Convert options to Base UI format\n const baseUIItems = useMemo(() => options.map((opt) => opt.value), [options]);\n\n // Get display value for SelectTrigger\n const displayValue = useMemo(() => {\n if (multiple) {\n return selectedValues.length > 0\n ? `${selectedValues.length} item${\n selectedValues.length === 1 ? \"\" : \"s\"\n } selected`\n : null;\n } else {\n const selectedOption = options.find(\n (opt) => opt.value === selectedValues[0]\n );\n return selectedOption?.label || null;\n }\n }, [multiple, selectedValues, options]);\n\n const inputClassName = clsx(\n cls(\"combobox-input\"),\n cls(`combobox-input-${size}`),\n mergedStatus && cls(`combobox-input-${mergedStatus}`),\n classNames?.input\n );\n\n return (\n <div ref={ref} className={clsx(cls(\"combobox\"), className)} {...rest}>\n <BaseCombobox.Root<T, M>\n value={\n (multiple\n ? selectedValues\n : selectedValues[0] ?? null) as M extends true ? T[] : T | null\n }\n onValueChange={(newValue) => {\n if (multiple) {\n (handleValueChange as (v: T[]) => void)(\n Array.isArray(newValue) ? (newValue as T[]) : []\n );\n } else {\n (handleValueChange as (v: T) => void)(newValue as T);\n }\n }}\n open={open}\n onOpenChange={setOpen}\n multiple={multiple}\n disabled={disabled}\n items={baseUIItems}\n itemToStringLabel={(itemValue) => {\n const option = options.find((opt) => opt.value === itemValue);\n return reactNodeToString(option?.label || String(itemValue));\n }}\n >\n {/* Single Selection Layout using SelectTrigger compound components */}\n {!multiple ? (\n <SelectTrigger.Root\n ref={inputContainerRef}\n as=\"div\"\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-single\")\n )}\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Input\n placeholder={placeholder}\n className={clsx(className, inputClassName)}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n {...rest}\n />\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n ) : (\n /* Multiple Selection Layout using SelectTrigger compound components */\n <SelectTrigger.Root\n ref={inputContainerRef}\n size={size}\n disabled={disabled}\n open={open}\n status={mergedStatus}\n placeholder={placeholder}\n displayValue={displayValue}\n allowClear={allowClear}\n suffixIcon={suffixIcon}\n clearIcon={clearIcon}\n onClear={handleClear}\n onOpenChange={setOpen}\n className={clsx(\n classNames?.trigger,\n cls(\"combobox-trigger-multiple\")\n )}\n as=\"div\"\n >\n <SelectTrigger.Content\n contentRender={({ className, children, ...rest }) => (\n <BaseCombobox.Chips\n className={clsx(cls(\"combobox-chips\"), className)}\n {...rest}\n >\n <BaseCombobox.Value>\n {(selectedItems) => (\n <>\n {selectedItems.map((item: T) => {\n const option = options.find(\n (opt) => opt.value === item\n );\n return (\n <BaseCombobox.Chip\n key={item}\n className={clsx(cls(\"combobox-chip\"))}\n >\n {option?.icon && (\n <span\n className={clsx(cls(\"combobox-chip-icon\"))}\n >\n {option.icon}\n </span>\n )}\n <span className={clsx(cls(\"combobox-chip-text\"))}>\n {option\n ? optionLabelRender\n ? optionLabelRender(option)\n : option.label\n : item}\n </span>\n <BaseCombobox.ChipRemove\n className={clsx(cls(\"combobox-chip-remove\"))}\n >\n <XIcon />\n </BaseCombobox.ChipRemove>\n </BaseCombobox.Chip>\n );\n })}\n\n <BaseCombobox.Input\n placeholder={\n selectedItems.length > 0 ? \"\" : placeholder\n }\n className={inputClassName}\n disabled={disabled}\n onChange={(event) => {\n onSearch?.(event.target.value);\n }}\n />\n </>\n )}\n </BaseCombobox.Value>\n </BaseCombobox.Chips>\n )}\n />\n <SelectTrigger.Clear\n render={(props) => (\n <BaseCombobox.Clear {...props}></BaseCombobox.Clear>\n )}\n />\n <SelectTrigger.Arrow\n render={(props, { icon }) => (\n <BaseCombobox.Trigger {...props}>\n <BaseCombobox.Icon>{icon}</BaseCombobox.Icon>\n </BaseCombobox.Trigger>\n )}\n />\n </SelectTrigger.Root>\n )}\n\n <BaseCombobox.Portal>\n <BaseCombobox.Positioner\n anchor={inputContainerRef.current}\n sideOffset={4}\n render={(props) => <BaseMenu.Root {...props}></BaseMenu.Root>}\n >\n <BaseCombobox.Popup\n className={clsx(cls(\"combobox-popup\"), classNames?.portal)}\n render={(props) => <BaseMenu.Popup {...props}></BaseMenu.Popup>}\n >\n {/* Select All Option */}\n {selectAllOption && (\n <>\n <BaseMenuItem\n as=\"button\"\n type=\"button\"\n className={clsx(cls(\"combobox-select-all\"))}\n selected={selectAllOption.checked}\n onClick={selectAllOption.onToggle}\n indeterminate={selectAllOption.indeterminate}\n showCheckbox\n >\n Select All\n </BaseMenuItem>\n <BaseCombobox.Separator\n render={(props) => <BaseMenu.Divider {...props} />}\n />\n </>\n )}\n <BaseCombobox.List\n className={clsx(cls(\"combobox-list\"), classNames?.list)}\n render={(props) => <BaseMenu.List {...props}></BaseMenu.List>}\n >\n {(item: T) => {\n const option = options.find((opt) => opt.value === item);\n const isSelected = (selectedValues as T[]).includes(item);\n return optionRender ? (\n optionRender(option, {})\n ) : (\n <BaseMenuItem\n key={option.value}\n disabled={option.disabled}\n selected={isSelected}\n showCheckbox={multiple}\n icon={option.icon}\n classNames={{\n root: clsx(classNames?.option),\n icon: classNames?.optionIcon,\n text: classNames?.optionText,\n }}\n labelRender={\n optionLabelRender\n ? (props: React.HTMLAttributes<HTMLElement>) =>\n optionLabelRender(option, props)\n : undefined\n }\n render={(props: React.HTMLAttributes<HTMLElement>) => (\n <BaseCombobox.Item\n value={item as T}\n disabled={option.disabled}\n {...props}\n data-disabled={option.disabled}\n data-selected={isSelected}\n />\n )}\n >\n {option.label}\n </BaseMenuItem>\n );\n }}\n </BaseCombobox.List>\n\n <BaseCombobox.Empty className={clsx(cls(\"combobox-empty\"))}>\n <Empty description=\"No options found\" />\n </BaseCombobox.Empty>\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n </BaseCombobox.Root>\n </div>\n );\n};\n\nconst MainCombobox = forwardRef(ComboboxInner) as <\n T extends React.Key,\n M extends boolean,\n O extends Record<string, unknown> = {}\n>(\n props: ComboboxProps<T, M, O> & { ref?: ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof ComboboxInner>;\n\nexport const Combobox = Object.assign(MainCombobox, {\n // Add any sub components here if needed\n});\n\nexport default Combobox;\n"],"names":["ComboboxInner","options","controlledValue","defaultValue","onChange","placeholder","disabledProp","statusProp","allowClear","multiple","_showSearch","controlledOpen","onOpenChange","className","classNames","size","optionRender","onSearch","clearIcon","suffixIcon","showSelectAll","optionLabelRender","_getOptionKeywords","option","reactNodeToString","rest","ref","value","setValue","useControlledState","open","setOpen","cls","useCls","inputContainerRef","useRef","contextStatus","useContext","FormItemInputContext","contextDisabled","DisabledContext","mergedStatus","disabled","handleValueChange","useCallback","newValue","handleSelectAll","allValues","handleDeselectAll","handleClear","selectedValues","useMemo","selectAllOption","selectedFromFiltered","val","opt","checked","indeterminate","baseUIItems","displayValue","inputClassName","clsx","jsx","jsxs","BaseCombobox","itemValue","SelectTrigger","children","selectedItems","Fragment","item","XIcon","event","props","icon","BaseMenu","BaseMenuItem","isSelected","Empty","MainCombobox","forwardRef","Combobox"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { default as React } from 'react';
2
+ import { Dialog } from '@base-ui/react/dialog';
2
3
  import { DropdownMenuItemType } from '../dropdown-menu/types';
3
4
  export type CommandPaletteShortcut = {
4
5
  key: string;
@@ -7,7 +8,10 @@ export type CommandPaletteShortcut = {
7
8
  altKey?: boolean;
8
9
  shiftKey?: boolean;
9
10
  };
11
+ type DialogTriggerRender = React.ComponentProps<typeof Dialog.Trigger>["render"];
10
12
  export interface CommandPaletteProps {
13
+ /** Optional trigger element - if provided, renders a Dialog.Trigger */
14
+ children?: DialogTriggerRender;
11
15
  /** Whether the command palette is open */
12
16
  open?: boolean;
13
17
  /** Callback fired when the open state changes */
@@ -29,6 +33,7 @@ export interface CommandPaletteProps {
29
33
  /** Additional CSS class names */
30
34
  className?: string;
31
35
  classNames?: {
36
+ trigger?: string;
32
37
  root?: string;
33
38
  mask?: string;
34
39
  content?: string;
@@ -38,4 +43,5 @@ export interface CommandPaletteProps {
38
43
  };
39
44
  }
40
45
  export declare const CommandPalette: React.FC<CommandPaletteProps>;
46
+ export {};
41
47
  //# sourceMappingURL=component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,aAAa,CAAC;AAGrB,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AA0CD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2ExD,CAAC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/command-palette/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAM9D,OAAO,aAAa,CAAC;AAKrB,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAGF,KAAK,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAC7C,OAAO,MAAM,CAAC,OAAO,CACtB,CAAC,QAAQ,CAAC,CAAC;AAEZ,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,0CAA0C;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAoBD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAiNxD,CAAC"}