@proyecto-viviana/solid-stately 0.1.4 → 0.2.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 (217) hide show
  1. package/dist/index.js +226 -504
  2. package/dist/index.jsx +6407 -0
  3. package/package.json +3 -5
  4. package/dist/index.js.map +0 -1
  5. package/src/autocomplete/createAutocompleteState.d.ts +0 -46
  6. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  7. package/src/autocomplete/createAutocompleteState.ts +0 -90
  8. package/src/autocomplete/index.d.ts +0 -2
  9. package/src/autocomplete/index.d.ts.map +0 -1
  10. package/src/autocomplete/index.ts +0 -5
  11. package/src/calendar/createCalendarState.d.ts +0 -130
  12. package/src/calendar/createCalendarState.d.ts.map +0 -1
  13. package/src/calendar/createCalendarState.ts +0 -461
  14. package/src/calendar/createDateFieldState.d.ts +0 -110
  15. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  16. package/src/calendar/createDateFieldState.ts +0 -562
  17. package/src/calendar/createRangeCalendarState.d.ts +0 -146
  18. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  19. package/src/calendar/createRangeCalendarState.ts +0 -535
  20. package/src/calendar/createTimeFieldState.d.ts +0 -95
  21. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  22. package/src/calendar/createTimeFieldState.ts +0 -483
  23. package/src/calendar/index.d.ts +0 -7
  24. package/src/calendar/index.d.ts.map +0 -1
  25. package/src/calendar/index.ts +0 -81
  26. package/src/checkbox/createCheckboxGroupState.d.ts +0 -71
  27. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  28. package/src/checkbox/createCheckboxGroupState.ts +0 -193
  29. package/src/checkbox/index.d.ts +0 -2
  30. package/src/checkbox/index.d.ts.map +0 -1
  31. package/src/checkbox/index.ts +0 -5
  32. package/src/collections/ListCollection.d.ts +0 -37
  33. package/src/collections/ListCollection.d.ts.map +0 -1
  34. package/src/collections/ListCollection.ts +0 -146
  35. package/src/collections/createListState.d.ts +0 -79
  36. package/src/collections/createListState.d.ts.map +0 -1
  37. package/src/collections/createListState.ts +0 -264
  38. package/src/collections/createMenuState.d.ts +0 -50
  39. package/src/collections/createMenuState.d.ts.map +0 -1
  40. package/src/collections/createMenuState.ts +0 -106
  41. package/src/collections/createSelectionState.d.ts +0 -76
  42. package/src/collections/createSelectionState.d.ts.map +0 -1
  43. package/src/collections/createSelectionState.ts +0 -336
  44. package/src/collections/index.d.ts +0 -6
  45. package/src/collections/index.d.ts.map +0 -1
  46. package/src/collections/index.ts +0 -46
  47. package/src/collections/types.d.ts +0 -147
  48. package/src/collections/types.d.ts.map +0 -1
  49. package/src/collections/types.ts +0 -169
  50. package/src/color/Color.d.ts +0 -28
  51. package/src/color/Color.d.ts.map +0 -1
  52. package/src/color/Color.ts +0 -951
  53. package/src/color/createColorAreaState.d.ts +0 -76
  54. package/src/color/createColorAreaState.d.ts.map +0 -1
  55. package/src/color/createColorAreaState.ts +0 -293
  56. package/src/color/createColorFieldState.d.ts +0 -55
  57. package/src/color/createColorFieldState.d.ts.map +0 -1
  58. package/src/color/createColorFieldState.ts +0 -292
  59. package/src/color/createColorSliderState.d.ts +0 -67
  60. package/src/color/createColorSliderState.d.ts.map +0 -1
  61. package/src/color/createColorSliderState.ts +0 -241
  62. package/src/color/createColorWheelState.d.ts +0 -51
  63. package/src/color/createColorWheelState.d.ts.map +0 -1
  64. package/src/color/createColorWheelState.ts +0 -211
  65. package/src/color/index.d.ts +0 -10
  66. package/src/color/index.d.ts.map +0 -1
  67. package/src/color/index.ts +0 -47
  68. package/src/color/types.d.ts +0 -106
  69. package/src/color/types.d.ts.map +0 -1
  70. package/src/color/types.ts +0 -127
  71. package/src/combobox/createComboBoxState.d.ts +0 -125
  72. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  73. package/src/combobox/createComboBoxState.ts +0 -703
  74. package/src/combobox/index.d.ts +0 -5
  75. package/src/combobox/index.d.ts.map +0 -1
  76. package/src/combobox/index.ts +0 -13
  77. package/src/disclosure/createDisclosureState.d.ts +0 -64
  78. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  79. package/src/disclosure/createDisclosureState.ts +0 -193
  80. package/src/disclosure/index.d.ts +0 -2
  81. package/src/disclosure/index.d.ts.map +0 -1
  82. package/src/disclosure/index.ts +0 -9
  83. package/src/dnd/createDragState.d.ts +0 -59
  84. package/src/dnd/createDragState.d.ts.map +0 -1
  85. package/src/dnd/createDragState.ts +0 -153
  86. package/src/dnd/createDraggableCollectionState.d.ts +0 -57
  87. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  88. package/src/dnd/createDraggableCollectionState.ts +0 -165
  89. package/src/dnd/createDropState.d.ts +0 -61
  90. package/src/dnd/createDropState.d.ts.map +0 -1
  91. package/src/dnd/createDropState.ts +0 -212
  92. package/src/dnd/createDroppableCollectionState.d.ts +0 -78
  93. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  94. package/src/dnd/createDroppableCollectionState.ts +0 -357
  95. package/src/dnd/index.d.ts +0 -11
  96. package/src/dnd/index.d.ts.map +0 -1
  97. package/src/dnd/index.ts +0 -76
  98. package/src/dnd/types.d.ts +0 -264
  99. package/src/dnd/types.d.ts.map +0 -1
  100. package/src/dnd/types.ts +0 -317
  101. package/src/form/createFormValidationState.d.ts +0 -100
  102. package/src/form/createFormValidationState.d.ts.map +0 -1
  103. package/src/form/createFormValidationState.ts +0 -389
  104. package/src/form/index.d.ts +0 -2
  105. package/src/form/index.d.ts.map +0 -1
  106. package/src/form/index.ts +0 -15
  107. package/src/grid/createGridState.d.ts +0 -12
  108. package/src/grid/createGridState.d.ts.map +0 -1
  109. package/src/grid/createGridState.ts +0 -327
  110. package/src/grid/index.d.ts +0 -7
  111. package/src/grid/index.d.ts.map +0 -1
  112. package/src/grid/index.ts +0 -13
  113. package/src/grid/types.d.ts +0 -156
  114. package/src/grid/types.d.ts.map +0 -1
  115. package/src/grid/types.ts +0 -179
  116. package/src/index.d.ts +0 -26
  117. package/src/index.d.ts.map +0 -1
  118. package/src/index.ts +0 -383
  119. package/src/numberfield/createNumberFieldState.d.ts +0 -65
  120. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  121. package/src/numberfield/createNumberFieldState.ts +0 -383
  122. package/src/numberfield/index.d.ts +0 -2
  123. package/src/numberfield/index.d.ts.map +0 -1
  124. package/src/numberfield/index.ts +0 -5
  125. package/src/overlays/createOverlayTriggerState.d.ts +0 -32
  126. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  127. package/src/overlays/createOverlayTriggerState.ts +0 -67
  128. package/src/overlays/index.d.ts +0 -2
  129. package/src/overlays/index.d.ts.map +0 -1
  130. package/src/overlays/index.ts +0 -5
  131. package/src/radio/createRadioGroupState.d.ts +0 -77
  132. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  133. package/src/radio/createRadioGroupState.ts +0 -201
  134. package/src/radio/index.d.ts +0 -2
  135. package/src/radio/index.d.ts.map +0 -1
  136. package/src/radio/index.ts +0 -6
  137. package/src/searchfield/createSearchFieldState.d.ts +0 -25
  138. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  139. package/src/searchfield/createSearchFieldState.ts +0 -62
  140. package/src/searchfield/index.d.ts +0 -3
  141. package/src/searchfield/index.d.ts.map +0 -1
  142. package/src/searchfield/index.ts +0 -5
  143. package/src/select/createSelectState.d.ts +0 -73
  144. package/src/select/createSelectState.d.ts.map +0 -1
  145. package/src/select/createSelectState.ts +0 -181
  146. package/src/select/index.d.ts +0 -2
  147. package/src/select/index.d.ts.map +0 -1
  148. package/src/select/index.ts +0 -5
  149. package/src/slider/createSliderState.d.ts +0 -72
  150. package/src/slider/createSliderState.d.ts.map +0 -1
  151. package/src/slider/createSliderState.ts +0 -211
  152. package/src/slider/index.d.ts +0 -3
  153. package/src/slider/index.d.ts.map +0 -1
  154. package/src/slider/index.ts +0 -6
  155. package/src/ssr/index.d.ts +0 -28
  156. package/src/ssr/index.d.ts.map +0 -1
  157. package/src/ssr/index.ts +0 -41
  158. package/src/table/TableCollection.d.ts +0 -52
  159. package/src/table/TableCollection.d.ts.map +0 -1
  160. package/src/table/TableCollection.ts +0 -388
  161. package/src/table/createTableState.d.ts +0 -12
  162. package/src/table/createTableState.d.ts.map +0 -1
  163. package/src/table/createTableState.ts +0 -127
  164. package/src/table/index.d.ts +0 -8
  165. package/src/table/index.d.ts.map +0 -1
  166. package/src/table/index.ts +0 -18
  167. package/src/table/types.d.ts +0 -139
  168. package/src/table/types.d.ts.map +0 -1
  169. package/src/table/types.ts +0 -150
  170. package/src/tabs/createTabListState.d.ts +0 -68
  171. package/src/tabs/createTabListState.d.ts.map +0 -1
  172. package/src/tabs/createTabListState.ts +0 -240
  173. package/src/tabs/index.d.ts +0 -2
  174. package/src/tabs/index.d.ts.map +0 -1
  175. package/src/tabs/index.ts +0 -7
  176. package/src/textfield/createTextFieldState.d.ts +0 -30
  177. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  178. package/src/textfield/createTextFieldState.ts +0 -75
  179. package/src/textfield/index.d.ts +0 -2
  180. package/src/textfield/index.d.ts.map +0 -1
  181. package/src/textfield/index.ts +0 -5
  182. package/src/toast/createToastState.d.ts +0 -118
  183. package/src/toast/createToastState.d.ts.map +0 -1
  184. package/src/toast/createToastState.ts +0 -316
  185. package/src/toast/index.d.ts +0 -2
  186. package/src/toast/index.d.ts.map +0 -1
  187. package/src/toast/index.ts +0 -11
  188. package/src/toggle/createToggleState.d.ts +0 -34
  189. package/src/toggle/createToggleState.d.ts.map +0 -1
  190. package/src/toggle/createToggleState.ts +0 -94
  191. package/src/toggle/index.d.ts +0 -2
  192. package/src/toggle/index.d.ts.map +0 -1
  193. package/src/toggle/index.ts +0 -5
  194. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  195. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  196. package/src/tooltip/createTooltipTriggerState.ts +0 -183
  197. package/src/tooltip/index.d.ts +0 -2
  198. package/src/tooltip/index.d.ts.map +0 -1
  199. package/src/tooltip/index.ts +0 -6
  200. package/src/tree/TreeCollection.d.ts +0 -40
  201. package/src/tree/TreeCollection.d.ts.map +0 -1
  202. package/src/tree/TreeCollection.ts +0 -175
  203. package/src/tree/createTreeState.d.ts +0 -14
  204. package/src/tree/createTreeState.d.ts.map +0 -1
  205. package/src/tree/createTreeState.ts +0 -392
  206. package/src/tree/index.d.ts +0 -7
  207. package/src/tree/index.d.ts.map +0 -1
  208. package/src/tree/index.ts +0 -13
  209. package/src/tree/types.d.ts +0 -157
  210. package/src/tree/types.d.ts.map +0 -1
  211. package/src/tree/types.ts +0 -174
  212. package/src/utils/index.d.ts +0 -2
  213. package/src/utils/index.d.ts.map +0 -1
  214. package/src/utils/index.ts +0 -1
  215. package/src/utils/reactivity.d.ts +0 -28
  216. package/src/utils/reactivity.d.ts.map +0 -1
  217. package/src/utils/reactivity.ts +0 -36
