@proyecto-viviana/solid-stately 0.5.1 → 0.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/README.md +59 -29
  4. package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
  5. package/dist/autocomplete/createAutocompleteState.d.ts.map +1 -0
  6. package/dist/autocomplete/index.d.ts +1 -0
  7. package/dist/autocomplete/index.d.ts.map +1 -0
  8. package/dist/calendar/IncompleteDate.d.ts +2 -1
  9. package/dist/calendar/IncompleteDate.d.ts.map +1 -0
  10. package/dist/calendar/createCalendarState.d.ts +10 -9
  11. package/dist/calendar/createCalendarState.d.ts.map +1 -0
  12. package/dist/calendar/createDateFieldState.d.ts +4 -20
  13. package/dist/calendar/createDateFieldState.d.ts.map +1 -0
  14. package/dist/calendar/createDatePickerState.d.ts +4 -7
  15. package/dist/calendar/createDatePickerState.d.ts.map +1 -0
  16. package/dist/calendar/createRangeCalendarState.d.ts +9 -7
  17. package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
  18. package/dist/calendar/createTimeFieldState.d.ts +5 -24
  19. package/dist/calendar/createTimeFieldState.d.ts.map +1 -0
  20. package/dist/calendar/index.d.ts +1 -0
  21. package/dist/calendar/index.d.ts.map +1 -0
  22. package/dist/calendar/intl/index.d.ts +1 -0
  23. package/dist/calendar/intl/index.d.ts.map +1 -0
  24. package/dist/checkbox/createCheckboxGroupState.d.ts +3 -0
  25. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -0
  26. package/dist/checkbox/index.d.ts +1 -0
  27. package/dist/checkbox/index.d.ts.map +1 -0
  28. package/dist/collections/ListCollection.d.ts +5 -0
  29. package/dist/collections/ListCollection.d.ts.map +1 -0
  30. package/dist/collections/createListState.d.ts +2 -6
  31. package/dist/collections/createListState.d.ts.map +1 -0
  32. package/dist/collections/createMenuState.d.ts +74 -13
  33. package/dist/collections/createMenuState.d.ts.map +1 -0
  34. package/dist/collections/createSelectionState.d.ts +2 -5
  35. package/dist/collections/createSelectionState.d.ts.map +1 -0
  36. package/dist/collections/getChildNodes.d.ts +6 -3
  37. package/dist/collections/getChildNodes.d.ts.map +1 -0
  38. package/dist/collections/index.d.ts +2 -1
  39. package/dist/collections/index.d.ts.map +1 -0
  40. package/dist/collections/types.d.ts +36 -2
  41. package/dist/collections/types.d.ts.map +1 -0
  42. package/dist/color/Color.d.ts +7 -1
  43. package/dist/color/Color.d.ts.map +1 -0
  44. package/dist/color/createColorAreaState.d.ts +6 -5
  45. package/dist/color/createColorAreaState.d.ts.map +1 -0
  46. package/dist/color/createColorFieldState.d.ts +4 -5
  47. package/dist/color/createColorFieldState.d.ts.map +1 -0
  48. package/dist/color/createColorSliderState.d.ts +4 -5
  49. package/dist/color/createColorSliderState.d.ts.map +1 -0
  50. package/dist/color/createColorWheelState.d.ts +2 -5
  51. package/dist/color/createColorWheelState.d.ts.map +1 -0
  52. package/dist/color/getColorChannels.d.ts +3 -0
  53. package/dist/color/getColorChannels.d.ts.map +1 -0
  54. package/dist/color/index.d.ts +2 -1
  55. package/dist/color/index.d.ts.map +1 -0
  56. package/dist/color/intl/index.d.ts +1 -0
  57. package/dist/color/intl/index.d.ts.map +1 -0
  58. package/dist/color/types.d.ts +2 -1
  59. package/dist/color/types.d.ts.map +1 -0
  60. package/dist/combobox/createComboBoxState.d.ts +92 -29
  61. package/dist/combobox/createComboBoxState.d.ts.map +1 -0
  62. package/dist/combobox/index.d.ts +2 -1
  63. package/dist/combobox/index.d.ts.map +1 -0
  64. package/dist/data/createAsyncList.d.ts +1 -7
  65. package/dist/data/createAsyncList.d.ts.map +1 -0
  66. package/dist/data/createListData.d.ts +1 -6
  67. package/dist/data/createListData.d.ts.map +1 -0
  68. package/dist/data/createTreeData.d.ts +1 -6
  69. package/dist/data/createTreeData.d.ts.map +1 -0
  70. package/dist/data/index.d.ts +1 -0
  71. package/dist/data/index.d.ts.map +1 -0
  72. package/dist/datepicker/index.d.ts +1 -0
  73. package/dist/datepicker/index.d.ts.map +1 -0
  74. package/dist/disclosure/createDisclosureState.d.ts +2 -5
  75. package/dist/disclosure/createDisclosureState.d.ts.map +1 -0
  76. package/dist/disclosure/index.d.ts +1 -0
  77. package/dist/disclosure/index.d.ts.map +1 -0
  78. package/dist/dnd/createDragState.d.ts +2 -6
  79. package/dist/dnd/createDragState.d.ts.map +1 -0
  80. package/dist/dnd/createDraggableCollectionState.d.ts +44 -11
  81. package/dist/dnd/createDraggableCollectionState.d.ts.map +1 -0
  82. package/dist/dnd/createDropState.d.ts +2 -6
  83. package/dist/dnd/createDropState.d.ts.map +1 -0
  84. package/dist/dnd/createDroppableCollectionState.d.ts +34 -11
  85. package/dist/dnd/createDroppableCollectionState.d.ts.map +1 -0
  86. package/dist/dnd/index.d.ts +3 -2
  87. package/dist/dnd/index.d.ts.map +1 -0
  88. package/dist/dnd/types.d.ts +17 -0
  89. package/dist/dnd/types.d.ts.map +1 -0
  90. package/dist/form/createFormValidationState.d.ts +2 -9
  91. package/{src → dist}/form/createFormValidationState.d.ts.map +1 -1
  92. package/dist/form/index.d.ts +1 -0
  93. package/dist/form/index.d.ts.map +1 -0
  94. package/dist/grid/createGridState.d.ts +4 -3
  95. package/dist/grid/createGridState.d.ts.map +1 -0
  96. package/dist/grid/index.d.ts +1 -0
  97. package/dist/grid/index.d.ts.map +1 -0
  98. package/dist/grid/types.d.ts +23 -1
  99. package/dist/grid/types.d.ts.map +1 -0
  100. package/dist/index.d.ts +7 -5
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +2947 -969
  103. package/dist/index.js.map +1 -1
  104. package/dist/menu/index.d.ts +3 -1
  105. package/dist/menu/index.d.ts.map +1 -0
  106. package/dist/numberfield/createNumberFieldState.d.ts +37 -9
  107. package/dist/numberfield/createNumberFieldState.d.ts.map +1 -0
  108. package/dist/numberfield/index.d.ts +1 -0
  109. package/dist/numberfield/index.d.ts.map +1 -0
  110. package/dist/overlays/createOverlayTriggerState.d.ts +12 -1
  111. package/dist/overlays/createOverlayTriggerState.d.ts.map +1 -0
  112. package/dist/overlays/index.d.ts +1 -0
  113. package/dist/overlays/index.d.ts.map +1 -0
  114. package/dist/private/flags/flags.d.ts +5 -0
  115. package/dist/private/flags/flags.d.ts.map +1 -0
  116. package/dist/private/flags/flags.js +26 -0
  117. package/dist/private/flags/flags.js.map +1 -0
  118. package/dist/radio/createRadioGroupState.d.ts +1 -0
  119. package/dist/radio/createRadioGroupState.d.ts.map +1 -0
  120. package/dist/radio/index.d.ts +1 -0
  121. package/dist/radio/index.d.ts.map +1 -0
  122. package/dist/searchfield/createSearchFieldState.d.ts +2 -5
  123. package/dist/searchfield/createSearchFieldState.d.ts.map +1 -0
  124. package/dist/searchfield/index.d.ts +1 -0
  125. package/dist/searchfield/index.d.ts.map +1 -0
  126. package/dist/select/createSelectState.d.ts +100 -33
  127. package/dist/select/createSelectState.d.ts.map +1 -0
  128. package/dist/select/index.d.ts +2 -1
  129. package/dist/select/index.d.ts.map +1 -0
  130. package/dist/selection/Selection.d.ts +2 -1
  131. package/dist/selection/Selection.d.ts.map +1 -0
  132. package/dist/selection/SelectionManager.d.ts +1 -19
  133. package/dist/selection/SelectionManager.d.ts.map +1 -0
  134. package/dist/selection/createMultipleSelectionState.d.ts +2 -13
  135. package/dist/selection/createMultipleSelectionState.d.ts.map +1 -0
  136. package/dist/selection/index.d.ts +1 -0
  137. package/dist/selection/index.d.ts.map +1 -0
  138. package/dist/slider/createSliderState.d.ts +37 -14
  139. package/dist/slider/createSliderState.d.ts.map +1 -0
  140. package/dist/slider/index.d.ts +1 -0
  141. package/dist/slider/index.d.ts.map +1 -0
  142. package/dist/ssr/index.d.ts +2 -13
  143. package/dist/ssr/index.d.ts.map +1 -0
  144. package/dist/steplist/createStepListState.d.ts +10 -18
  145. package/dist/steplist/createStepListState.d.ts.map +1 -0
  146. package/dist/steplist/index.d.ts +1 -0
  147. package/dist/steplist/index.d.ts.map +1 -0
  148. package/dist/table/TableCollection.d.ts +1 -0
  149. package/dist/table/TableCollection.d.ts.map +1 -0
  150. package/dist/table/createTableColumnResizeState.d.ts +2 -9
  151. package/dist/table/createTableColumnResizeState.d.ts.map +1 -0
  152. package/dist/table/createTableState.d.ts +3 -6
  153. package/dist/table/createTableState.d.ts.map +1 -0
  154. package/dist/table/createTreeGridState.d.ts +3 -9
  155. package/dist/table/createTreeGridState.d.ts.map +1 -0
  156. package/dist/table/index.d.ts +1 -0
  157. package/dist/table/index.d.ts.map +1 -0
  158. package/dist/table/types.d.ts +37 -3
  159. package/dist/table/types.d.ts.map +1 -0
  160. package/dist/tabs/createTabListState.d.ts +2 -5
  161. package/dist/tabs/createTabListState.d.ts.map +1 -0
  162. package/dist/tabs/index.d.ts +1 -0
  163. package/dist/tabs/index.d.ts.map +1 -0
  164. package/dist/textfield/createTextFieldState.d.ts +1 -0
  165. package/dist/textfield/createTextFieldState.d.ts.map +1 -0
  166. package/dist/textfield/index.d.ts +1 -0
  167. package/dist/textfield/index.d.ts.map +1 -0
  168. package/dist/toast/createToastState.d.ts +2 -5
  169. package/dist/toast/createToastState.d.ts.map +1 -0
  170. package/dist/toast/index.d.ts +1 -0
  171. package/dist/toast/index.d.ts.map +1 -0
  172. package/dist/toggle/createToggleGroupState.d.ts +1 -0
  173. package/dist/toggle/createToggleGroupState.d.ts.map +1 -0
  174. package/dist/toggle/createToggleState.d.ts +1 -0
  175. package/dist/toggle/createToggleState.d.ts.map +1 -0
  176. package/dist/toggle/index.d.ts +1 -0
  177. package/dist/toggle/index.d.ts.map +1 -0
  178. package/dist/tokenfield/TokenFieldValue.d.ts +96 -0
  179. package/dist/tokenfield/TokenFieldValue.d.ts.map +1 -0
  180. package/dist/tokenfield/createTokenFieldState.d.ts +33 -0
  181. package/dist/tokenfield/createTokenFieldState.d.ts.map +1 -0
  182. package/dist/tokenfield/index.d.ts +3 -0
  183. package/dist/tokenfield/index.d.ts.map +1 -0
  184. package/dist/tooltip/createTooltipTriggerState.d.ts +9 -8
  185. package/dist/tooltip/createTooltipTriggerState.d.ts.map +1 -0
  186. package/dist/tooltip/index.d.ts +1 -0
  187. package/dist/tooltip/index.d.ts.map +1 -0
  188. package/dist/tree/TreeCollection.d.ts +1 -0
  189. package/dist/tree/TreeCollection.d.ts.map +1 -0
  190. package/dist/tree/createTreeState.d.ts +3 -8
  191. package/dist/tree/createTreeState.d.ts.map +1 -0
  192. package/dist/tree/index.d.ts +1 -0
  193. package/dist/tree/index.d.ts.map +1 -0
  194. package/dist/tree/types.d.ts +19 -1
  195. package/dist/tree/types.d.ts.map +1 -0
  196. package/dist/utils/index.d.ts +3 -1
  197. package/dist/utils/index.d.ts.map +1 -0
  198. package/dist/utils/owner.d.ts +9 -0
  199. package/dist/utils/owner.d.ts.map +1 -0
  200. package/dist/utils/reactivity.d.ts +24 -0
  201. package/dist/utils/reactivity.d.ts.map +1 -0
  202. package/package.json +21 -9
  203. package/src/autocomplete/createAutocompleteState.ts +18 -4
  204. package/src/calendar/IncompleteDate.ts +15 -1
  205. package/src/calendar/createCalendarState.ts +321 -125
  206. package/src/calendar/createDateFieldState.ts +45 -31
  207. package/src/calendar/createDatePickerState.ts +47 -26
  208. package/src/calendar/createRangeCalendarState.ts +173 -86
  209. package/src/calendar/createTimeFieldState.ts +26 -7
  210. package/src/calendar/intl/index.ts +37 -2
  211. package/src/checkbox/createCheckboxGroupState.ts +45 -13
  212. package/src/collections/ListCollection.ts +31 -0
  213. package/src/collections/createListState.ts +27 -10
  214. package/src/collections/createMenuState.ts +190 -15
  215. package/src/collections/createSelectionState.ts +33 -13
  216. package/src/collections/getChildNodes.ts +20 -3
  217. package/src/collections/index.ts +6 -0
  218. package/src/collections/types.ts +35 -2
  219. package/src/color/Color.ts +61 -22
  220. package/src/color/createColorAreaState.ts +48 -4
  221. package/src/color/createColorFieldState.ts +114 -38
  222. package/src/color/createColorSliderState.ts +61 -9
  223. package/src/color/createColorWheelState.ts +29 -9
  224. package/src/color/getColorChannels.ts +16 -0
  225. package/src/color/index.ts +1 -0
  226. package/src/color/intl/index.ts +38 -3
  227. package/src/color/types.ts +1 -1
  228. package/src/combobox/createComboBoxState.ts +530 -297
  229. package/src/combobox/index.ts +4 -0
  230. package/src/data/createAsyncList.ts +41 -6
  231. package/src/data/createListData.ts +27 -4
  232. package/src/data/createTreeData.ts +30 -6
  233. package/src/disclosure/createDisclosureState.ts +40 -19
  234. package/src/dnd/createDragState.ts +22 -4
  235. package/src/dnd/createDraggableCollectionState.ts +145 -11
  236. package/src/dnd/createDropState.ts +21 -3
  237. package/src/dnd/createDroppableCollectionState.ts +127 -11
  238. package/src/dnd/index.ts +4 -0
  239. package/src/dnd/types.ts +16 -0
  240. package/src/form/createFormValidationState.ts +69 -37
  241. package/src/grid/createGridState.ts +196 -111
  242. package/src/grid/types.ts +22 -1
  243. package/src/index.ts +33 -2
  244. package/src/menu/index.ts +7 -0
  245. package/src/numberfield/createNumberFieldState.ts +247 -98
  246. package/src/overlays/createOverlayTriggerState.ts +31 -4
  247. package/src/private/flags/flags.ts +25 -0
  248. package/src/radio/createRadioGroupState.ts +23 -6
  249. package/src/searchfield/createSearchFieldState.ts +18 -3
  250. package/src/select/createSelectState.ts +317 -130
  251. package/src/select/index.ts +8 -1
  252. package/src/selection/Selection.ts +15 -1
  253. package/src/selection/SelectionManager.ts +17 -1
  254. package/src/selection/createMultipleSelectionState.ts +45 -26
  255. package/src/slider/createSliderState.ts +243 -104
  256. package/src/ssr/index.ts +34 -4
  257. package/src/steplist/createStepListState.ts +184 -130
  258. package/src/table/TableCollection.ts +14 -0
  259. package/src/table/createTableColumnResizeState.ts +71 -14
  260. package/src/table/createTableState.ts +26 -4
  261. package/src/table/createTreeGridState.ts +22 -6
  262. package/src/table/types.ts +38 -5
  263. package/src/tabs/createTabListState.ts +63 -43
  264. package/src/textfield/createTextFieldState.ts +17 -3
  265. package/src/toast/createToastState.ts +28 -3
  266. package/src/toggle/createToggleGroupState.ts +20 -5
  267. package/src/toggle/createToggleState.ts +19 -4
  268. package/src/tokenfield/TokenFieldValue.ts +499 -0
  269. package/src/tokenfield/createTokenFieldState.ts +88 -0
  270. package/src/tokenfield/index.ts +15 -0
  271. package/src/tooltip/createTooltipTriggerState.ts +49 -13
  272. package/src/tree/TreeCollection.ts +14 -0
  273. package/src/tree/createTreeState.ts +70 -36
  274. package/src/tree/types.ts +18 -1
  275. package/src/utils/index.ts +10 -1
  276. package/src/utils/owner.ts +20 -0
  277. package/src/utils/reactivity.ts +53 -1
  278. package/src/autocomplete/createAutocompleteState.d.ts +0 -48
  279. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  280. package/src/autocomplete/index.d.ts +0 -6
  281. package/src/autocomplete/index.d.ts.map +0 -1
  282. package/src/calendar/createCalendarState.d.ts +0 -152
  283. package/src/calendar/createCalendarState.d.ts.map +0 -1
  284. package/src/calendar/createDateFieldState.d.ts +0 -145
  285. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  286. package/src/calendar/createRangeCalendarState.d.ts +0 -171
  287. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  288. package/src/calendar/createTimeFieldState.d.ts +0 -97
  289. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  290. package/src/calendar/index.d.ts +0 -80
  291. package/src/calendar/index.d.ts.map +0 -1
  292. package/src/checkbox/createCheckboxGroupState.d.ts +0 -73
  293. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  294. package/src/checkbox/index.d.ts +0 -6
  295. package/src/checkbox/index.d.ts.map +0 -1
  296. package/src/collections/ListCollection.d.ts +0 -40
  297. package/src/collections/ListCollection.d.ts.map +0 -1
  298. package/src/collections/createListState.d.ts +0 -94
  299. package/src/collections/createListState.d.ts.map +0 -1
  300. package/src/collections/createMenuState.d.ts +0 -55
  301. package/src/collections/createMenuState.d.ts.map +0 -1
  302. package/src/collections/createSelectionState.d.ts +0 -89
  303. package/src/collections/createSelectionState.d.ts.map +0 -1
  304. package/src/collections/index.d.ts +0 -38
  305. package/src/collections/index.d.ts.map +0 -1
  306. package/src/collections/types.d.ts +0 -147
  307. package/src/collections/types.d.ts.map +0 -1
  308. package/src/color/Color.d.ts +0 -43
  309. package/src/color/Color.d.ts.map +0 -1
  310. package/src/color/createColorAreaState.d.ts +0 -78
  311. package/src/color/createColorAreaState.d.ts.map +0 -1
  312. package/src/color/createColorFieldState.d.ts +0 -57
  313. package/src/color/createColorFieldState.d.ts.map +0 -1
  314. package/src/color/createColorSliderState.d.ts +0 -69
  315. package/src/color/createColorSliderState.d.ts.map +0 -1
  316. package/src/color/createColorWheelState.d.ts +0 -53
  317. package/src/color/createColorWheelState.d.ts.map +0 -1
  318. package/src/color/index.d.ts +0 -39
  319. package/src/color/index.d.ts.map +0 -1
  320. package/src/color/types.d.ts +0 -111
  321. package/src/color/types.d.ts.map +0 -1
  322. package/src/combobox/createComboBoxState.d.ts +0 -127
  323. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  324. package/src/combobox/index.d.ts +0 -13
  325. package/src/combobox/index.d.ts.map +0 -1
  326. package/src/disclosure/createDisclosureState.d.ts +0 -68
  327. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  328. package/src/disclosure/index.d.ts +0 -10
  329. package/src/disclosure/index.d.ts.map +0 -1
  330. package/src/dnd/createDragState.d.ts +0 -68
  331. package/src/dnd/createDragState.d.ts.map +0 -1
  332. package/src/dnd/createDraggableCollectionState.d.ts +0 -68
  333. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  334. package/src/dnd/createDropState.d.ts +0 -80
  335. package/src/dnd/createDropState.d.ts.map +0 -1
  336. package/src/dnd/createDroppableCollectionState.d.ts +0 -107
  337. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  338. package/src/dnd/index.d.ts +0 -60
  339. package/src/dnd/index.d.ts.map +0 -1
  340. package/src/dnd/types.d.ts +0 -277
  341. package/src/dnd/types.d.ts.map +0 -1
  342. package/src/form/createFormValidationState.d.ts +0 -102
  343. package/src/form/index.d.ts +0 -16
  344. package/src/form/index.d.ts.map +0 -1
  345. package/src/grid/createGridState.d.ts +0 -15
  346. package/src/grid/createGridState.d.ts.map +0 -1
  347. package/src/grid/index.d.ts +0 -7
  348. package/src/grid/index.d.ts.map +0 -1
  349. package/src/grid/types.d.ts +0 -163
  350. package/src/grid/types.d.ts.map +0 -1
  351. package/src/index.d.ts +0 -311
  352. package/src/index.d.ts.map +0 -1
  353. package/src/numberfield/createNumberFieldState.d.ts +0 -67
  354. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  355. package/src/numberfield/index.d.ts +0 -6
  356. package/src/numberfield/index.d.ts.map +0 -1
  357. package/src/overlays/createOverlayTriggerState.d.ts +0 -34
  358. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  359. package/src/overlays/index.d.ts +0 -6
  360. package/src/overlays/index.d.ts.map +0 -1
  361. package/src/radio/createRadioGroupState.d.ts +0 -79
  362. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  363. package/src/radio/index.d.ts +0 -7
  364. package/src/radio/index.d.ts.map +0 -1
  365. package/src/searchfield/createSearchFieldState.d.ts +0 -27
  366. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  367. package/src/searchfield/index.d.ts +0 -3
  368. package/src/searchfield/index.d.ts.map +0 -1
  369. package/src/select/createSelectState.d.ts +0 -75
  370. package/src/select/createSelectState.d.ts.map +0 -1
  371. package/src/select/index.d.ts +0 -2
  372. package/src/select/index.d.ts.map +0 -1
  373. package/src/slider/createSliderState.d.ts +0 -72
  374. package/src/slider/createSliderState.d.ts.map +0 -1
  375. package/src/slider/index.d.ts +0 -3
  376. package/src/slider/index.d.ts.map +0 -1
  377. package/src/ssr/index.d.ts +0 -28
  378. package/src/ssr/index.d.ts.map +0 -1
  379. package/src/table/TableCollection.d.ts +0 -54
  380. package/src/table/TableCollection.d.ts.map +0 -1
  381. package/src/table/createTableState.d.ts +0 -15
  382. package/src/table/createTableState.d.ts.map +0 -1
  383. package/src/table/index.d.ts +0 -18
  384. package/src/table/index.d.ts.map +0 -1
  385. package/src/table/types.d.ts +0 -145
  386. package/src/table/types.d.ts.map +0 -1
  387. package/src/tabs/createTabListState.d.ts +0 -70
  388. package/src/tabs/createTabListState.d.ts.map +0 -1
  389. package/src/tabs/index.d.ts +0 -8
  390. package/src/tabs/index.d.ts.map +0 -1
  391. package/src/textfield/createTextFieldState.d.ts +0 -32
  392. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  393. package/src/textfield/index.d.ts +0 -6
  394. package/src/textfield/index.d.ts.map +0 -1
  395. package/src/toast/createToastState.d.ts +0 -129
  396. package/src/toast/createToastState.d.ts.map +0 -1
  397. package/src/toast/index.d.ts +0 -12
  398. package/src/toast/index.d.ts.map +0 -1
  399. package/src/toggle/createToggleState.d.ts +0 -34
  400. package/src/toggle/createToggleState.d.ts.map +0 -1
  401. package/src/toggle/index.d.ts +0 -2
  402. package/src/toggle/index.d.ts.map +0 -1
  403. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  404. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  405. package/src/tooltip/index.d.ts +0 -7
  406. package/src/tooltip/index.d.ts.map +0 -1
  407. package/src/tree/TreeCollection.d.ts +0 -43
  408. package/src/tree/TreeCollection.d.ts.map +0 -1
  409. package/src/tree/createTreeState.d.ts +0 -17
  410. package/src/tree/createTreeState.d.ts.map +0 -1
  411. package/src/tree/index.d.ts +0 -13
  412. package/src/tree/index.d.ts.map +0 -1
  413. package/src/tree/types.d.ts +0 -162
  414. package/src/tree/types.d.ts.map +0 -1
  415. package/src/utils/index.d.ts +0 -2
  416. package/src/utils/index.d.ts.map +0 -1
  417. package/src/utils/reactivity.d.ts +0 -28
  418. package/src/utils/reactivity.d.ts.map +0 -1
