@ark-ui/solid 5.17.0 → 5.18.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 (124) hide show
  1. package/dist/chunk/7HON4OS6.js +217 -0
  2. package/dist/chunk/{P7WR6WX5.js → HJFJPRY5.js} +1 -1
  3. package/dist/chunk/{FQGMWBGA.js → HSBJVWHB.js} +1 -1
  4. package/dist/chunk/{KAYDBHSW.jsx → IDNDLSEV.jsx} +4 -4
  5. package/dist/chunk/{JEPST7BN.jsx → LBI4ZRKN.jsx} +5 -3
  6. package/dist/chunk/{AKYIM67Z.jsx → UYFUB47A.jsx} +5 -3
  7. package/dist/chunk/{NCRPFSNO.jsx → VR5BNKL7.jsx} +4 -4
  8. package/dist/chunk/XFW6RT6G.js +321 -0
  9. package/dist/chunk/YRHUWQ7U.jsx +237 -0
  10. package/dist/chunk/ZHSHZ7SJ.jsx +240 -0
  11. package/dist/components/accordion/index.jsx +3 -3
  12. package/dist/components/angle-slider/index.jsx +2 -2
  13. package/dist/components/avatar/index.jsx +2 -2
  14. package/dist/components/carousel/index.jsx +2 -2
  15. package/dist/components/checkbox/index.d.ts +1 -1
  16. package/dist/components/checkbox/index.jsx +2 -2
  17. package/dist/components/clipboard/index.jsx +1 -1
  18. package/dist/components/collapsible/index.jsx +2 -2
  19. package/dist/components/collection/index.d.ts +105 -3
  20. package/dist/components/collection/index.js +1 -1
  21. package/dist/components/collection/index.jsx +5 -3
  22. package/dist/components/color-picker/index.d.ts +1 -1
  23. package/dist/components/color-picker/index.jsx +2 -2
  24. package/dist/components/combobox/index.js +1 -1
  25. package/dist/components/combobox/index.jsx +3 -3
  26. package/dist/components/date-picker/index.d.ts +1 -1
  27. package/dist/components/date-picker/index.jsx +2 -2
  28. package/dist/components/dialog/index.jsx +2 -2
  29. package/dist/components/download-trigger/index.jsx +1 -1
  30. package/dist/components/editable/index.jsx +2 -2
  31. package/dist/components/field/index.d.ts +1 -1
  32. package/dist/components/field/index.jsx +1 -1
  33. package/dist/components/fieldset/index.d.ts +1 -1
  34. package/dist/components/fieldset/index.jsx +1 -1
  35. package/dist/components/file-upload/index.js +1 -1
  36. package/dist/components/file-upload/index.jsx +2 -2
  37. package/dist/components/floating-panel/index.jsx +2 -2
  38. package/dist/components/format/index.jsx +1 -1
  39. package/dist/components/frame/index.jsx +1 -1
  40. package/dist/components/hover-card/index.jsx +2 -2
  41. package/dist/components/index.d.ts +4 -1
  42. package/dist/components/index.js +28 -27
  43. package/dist/components/index.jsx +462 -450
  44. package/dist/components/json-tree-view/index.d.ts +69 -0
  45. package/dist/components/json-tree-view/index.js +1 -0
  46. package/dist/components/json-tree-view/index.jsx +26 -0
  47. package/dist/components/listbox/index.js +1 -1
  48. package/dist/components/listbox/index.jsx +3 -3
  49. package/dist/components/menu/index.jsx +2 -2
  50. package/dist/components/number-input/index.jsx +2 -2
  51. package/dist/components/pagination/index.jsx +2 -2
  52. package/dist/components/password-input/index.jsx +2 -2
  53. package/dist/components/pin-input/index.jsx +2 -2
  54. package/dist/components/popover/index.jsx +2 -2
  55. package/dist/components/progress/index.jsx +2 -2
  56. package/dist/components/qr-code/index.jsx +2 -2
  57. package/dist/components/radio-group/index.jsx +2 -2
  58. package/dist/components/rating-group/index.jsx +2 -2
  59. package/dist/components/segment-group/index.jsx +2 -2
  60. package/dist/components/select/index.js +1 -1
  61. package/dist/components/select/index.jsx +3 -3
  62. package/dist/components/signature-pad/index.js +1 -1
  63. package/dist/components/signature-pad/index.jsx +2 -2
  64. package/dist/components/slider/index.jsx +2 -2
  65. package/dist/components/splitter/index.jsx +2 -2
  66. package/dist/components/steps/index.jsx +2 -2
  67. package/dist/components/switch/index.jsx +2 -2
  68. package/dist/components/tabs/index.jsx +2 -2
  69. package/dist/components/tags-input/index.jsx +2 -2
  70. package/dist/components/time-picker/index.jsx +2 -2
  71. package/dist/components/timer/index.jsx +1 -1
  72. package/dist/components/toast/index.jsx +2 -2
  73. package/dist/components/toggle-group/index.jsx +2 -2
  74. package/dist/components/tooltip/index.jsx +2 -2
  75. package/dist/components/tour/index.jsx +2 -2
  76. package/dist/components/tree-view/index.d.ts +9 -39
  77. package/dist/components/tree-view/index.js +1 -1
  78. package/dist/components/tree-view/index.jsx +4 -4
  79. package/dist/index.d.ts +5 -2
  80. package/dist/index.js +28 -27
  81. package/dist/index.jsx +465 -453
  82. package/dist/providers/index.jsx +4 -4
  83. package/dist/tree-view-tree-CbBeWSwi.d.ts +41 -0
  84. package/package.json +63 -62
  85. package/dist/chunk/AQUEJK4Z.jsx +0 -122
  86. package/dist/chunk/XL4VFEPW.js +0 -104
  87. package/dist/chunk/{XUH2TAUG.jsx → 4L4266PL.jsx} +3 -3
  88. package/dist/chunk/{2WR5J3OZ.jsx → 6XAZQVOY.jsx} +3 -3
  89. package/dist/chunk/{HP3ZGMDZ.jsx → 7FASJWDK.jsx} +3 -3
  90. package/dist/chunk/{ZTNABPZL.jsx → 7OXBQSIZ.jsx} +3 -3
  91. package/dist/chunk/{YAOPG62Z.jsx → 7RYPC5LL.jsx} +3 -3
  92. package/dist/chunk/{4FUKCXPR.jsx → 7UNWOGPT.jsx} +3 -3
  93. package/dist/chunk/{35XSFKD5.jsx → CINP4S7J.jsx} +3 -3
  94. package/dist/chunk/{ZSMY7WCA.jsx → D2MI7N5P.jsx} +3 -3
  95. package/dist/chunk/{PPQSRJ6X.jsx → DLZTFD37.jsx} +3 -3
  96. package/dist/chunk/{4UNGYCFT.jsx → FG427CLW.jsx} +3 -3
  97. package/dist/chunk/{2UVDYZIY.jsx → FOIEK72O.jsx} +3 -3
  98. package/dist/chunk/{HDKSS6KE.jsx → GLN6WFQR.jsx} +3 -3
  99. package/dist/chunk/{WOUVNHGI.jsx → H4MJ4254.jsx} +3 -3
  100. package/dist/chunk/{BJ3QT4LE.jsx → H7TJLB3R.jsx} +0 -0
  101. package/dist/chunk/{CBGZAFEX.jsx → I7VQFKYT.jsx} +3 -3
  102. package/dist/chunk/{3DOPQCHJ.jsx → JK6QXH6B.jsx} +3 -3
  103. package/dist/chunk/{UW5WJ2LL.jsx → JKM73NGJ.jsx} +3 -3
  104. package/dist/chunk/{3WT7Q753.jsx → L22RABDV.jsx} +3 -3
  105. package/dist/chunk/{U5CBLW6U.jsx → L5XYJCAK.jsx} +3 -3
  106. package/dist/chunk/{NPHS6PVV.jsx → MJTOTU2A.jsx} +3 -3
  107. package/dist/chunk/{QBN5FEQF.js → NWXJCBMN.js} +0 -0
  108. package/dist/chunk/{OKNWZYMH.jsx → OM7DNJ6L.jsx} +3 -3
  109. package/dist/chunk/{JUBTXT4B.jsx → OM7V7VVC.jsx} +3 -3
  110. package/dist/chunk/{5U4KEVIU.jsx → PRA2XFQE.jsx} +3 -3
  111. package/dist/chunk/{MM6NNI6M.jsx → QXYWHKF7.jsx} +3 -3
  112. package/dist/chunk/{QC5C6JJA.jsx → V6S3C3U7.jsx} +3 -3
  113. package/dist/chunk/{LKPEYZZO.jsx → V75EMOIC.jsx} +3 -3
  114. package/dist/chunk/{S4OS4UYL.jsx → VXQNQSLM.jsx} +3 -3
  115. package/dist/chunk/{ZNBZTQ46.jsx → WBLWV2L4.jsx} +3 -3
  116. package/dist/chunk/{POJRD725.jsx → X5GWQYGE.jsx} +3 -3
  117. package/dist/chunk/{WG67YHCV.jsx → XENPQFEN.jsx} +3 -3
  118. package/dist/chunk/{AHH5Z3VJ.jsx → XOIHVYJ7.jsx} +3 -3
  119. package/dist/chunk/{N3H47LNB.jsx → XSGHIZ6Q.jsx} +3 -3
  120. package/dist/chunk/{L64MXP66.jsx → Y2LC36B4.jsx} +3 -3
  121. package/dist/chunk/{XKBIT7L5.jsx → YJX4W6VT.jsx} +3 -3
  122. package/dist/chunk/{RC4UV6HP.jsx → YM35RFYG.jsx} +3 -3
  123. package/dist/chunk/{WHXDBQDP.jsx → Z2BXVXSV.jsx} +3 -3
  124. package/dist/chunk/{3B7I46SI.jsx → ZHLQWQXX.jsx} +3 -3