@@ -1,183 +0,0 @@
1
- /**
2
- * Manages state for a tooltip trigger.
3
- * Based on @react-stately/tooltip useTooltipTriggerState.
4
- *
5
- * Tracks whether the tooltip is open, and provides methods to toggle this state.
6
- * Ensures only one tooltip is open at a time and controls the delay for showing a tooltip.
7
- */
8
-
9
- import { createSignal, onCleanup, type Accessor } from 'solid-js';
10
- import { createOverlayTriggerState, type OverlayTriggerProps } from '../overlays';
11
- import { isServer } from '../ssr';
12
-
13
- // Default delays (in ms)
14
- const TOOLTIP_DELAY = 1500;
15
- const TOOLTIP_COOLDOWN = 500;
16
-
17
- export interface TooltipTriggerProps extends OverlayTriggerProps {
18
- /** The delay time in milliseconds for the tooltip to show up. */
19
- delay?: number;
20
- /** The delay time in milliseconds for the tooltip to close. */
21
- closeDelay?: number;
22
- }
23
-
24
- export interface TooltipTriggerState {
25
- /** Whether the tooltip is currently showing. */
26
- readonly isOpen: Accessor<boolean>;
27
- /**
28
- * Shows the tooltip. By default, the tooltip becomes visible after a delay
29
- * depending on a global warmup timer. The `immediate` option shows the
30
- * tooltip immediately instead.
31
- */
32
- open(immediate?: boolean): void;
33
- /** Hides the tooltip. */
34
- close(immediate?: boolean): void;
35
- }
36
-
37
- // Global state for coordinating tooltips
38
- let tooltips: Record<string, (immediate?: boolean) => void> = {};
39
- let tooltipId = 0;
40
- let globalWarmedUp = false;
41
- let globalWarmUpTimeout: ReturnType<typeof setTimeout> | null = null;
42
- let globalCooldownTimeout: ReturnType<typeof setTimeout> | null = null;
43
-
44
- /**
45
- * Resets the global tooltip state. Useful for testing.
46
- * @internal
47
- */
48
- export function resetTooltipState(): void {
49
- tooltips = {};
50
- tooltipId = 0;
51
- globalWarmedUp = false;
52
- if (globalWarmUpTimeout) {
53
- clearTimeout(globalWarmUpTimeout);
54
- globalWarmUpTimeout = null;
55
- }
56
- if (globalCooldownTimeout) {
57
- clearTimeout(globalCooldownTimeout);
58
- globalCooldownTimeout = null;
59
- }
60
- }
61
-
62
- /**
63
- * Manages state for a tooltip trigger. Tracks whether the tooltip is open, and provides
64
- * methods to toggle this state. Ensures only one tooltip is open at a time and controls
65
- * the delay for showing a tooltip.
66
- */
67
- export function createTooltipTriggerState(
68
- props: TooltipTriggerProps = {}
69
- ): TooltipTriggerState {
70
- const delay = () => props.delay ?? TOOLTIP_DELAY;
71
- const closeDelay = () => props.closeDelay ?? TOOLTIP_COOLDOWN;
72
-
73
- const overlayState = createOverlayTriggerState(props);
74
- const id = `tooltip-${++tooltipId}`;
75
-
76
- let closeTimeout: ReturnType<typeof setTimeout> | null = null;
77
- const [closeCallback, setCloseCallback] = createSignal<() => void>(() => overlayState.close());
78
-
79
- const ensureTooltipEntry = () => {
80
- tooltips[id] = hideTooltip;
81
- };
82
-
83
- const closeOpenTooltips = () => {
84
- for (const hideTooltipId in tooltips) {
85
- if (hideTooltipId !== id) {
86
- tooltips[hideTooltipId](true);
87
- delete tooltips[hideTooltipId];
88
- }
89
- }
90
- };
91
-
92
- const showTooltip = () => {
93
- if (closeTimeout) {
94
- clearTimeout(closeTimeout);
95
- closeTimeout = null;
96
- }
97
- closeOpenTooltips();
98
- ensureTooltipEntry();
99
- globalWarmedUp = true;
100
- overlayState.open();
101
-
102
- if (globalWarmUpTimeout) {
103
- clearTimeout(globalWarmUpTimeout);
104
- globalWarmUpTimeout = null;
105
- }
106
- if (globalCooldownTimeout) {
107
- clearTimeout(globalCooldownTimeout);
108
- globalCooldownTimeout = null;
109
- }
110
- };
111
-
112
- const hideTooltip = (immediate?: boolean) => {
113
- if (immediate || closeDelay() <= 0) {
114
- if (closeTimeout) {
115
- clearTimeout(closeTimeout);
116
- closeTimeout = null;
117
- }
118
- closeCallback()();
119
- } else if (!closeTimeout) {
120
- closeTimeout = setTimeout(() => {
121
- closeTimeout = null;
122
- closeCallback()();
123
- }, closeDelay());
124
- }
125
-
126
- if (globalWarmUpTimeout) {
127
- clearTimeout(globalWarmUpTimeout);
128
- globalWarmUpTimeout = null;
129
- }
130
-
131
- if (globalWarmedUp) {
132
- if (globalCooldownTimeout) {
133
- clearTimeout(globalCooldownTimeout);
134
- }
135
- globalCooldownTimeout = setTimeout(() => {
136
- delete tooltips[id];
137
- globalCooldownTimeout = null;
138
- globalWarmedUp = false;
139
- }, Math.max(TOOLTIP_COOLDOWN, closeDelay()));
140
- }
141
- };
142
-
143
- const warmupTooltip = () => {
144
- closeOpenTooltips();
145
- ensureTooltipEntry();
146
-
147
- if (!overlayState.isOpen() && !globalWarmUpTimeout && !globalWarmedUp) {
148
- globalWarmUpTimeout = setTimeout(() => {
149
- globalWarmUpTimeout = null;
150
- globalWarmedUp = true;
151
- showTooltip();
152
- }, delay());
153
- } else if (!overlayState.isOpen()) {
154
- showTooltip();
155
- }
156
- };
157
-
158
- // Update close callback when overlayState.close changes
159
- setCloseCallback(() => overlayState.close);
160
-
161
- // Cleanup on unmount
162
- onCleanup(() => {
163
- if (closeTimeout) {
164
- clearTimeout(closeTimeout);
165
- }
166
- if (tooltips[id]) {
167
- delete tooltips[id];
168
- }
169
- });
170
-
171
- return {
172
- isOpen: overlayState.isOpen,
173
- open: (immediate?: boolean) => {
174
- if (isServer) return;
175
- if (!immediate && delay() > 0 && !closeTimeout) {
176
- warmupTooltip();
177
- } else {
178
- showTooltip();
179
- }
180
- },
181
- close: hideTooltip,
182
- };
183
- }
@@ -1,2 +0,0 @@
1
- export { createTooltipTriggerState, resetTooltipState, type TooltipTriggerProps, type TooltipTriggerState, } from './createTooltipTriggerState';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,6BAA6B,CAAC"}
@@ -1,6 +0,0 @@
1
- export {
2
- createTooltipTriggerState,
3
- resetTooltipState,
4
- type TooltipTriggerProps,
5
- type TooltipTriggerState,
6
- } from './createTooltipTriggerState';
@@ -1,40 +0,0 @@
1
- /**
2
- * TreeCollection implementation.
3
- * Based on @react-stately/tree/TreeCollection.
4
- *
5
- * A flattened view of tree nodes that respects expanded state.
6
- * Only visible nodes (root + expanded children) are included in iteration.
7
- */
8
- import type { Key } from '../collections/types';
9
- import type { TreeCollection as ITreeCollection, TreeNode, TreeItemData } from './types';
10
- /**
11
- * Creates a TreeCollection from hierarchical data.
12
- * The collection is flattened based on expanded keys.
13
- */
14
- export declare class TreeCollection<T> implements ITreeCollection<T> {
15
- private keyMap;
16
- private visibleKeys;
17
- private _rows;
18
- constructor(items: TreeItemData<T>[], expandedKeys: Set<Key>);
19
- private buildCollection;
20
- get size(): number;
21
- get rows(): TreeNode<T>[];
22
- get rowCount(): number;
23
- getKeys(): Iterable<Key>;
24
- getItem(key: Key): TreeNode<T> | null;
25
- at(index: number): TreeNode<T> | null;
26
- getKeyBefore(key: Key): Key | null;
27
- getKeyAfter(key: Key): Key | null;
28
- getFirstKey(): Key | null;
29
- getLastKey(): Key | null;
30
- getChildren(key: Key): Iterable<TreeNode<T>>;
31
- getTextValue(key: Key): string;
32
- getParentKey(key: Key): Key | null;
33
- [Symbol.iterator](): Iterator<TreeNode<T>>;
34
- }
35
- /**
36
- * Factory function to create a TreeCollection.
37
- * Useful for the collectionFactory pattern in TreeStateOptions.
38
- */
39
- export declare function createTreeCollection<T>(items: TreeItemData<T>[], expandedKeys: Set<Key>): TreeCollection<T>;
40
- //# sourceMappingURL=TreeCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TreeCollection.d.ts","sourceRoot":"","sources":["TreeCollection.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,IAAI,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEzF;;;GAGG;AACH,qBAAa,cAAc,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAoC;IAClD,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,KAAK,CAAqB;gBAGhC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EACxB,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC;IAKxB,OAAO,CAAC,eAAe;IAqEvB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAID,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC;IAIxB,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAIrC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAOrC,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IAMlC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IAMjC,WAAW,IAAI,GAAG,GAAG,IAAI;IAIzB,UAAU,IAAI,GAAG,GAAG,IAAI;IAIxB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAK5C,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;IAK9B,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI;IAKlC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAG3C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EACxB,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,GACrB,cAAc,CAAC,CAAC,CAAC,CAEnB"}
@@ -1,175 +0,0 @@
1
- /**
2
- * TreeCollection implementation.
3
- * Based on @react-stately/tree/TreeCollection.
4
- *
5
- * A flattened view of tree nodes that respects expanded state.
6
- * Only visible nodes (root + expanded children) are included in iteration.
7
- */
8
-
9
- import type { Key } from '../collections/types';
10
- import type { TreeCollection as ITreeCollection, TreeNode, TreeItemData } from './types';
11
-
12
- /**
13
- * Creates a TreeCollection from hierarchical data.
14
- * The collection is flattened based on expanded keys.
15
- */
16
- export class TreeCollection<T> implements ITreeCollection<T> {
17
- private keyMap: Map<Key, TreeNode<T>> = new Map();
18
- private visibleKeys: Key[] = [];
19
- private _rows: TreeNode<T>[] = [];
20
-
21
- constructor(
22
- items: TreeItemData<T>[],
23
- expandedKeys: Set<Key>
24
- ) {
25
- this.buildCollection(items, expandedKeys);
26
- }
27
-
28
- private buildCollection(items: TreeItemData<T>[], expandedKeys: Set<Key>): void {
29
- let globalIndex = 0;
30
-
31
- const visit = (
32
- item: TreeItemData<T>,
33
- level: number,
34
- parentKey: Key | null,
35
- indexInParent: number
36
- ): TreeNode<T> => {
37
- const hasChildren = item.children && item.children.length > 0;
38
- const isExpanded = hasChildren && expandedKeys.has(item.key);
39
-
40
- // Build child nodes first (even if not visible, for the map)
41
- const childNodes: TreeNode<T>[] = [];
42
- if (hasChildren && item.children) {
43
- for (let i = 0; i < item.children.length; i++) {
44
- const childNode = visit(item.children[i], level + 1, item.key, i);
45
- childNodes.push(childNode);
46
- }
47
- }
48
-
49
- const node: TreeNode<T> = {
50
- type: 'item',
51
- key: item.key,
52
- value: item.value,
53
- textValue: item.textValue || String(item.key),
54
- level,
55
- index: indexInParent,
56
- parentKey,
57
- hasChildNodes: hasChildren || false,
58
- childNodes,
59
- isDisabled: item.isDisabled,
60
- isExpandable: hasChildren,
61
- isExpanded,
62
- };
63
-
64
- // Always add to keyMap (for getItem lookups)
65
- this.keyMap.set(item.key, node);
66
-
67
- return node;
68
- };
69
-
70
- // First pass: build all nodes
71
- const rootNodes: TreeNode<T>[] = [];
72
- for (let i = 0; i < items.length; i++) {
73
- const node = visit(items[i], 0, null, i);
74
- rootNodes.push(node);
75
- }
76
-
77
- // Second pass: build visible rows list
78
- const addVisibleNodes = (nodes: TreeNode<T>[]): void => {
79
- for (const node of nodes) {
80
- // Update the row index for visible nodes
81
- node.rowIndex = globalIndex++;
82
- this._rows.push(node);
83
- this.visibleKeys.push(node.key);
84
-
85
- // Add children if expanded
86
- if (node.isExpanded && node.childNodes.length > 0) {
87
- addVisibleNodes(node.childNodes);
88
- }
89
- }
90
- };
91
-
92
- addVisibleNodes(rootNodes);
93
- }
94
-
95
- // Collection properties
96
-
97
- get size(): number {
98
- return this.visibleKeys.length;
99
- }
100
-
101
- get rows(): TreeNode<T>[] {
102
- return this._rows;
103
- }
104
-
105
- get rowCount(): number {
106
- return this._rows.length;
107
- }
108
-
109
- // Collection methods
110
-
111
- getKeys(): Iterable<Key> {
112
- return this.visibleKeys;
113
- }
114
-
115
- getItem(key: Key): TreeNode<T> | null {
116
- return this.keyMap.get(key) ?? null;
117
- }
118
-
119
- at(index: number): TreeNode<T> | null {
120
- if (index < 0 || index >= this._rows.length) {
121
- return null;
122
- }
123
- return this._rows[index];
124
- }
125
-
126
- getKeyBefore(key: Key): Key | null {
127
- const index = this.visibleKeys.indexOf(key);
128
- if (index <= 0) return null;
129
- return this.visibleKeys[index - 1];
130
- }
131
-
132
- getKeyAfter(key: Key): Key | null {
133
- const index = this.visibleKeys.indexOf(key);
134
- if (index < 0 || index >= this.visibleKeys.length - 1) return null;
135
- return this.visibleKeys[index + 1];
136
- }
137
-
138
- getFirstKey(): Key | null {
139
- return this.visibleKeys[0] ?? null;
140
- }
141
-
142
- getLastKey(): Key | null {
143
- return this.visibleKeys[this.visibleKeys.length - 1] ?? null;
144
- }
145
-
146
- getChildren(key: Key): Iterable<TreeNode<T>> {
147
- const node = this.keyMap.get(key);
148
- return node?.childNodes ?? [];
149
- }
150
-
151
- getTextValue(key: Key): string {
152
- const node = this.keyMap.get(key);
153
- return node?.textValue ?? '';
154
- }
155
-
156
- getParentKey(key: Key): Key | null {
157
- const node = this.keyMap.get(key);
158
- return node?.parentKey ?? null;
159
- }
160
-
161
- [Symbol.iterator](): Iterator<TreeNode<T>> {
162
- return this._rows[Symbol.iterator]();
163
- }
164
- }
165
-
166
- /**
167
- * Factory function to create a TreeCollection.
168
- * Useful for the collectionFactory pattern in TreeStateOptions.
169
- */
170
- export function createTreeCollection<T>(
171
- items: TreeItemData<T>[],
172
- expandedKeys: Set<Key>
173
- ): TreeCollection<T> {
174
- return new TreeCollection(items, expandedKeys);
175
- }
@@ -1,14 +0,0 @@
1
- /**
2
- * Tree state management for Tree components.
3
- * Based on @react-stately/tree/useTreeState.
4
- *
5
- * Manages expansion state, selection, and focus for hierarchical tree data.
6
- */
7
- import { type Accessor } from 'solid-js';
8
- import type { TreeState, TreeStateOptions, TreeCollection } from './types';
9
- /**
10
- * Creates state management for a tree component.
11
- * Handles expansion, selection, focus management, and keyboard navigation state.
12
- */
13
- export declare function createTreeState<T extends object, C extends TreeCollection<T> = TreeCollection<T>>(options: Accessor<TreeStateOptions<T, C>>): TreeState<T, C>;
14
- //# sourceMappingURL=createTreeState.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createTreeState.d.ts","sourceRoot":"","sources":["createTreeState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA8C,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EAEf,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,EAC/F,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACxC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAiWjB"}