@@ -1 +1,8 @@
1
- export { createSelectState, type SelectStateProps, type SelectState } from "./createSelectState";
1
+ export {
2
+ createSelectState,
3
+ type SelectStateProps,
4
+ type SelectState,
5
+ type SelectSelectionMode,
6
+ type SelectValueType,
7
+ type SelectChangeValueType,
8
+ } from "./createSelectState";
@@ -1,8 +1,22 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/selection/Selection.ts
14
+
1
15
  /**
2
16
  * A Selection is a special Set containing Keys, which also has an anchor
3
17
  * and current selected key for use when range selecting.
4
18
  *
5
- * Based on @react-stately/selection.
19
+ * Ported from packages/react-stately/src/selection/Selection.ts.
6
20
  */
7
21
 
8
22
  import type { Key } from "../collections/types";
@@ -1,3 +1,17 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/selection/SelectionManager.ts
14
+
1
15
  /**
2
16
  * An interface for reading and updating multiple selection state.
3
17
  *
@@ -504,7 +518,9 @@ export class SelectionManager<T = unknown> {
504
518
  const item = this.collection.getItem(key);
505
519
  return (
506
520
  this.state.disabledBehavior === "all" &&
507
- (this.state.disabledKeys.has(key) || !!item?.props?.isDisabled) &&
521
+ (this.state.disabledKeys.has(key) ||
522
+ !!item?.props?.isDisabled ||
523
+ item?.isDisabled === true) &&
508
524
  item?.props?.disabledBehavior !== "selection"
509
525
  );
510
526
  }
@@ -1,18 +1,31 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/selection/useMultipleSelectionState.ts
14
+
1
15
  /**
2
16
  * Raw multiple-selection + focus state for a collection.
3
17
  *
4
18
  * The lower of the two selection layers ported from upstream
5
- * (`@react-stately/selection`'s `useMultipleSelectionState`): it owns the
19
+ * (`packages/react-stately/src/selection/useMultipleSelectionState.ts`): it owns the
6
20
  * selected keys, focus, selection behavior, and disabled keys, but is NOT
7
21
  * collection-aware. The collection-aware operations (toggle, extend, select
8
22
  * all, range, etc.) live in {@link SelectionManager}, which is built on top of
9
23
  * this state.
10
- *
11
- * Based on @react-stately/selection.
12
24
  */