@@ -0,0 +1,217 @@
1
+ import { GridCollection, ListCollection, TreeCollection, filePathToTree, Selection } from '@zag-js/collection';
2
+ import { createMemo, splitProps, createSignal, createEffect, on } from 'solid-js';
3
+
4
+ // src/components/collection/grid-collection.ts
5
+ var createGridCollection = (options) => new GridCollection(options);
6
+ var createListCollection = (options) => new ListCollection(options);
7
+ var createTreeCollection = (options) => new TreeCollection(options);
8
+ var createFileTreeCollection = (paths) => filePathToTree(paths);
9
+ function useListCollection(props) {
10
+ const splittedProps = createMemo(() => {
11
+ const rawProps = typeof props === "function" ? props() : props;
12
+ return splitProps(rawProps, ["initialItems", "filter", "limit"]);
13
+ });
14
+ const init = () => {
15
+ const [localProps] = splittedProps();
16
+ return localProps.initialItems;
17
+ };
18
+ const [items, setItemsImpl] = createSignal(init());
19
+ const [filterText, setFilterText] = createSignal("");
20
+ const setItems = (newItems) => {
21
+ setItemsImpl(newItems);
22
+ setFilterText("");
23
+ };
24
+ const create = (itemsToCreate) => {
25
+ const [, collectionOptions] = splittedProps();
26
+ return createListCollection({ ...collectionOptions, items: itemsToCreate });
27
+ };
28
+ const collection = createMemo(() => {
29
+ const [localProps, collectionOptions] = splittedProps();
30
+ const filter = localProps.filter;
31
+ let activeItems = items();
32
+ if (filterText() && filter) {
33
+ activeItems = create(items()).filter((itemString, _index, item) => filter(itemString, filterText(), item)).items;
34
+ }
35
+ const limitedItems = localProps.limit == null ? activeItems : activeItems.slice(0, localProps.limit);
36
+ return createListCollection({ ...collectionOptions, items: limitedItems });
37
+ });
38
+ return {
39
+ collection,
40
+ filter: (inputValue = "") => {
41
+ setFilterText(inputValue);
42
+ },
43
+ set: (newItems) => {
44
+ setItems(newItems);
45
+ },
46
+ reset: () => {
47
+ const [localProps] = splittedProps();
48
+ setItems(localProps.initialItems);
49
+ },
50
+ clear: () => {
51
+ setItems([]);
52
+ },
53
+ insert: (index, ...itemsToInsert) => {
54
+ const newItems = create(items()).insert(index, ...itemsToInsert).items;
55
+ setItems(newItems);
56
+ },
57
+ insertBefore: (value, ...itemsToInsert) => {
58
+ const newItems = create(items()).insertBefore(value, ...itemsToInsert).items;
59
+ setItems(newItems);
60
+ },
61
+ insertAfter: (value, ...itemsToInsert) => {
62
+ const newItems = create(items()).insertAfter(value, ...itemsToInsert).items;
63
+ setItems(newItems);
64
+ },
65
+ remove: (...itemOrValues) => {
66
+ const newItems = create(items()).remove(...itemOrValues).items;
67
+ setItems(newItems);
68
+ },
69
+ move: (value, to) => {
70
+ const newItems = create(items()).move(value, to).items;
71
+ setItems(newItems);
72
+ },
73
+ moveBefore: (value, ...values) => {
74
+ const newItems = create(items()).moveBefore(value, ...values).items;
75
+ setItems(newItems);
76
+ },
77
+ moveAfter: (value, ...values) => {
78
+ const newItems = create(items()).moveAfter(value, ...values).items;
79
+ setItems(newItems);
80
+ },
81
+ reorder: (from, to) => {
82
+ const newItems = create(items()).reorder(from, to).items;
83
+ setItems(newItems);
84
+ },
85
+ append: (...itemsToAppend) => {
86
+ const newItems = create(items()).append(...itemsToAppend).items;
87
+ setItems(newItems);
88
+ },
89
+ upsert: (value, item, mode = "append") => {
90
+ const newItems = create(items()).upsert(value, item, mode).items;
91
+ setItems(newItems);
92
+ },
93
+ prepend: (...itemsToPrepend) => {
94
+ const newItems = create(items()).prepend(...itemsToPrepend).items;
95
+ setItems(newItems);
96
+ },
97
+ update: (value, item) => {
98
+ const newItems = create(items()).update(value, item).items;
99
+ setItems(newItems);
100
+ }
101
+ };
102
+ }
103
+ function useListSelection(props) {
104
+ const splittedProps = createMemo(() => {
105
+ const rawProps = typeof props === "function" ? props() : props;
106
+ return splitProps(rawProps, [
107
+ "collection",
108
+ "selectionMode",
109
+ "deselectable",
110
+ "initialSelectedValues",
111
+ "resetOnCollectionChange"
112
+ ]);
113
+ });
114
+ const createSelection = (values = []) => {
115
+ const [localProps] = splittedProps();
116
+ const selection2 = new Selection(values);
117
+ selection2.selectionMode = localProps.selectionMode ?? "single";
118
+ selection2.deselectable = localProps.deselectable ?? true;
119
+ return selection2;
120
+ };
121
+ const init = () => {
122
+ const [localProps] = splittedProps();
123
+ return createSelection(localProps.initialSelectedValues ?? []);
124
+ };
125
+ const [selection, setSelection] = createSignal(init());
126
+ const watchDeps = () => {
127
+ const [{ collection, resetOnCollectionChange }] = splittedProps();
128
+ return [collection.getValues(), resetOnCollectionChange];
129
+ };
130
+ createEffect(
131
+ on(
132
+ watchDeps,
133
+ ([, resetOnCollectionChange]) => {
134
+ if (resetOnCollectionChange) {
135
+ setSelection(createSelection());
136
+ }
137
+ },
138
+ { defer: true }
139
+ )
140
+ );
141
+ const selectedValues = createMemo(() => Array.from(selection()));
142
+ const isEmpty = createMemo(() => selection().isEmpty());
143
+ const firstSelectedValue = createMemo(() => {
144
+ const [localProps] = splittedProps();
145
+ return selection().firstSelectedValue(localProps.collection);
146
+ });
147
+ const lastSelectedValue = createMemo(() => {
148
+ const [localProps] = splittedProps();
149
+ return selection().lastSelectedValue(localProps.collection);
150
+ });
151
+ return {
152
+ selectedValues,
153
+ isEmpty,
154
+ firstSelectedValue,
155
+ lastSelectedValue,
156
+ isSelected: (value) => {
157
+ return selection().isSelected(value);
158
+ },
159
+ isAllSelected: () => {
160
+ const [localProps] = splittedProps();
161
+ const allValues = localProps.collection.getValues();
162
+ return allValues.length > 0 && allValues.every((value) => selection().isSelected(value));
163
+ },
164
+ isSomeSelected: () => {
165
+ const [localProps] = splittedProps();
166
+ const allValues = localProps.collection.getValues();
167
+ return allValues.some((value) => selection().isSelected(value));
168
+ },
169
+ canSelect: (value) => {
170
+ const [localProps] = splittedProps();
171
+ return selection().canSelect(localProps.collection, value);
172
+ },
173
+ select: (value, forceToggle) => {
174
+ const [localProps] = splittedProps();
175
+ setSelection(selection().select(localProps.collection, value, forceToggle));
176
+ },
177
+ deselect: (value) => {
178
+ setSelection(selection().deselect(value));
179
+ },
180
+ toggle: (value) => {
181
+ const [localProps] = splittedProps();
182
+ setSelection(selection().toggleSelection(localProps.collection, value));
183
+ },
184
+ replace: (value) => {
185
+ const [localProps] = splittedProps();
186
+ setSelection(selection().replaceSelection(localProps.collection, value));
187
+ },
188
+ extend: (anchorValue, targetValue) => {
189
+ const [localProps] = splittedProps();
190
+ setSelection(selection().extendSelection(localProps.collection, anchorValue, targetValue));
191
+ },
192
+ setSelectedValues: (values) => {
193
+ setSelection(selection().setSelection(values));
194
+ },
195
+ clear: () => {
196
+ setSelection(selection().clearSelection());
197
+ },
198
+ resetSelection: () => {
199
+ setSelection(createSelection());
200
+ },
201
+ setSelection: (newSelection) => {
202
+ setSelection(selection().setSelection(newSelection));
203
+ },
204
+ setSelectionMode: (mode) => {
205
+ const newSelection = selection().copy();
206
+ newSelection.selectionMode = mode;
207
+ setSelection(newSelection);
208
+ },
209
+ setDeselectable: (deselectable) => {
210
+ const newSelection = selection().copy();
211
+ newSelection.deselectable = deselectable;
212
+ setSelection(newSelection);
213
+ }
214
+ };
215
+ }
216
+
217
+ export { createFileTreeCollection, createGridCollection, createListCollection, createTreeCollection, useListCollection, useListSelection };
@@ -77,7 +77,7 @@ var useSignaturePad = (props) => {
77
77
 
78
78
  // src/components/signature-pad/signature-pad-root.tsx
79
79
  var SignaturePadRoot = (props) => {
80
- const [useSignaturePadProps, localProps] = createSplitProps()(props, ["id", "ids", "drawing", "disabled", "readOnly", "name", "onDraw", "onDrawEnd", "readOnly", "required", "translations"]);
80
+ const [useSignaturePadProps, localProps] = createSplitProps()(props, ["id", "ids", "defaultPaths", "drawing", "disabled", "readOnly", "name", "onDraw", "onDrawEnd", "paths", "readOnly", "required", "translations"]);
81
81
  const signaturePad2 = useSignaturePad(useSignaturePadProps);
82
82
  const mergedProps = mergeProps(() => signaturePad2().getRootProps(), localProps);
83
83
  return createComponent(SignaturePadProvider, {
@@ -151,7 +151,7 @@ var useFileUpload = (props) => {
151
151
 
152
152
  // src/components/file-upload/file-upload-root.tsx
153
153
  var FileUploadRoot = (props) => {
154
- const [fileUploadProps, localProps] = createSplitProps()(props, ["accept", "allowDrop", "capture", "directory", "disabled", "id", "ids", "invalid", "locale", "maxFiles", "maxFileSize", "minFileSize", "name", "onFileAccept", "onFileChange", "onFileReject", "preventDocumentDrop", "required", "translations", "transformFiles", "validate"]);
154
+ const [fileUploadProps, localProps] = createSplitProps()(props, ["accept", "acceptedFiles", "allowDrop", "capture", "defaultAcceptedFiles", "directory", "disabled", "id", "ids", "invalid", "locale", "maxFiles", "maxFileSize", "minFileSize", "name", "onFileAccept", "onFileChange", "onFileReject", "preventDocumentDrop", "required", "translations", "transformFiles", "validate"]);
155
155
  const fileUpload2 = useFileUpload(fileUploadProps);
156
156
  const mergedProps = mergeProps(() => fileUpload2().getRootProps(), localProps);
157
157
  return createComponent(FileUploadProvider, {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  collapsible_exports,
3
3
  useCollapsibleContext
4
- } from "./WHXDBQDP.jsx";
4
+ } from "./Z2BXVXSV.jsx";
5
5
  import {
6
6
  RenderStrategyProvider,
7
7
  splitRenderStrategyProps,
@@ -13,12 +13,12 @@ import {
13
13
  import {
14
14
  ark
15
15
  } from "./UFYZ7HLU.jsx";
16
- import {
17
- useEnvironmentContext
18
- } from "./E2L62MKC.jsx";
19
16
  import {
20
17
  useLocaleContext
21
18
  } from "./YUC6JE7K.jsx";
19
+ import {
20
+ useEnvironmentContext
21
+ } from "./E2L62MKC.jsx";
22
22
  import {
23
23
  createContext
24
24
  } from "./TVCIHLER.jsx";
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  ark
9
9
  } from "./UFYZ7HLU.jsx";
10
- import {
11
- useEnvironmentContext
12
- } from "./E2L62MKC.jsx";
13
10
  import {
14
11
  useLocaleContext
15
12
  } from "./YUC6JE7K.jsx";
13
+ import {
14
+ useEnvironmentContext
15
+ } from "./E2L62MKC.jsx";
16
16
  import {
17
17
  createContext
18
18
  } from "./TVCIHLER.jsx";
@@ -110,12 +110,14 @@ var SignaturePadRoot = (props) => {
110
110
  const [useSignaturePadProps, localProps] = createSplitProps()(props, [
111
111
  "id",
112
112
  "ids",
113
+ "defaultPaths",
113
114
  "drawing",
114
115
  "disabled",
115
116
  "readOnly",
116
117
  "name",
117
118
  "onDraw",
118
119
  "onDrawEnd",
120
+ "paths",
119
121
  "readOnly",
120
122
  "required",
121
123
  "translations"
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  ark
9
9
  } from "./UFYZ7HLU.jsx";
10
- import {
11
- useEnvironmentContext
12
- } from "./E2L62MKC.jsx";
13
10
  import {
14
11
  useLocaleContext
15
12
  } from "./YUC6JE7K.jsx";
13
+ import {
14
+ useEnvironmentContext
15
+ } from "./E2L62MKC.jsx";
16
16
  import {
17
17
  createContext
18
18
  } from "./TVCIHLER.jsx";
@@ -183,8 +183,10 @@ var useFileUpload = (props) => {
183
183
  var FileUploadRoot = (props) => {
184
184
  const [fileUploadProps, localProps] = createSplitProps()(props, [
185
185
  "accept",
186
+ "acceptedFiles",
186
187
  "allowDrop",
187
188
  "capture",
189
+ "defaultAcceptedFiles",
188
190
  "directory",
189
191
  "disabled",
190
192
  "id",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  collapsible_exports
3
- } from "./WHXDBQDP.jsx";
3
+ } from "./Z2BXVXSV.jsx";
4
4
  import {
5
5
  RenderStrategyProvider,
6
6
  splitRenderStrategyProps,
@@ -12,12 +12,12 @@ import {
12
12
  import {
13
13
  ark
14
14
  } from "./UFYZ7HLU.jsx";
15
- import {
16
- useEnvironmentContext
17
- } from "./E2L62MKC.jsx";
18
15
  import {
19
16
  useLocaleContext
20
17
  } from "./YUC6JE7K.jsx";
18
+ import {
19
+ useEnvironmentContext
20
+ } from "./E2L62MKC.jsx";
21
21
  import {
22
22
  createContext
23
23
  } from "./TVCIHLER.jsx";
@@ -0,0 +1,321 @@
1
+ import { useTreeViewContext, tree_view_exports, useTreeView } from './ZLUEV2MH.js';
2
+ import { createTreeCollection } from './7HON4OS6.js';
3
+ import { createSplitProps } from './ZMHI4GDJ.js';
4
+ import { createContext } from './TROPIN4C.js';
5
+ import { __export } from './ESLJRKWD.js';
6
+ import { createComponent, mergeProps, Show, Index as Index$1, template, insert, memo, effect, setAttribute, Dynamic, untrack } from 'solid-js/web';
7
+ import { getRootNode, nodeToString, nodeToValue, keyPathToKey, jsonNodeToElement, getAccessibleDescription } from '@zag-js/json-tree-utils';
8
+ import { Index, splitProps, createMemo, For } from 'solid-js';
9
+
10
+ // src/components/json-tree-view/get-branch-value.ts
11
+ function getBranchValues(tree, depth) {
12
+ let values = [];
13
+ tree.visit({
14
+ onEnter: (node, indexPath) => {
15
+ if (indexPath.length === 0) return;
16
+ if (tree.isBranchNode(node) && indexPath.length <= depth) {
17
+ values.push(tree.getNodeValue(node));
18
+ }
19
+ }
20
+ });
21
+ return values;
22
+ }
23
+
24
+ // src/components/json-tree-view/json-tree-view-props-context.ts
25
+ var [JsonTreeViewPropsProvider, useJsonTreeViewPropsContext] = createContext({
26
+ hookName: "useJsonTreeViewPropsContext",
27
+ providerName: "<JsonTreeViewPropsProvider />"
28
+ });
29
+
30
+ // src/components/json-tree-view/json-tree-view-root.tsx
31
+ var splitJsonTreeViewProps = createSplitProps();
32
+ var JsonTreeViewRoot = (props) => {
33
+ const [jsonTreeProps, localProps] = splitJsonTreeViewProps(props, ["maxPreviewItems", "collapseStringsAfterLength", "quotesOnKeys", "groupArraysAfterLength", "showNonenumerable"]);
34
+ const [jsonProps, restProps] = splitProps(localProps, ["data", "defaultExpandedDepth"]);
35
+ const collection = createMemo(() => {
36
+ return createTreeCollection({
37
+ nodeToValue,
38
+ nodeToString,
39
+ rootNode: getRootNode(jsonProps.data)
40
+ });
41
+ });
42
+ const defaultExpandedValue = createMemo(() => {
43
+ return jsonProps.defaultExpandedDepth != null ? getBranchValues(collection(), jsonProps.defaultExpandedDepth) : void 0;
44
+ });
45
+ return createComponent(JsonTreeViewPropsProvider, {
46
+ value: jsonTreeProps,
47
+ get children() {
48
+ return createComponent(tree_view_exports.Root, mergeProps({
49
+ "data-scope": "json-tree-view",
50
+ get collection() {
51
+ return collection();
52
+ },
53
+ get defaultExpandedValue() {
54
+ return defaultExpandedValue();
55
+ }
56
+ }, restProps, {
57
+ get children() {
58
+ return props.children;
59
+ }
60
+ }));
61
+ }
62
+ });
63
+ };
64
+ var JsonTreeViewRootProvider = (props) => {
65
+ return createComponent(tree_view_exports.RootProvider, mergeProps({
66
+ "data-scope": "json-tree-view"
67
+ }, props));
68
+ };
69
+ var _tmpl$ = /* @__PURE__ */ template(`<span data-kind=key>`);
70
+ var _tmpl$2 = /* @__PURE__ */ template(`<span data-kind=colon>: `);
71
+ var JsonTreeViewKeyNode = (props) => {
72
+ const key = createMemo(() => keyPathToKey(props.node.keyPath));
73
+ return [(() => {
74
+ var _el$ = _tmpl$();
75
+ insert(_el$, (() => {
76
+ var _c$ = memo(() => !!props.showQuotes);
77
+ return () => _c$() ? `"${key()}"` : key();
78
+ })());
79
+ effect(() => setAttribute(_el$, "data-non-enumerable", props.node.isNonEnumerable ? "" : void 0));
80
+ return _el$;
81
+ })(), _tmpl$2()];
82
+ };
83
+ var JsonTreeViewValueNode = (props) => {
84
+ if (props.node.type === "text") {
85
+ return memo(() => props.renderValue?.(props.node) ?? props.node.value);
86
+ }
87
+ return createComponent(Dynamic, {
88
+ get component() {
89
+ return props.node.tagName;
90
+ },
91
+ get ["data-root"]() {
92
+ return props.node.properties.root ? "" : void 0;
93
+ },
94
+ get ["data-type"]() {
95
+ return props.node.properties.nodeType;
96
+ },
97
+ get ["data-kind"]() {
98
+ return props.node.properties.kind;
99
+ },
100
+ get children() {
101
+ return createComponent(For, {
102
+ get each() {
103
+ return props.node.children;
104
+ },
105
+ children: (child) => createComponent(JsonTreeViewValueNode, {
106
+ node: child,
107
+ get renderValue() {
108
+ return props.renderValue;
109
+ }
110
+ })
111
+ });
112
+ }
113
+ });
114
+ };
115
+
116
+ // src/components/json-tree-view/json-tree-view-node.tsx
117
+ var scopeProps = {
118
+ "data-scope": "json-tree-view"
119
+ };
120
+ function JsonTreeViewNode(props) {
121
+ const tree = useTreeViewContext();
122
+ const nodeState = createMemo(() => tree().getNodeState({
123
+ node: props.node,
124
+ indexPath: props.indexPath
125
+ }));
126
+ const options = useJsonTreeViewPropsContext();
127
+ const key = createMemo(() => keyPathToKey(props.node.keyPath, {
128
+ excludeRoot: true
129
+ }));
130
+ const valueNode = createMemo(() => jsonNodeToElement(props.node, options));
131
+ const nodeProps = createMemo(() => {
132
+ const desc = getAccessibleDescription(props.node);
133
+ const line = props.indexPath.reduce((acc, curr) => acc + curr, 1);
134
+ const lineLength = props.indexPath.length - 1;
135
+ return {
136
+ ...scopeProps,
137
+ "aria-label": desc,
138
+ "data-line": line,
139
+ style: {
140
+ ["--line-length"]: lineLength
141
+ }
142
+ };
143
+ });
144
+ return createComponent(tree_view_exports.NodeProvider, {
145
+ get node() {
146
+ return props.node;
147
+ },
148
+ get indexPath() {
149
+ return props.indexPath;
150
+ },
151
+ get children() {
152
+ return createComponent(Show, {
153
+ get when() {
154
+ return nodeState().isBranch;
155
+ },
156
+ get fallback() {
157
+ return createComponent(tree_view_exports.Item, mergeProps(nodeProps, {
158
+ get children() {
159
+ return createComponent(tree_view_exports.ItemText, mergeProps(scopeProps, {
160
+ get children() {
161
+ return [createComponent(Show, {
162
+ get when() {
163
+ return key();
164
+ },
165
+ get children() {
166
+ return createComponent(JsonTreeViewKeyNode, {
167
+ get node() {
168
+ return props.node;
169
+ },
170
+ get showQuotes() {
171
+ return options.quotesOnKeys;
172
+ }
173
+ });
174
+ }
175
+ }), createComponent(JsonTreeViewValueNode, {
176
+ get node() {
177
+ return valueNode();
178
+ },
179
+ get renderValue() {
180
+ return props.renderValue;
181
+ }
182
+ })];
183
+ }
184
+ }));
185
+ }
186
+ }));
187
+ },
188
+ get children() {
189
+ return createComponent(tree_view_exports.Branch, mergeProps(scopeProps, {
190
+ get children() {
191
+ return [createComponent(tree_view_exports.BranchControl, mergeProps(nodeProps, {
192
+ get children() {
193
+ return [createComponent(Show, {
194
+ get when() {
195
+ return props.arrow;
196
+ },
197
+ get children() {
198
+ return createComponent(tree_view_exports.BranchIndicator, mergeProps(scopeProps, {
199
+ get children() {
200
+ return props.arrow;
201
+ }
202
+ }));
203
+ }
204
+ }), createComponent(tree_view_exports.BranchText, mergeProps(scopeProps, {
205
+ get children() {
206
+ return [createComponent(Show, {
207
+ get when() {
208
+ return key();
209
+ },
210
+ get children() {
211
+ return createComponent(JsonTreeViewKeyNode, {
212
+ get node() {
213
+ return props.node;
214
+ },
215
+ get showQuotes() {
216
+ return options.quotesOnKeys;
217
+ }
218
+ });
219
+ }
220
+ }), createComponent(JsonTreeViewValueNode, {
221
+ get node() {
222
+ return valueNode();
223
+ },
224
+ get renderValue() {
225
+ return props.renderValue;
226
+ }
227
+ })];
228
+ }
229
+ }))];
230
+ }
231
+ })), createComponent(tree_view_exports.BranchContent, mergeProps(scopeProps, {
232
+ get children() {
233
+ return [createComponent(Show, {
234
+ get when() {
235
+ return typeof props.indentGuide === "boolean";
236
+ },
237
+ get fallback() {
238
+ return props.indentGuide;
239
+ },
240
+ get children() {
241
+ return createComponent(tree_view_exports.BranchIndentGuide, {});
242
+ }
243
+ }), createComponent(Index$1, {
244
+ get each() {
245
+ return props.node.children;
246
+ },
247
+ children: (child, index) => createComponent(JsonTreeViewNode, mergeProps(props, {
248
+ get node() {
249
+ return child();
250
+ },
251
+ get indexPath() {
252
+ return [...props.indexPath, index];
253
+ }
254
+ }))
255
+ })];
256
+ }
257
+ }))];
258
+ }
259
+ }));
260
+ }
261
+ });
262
+ }
263
+ });
264
+ }
265
+
266
+ // src/components/json-tree-view/json-tree-view-tree.tsx
267
+ var splitTreeNodeProps = createSplitProps();
268
+ var JsonTreeViewTree = (props) => {
269
+ const [nodeProps, treeProps] = splitTreeNodeProps(props, ["arrow", "indentGuide", "renderValue"]);
270
+ const tree = useTreeViewContext();
271
+ const children = () => tree().collection.getNodeChildren(tree().collection.rootNode);
272
+ return createComponent(tree_view_exports.Tree, mergeProps({
273
+ "data-scope": "json-tree-view"
274
+ }, treeProps, {
275
+ get children() {
276
+ return createComponent(Index, {
277
+ get each() {
278
+ return children();
279
+ },
280
+ children: (child, index) => createComponent(JsonTreeViewNode, mergeProps({
281
+ get node() {
282
+ return child();
283
+ },
284
+ indexPath: [index]
285
+ }, nodeProps))
286
+ });
287
+ }
288
+ }));
289
+ };
290
+ var useJsonTreeView = (props) => {
291
+ const [jsonProps, restProps] = splitProps(props, ["data", "defaultExpandedDepth"]);
292
+ const collection = createMemo(() => {
293
+ return createTreeCollection({
294
+ nodeToValue: nodeToValue,
295
+ nodeToString: nodeToString,
296
+ rootNode: getRootNode(jsonProps.data)
297
+ });
298
+ });
299
+ const defaultExpandedValue = createMemo(() => {
300
+ return jsonProps.defaultExpandedDepth != null ? getBranchValues(collection(), jsonProps.defaultExpandedDepth) : void 0;
301
+ });
302
+ const machineProps = createMemo(() => {
303
+ return {
304
+ defaultExpandedValue: untrack(defaultExpandedValue),
305
+ ...restProps,
306
+ collection: collection(),
307
+ typeahead: false
308
+ };
309
+ });
310
+ return useTreeView(machineProps);
311
+ };
312
+
313
+ // src/components/json-tree-view/json-tree-view.tsx
314
+ var json_tree_view_exports = {};
315
+ __export(json_tree_view_exports, {
316
+ Root: () => JsonTreeViewRoot,
317
+ RootProvider: () => JsonTreeViewRootProvider,
318
+ Tree: () => JsonTreeViewTree
319
+ });
320
+
321
+ export { JsonTreeViewRoot, JsonTreeViewRootProvider, JsonTreeViewTree, json_tree_view_exports, useJsonTreeView };