@proyecto-viviana/solid-stately 0.2.4 → 0.3.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 (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -283
  3. package/dist/autocomplete/createAutocompleteState.d.ts +3 -2
  4. package/dist/autocomplete/index.d.ts +1 -1
  5. package/dist/calendar/createCalendarState.d.ts +22 -7
  6. package/dist/calendar/createDateFieldState.d.ts +30 -7
  7. package/dist/calendar/createDatePickerState.d.ts +60 -0
  8. package/dist/calendar/createRangeCalendarState.d.ts +27 -8
  9. package/dist/calendar/createTimeFieldState.d.ts +34 -7
  10. package/dist/calendar/index.d.ts +7 -6
  11. package/dist/checkbox/createCheckboxGroupState.d.ts +12 -3
  12. package/dist/checkbox/index.d.ts +1 -1
  13. package/dist/collections/ListCollection.d.ts +1 -1
  14. package/dist/collections/createListState.d.ts +8 -8
  15. package/dist/collections/createMenuState.d.ts +7 -7
  16. package/dist/collections/createSelectionState.d.ts +5 -5
  17. package/dist/collections/index.d.ts +5 -5
  18. package/dist/collections/types.d.ts +23 -12
  19. package/dist/color/Color.d.ts +1 -1
  20. package/dist/color/createColorAreaState.d.ts +4 -2
  21. package/dist/color/createColorFieldState.d.ts +38 -12
  22. package/dist/color/createColorSliderState.d.ts +9 -2
  23. package/dist/color/createColorWheelState.d.ts +13 -2
  24. package/dist/color/getColorChannels.d.ts +20 -0
  25. package/dist/color/index.d.ts +6 -6
  26. package/dist/color/types.d.ts +4 -4
  27. package/dist/combobox/createComboBoxState.d.ts +27 -13
  28. package/dist/combobox/index.d.ts +1 -1
  29. package/dist/data/createAsyncList.d.ts +111 -0
  30. package/dist/data/createListData.d.ts +65 -0
  31. package/dist/data/createTreeData.d.ts +65 -0
  32. package/dist/data/index.d.ts +3 -0
  33. package/dist/datepicker/index.d.ts +8 -0
  34. package/dist/disclosure/createDisclosureState.d.ts +2 -2
  35. package/dist/disclosure/index.d.ts +1 -1
  36. package/dist/dnd/createDragState.d.ts +2 -2
  37. package/dist/dnd/createDraggableCollectionState.d.ts +2 -2
  38. package/dist/dnd/createDropState.d.ts +2 -2
  39. package/dist/dnd/createDroppableCollectionState.d.ts +3 -3
  40. package/dist/dnd/index.d.ts +5 -5
  41. package/dist/dnd/types.d.ts +16 -16
  42. package/dist/form/createFormValidationState.d.ts +3 -3
  43. package/dist/form/index.d.ts +1 -1
  44. package/dist/grid/createGridState.d.ts +2 -2
  45. package/dist/grid/index.d.ts +2 -2
  46. package/dist/grid/types.d.ts +17 -11
  47. package/dist/index.d.ts +31 -25
  48. package/dist/index.js +7990 -6264
  49. package/dist/index.js.map +1 -7
  50. package/dist/menu/index.d.ts +8 -0
  51. package/dist/numberfield/createNumberFieldState.d.ts +2 -2
  52. package/dist/numberfield/index.d.ts +1 -1
  53. package/dist/overlays/createOverlayTriggerState.d.ts +2 -2
  54. package/dist/overlays/index.d.ts +1 -1
  55. package/dist/radio/createRadioGroupState.d.ts +13 -4
  56. package/dist/radio/index.d.ts +1 -1
  57. package/dist/searchfield/createSearchFieldState.d.ts +2 -2
  58. package/dist/searchfield/index.d.ts +2 -2
  59. package/dist/select/createSelectState.d.ts +20 -3
  60. package/dist/select/index.d.ts +1 -1
  61. package/dist/selection/index.d.ts +11 -0
  62. package/dist/slider/createSliderState.d.ts +3 -3
  63. package/dist/slider/index.d.ts +2 -2
  64. package/dist/steplist/createStepListState.d.ts +48 -0
  65. package/dist/steplist/index.d.ts +1 -0
  66. package/dist/table/TableCollection.d.ts +3 -3
  67. package/dist/table/createTableColumnResizeState.d.ts +54 -0
  68. package/dist/table/createTableState.d.ts +2 -2
  69. package/dist/table/index.d.ts +5 -3
  70. package/dist/table/types.d.ts +10 -10
  71. package/dist/tabs/createTabListState.d.ts +5 -5
  72. package/dist/tabs/index.d.ts +1 -1
  73. package/dist/textfield/createTextFieldState.d.ts +2 -2
  74. package/dist/textfield/index.d.ts +1 -1
  75. package/dist/toast/createToastState.d.ts +15 -3
  76. package/dist/toast/index.d.ts +1 -1
  77. package/dist/toggle/createToggleGroupState.d.ts +45 -0
  78. package/dist/toggle/createToggleState.d.ts +2 -2
  79. package/dist/toggle/index.d.ts +2 -1
  80. package/dist/tooltip/createTooltipTriggerState.d.ts +2 -2
  81. package/dist/tooltip/index.d.ts +1 -1
  82. package/dist/tree/TreeCollection.d.ts +5 -4
  83. package/dist/tree/createTreeState.d.ts +2 -2
  84. package/dist/tree/index.d.ts +3 -3
  85. package/dist/tree/types.d.ts +19 -13
  86. package/dist/utils/index.d.ts +1 -1
  87. package/dist/utils/reactivity.d.ts +1 -1
  88. package/package.json +30 -30
  89. package/src/autocomplete/createAutocompleteState.d.ts +19 -17
  90. package/src/autocomplete/createAutocompleteState.ts +25 -32
  91. package/src/autocomplete/index.d.ts +6 -2
  92. package/src/autocomplete/index.ts +1 -1
  93. package/src/calendar/createCalendarState.d.ts +139 -117
  94. package/src/calendar/createCalendarState.ts +221 -74
  95. package/src/calendar/createDateFieldState.d.ts +130 -95
  96. package/src/calendar/createDateFieldState.ts +286 -151
  97. package/src/calendar/createDatePickerState.ts +347 -0
  98. package/src/calendar/createRangeCalendarState.d.ts +154 -129
  99. package/src/calendar/createRangeCalendarState.ts +293 -79
  100. package/src/calendar/createTimeFieldState.d.ts +81 -79
  101. package/src/calendar/createTimeFieldState.ts +187 -108
  102. package/src/calendar/index.d.ts +80 -7
  103. package/src/calendar/index.ts +21 -12
  104. package/src/checkbox/createCheckboxGroupState.d.ts +57 -55
  105. package/src/checkbox/createCheckboxGroupState.ts +57 -30
  106. package/src/checkbox/index.d.ts +6 -2
  107. package/src/checkbox/index.ts +1 -1
  108. package/src/collections/ListCollection.d.ts +25 -22
  109. package/src/collections/ListCollection.ts +152 -146
  110. package/src/collections/createListState.d.ts +73 -58
  111. package/src/collections/createListState.ts +267 -264
  112. package/src/collections/createMenuState.d.ts +36 -31
  113. package/src/collections/createMenuState.ts +112 -106
  114. package/src/collections/createSelectionState.d.ts +78 -65
  115. package/src/collections/createSelectionState.ts +340 -336
  116. package/src/collections/index.d.ts +38 -6
  117. package/src/collections/index.ts +41 -46
  118. package/src/collections/types.d.ts +101 -101
  119. package/src/collections/types.ts +181 -169
  120. package/src/color/Color.d.ts +20 -5
  121. package/src/color/Color.ts +1054 -951
  122. package/src/color/createColorAreaState.d.ts +67 -65
  123. package/src/color/createColorAreaState.ts +301 -293
  124. package/src/color/createColorFieldState.d.ts +46 -44
  125. package/src/color/createColorFieldState.ts +428 -292
  126. package/src/color/createColorSliderState.d.ts +58 -56
  127. package/src/color/createColorSliderState.ts +272 -241
  128. package/src/color/createColorWheelState.d.ts +42 -40
  129. package/src/color/createColorWheelState.ts +248 -211
  130. package/src/color/getColorChannels.ts +36 -0
  131. package/src/color/index.d.ts +36 -7
  132. package/src/color/index.ts +44 -47
  133. package/src/color/types.d.ts +68 -63
  134. package/src/color/types.ts +119 -127
  135. package/src/combobox/createComboBoxState.d.ts +107 -105
  136. package/src/combobox/createComboBoxState.ts +790 -703
  137. package/src/combobox/index.d.ts +10 -2
  138. package/src/combobox/index.ts +13 -13
  139. package/src/data/createAsyncList.ts +403 -0
  140. package/src/data/createListData.ts +298 -0
  141. package/src/data/createTreeData.ts +646 -0
  142. package/src/data/index.ts +25 -0
  143. package/src/datepicker/index.ts +32 -0
  144. package/src/disclosure/createDisclosureState.d.ts +47 -43
  145. package/src/disclosure/createDisclosureState.ts +9 -23
  146. package/src/disclosure/index.d.ts +10 -2
  147. package/src/disclosure/index.ts +1 -1
  148. package/src/dnd/createDragState.d.ts +51 -42
  149. package/src/dnd/createDragState.ts +151 -153
  150. package/src/dnd/createDraggableCollectionState.d.ts +52 -41
  151. package/src/dnd/createDraggableCollectionState.ts +158 -165
  152. package/src/dnd/createDropState.d.ts +64 -45
  153. package/src/dnd/createDropState.ts +202 -212
  154. package/src/dnd/createDroppableCollectionState.d.ts +88 -59
  155. package/src/dnd/createDroppableCollectionState.ts +354 -357
  156. package/src/dnd/index.d.ts +54 -6
  157. package/src/dnd/index.ts +63 -76
  158. package/src/dnd/types.d.ts +167 -156
  159. package/src/dnd/types.ts +316 -317
  160. package/src/form/createFormValidationState.d.ts +47 -45
  161. package/src/form/createFormValidationState.ts +356 -389
  162. package/src/form/index.d.ts +16 -2
  163. package/src/form/index.ts +15 -15
  164. package/src/grid/createGridState.d.ts +7 -4
  165. package/src/grid/createGridState.ts +44 -51
  166. package/src/grid/index.d.ts +3 -3
  167. package/src/grid/index.ts +2 -8
  168. package/src/grid/types.d.ts +136 -129
  169. package/src/grid/types.ts +24 -17
  170. package/src/index.d.ts +310 -26
  171. package/src/index.ts +87 -79
  172. package/src/menu/index.ts +17 -0
  173. package/src/numberfield/createNumberFieldState.d.ts +56 -54
  174. package/src/numberfield/createNumberFieldState.ts +422 -383
  175. package/src/numberfield/index.d.ts +6 -2
  176. package/src/numberfield/index.ts +5 -5
  177. package/src/overlays/createOverlayTriggerState.d.ts +22 -20
  178. package/src/overlays/createOverlayTriggerState.ts +66 -67
  179. package/src/overlays/index.d.ts +6 -2
  180. package/src/overlays/index.ts +5 -5
  181. package/src/radio/createRadioGroupState.d.ts +54 -52
  182. package/src/radio/createRadioGroupState.ts +66 -30
  183. package/src/radio/index.d.ts +7 -2
  184. package/src/radio/index.ts +1 -1
  185. package/src/searchfield/createSearchFieldState.d.ts +16 -14
  186. package/src/searchfield/createSearchFieldState.ts +56 -62
  187. package/src/searchfield/index.d.ts +3 -3
  188. package/src/searchfield/index.ts +2 -5
  189. package/src/select/createSelectState.d.ts +63 -61
  190. package/src/select/createSelectState.ts +290 -181
  191. package/src/select/index.d.ts +2 -2
  192. package/src/select/index.ts +1 -5
  193. package/src/selection/index.ts +27 -0
  194. package/src/slider/createSliderState.d.ts +60 -60
  195. package/src/slider/createSliderState.ts +233 -211
  196. package/src/slider/index.d.ts +3 -3
  197. package/src/slider/index.ts +2 -6
  198. package/src/ssr/index.d.ts +1 -1
  199. package/src/ssr/index.ts +2 -2
  200. package/src/steplist/createStepListState.ts +191 -0
  201. package/src/steplist/index.ts +5 -0
  202. package/src/table/TableCollection.d.ts +42 -40
  203. package/src/table/TableCollection.ts +61 -64
  204. package/src/table/createTableColumnResizeState.ts +242 -0
  205. package/src/table/createTableState.d.ts +7 -4
  206. package/src/table/createTableState.ts +10 -7
  207. package/src/table/index.d.ts +14 -4
  208. package/src/table/index.ts +10 -3
  209. package/src/table/types.d.ts +98 -92
  210. package/src/table/types.ts +17 -13
  211. package/src/tabs/createTabListState.d.ts +59 -57
  212. package/src/tabs/createTabListState.ts +58 -39
  213. package/src/tabs/index.d.ts +8 -2
  214. package/src/tabs/index.ts +1 -1
  215. package/src/textfield/createTextFieldState.d.ts +16 -14
  216. package/src/textfield/createTextFieldState.ts +7 -18
  217. package/src/textfield/index.d.ts +6 -2
  218. package/src/textfield/index.ts +1 -1
  219. package/src/toast/createToastState.d.ts +92 -81
  220. package/src/toast/createToastState.ts +56 -44
  221. package/src/toast/index.d.ts +12 -2
  222. package/src/toast/index.ts +1 -1
  223. package/src/toggle/createToggleGroupState.ts +117 -0
  224. package/src/toggle/createToggleState.d.ts +19 -19
  225. package/src/toggle/createToggleState.ts +2 -16
  226. package/src/toggle/index.d.ts +2 -2
  227. package/src/toggle/index.ts +6 -4
  228. package/src/tooltip/createTooltipTriggerState.d.ts +17 -17
  229. package/src/tooltip/createTooltipTriggerState.ts +184 -183
  230. package/src/tooltip/index.d.ts +7 -2
  231. package/src/tooltip/index.ts +6 -6
  232. package/src/tree/TreeCollection.d.ts +26 -23
  233. package/src/tree/TreeCollection.ts +215 -175
  234. package/src/tree/createTreeState.d.ts +7 -4
  235. package/src/tree/createTreeState.ts +390 -392
  236. package/src/tree/index.d.ts +10 -4
  237. package/src/tree/index.ts +13 -13
  238. package/src/tree/types.d.ts +131 -126
  239. package/src/tree/types.ts +183 -174
  240. package/src/utils/index.d.ts +2 -2
  241. package/src/utils/index.ts +1 -1
  242. package/src/utils/reactivity.d.ts +2 -2
  243. package/src/utils/reactivity.ts +3 -3
@@ -1,183 +1,184 @@
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
+ * 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(props: TooltipTriggerProps = {}): TooltipTriggerState {
68
+ const delay = () => props.delay ?? TOOLTIP_DELAY;
69
+ const closeDelay = () => props.closeDelay ?? TOOLTIP_COOLDOWN;
70
+
71
+ const overlayState = createOverlayTriggerState(props);
72
+ const id = `tooltip-${++tooltipId}`;
73
+
74
+ let closeTimeout: ReturnType<typeof setTimeout> | null = null;
75
+ const [closeCallback, setCloseCallback] = createSignal<() => void>(() => overlayState.close());
76
+
77
+ const ensureTooltipEntry = () => {
78
+ tooltips[id] = hideTooltip;
79
+ };
80
+
81
+ const closeOpenTooltips = () => {
82
+ for (const hideTooltipId in tooltips) {
83
+ if (hideTooltipId !== id) {
84
+ tooltips[hideTooltipId](true);
85
+ delete tooltips[hideTooltipId];
86
+ }
87
+ }
88
+ };
89
+
90
+ const showTooltip = () => {
91
+ if (closeTimeout) {
92
+ clearTimeout(closeTimeout);
93
+ closeTimeout = null;
94
+ }
95
+ closeOpenTooltips();
96
+ ensureTooltipEntry();
97
+ globalWarmedUp = true;
98
+ overlayState.open();
99
+
100
+ if (globalWarmUpTimeout) {
101
+ clearTimeout(globalWarmUpTimeout);
102
+ globalWarmUpTimeout = null;
103
+ }
104
+ if (globalCooldownTimeout) {
105
+ clearTimeout(globalCooldownTimeout);
106
+ globalCooldownTimeout = null;
107
+ }
108
+ };
109
+
110
+ const hideTooltip = (immediate?: boolean) => {
111
+ if (immediate || closeDelay() <= 0) {
112
+ if (closeTimeout) {
113
+ clearTimeout(closeTimeout);
114
+ closeTimeout = null;
115
+ }
116
+ closeCallback()();
117
+ } else if (!closeTimeout) {
118
+ closeTimeout = setTimeout(() => {
119
+ closeTimeout = null;
120
+ closeCallback()();
121
+ }, closeDelay());
122
+ }
123
+
124
+ if (globalWarmUpTimeout) {
125
+ clearTimeout(globalWarmUpTimeout);
126
+ globalWarmUpTimeout = null;
127
+ }
128
+
129
+ if (globalWarmedUp) {
130
+ if (globalCooldownTimeout) {
131
+ clearTimeout(globalCooldownTimeout);
132
+ }
133
+ globalCooldownTimeout = setTimeout(
134
+ () => {
135
+ delete tooltips[id];
136
+ globalCooldownTimeout = null;
137
+ globalWarmedUp = false;
138
+ },
139
+ Math.max(TOOLTIP_COOLDOWN, closeDelay()),
140
+ );
141
+ }
142
+ };
143
+
144
+ const warmupTooltip = () => {
145
+ closeOpenTooltips();
146
+ ensureTooltipEntry();
147
+
148
+ if (!overlayState.isOpen() && !globalWarmUpTimeout && !globalWarmedUp) {
149
+ globalWarmUpTimeout = setTimeout(() => {
150
+ globalWarmUpTimeout = null;
151
+ globalWarmedUp = true;
152
+ showTooltip();
153
+ }, delay());
154
+ } else if (!overlayState.isOpen()) {
155
+ showTooltip();
156
+ }
157
+ };
158
+
159
+ // Update close callback when overlayState.close changes
160
+ setCloseCallback(() => overlayState.close);
161
+
162
+ // Cleanup on unmount
163
+ onCleanup(() => {
164
+ if (closeTimeout) {
165
+ clearTimeout(closeTimeout);
166
+ }
167
+ if (tooltips[id]) {
168
+ delete tooltips[id];
169
+ }
170
+ });
171
+
172
+ return {
173
+ isOpen: overlayState.isOpen,
174
+ open: (immediate?: boolean) => {
175
+ if (isServer) return;
176
+ if (!immediate && delay() > 0 && !closeTimeout) {
177
+ warmupTooltip();
178
+ } else {
179
+ showTooltip();
180
+ }
181
+ },
182
+ close: hideTooltip,
183
+ };
184
+ }
@@ -1,2 +1,7 @@
1
- export { createTooltipTriggerState, resetTooltipState, type TooltipTriggerProps, type TooltipTriggerState, } from './createTooltipTriggerState';
2
- //# sourceMappingURL=index.d.ts.map
1
+ export {
2
+ createTooltipTriggerState,
3
+ resetTooltipState,
4
+ type TooltipTriggerProps,
5
+ type TooltipTriggerState,
6
+ } from "./createTooltipTriggerState";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- export {
2
- createTooltipTriggerState,
3
- resetTooltipState,
4
- type TooltipTriggerProps,
5
- type TooltipTriggerState,
6
- } from './createTooltipTriggerState';
1
+ export {
2
+ createTooltipTriggerState,
3
+ resetTooltipState,
4
+ type TooltipTriggerProps,
5
+ type TooltipTriggerState,
6
+ } from "./createTooltipTriggerState";
@@ -5,36 +5,39 @@
5
5
  * A flattened view of tree nodes that respects expanded state.
6
6
  * Only visible nodes (root + expanded children) are included in iteration.
7
7
  */
8
- import type { Key } from '../collections/types';
9
- import type { TreeCollection as ITreeCollection, TreeNode, TreeItemData } from './types';
8
+ import type { Key } from "../collections/types";
9
+ import type { TreeCollection as ITreeCollection, TreeNode, TreeItemData } from "./types";
10
10
  /**
11
11
  * Creates a TreeCollection from hierarchical data.
12
12
  * The collection is flattened based on expanded keys.
13
13
  */
14
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>>;
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
34
  }
35
35
  /**
36
36
  * Factory function to create a TreeCollection.
37
37
  * Useful for the collectionFactory pattern in TreeStateOptions.
38
38
  */
39
- export declare function createTreeCollection<T>(items: TreeItemData<T>[], expandedKeys: Set<Key>): TreeCollection<T>;
40
- //# sourceMappingURL=TreeCollection.d.ts.map
39
+ export declare function createTreeCollection<T>(
40
+ items: TreeItemData<T>[],
41
+ expandedKeys: Set<Key>,
42
+ ): TreeCollection<T>;
43
+ //# sourceMappingURL=TreeCollection.d.ts.map