13
25
 
14
- import { createSignal, createMemo, createComputed, untrack, type Accessor } from "solid-js";
15
- import { access, type MaybeAccessor } from "../utils";
26
+ import { createMemo, createEffect } from "solid-js";
27
+ import type { Accessor } from "solid-js";
28
+ import { createInternalSignal, propsAccessor, readNow, type MaybeAccessor } from "../utils";
16
29
  import type { SelectionStateProps } from "../collections/createSelectionState";
17
30
  import type {
18
31
  DisabledBehavior,
@@ -101,20 +114,22 @@ function convertSelection(
101
114
  export function createMultipleSelectionState(
102
115
  props: MaybeAccessor<SelectionStateProps> = {},
103
116
  ): MultipleSelectionState {
104
- const getProps = () => access(props);
117
+ const getProps = propsAccessor(props);
105
118
 
106
119
  // Focus is a plain signal in Solid; upstream needs a ref + state pair only
107
120
  // because React requires both a synchronous read and a re-render trigger.
108
- const [isFocused, setIsFocused] = createSignal(false);
109
- const [focusedKey, setFocusedKeySignal] = createSignal<Key | null>(null);
110
- const [childFocusStrategy, setChildFocusStrategy] = createSignal<FocusStrategy | null>(null);
121
+ const [isFocused, setIsFocused] = createInternalSignal(false);
122
+ const [focusedKey, setFocusedKeySignal] = createInternalSignal<Key | null>(null);
123
+ const [childFocusStrategy, setChildFocusStrategy] = createInternalSignal<FocusStrategy | null>(
124
+ null,
125
+ );
111
126
 
112
127
  const defaultSelectedKeys = convertSelection(
113
128
  getProps().defaultSelectedKeys,
114
129
  new SelectionClass(),
115
130
  );
116
131
  const [uncontrolledSelectedKeys, setUncontrolledSelectedKeys] =
117
- createSignal<Selection>(defaultSelectedKeys);
132
+ createInternalSignal<Selection>(defaultSelectedKeys);
118
133
 
119
134
  const selectedKeys = createMemo<Selection>(() => {
120
135
  const p = getProps();
@@ -130,27 +145,28 @@ export function createMultipleSelectionState(
130
145
  const selectionBehaviorProp = (): SelectionBehavior => getProps().selectionBehavior ?? "toggle";
131
146
 
132
147
  const [selectionBehavior, setSelectionBehaviorState] =
133
- createSignal<SelectionBehavior>(selectionBehaviorProp());
148
+ createInternalSignal<SelectionBehavior>(selectionBehaviorProp());
134
149
 
135
150
  // If the selectionBehavior prop is 'replace' but the current state is 'toggle'
136
151
  // (e.g. due to a long press to enter selection mode on touch) and the
137
152
  // selection becomes empty, reset the behavior back to 'replace'.
138
- createComputed(() => {
139
- const keys = selectedKeys();
140
- if (
141
- selectionBehaviorProp() === "replace" &&
142
- untrack(selectionBehavior) === "toggle" &&
143
- typeof keys === "object" &&
144
- keys.size === 0
145
- ) {
146
- setSelectionBehaviorState("replace");
147
- }
148
- });
153
+ createEffect(
154
+ () => ({ keys: selectedKeys(), prop: selectionBehaviorProp() }),
155
+ ({ keys, prop }) => {
156
+ if (
157
+ prop === "replace" &&
158
+ selectionBehavior() === "toggle" &&
159
+ typeof keys === "object" &&
160
+ keys.size === 0
161
+ ) {
162
+ setSelectionBehaviorState("replace");
163
+ }
164
+ },
165
+ );
149
166
 
150
167
  // If the selectionBehavior prop changes, sync it into state.
151
168
  let lastSelectionBehavior = selectionBehaviorProp();
152
- createComputed(() => {
153
- const prop = selectionBehaviorProp();
169
+ createEffect(selectionBehaviorProp, (prop) => {
154
170
  if (prop !== lastSelectionBehavior) {
155
171
  setSelectionBehaviorState(prop);
156
172
  lastSelectionBehavior = prop;
@@ -169,9 +185,12 @@ export function createMultipleSelectionState(
169
185
  getProps().onSelectionChange?.(keys);
170
186
  };
171
187
 
188
+ const liveSelectedKeys = (): Selection =>
189
+ getProps().selectedKeys !== undefined ? selectedKeys() : readNow(uncontrolledSelectedKeys);
190
+
172
191
  const setSelectedKeys = (keys: Selection) => {
173
192
  const p = getProps();
174
- const current = selectedKeys();
193
+ const current = liveSelectedKeys();
175
194
  const shouldUpdate =
176
195
  p.allowDuplicateSelectionEvents ||
177
196
  keys === "all" ||
@@ -227,7 +246,7 @@ export function createMultipleSelectionState(
227
246
  setChildFocusStrategy(strategy);
228
247
  },
229
248
  get selectedKeys() {
230
- return selectedKeys();
249
+ return liveSelectedKeys();
231
250
  },
232
251
  get lastSelectionEvent() {
233
252
  return lastSelectionEvent;
@@ -1,22 +1,37 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/slider/useSliderState.ts
14
+
1
15
  /**
2
16
  * Creates state for a slider component.
3
17
  * Based on @react-stately/slider useSliderState.
4
18
  */
5
19
 
6
- import { type Accessor, createSignal, createMemo } from "solid-js";
7
- import { access, type MaybeAccessor } from "../utils";
20
+ import { createMemo, createEffect } from "solid-js";
21
+ import type { Accessor } from "solid-js";
22
+ import { createInternalSignal, access, type MaybeAccessor } from "../utils";
8
23
 
9
24
  export type SliderOrientation = "horizontal" | "vertical";
10
25
 
11
- export interface SliderStateProps {
26
+ export interface SliderStateProps<T extends number | number[] = number> {
12
27
  /** The current value (controlled). */
13
- value?: number;
28
+ value?: T;
14
29
  /** The default value (uncontrolled). */
15
- defaultValue?: number;
30
+ defaultValue?: T;
16
31
  /** Handler called when the value changes. */
17
- onChange?: (value: number) => void;
32
+ onChange?: (value: T) => void;
18
33
  /** Handler called when the user stops dragging. */
19
- onChangeEnd?: (value: number) => void;
34
+ onChangeEnd?: (value: T) => void;
20
35
  /** The minimum value. */
21
36
  minValue?: number;
22
37
  /** The maximum value. */
@@ -43,14 +58,35 @@ export interface SliderState {
43
58
  /** Gets the value as a percent (0-1). */
44
59
  getValuePercent: Accessor<number>;
45
60
  /** Gets the formatted value string. */
46
- getFormattedValue: Accessor<string>;
47
- /** Whether the thumb is being dragged. */
61
+ getFormattedValue: {
62
+ (): string;
63
+ (value: number | readonly number[]): string;
64
+ };
65
+ /** Canonical values; legacy numeric members address thumb zero. */
66
+ values: Accessor<readonly number[]>;
67
+ /** Current reset defaults, normalized to the domain. */
68
+ defaultValues: Accessor<readonly number[]>;
69
+ getThumbValue: (index: number) => number;
70
+ setThumbValue: (index: number, value: number) => void;
71
+ setThumbPercent: (index: number, percent: number) => void;
72
+ getThumbPercent: (index: number) => number;
73
+ getThumbMinValue: (index: number) => number;
74
+ getThumbMaxValue: (index: number) => number;
75
+ getThumbValueLabel: (index: number) => string;
76
+ isThumbDragging: (index: number) => boolean;
77
+ setThumbDragging: (index: number, dragging: boolean) => void;
78
+ focusedThumb: Accessor<number | undefined>;
79
+ setFocusedThumb: (index: number | undefined) => void;
80
+ /** Absolute value distance, at least state.step. */
81
+ incrementThumb: (index: number, stepSize?: number) => void;
82
+ decrementThumb: (index: number, stepSize?: number) => void;
83
+ /** Whether any thumb is being dragged. */
48
84
  isDragging: Accessor<boolean>;
49
- /** Sets the dragging state. */
85
+ /** Sets thumb zero dragging state. */
50
86
  setDragging: (dragging: boolean) => void;
51
87
  /** Whether the slider is focused. */
52
88
  isFocused: Accessor<boolean>;
53
- /** Sets the focused state. */
89
+ /** Focuses thumb zero; false clears only thumb zero. */
54
90
  setFocused: (focused: boolean) => void;
55
91
  /** Increments the value by step. */
56
92
  increment: (stepMultiplier?: number) => void;
@@ -95,17 +131,40 @@ function snapToStep(value: number, min: number, max: number, step: number): numb
95
131
  /**
96
132
  * Provides state management for a slider component.
97
133
  */
98
- export function createSliderState(props: MaybeAccessor<SliderStateProps>): SliderState {
134
+ export function createSliderState(
135
+ props: MaybeAccessor<
136
+ SliderStateProps<number[]> & ({ value: number[] } | { defaultValue: number[] })
137
+ >,
138
+ ): SliderState;
139
+ export function createSliderState(props: MaybeAccessor<SliderStateProps>): SliderState;
140
+ export function createSliderState(
141
+ props: MaybeAccessor<SliderStateProps | SliderStateProps<number[]>>,
142
+ ): SliderState {
99
143
  const getProps = () => access(props);
100
-
101
144
  const initialProps = getProps();
102
- const initialMinValue = initialProps.minValue ?? DEFAULT_MIN;
103
- const initialMaxValue = initialProps.maxValue ?? DEFAULT_MAX;
104
- const initialStep = initialProps.step ?? DEFAULT_STEP;
105
-
106
- const minValue = createMemo(() => getProps().minValue ?? DEFAULT_MIN);
107
- const maxValue = createMemo(() => getProps().maxValue ?? DEFAULT_MAX);
108
- const step = createMemo(() => getProps().step ?? DEFAULT_STEP);
145
+ // Mode is established by explicit input shape, never by callback arity.
146
+ const arrayMode = Array.isArray(initialProps.value) || Array.isArray(initialProps.defaultValue);
147
+ const initialArray = Array.isArray(initialProps.value)
148
+ ? initialProps.value
149
+ : initialProps.defaultValue;
150
+ const initialCount = Array.isArray(initialArray) ? initialArray.length : 1;
151
+ const finite = (value: number | undefined, fallback: number) =>
152
+ typeof value === "number" && Number.isFinite(value) ? value : fallback;
153
+ const minValue = createMemo(() =>
154
+ arrayMode ? finite(getProps().minValue, DEFAULT_MIN) : (getProps().minValue ?? DEFAULT_MIN),
155
+ );
156
+ const step = createMemo(() => {
157
+ const next = arrayMode
158
+ ? finite(getProps().step, DEFAULT_STEP)
159
+ : (getProps().step ?? DEFAULT_STEP);
160
+ return arrayMode && next <= 0 ? DEFAULT_STEP : next;
161
+ });
162
+ const maxValue = createMemo(() => {
163
+ const next = arrayMode
164
+ ? finite(getProps().maxValue, DEFAULT_MAX)
165
+ : (getProps().maxValue ?? DEFAULT_MAX);
166
+ return arrayMode && next <= minValue() ? minValue() + step() : next;
167
+ });
109
168
  const orientation = createMemo(() => getProps().orientation ?? "horizontal");
110
169
  const isDisabled = createMemo(() => getProps().isDisabled ?? false);
111
170
  const pageStep = createMemo(() =>
@@ -114,103 +173,183 @@ export function createSliderState(props: MaybeAccessor<SliderStateProps>): Slide
114
173
  snapToStep((maxValue() - minValue()) / 10, 0, maxValue() - minValue(), step()),
115
174
  ),
116
175
  );
117
-
118
- // Controlled vs uncontrolled
119
176
  const isControlled = () => getProps().value !== undefined;
120
-
121
- // Internal signal for uncontrolled mode
122
- const [internalValue, setInternalValue] = createSignal(
123
- snapToStep(
124
- initialProps.defaultValue ?? initialMinValue,
125
- initialMinValue,
126
- initialMaxValue,
127
- initialStep,
128
- ),
177
+ const fallbackValues = () =>
178
+ Array.from({ length: initialCount }, (_, index) => (index === 0 ? minValue() : maxValue()));
179
+ const normalize = (raw: number | readonly number[] | undefined): number[] => {
180
+ const items = raw === undefined ? fallbackValues() : typeof raw === "number" ? [raw] : raw;
181
+ const snapped = items.map((item, index) =>
182
+ snapToStep(
183
+ arrayMode ? finite(item, index === 0 ? minValue() : maxValue()) : item,
184
+ minValue(),
185
+ maxValue(),
186
+ step(),
187
+ ),
188
+ );
189
+ return arrayMode ? snapped.sort((a, b) => a - b) : snapped;
190
+ };
191
+ const [internalValues, setInternalValues] = createInternalSignal(
192
+ normalize(initialProps.defaultValue),
129
193
  );
130
-
131
- // Dragging and focus state
132
- const [isDragging, setIsDragging] = createSignal(false);
133
- const [isFocused, setIsFocused] = createSignal(false);
134
-
135
- // Current value accessor
136
- const value = createMemo(() => {
137
- const p = getProps();
138
- const rawValue = isControlled() ? (p.value ?? minValue()) : internalValue();
139
- return snapToStep(rawValue, minValue(), maxValue(), step());
140
- });
141
-
142
- // Value as percent (0-1)
143
- const getValuePercent = createMemo(() => {
144
- return (value() - minValue()) / (maxValue() - minValue());
145
- });
146
-
147
- // Formatted value
148
- const getFormattedValue = createMemo(() => {
194
+ const values: Accessor<readonly number[]> = () =>
195
+ normalize(isControlled() ? getProps().value : internalValues());
196
+ const initialValues = [...values()];
197
+ const initialDefaultValues = normalize(initialProps.defaultValue ?? initialValues);
198
+ const defaultValues: Accessor<readonly number[]> = () =>
199
+ // Scalar defaults are captured at mount; RangeSlider resets to current domain defaults.
200
+ normalize(arrayMode ? getProps().defaultValue : initialDefaultValues);
201
+ if (arrayMode) {
202
+ // Preserve RangeSlider's reactive uncontrolled default/domain reset policy.
203
+ // The compute phase reads only props/bounds, never the mutable current values.
204
+ const resetSnapshot = () =>
205
+ isControlled()
206
+ ? undefined
207
+ : {
208
+ defaults: normalize(getProps().defaultValue),
209
+ min: minValue(),
210
+ max: maxValue(),
211
+ step: step(),
212
+ };
213
+ // Seed before effects drain: an initial equal default must not erase setters
214
+ // called during setup. Only a changed default/domain/control mode resets.
215
+ let previousReset = resetSnapshot();
216
+ createEffect(resetSnapshot, (next) => {
217
+ const previous = previousReset;
218
+ previousReset = next;
219
+ if (
220
+ next &&
221
+ (!previous ||
222
+ next.min !== previous.min ||
223
+ next.max !== previous.max ||
224
+ next.step !== previous.step ||
225
+ next.defaults.length !== previous.defaults.length ||
226
+ next.defaults.some((value, index) => value !== previous.defaults[index]))
227
+ ) {
228
+ setInternalValues(next.defaults);
229
+ }
230
+ });
231
+ }
232
+ const [draggings, setDraggings] = createInternalSignal<boolean[]>(initialValues.map(() => false));
233
+ const [focusedThumb, setFocusedThumbValue] = createInternalSignal<number | undefined>(undefined);
234
+ const isDragging = () => draggings().some(Boolean);
235
+ let pendingValues = [...initialValues];
236
+ let hasPendingUpdate = false;
237
+ // Upstream retains each setter proposal outside drag too. Rebase when rendered values change.
238
+ let nonDraggingRenderedSnapshot: readonly number[] | undefined;
239
+ const validIndex = (index: number) =>
240
+ Number.isInteger(index) && index >= 0 && index < values().length;
241
+ const getThumbValue = (index: number) => values()[index];
242
+ const getThumbMinValue = (index: number) => (index === 0 ? minValue() : values()[index - 1]);
243
+ const getThumbMaxValue = (index: number) =>
244
+ index === values().length - 1 ? maxValue() : values()[index + 1];
245
+ const emit = (kind: "onChange" | "onChangeEnd", next: readonly number[]) => {
149
246
  const p = getProps();
150
- const formatter = new Intl.NumberFormat(p.locale, p.formatOptions);
151
- return formatter.format(value());
152
- });
153
-
154
- // Set value function
155
- const setValue = (newValue: number) => {
156
- if (isDisabled()) return;
157
-
158
- const p = getProps();
159
- const snappedValue = snapToStep(newValue, minValue(), maxValue(), step());
160
-
161
- if (!isControlled()) {
162
- setInternalValue(snappedValue);
163
- }
164
-
165
- p.onChange?.(snappedValue);
247
+ // The public overloads guarantee this callback shape for the established mode.
248
+ if (arrayMode) (p as SliderStateProps<number[]>)[kind]?.([...next]);
249
+ else (p as SliderStateProps)[kind]?.(next[0]);
166
250
  };
167
-
168
- // Set value by percent
169
- const setValuePercent = (percent: number) => {
170
- const clampedPercent = clamp(percent, 0, 1);
171
- const newValue = clampedPercent * (maxValue() - minValue()) + minValue();
172
- setValue(newValue);
251
+ const setThumbValue = (index: number, nextValue: number) => {
252
+ if (isDisabled() || !validIndex(index)) return;
253
+ const rendered = values();
254
+ const retainNonDraggingProposal =
255
+ arrayMode &&
256
+ isControlled() &&
257
+ nonDraggingRenderedSnapshot !== undefined &&
258
+ rendered.length === nonDraggingRenderedSnapshot.length &&
259
+ rendered.every((item, i) => item === nonDraggingRenderedSnapshot![i]);
260
+ const base = normalize(isDragging() || retainNonDraggingProposal ? pendingValues : rendered);
261
+ const lower = index === 0 ? minValue() : base[index - 1];
262
+ const upper = index === base.length - 1 ? maxValue() : base[index + 1];
263
+ // Current RangeSlider anchors snapping to the whole domain, then clamps to neighbors.
264
+ const snapped = clamp(snapToStep(nextValue, minValue(), maxValue(), step()), lower, upper);
265
+ const next = [...base];
266
+ next[index] = snapped;
267
+ pendingValues = next;
268
+ hasPendingUpdate = true;
269
+ nonDraggingRenderedSnapshot =
270
+ !isDragging() && arrayMode && isControlled() ? [...rendered] : undefined;
271
+ const changed = next.some((item, i) => item !== rendered[i]);
272
+ if (!isControlled() && (!arrayMode || changed)) setInternalValues(next);
273
+ // Scalar's duplicate callbacks and RangeSlider's equal-pair suppression are intentional.
274
+ if (!arrayMode || changed) emit("onChange", next);
173
275
  };
174
-
175
- // Dragging state management
176
- const setDragging = (dragging: boolean) => {
177
- const wasDragging = isDragging();
178
- setIsDragging(dragging);
179
-
180
- // Call onChangeEnd when dragging stops
181
- if (wasDragging && !dragging) {
182
- getProps().onChangeEnd?.(value());
276
+ const setThumbPercent = (index: number, percent: number) =>
277
+ setThumbValue(index, clamp(percent, 0, 1) * (maxValue() - minValue()) + minValue());
278
+ const getThumbPercent = (index: number) =>
279
+ (getThumbValue(index) - minValue()) / (maxValue() - minValue());
280
+ const isThumbDragging = (index: number) => draggings()[index] ?? false;
281
+ const setThumbDragging = (index: number, dragging: boolean) => {
282
+ if (dragging && (!validIndex(index) || (arrayMode && isDisabled()))) return;
283
+ const wasDragging = isThumbDragging(index);
284
+ if (wasDragging === dragging) return;
285
+ // One snapshot per drag session: a second handle cannot discard unechoed updates.
286
+ if (dragging && !isDragging()) {
287
+ pendingValues = [...values()];
288
+ hasPendingUpdate = false;
289
+ nonDraggingRenderedSnapshot = undefined;
290
+ }
291
+ const next = [...draggings()];
292
+ next[index] = dragging;
293
+ setDraggings(next);
294
+ // Allow disabled endings to release ownership; completion occurs only at the final end.
295
+ if (wasDragging && !isDragging()) {
296
+ emit("onChangeEnd", normalize(hasPendingUpdate ? pendingValues : values()));
183
297
  }
184
298
  };
185
-
186
- // Increment/decrement
187
- const increment = (stepMultiplier = 1) => {
188
- if (isDisabled()) return;
189
- setValue(value() + step() * stepMultiplier);
299
+ const setFocusedThumb = (index: number | undefined) => {
300
+ if (index === undefined || validIndex(index)) setFocusedThumbValue(index);
190
301
  };
191
-
192
- const decrement = (stepMultiplier = 1) => {
193
- if (isDisabled()) return;
194
- setValue(value() - step() * stepMultiplier);
195
- };
196
-
197
- // Set focused state
198
- const setFocused = (focused: boolean) => {
199
- setIsFocused(focused);
200
- };
201
-
302
+ const incrementThumb = (index: number, stepSize = 1) =>
303
+ setThumbValue(index, getThumbValue(index) + Math.max(stepSize, step()));
304
+ const decrementThumb = (index: number, stepSize = 1) =>
305
+ setThumbValue(index, getThumbValue(index) - Math.max(stepSize, step()));
306
+ const formatter = createMemo(
307
+ () => new Intl.NumberFormat(getProps().locale, getProps().formatOptions),
308
+ );
309
+ function getFormattedValue(): string;
310
+ function getFormattedValue(value: number | readonly number[]): string;
311
+ function getFormattedValue(value: number | readonly number[] = values()): string {
312
+ const items = typeof value === "number" ? [value] : value;
313
+ if (items.length === 0) return "";
314
+ if (items.length === 1) return formatter().format(items[0]);
315
+ if (items.length === 2) return formatter().formatRange(items[0], items[1]);
316
+ return new Intl.ListFormat(formatter().resolvedOptions().locale, { type: "unit" }).format(
317
+ items.map((item) => formatter().format(item)),
318
+ );
319
+ }
320
+ const value = () => getThumbValue(0) ?? minValue();
321
+ const setValue = (next: number) => setThumbValue(0, next);
202
322
  return {
323
+ values,
324
+ defaultValues,
325
+ getThumbValue,
326
+ setThumbValue,
327
+ setThumbPercent,
328
+ getThumbPercent,
329
+ getThumbMinValue,
330
+ getThumbMaxValue,
331
+ getThumbValueLabel: (index) => getFormattedValue(getThumbValue(index)),
332
+ isThumbDragging,
333
+ setThumbDragging,
334
+ focusedThumb,
335
+ setFocusedThumb,
336
+ incrementThumb,
337
+ decrementThumb,
203
338
  value,
204
339
  setValue,
205
- setValuePercent,
206
- getValuePercent,
340
+ setValuePercent: (percent) => setThumbPercent(0, percent),
341
+ getValuePercent: () => getThumbPercent(0),
207
342
  getFormattedValue,
208
343
  isDragging,
209
- setDragging,
210
- isFocused,
211
- setFocused,
212
- increment,
213
- decrement,
344
+ setDragging: (dragging) => setThumbDragging(0, dragging),
345
+ isFocused: () => focusedThumb() !== undefined,
346
+ setFocused: (focused) => {
347
+ if (focused) setFocusedThumb(0);
348
+ else if (focusedThumb() === 0) setFocusedThumb(undefined);
349
+ },
350
+ // Preserve even zero/negative scalar multiplier semantics, rather than using indexed delta.
351
+ increment: (multiplier = 1) => setValue(value() + step() * multiplier),
352
+ decrement: (multiplier = 1) => setValue(value() - step() * multiplier),
214
353
  get minValue() {
215
354
  return minValue();
216
355
  },
package/src/ssr/index.ts CHANGED
@@ -1,15 +1,34 @@
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+
13
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/ssr/SSRProvider.tsx
14
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/utils/useId.ts
15
+
1
16
  /**
2
17
  * SSR utilities for Solid Stately
3
18
  *
4
19
  * SolidJS has built-in SSR support with `isServer` and `createUniqueId()`.
5
- * These utilities provide a consistent API matching React-Stately's patterns.
20
+ * These utilities provide a consistent port of the upstream SSR API.
21
+ *
22
+ * Ported from:
23
+ * - packages/react-aria/src/ssr/SSRProvider.tsx
24
+ * - packages/react-aria/src/utils/useId.ts
6
25
  */
7
26
 
8
27
  import { createUniqueId } from "solid-js";
9
- import { isServer as _isServer } from "solid-js/web";
28
+ import { isServer as _isServer } from "@solidjs/web";
10
29
 
11
30
  /**
12
- * Re-export isServer from solid-js/web for convenience.
31
+ * Re-export isServer from @solidjs/web for convenience.
13
32
  */
14
33
  export const isServer = _isServer;
15
34
 
@@ -27,11 +46,22 @@ export function createIsSSR(): boolean {
27
46
  *
28
47
  * @param defaultId - Optional default ID to use instead of generating one.
29
48
  */
49
+ let fallbackIdCounter = 0;
50
+
30
51
  export function createId(defaultId?: string): string {
31
52
  if (defaultId) {
32
53
  return defaultId;
33
54
  }
34
- return `solid-stately-${createUniqueId()}`;
55
+ let uniqueId: string | undefined;
56
+ try {
57
+ uniqueId = createUniqueId();
58
+ } catch {
59
+ // createUniqueId throws outside of a reactive context in server/hydration passes
60
+ }
61
+ if (!uniqueId) {
62
+ uniqueId = `nh-${++fallbackIdCounter}`;
63
+ }
64
+ return `solid-stately-${uniqueId}`;
35
65
  }
36
66
 
37
67
  /**