@proyecto-viviana/solid-stately 0.5.1 → 0.6.0-rc.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 (414) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/dist/autocomplete/createAutocompleteState.d.ts +2 -1
  4. package/dist/autocomplete/createAutocompleteState.d.ts.map +1 -0
  5. package/dist/autocomplete/index.d.ts +1 -0
  6. package/dist/autocomplete/index.d.ts.map +1 -0
  7. package/dist/calendar/IncompleteDate.d.ts +2 -1
  8. package/dist/calendar/IncompleteDate.d.ts.map +1 -0
  9. package/dist/calendar/createCalendarState.d.ts +7 -8
  10. package/dist/calendar/createCalendarState.d.ts.map +1 -0
  11. package/dist/calendar/createDateFieldState.d.ts +4 -20
  12. package/dist/calendar/createDateFieldState.d.ts.map +1 -0
  13. package/dist/calendar/createDatePickerState.d.ts +2 -7
  14. package/dist/calendar/createDatePickerState.d.ts.map +1 -0
  15. package/dist/calendar/createRangeCalendarState.d.ts +7 -7
  16. package/dist/calendar/createRangeCalendarState.d.ts.map +1 -0
  17. package/dist/calendar/createTimeFieldState.d.ts +4 -23
  18. package/dist/calendar/createTimeFieldState.d.ts.map +1 -0
  19. package/dist/calendar/index.d.ts +1 -0
  20. package/dist/calendar/index.d.ts.map +1 -0
  21. package/dist/calendar/intl/index.d.ts +1 -0
  22. package/dist/calendar/intl/index.d.ts.map +1 -0
  23. package/dist/checkbox/createCheckboxGroupState.d.ts +1 -0
  24. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -0
  25. package/dist/checkbox/index.d.ts +1 -0
  26. package/dist/checkbox/index.d.ts.map +1 -0
  27. package/dist/collections/ListCollection.d.ts +5 -0
  28. package/dist/collections/ListCollection.d.ts.map +1 -0
  29. package/dist/collections/createListState.d.ts +2 -6
  30. package/dist/collections/createListState.d.ts.map +1 -0
  31. package/dist/collections/createMenuState.d.ts +30 -13
  32. package/dist/collections/createMenuState.d.ts.map +1 -0
  33. package/dist/collections/createSelectionState.d.ts +2 -5
  34. package/dist/collections/createSelectionState.d.ts.map +1 -0
  35. package/dist/collections/getChildNodes.d.ts +6 -3
  36. package/dist/collections/getChildNodes.d.ts.map +1 -0
  37. package/dist/collections/index.d.ts +2 -1
  38. package/dist/collections/index.d.ts.map +1 -0
  39. package/dist/collections/types.d.ts +36 -2
  40. package/dist/collections/types.d.ts.map +1 -0
  41. package/dist/color/Color.d.ts +7 -1
  42. package/dist/color/Color.d.ts.map +1 -0
  43. package/dist/color/createColorAreaState.d.ts +2 -5
  44. package/dist/color/createColorAreaState.d.ts.map +1 -0
  45. package/dist/color/createColorFieldState.d.ts +2 -5
  46. package/dist/color/createColorFieldState.d.ts.map +1 -0
  47. package/dist/color/createColorSliderState.d.ts +2 -5
  48. package/dist/color/createColorSliderState.d.ts.map +1 -0
  49. package/dist/color/createColorWheelState.d.ts +2 -5
  50. package/dist/color/createColorWheelState.d.ts.map +1 -0
  51. package/dist/color/getColorChannels.d.ts +3 -0
  52. package/dist/color/getColorChannels.d.ts.map +1 -0
  53. package/dist/color/index.d.ts +2 -1
  54. package/dist/color/index.d.ts.map +1 -0
  55. package/dist/color/intl/index.d.ts +1 -0
  56. package/dist/color/intl/index.d.ts.map +1 -0
  57. package/dist/color/types.d.ts +2 -1
  58. package/dist/color/types.d.ts.map +1 -0
  59. package/dist/combobox/createComboBoxState.d.ts +4 -8
  60. package/dist/combobox/createComboBoxState.d.ts.map +1 -0
  61. package/dist/combobox/index.d.ts +1 -0
  62. package/dist/combobox/index.d.ts.map +1 -0
  63. package/dist/data/createAsyncList.d.ts +1 -7
  64. package/dist/data/createAsyncList.d.ts.map +1 -0
  65. package/dist/data/createListData.d.ts +1 -6
  66. package/dist/data/createListData.d.ts.map +1 -0
  67. package/dist/data/createTreeData.d.ts +1 -6
  68. package/dist/data/createTreeData.d.ts.map +1 -0
  69. package/dist/data/index.d.ts +1 -0
  70. package/dist/data/index.d.ts.map +1 -0
  71. package/dist/datepicker/index.d.ts +1 -0
  72. package/dist/datepicker/index.d.ts.map +1 -0
  73. package/dist/disclosure/createDisclosureState.d.ts +2 -5
  74. package/dist/disclosure/createDisclosureState.d.ts.map +1 -0
  75. package/dist/disclosure/index.d.ts +1 -0
  76. package/dist/disclosure/index.d.ts.map +1 -0
  77. package/dist/dnd/createDragState.d.ts +2 -6
  78. package/dist/dnd/createDragState.d.ts.map +1 -0
  79. package/dist/dnd/createDraggableCollectionState.d.ts +39 -10
  80. package/dist/dnd/createDraggableCollectionState.d.ts.map +1 -0
  81. package/dist/dnd/createDropState.d.ts +2 -6
  82. package/dist/dnd/createDropState.d.ts.map +1 -0
  83. package/dist/dnd/createDroppableCollectionState.d.ts +28 -11
  84. package/dist/dnd/createDroppableCollectionState.d.ts.map +1 -0
  85. package/dist/dnd/index.d.ts +3 -2
  86. package/dist/dnd/index.d.ts.map +1 -0
  87. package/dist/dnd/types.d.ts +17 -0
  88. package/dist/dnd/types.d.ts.map +1 -0
  89. package/dist/flags/flags.d.ts +5 -0
  90. package/dist/flags/flags.d.ts.map +1 -0
  91. package/dist/form/createFormValidationState.d.ts +2 -9
  92. package/{src → dist}/form/createFormValidationState.d.ts.map +1 -1
  93. package/dist/form/index.d.ts +1 -0
  94. package/dist/form/index.d.ts.map +1 -0
  95. package/dist/grid/createGridState.d.ts +3 -2
  96. package/dist/grid/createGridState.d.ts.map +1 -0
  97. package/dist/grid/index.d.ts +1 -0
  98. package/dist/grid/index.d.ts.map +1 -0
  99. package/dist/grid/types.d.ts +23 -1
  100. package/dist/grid/types.d.ts.map +1 -0
  101. package/dist/index.d.ts +4 -2
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +2030 -593
  104. package/dist/index.js.map +1 -1
  105. package/dist/menu/index.d.ts +2 -1
  106. package/dist/menu/index.d.ts.map +1 -0
  107. package/dist/numberfield/createNumberFieldState.d.ts +31 -6
  108. package/dist/numberfield/createNumberFieldState.d.ts.map +1 -0
  109. package/dist/numberfield/index.d.ts +1 -0
  110. package/dist/numberfield/index.d.ts.map +1 -0
  111. package/dist/overlays/createOverlayTriggerState.d.ts +12 -1
  112. package/dist/overlays/createOverlayTriggerState.d.ts.map +1 -0
  113. package/dist/overlays/index.d.ts +1 -0
  114. package/dist/overlays/index.d.ts.map +1 -0
  115. package/dist/private/flags/flags.js +26 -0
  116. package/dist/private/flags/flags.js.map +1 -0
  117. package/dist/radio/createRadioGroupState.d.ts +1 -0
  118. package/dist/radio/createRadioGroupState.d.ts.map +1 -0
  119. package/dist/radio/index.d.ts +1 -0
  120. package/dist/radio/index.d.ts.map +1 -0
  121. package/dist/searchfield/createSearchFieldState.d.ts +2 -5
  122. package/dist/searchfield/createSearchFieldState.d.ts.map +1 -0
  123. package/dist/searchfield/index.d.ts +1 -0
  124. package/dist/searchfield/index.d.ts.map +1 -0
  125. package/dist/select/createSelectState.d.ts +17 -6
  126. package/dist/select/createSelectState.d.ts.map +1 -0
  127. package/dist/select/index.d.ts +1 -0
  128. package/dist/select/index.d.ts.map +1 -0
  129. package/dist/selection/Selection.d.ts +2 -1
  130. package/dist/selection/Selection.d.ts.map +1 -0
  131. package/dist/selection/SelectionManager.d.ts +1 -19
  132. package/dist/selection/SelectionManager.d.ts.map +1 -0
  133. package/dist/selection/createMultipleSelectionState.d.ts +2 -13
  134. package/dist/selection/createMultipleSelectionState.d.ts.map +1 -0
  135. package/dist/selection/index.d.ts +1 -0
  136. package/dist/selection/index.d.ts.map +1 -0
  137. package/dist/slider/createSliderState.d.ts +2 -5
  138. package/dist/slider/createSliderState.d.ts.map +1 -0
  139. package/dist/slider/index.d.ts +1 -0
  140. package/dist/slider/index.d.ts.map +1 -0
  141. package/dist/ssr/index.d.ts +2 -7
  142. package/dist/ssr/index.d.ts.map +1 -0
  143. package/dist/steplist/createStepListState.d.ts +2 -5
  144. package/dist/steplist/createStepListState.d.ts.map +1 -0
  145. package/dist/steplist/index.d.ts +1 -0
  146. package/dist/steplist/index.d.ts.map +1 -0
  147. package/dist/table/TableCollection.d.ts +1 -0
  148. package/dist/table/TableCollection.d.ts.map +1 -0
  149. package/dist/table/createTableColumnResizeState.d.ts +2 -9
  150. package/dist/table/createTableColumnResizeState.d.ts.map +1 -0
  151. package/dist/table/createTableState.d.ts +2 -5
  152. package/dist/table/createTableState.d.ts.map +1 -0
  153. package/dist/table/createTreeGridState.d.ts +2 -8
  154. package/dist/table/createTreeGridState.d.ts.map +1 -0
  155. package/dist/table/index.d.ts +1 -0
  156. package/dist/table/index.d.ts.map +1 -0
  157. package/dist/table/types.d.ts +35 -1
  158. package/dist/table/types.d.ts.map +1 -0
  159. package/dist/tabs/createTabListState.d.ts +2 -5
  160. package/dist/tabs/createTabListState.d.ts.map +1 -0
  161. package/dist/tabs/index.d.ts +1 -0
  162. package/dist/tabs/index.d.ts.map +1 -0
  163. package/dist/textfield/createTextFieldState.d.ts +1 -0
  164. package/dist/textfield/createTextFieldState.d.ts.map +1 -0
  165. package/dist/textfield/index.d.ts +1 -0
  166. package/dist/textfield/index.d.ts.map +1 -0
  167. package/dist/toast/createToastState.d.ts +2 -5
  168. package/dist/toast/createToastState.d.ts.map +1 -0
  169. package/dist/toast/index.d.ts +1 -0
  170. package/dist/toast/index.d.ts.map +1 -0
  171. package/dist/toggle/createToggleGroupState.d.ts +1 -0
  172. package/dist/toggle/createToggleGroupState.d.ts.map +1 -0
  173. package/dist/toggle/createToggleState.d.ts +1 -0
  174. package/dist/toggle/createToggleState.d.ts.map +1 -0
  175. package/dist/toggle/index.d.ts +1 -0
  176. package/dist/toggle/index.d.ts.map +1 -0
  177. package/dist/tokenfield/TokenFieldValue.d.ts +72 -0
  178. package/dist/tokenfield/TokenFieldValue.d.ts.map +1 -0
  179. package/dist/tokenfield/createTokenFieldState.d.ts +33 -0
  180. package/dist/tokenfield/createTokenFieldState.d.ts.map +1 -0
  181. package/dist/tokenfield/index.d.ts +3 -0
  182. package/dist/tokenfield/index.d.ts.map +1 -0
  183. package/dist/tooltip/createTooltipTriggerState.d.ts +9 -8
  184. package/dist/tooltip/createTooltipTriggerState.d.ts.map +1 -0
  185. package/dist/tooltip/index.d.ts +1 -0
  186. package/dist/tooltip/index.d.ts.map +1 -0
  187. package/dist/tree/TreeCollection.d.ts +1 -0
  188. package/dist/tree/TreeCollection.d.ts.map +1 -0
  189. package/dist/tree/createTreeState.d.ts +2 -7
  190. package/{src → dist}/tree/createTreeState.d.ts.map +1 -1
  191. package/dist/tree/index.d.ts +1 -0
  192. package/dist/tree/index.d.ts.map +1 -0
  193. package/dist/tree/types.d.ts +19 -1
  194. package/dist/tree/types.d.ts.map +1 -0
  195. package/dist/utils/index.d.ts +3 -1
  196. package/dist/utils/index.d.ts.map +1 -0
  197. package/dist/utils/owner.d.ts +9 -0
  198. package/dist/utils/owner.d.ts.map +1 -0
  199. package/dist/utils/reactivity.d.ts +19 -0
  200. package/dist/utils/reactivity.d.ts.map +1 -0
  201. package/package.json +21 -9
  202. package/src/autocomplete/createAutocompleteState.ts +18 -4
  203. package/src/calendar/IncompleteDate.ts +15 -1
  204. package/src/calendar/createCalendarState.ts +194 -79
  205. package/src/calendar/createDateFieldState.ts +45 -31
  206. package/src/calendar/createDatePickerState.ts +32 -14
  207. package/src/calendar/createRangeCalendarState.ts +134 -73
  208. package/src/calendar/createTimeFieldState.ts +25 -6
  209. package/src/calendar/intl/index.ts +37 -2
  210. package/src/checkbox/createCheckboxGroupState.ts +29 -13
  211. package/src/collections/ListCollection.ts +31 -0
  212. package/src/collections/createListState.ts +23 -6
  213. package/src/collections/createMenuState.ts +59 -14
  214. package/src/collections/createSelectionState.ts +32 -12
  215. package/src/collections/getChildNodes.ts +20 -3
  216. package/src/collections/index.ts +2 -0
  217. package/src/collections/types.ts +35 -2
  218. package/src/color/Color.ts +61 -22
  219. package/src/color/createColorAreaState.ts +29 -4
  220. package/src/color/createColorFieldState.ts +37 -11
  221. package/src/color/createColorSliderState.ts +36 -7
  222. package/src/color/createColorWheelState.ts +20 -4
  223. package/src/color/getColorChannels.ts +16 -0
  224. package/src/color/index.ts +1 -0
  225. package/src/color/intl/index.ts +38 -3
  226. package/src/color/types.ts +1 -1
  227. package/src/combobox/createComboBoxState.ts +178 -195
  228. package/src/data/createAsyncList.ts +22 -2
  229. package/src/data/createListData.ts +19 -2
  230. package/src/data/createTreeData.ts +19 -3
  231. package/src/disclosure/createDisclosureState.ts +40 -19
  232. package/src/dnd/createDragState.ts +22 -4
  233. package/src/dnd/createDraggableCollectionState.ts +137 -10
  234. package/src/dnd/createDropState.ts +21 -3
  235. package/src/dnd/createDroppableCollectionState.ts +117 -11
  236. package/src/dnd/index.ts +4 -0
  237. package/src/dnd/types.ts +16 -0
  238. package/src/flags/flags.ts +25 -0
  239. package/src/form/createFormValidationState.ts +54 -36
  240. package/src/grid/createGridState.ts +187 -109
  241. package/src/grid/types.ts +22 -1
  242. package/src/index.ts +15 -0
  243. package/src/menu/index.ts +2 -0
  244. package/src/numberfield/createNumberFieldState.ts +153 -66
  245. package/src/overlays/createOverlayTriggerState.ts +31 -4
  246. package/src/radio/createRadioGroupState.ts +19 -5
  247. package/src/searchfield/createSearchFieldState.ts +18 -3
  248. package/src/select/createSelectState.ts +73 -8
  249. package/src/selection/Selection.ts +15 -1
  250. package/src/selection/SelectionManager.ts +14 -0
  251. package/src/selection/createMultipleSelectionState.ts +44 -25
  252. package/src/slider/createSliderState.ts +20 -5
  253. package/src/ssr/index.ts +27 -4
  254. package/src/steplist/createStepListState.ts +38 -17
  255. package/src/table/TableCollection.ts +14 -0
  256. package/src/table/createTableColumnResizeState.ts +20 -3
  257. package/src/table/createTableState.ts +22 -1
  258. package/src/table/createTreeGridState.ts +21 -4
  259. package/src/table/types.ts +36 -3
  260. package/src/tabs/createTabListState.ts +77 -34
  261. package/src/textfield/createTextFieldState.ts +17 -3
  262. package/src/toast/createToastState.ts +28 -3
  263. package/src/toggle/createToggleGroupState.ts +20 -5
  264. package/src/toggle/createToggleState.ts +19 -4
  265. package/src/tokenfield/TokenFieldValue.ts +440 -0
  266. package/src/tokenfield/createTokenFieldState.ts +88 -0
  267. package/src/tokenfield/index.ts +14 -0
  268. package/src/tooltip/createTooltipTriggerState.ts +49 -13
  269. package/src/tree/TreeCollection.ts +14 -0
  270. package/src/tree/createTreeState.ts +62 -35
  271. package/src/tree/types.ts +18 -1
  272. package/src/utils/index.ts +9 -1
  273. package/src/utils/owner.ts +20 -0
  274. package/src/utils/reactivity.ts +45 -1
  275. package/src/autocomplete/createAutocompleteState.d.ts +0 -48
  276. package/src/autocomplete/createAutocompleteState.d.ts.map +0 -1
  277. package/src/autocomplete/index.d.ts +0 -6
  278. package/src/autocomplete/index.d.ts.map +0 -1
  279. package/src/calendar/createCalendarState.d.ts +0 -152
  280. package/src/calendar/createCalendarState.d.ts.map +0 -1
  281. package/src/calendar/createDateFieldState.d.ts +0 -145
  282. package/src/calendar/createDateFieldState.d.ts.map +0 -1
  283. package/src/calendar/createRangeCalendarState.d.ts +0 -171
  284. package/src/calendar/createRangeCalendarState.d.ts.map +0 -1
  285. package/src/calendar/createTimeFieldState.d.ts +0 -97
  286. package/src/calendar/createTimeFieldState.d.ts.map +0 -1
  287. package/src/calendar/index.d.ts +0 -80
  288. package/src/calendar/index.d.ts.map +0 -1
  289. package/src/checkbox/createCheckboxGroupState.d.ts +0 -73
  290. package/src/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  291. package/src/checkbox/index.d.ts +0 -6
  292. package/src/checkbox/index.d.ts.map +0 -1
  293. package/src/collections/ListCollection.d.ts +0 -40
  294. package/src/collections/ListCollection.d.ts.map +0 -1
  295. package/src/collections/createListState.d.ts +0 -94
  296. package/src/collections/createListState.d.ts.map +0 -1
  297. package/src/collections/createMenuState.d.ts +0 -55
  298. package/src/collections/createMenuState.d.ts.map +0 -1
  299. package/src/collections/createSelectionState.d.ts +0 -89
  300. package/src/collections/createSelectionState.d.ts.map +0 -1
  301. package/src/collections/index.d.ts +0 -38
  302. package/src/collections/index.d.ts.map +0 -1
  303. package/src/collections/types.d.ts +0 -147
  304. package/src/collections/types.d.ts.map +0 -1
  305. package/src/color/Color.d.ts +0 -43
  306. package/src/color/Color.d.ts.map +0 -1
  307. package/src/color/createColorAreaState.d.ts +0 -78
  308. package/src/color/createColorAreaState.d.ts.map +0 -1
  309. package/src/color/createColorFieldState.d.ts +0 -57
  310. package/src/color/createColorFieldState.d.ts.map +0 -1
  311. package/src/color/createColorSliderState.d.ts +0 -69
  312. package/src/color/createColorSliderState.d.ts.map +0 -1
  313. package/src/color/createColorWheelState.d.ts +0 -53
  314. package/src/color/createColorWheelState.d.ts.map +0 -1
  315. package/src/color/index.d.ts +0 -39
  316. package/src/color/index.d.ts.map +0 -1
  317. package/src/color/types.d.ts +0 -111
  318. package/src/color/types.d.ts.map +0 -1
  319. package/src/combobox/createComboBoxState.d.ts +0 -127
  320. package/src/combobox/createComboBoxState.d.ts.map +0 -1
  321. package/src/combobox/index.d.ts +0 -13
  322. package/src/combobox/index.d.ts.map +0 -1
  323. package/src/disclosure/createDisclosureState.d.ts +0 -68
  324. package/src/disclosure/createDisclosureState.d.ts.map +0 -1
  325. package/src/disclosure/index.d.ts +0 -10
  326. package/src/disclosure/index.d.ts.map +0 -1
  327. package/src/dnd/createDragState.d.ts +0 -68
  328. package/src/dnd/createDragState.d.ts.map +0 -1
  329. package/src/dnd/createDraggableCollectionState.d.ts +0 -68
  330. package/src/dnd/createDraggableCollectionState.d.ts.map +0 -1
  331. package/src/dnd/createDropState.d.ts +0 -80
  332. package/src/dnd/createDropState.d.ts.map +0 -1
  333. package/src/dnd/createDroppableCollectionState.d.ts +0 -107
  334. package/src/dnd/createDroppableCollectionState.d.ts.map +0 -1
  335. package/src/dnd/index.d.ts +0 -60
  336. package/src/dnd/index.d.ts.map +0 -1
  337. package/src/dnd/types.d.ts +0 -277
  338. package/src/dnd/types.d.ts.map +0 -1
  339. package/src/form/createFormValidationState.d.ts +0 -102
  340. package/src/form/index.d.ts +0 -16
  341. package/src/form/index.d.ts.map +0 -1
  342. package/src/grid/createGridState.d.ts +0 -15
  343. package/src/grid/createGridState.d.ts.map +0 -1
  344. package/src/grid/index.d.ts +0 -7
  345. package/src/grid/index.d.ts.map +0 -1
  346. package/src/grid/types.d.ts +0 -163
  347. package/src/grid/types.d.ts.map +0 -1
  348. package/src/index.d.ts +0 -311
  349. package/src/index.d.ts.map +0 -1
  350. package/src/numberfield/createNumberFieldState.d.ts +0 -67
  351. package/src/numberfield/createNumberFieldState.d.ts.map +0 -1
  352. package/src/numberfield/index.d.ts +0 -6
  353. package/src/numberfield/index.d.ts.map +0 -1
  354. package/src/overlays/createOverlayTriggerState.d.ts +0 -34
  355. package/src/overlays/createOverlayTriggerState.d.ts.map +0 -1
  356. package/src/overlays/index.d.ts +0 -6
  357. package/src/overlays/index.d.ts.map +0 -1
  358. package/src/radio/createRadioGroupState.d.ts +0 -79
  359. package/src/radio/createRadioGroupState.d.ts.map +0 -1
  360. package/src/radio/index.d.ts +0 -7
  361. package/src/radio/index.d.ts.map +0 -1
  362. package/src/searchfield/createSearchFieldState.d.ts +0 -27
  363. package/src/searchfield/createSearchFieldState.d.ts.map +0 -1
  364. package/src/searchfield/index.d.ts +0 -3
  365. package/src/searchfield/index.d.ts.map +0 -1
  366. package/src/select/createSelectState.d.ts +0 -75
  367. package/src/select/createSelectState.d.ts.map +0 -1
  368. package/src/select/index.d.ts +0 -2
  369. package/src/select/index.d.ts.map +0 -1
  370. package/src/slider/createSliderState.d.ts +0 -72
  371. package/src/slider/createSliderState.d.ts.map +0 -1
  372. package/src/slider/index.d.ts +0 -3
  373. package/src/slider/index.d.ts.map +0 -1
  374. package/src/ssr/index.d.ts +0 -28
  375. package/src/ssr/index.d.ts.map +0 -1
  376. package/src/table/TableCollection.d.ts +0 -54
  377. package/src/table/TableCollection.d.ts.map +0 -1
  378. package/src/table/createTableState.d.ts +0 -15
  379. package/src/table/createTableState.d.ts.map +0 -1
  380. package/src/table/index.d.ts +0 -18
  381. package/src/table/index.d.ts.map +0 -1
  382. package/src/table/types.d.ts +0 -145
  383. package/src/table/types.d.ts.map +0 -1
  384. package/src/tabs/createTabListState.d.ts +0 -70
  385. package/src/tabs/createTabListState.d.ts.map +0 -1
  386. package/src/tabs/index.d.ts +0 -8
  387. package/src/tabs/index.d.ts.map +0 -1
  388. package/src/textfield/createTextFieldState.d.ts +0 -32
  389. package/src/textfield/createTextFieldState.d.ts.map +0 -1
  390. package/src/textfield/index.d.ts +0 -6
  391. package/src/textfield/index.d.ts.map +0 -1
  392. package/src/toast/createToastState.d.ts +0 -129
  393. package/src/toast/createToastState.d.ts.map +0 -1
  394. package/src/toast/index.d.ts +0 -12
  395. package/src/toast/index.d.ts.map +0 -1
  396. package/src/toggle/createToggleState.d.ts +0 -34
  397. package/src/toggle/createToggleState.d.ts.map +0 -1
  398. package/src/toggle/index.d.ts +0 -2
  399. package/src/toggle/index.d.ts.map +0 -1
  400. package/src/tooltip/createTooltipTriggerState.d.ts +0 -39
  401. package/src/tooltip/createTooltipTriggerState.d.ts.map +0 -1
  402. package/src/tooltip/index.d.ts +0 -7
  403. package/src/tooltip/index.d.ts.map +0 -1
  404. package/src/tree/TreeCollection.d.ts +0 -43
  405. package/src/tree/TreeCollection.d.ts.map +0 -1
  406. package/src/tree/createTreeState.d.ts +0 -17
  407. package/src/tree/index.d.ts +0 -13
  408. package/src/tree/index.d.ts.map +0 -1
  409. package/src/tree/types.d.ts +0 -162
  410. package/src/tree/types.d.ts.map +0 -1
  411. package/src/utils/index.d.ts +0 -2
  412. package/src/utils/index.d.ts.map +0 -1
  413. package/src/utils/reactivity.d.ts +0 -28
  414. package/src/utils/reactivity.d.ts.map +0 -1
@@ -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/combobox/useComboBoxState.ts
14
+
1
15
  /**
2
16
  * State management for ComboBox components.
3
17
  * Based on @react-stately/combobox useComboBoxState.
@@ -6,10 +20,12 @@
6
20
  * either type to filter options or select from a list.
7
21
  */
8
22
 
9
- import { createSignal, createMemo, createEffect, untrack, type Accessor } from "solid-js";
10
- import { access, type MaybeAccessor } from "../utils";
11
- import { createListState } from "../collections/createListState";
23
+ import { createMemo, createEffect, untrack } from "solid-js";
24
+ import type { Accessor } from "solid-js";
25
+ import { createInternalSignal, access, type MaybeAccessor } from "../utils";
26
+ import { createListState, type ListState } from "../collections/createListState";
12
27
  import { createOverlayTriggerState } from "../overlays";
28
+ import { ListCollection } from "../collections/ListCollection";
13
29
  import type { Key, CollectionNode, Collection, FocusStrategy } from "../collections/types";
14
30
  import type { SelectionManager } from "../selection/SelectionManager";
15
31
 
@@ -103,6 +119,8 @@ export interface ComboBoxState<T = unknown> {
103
119
  setSelectedKey(key: Key | null): void;
104
120
  /** The currently selected keys (multiple mode). */
105
121
  readonly selectedKeys: Accessor<Set<Key>>;
122
+ /** Replace the selected keys (multiple mode). */
123
+ setSelectedKeys(keys: Set<Key>): void;
106
124
  /** The currently selected items (multiple mode). */
107
125
  readonly selectedItems: Accessor<CollectionNode<T>[]>;
108
126
  /** Remove a selected key (multiple mode). */
@@ -167,17 +185,17 @@ export function createComboBoxState<T = unknown>(
167
185
  const isMultiple = () => getProps().selectionMode === "multiple";
168
186
 
169
187
  // Track focus strategy for list navigation
170
- const [focusStrategy, setFocusStrategy] = createSignal<FocusStrategy | null>(null);
188
+ const [focusStrategy, setFocusStrategy] = createInternalSignal<FocusStrategy | null>(null);
171
189
 
172
190
  // Track whether we're showing all items (vs filtered)
173
- const [showAllItems, setShowAllItems] = createSignal(false);
191
+ const [showAllItems, setShowAllItems] = createInternalSignal(false);
174
192
 
175
193
  // Track the menu open trigger
176
194
  let menuOpenTrigger: MenuTriggerAction = "focus";
177
195
 
178
196
  // ---- Multi-select State ----
179
197
  const isMultiSelectionControlled = () => getProps().selectedKeys !== undefined;
180
- const [internalSelectedKeys, setInternalSelectedKeys] = createSignal<Set<Key>>(
198
+ const [internalSelectedKeys, setInternalSelectedKeys] = createInternalSignal<Set<Key>>(
181
199
  new Set(getProps().defaultSelectedKeys ?? []),
182
200
  );
183
201
 
@@ -197,7 +215,7 @@ export function createComboBoxState<T = unknown>(
197
215
  // ---- Selection State (single mode) ----
198
216
  // Note: Selection state is initialized first because input value may depend on it
199
217
  const isSelectionControlled = () => getProps().selectedKey !== undefined;
200
- const [internalSelectedKey, setInternalSelectedKey] = createSignal<Key | null>(
218
+ const [internalSelectedKey, setInternalSelectedKey] = createInternalSignal<Key | null>(
201
219
  getProps().defaultSelectedKey ?? null,
202
220
  );
203
221
 
@@ -206,7 +224,7 @@ export function createComboBoxState<T = unknown>(
206
224
  const isInputControlled = () => getProps().inputValue !== undefined;
207
225
 
208
226
  // We'll set the proper initial value after collection is created
209
- const [internalInputValue, setInternalInputValue] = createSignal(
227
+ const [internalInputValue, setInternalInputValue] = createInternalSignal(
210
228
  getProps().defaultInputValue ?? "",
211
229
  );
212
230
  // Track if we've initialized input from selection
@@ -217,6 +235,9 @@ export function createComboBoxState<T = unknown>(
217
235
  };
218
236
 
219
237
  const setInputValue = (value: string) => {
238
+ // Solid 2 batches writes onto a microtask, so onInputChange and the
239
+ // auto-open effect settle in one flush (CB-OC-03: onInputChange then
240
+ // onOpenChange(true, "input")).
220
241
  if (!isInputControlled()) {
221
242
  setInternalInputValue(value);
222
243
  }
@@ -224,13 +245,16 @@ export function createComboBoxState<T = unknown>(
224
245
  };
225
246
 
226
247
  // Track last committed input value
227
- const [lastValue, setLastValue] = createSignal(inputValue());
248
+ const [lastValue, setLastValue] = createInternalSignal(inputValue());
228
249
 
229
250
  const selectedKey: Accessor<Key | null> = () => {
230
251
  return isSelectionControlled() ? (getProps().selectedKey ?? null) : internalSelectedKey();
231
252
  };
232
253
 
233
254
  const setSelectedKey = (key: Key | null) => {
255
+ // Solid 2 batches writes onto a microtask, so a fully controlled
256
+ // onSelectionChange that updates selectedKey then inputValue settles in
257
+ // one flush instead of closing then auto-opening.
234
258
  if (!isSelectionControlled()) {
235
259
  setInternalSelectedKey(key);
236
260
  }
@@ -238,6 +262,9 @@ export function createComboBoxState<T = unknown>(
238
262
  };
239
263
 
240
264
  // ---- Overlay State ----
265
+ // Assigned after createListState; onOpenChange only fires after both exist
266
+ // except a defaultOpen init, which we skip via the optional call.
267
+ let listState!: ListState<T>;
241
268
  const overlayState = createOverlayTriggerState({
242
269
  get isOpen() {
243
270
  return getProps().isOpen;
@@ -247,11 +274,16 @@ export function createComboBoxState<T = unknown>(
247
274
  },
248
275
  onOpenChange(isOpen: boolean) {
249
276
  getProps().onOpenChange?.(isOpen, isOpen ? menuOpenTrigger : undefined);
277
+ // RAC useComboBoxState.ts:314-317
278
+ listState?.setFocused(isOpen);
279
+ if (!isOpen) {
280
+ listState?.setFocusedKey(null);
281
+ }
250
282
  },
251
283
  });
252
284
 
253
285
  // ---- List State (unfiltered collection) ----
254
- const listState = createListState<T>({
286
+ listState = createListState<T>({
255
287
  get items() {
256
288
  // Use items or defaultItems
257
289
  return getProps().items ?? getProps().defaultItems ?? [];
@@ -307,16 +339,12 @@ export function createComboBoxState<T = unknown>(
307
339
 
308
340
  const filteredCollection = createMemo<Collection<T>>(() => {
309
341
  const collection = originalCollection();
310
- const input = inputValue();
311
342
  const filter = getProps().defaultFilter;
312
-
313
- // If no filter function provided, return original collection
314
- if (!filter) {
343
+ // RAC useComboBoxState.ts:297-302 — no default filter if items are controlled.
344
+ if (getProps().items != null || !filter) {
315
345
  return collection;
316
346
  }
317
-
318
- // Filter the collection based on input value
319
- return filterCollection(collection, input, filter);
347
+ return filterCollection(collection, inputValue(), filter);
320
348
  });
321
349
 
322
350
  // The displayed collection depends on showAllItems flag
@@ -374,13 +402,12 @@ export function createComboBoxState<T = unknown>(
374
402
 
375
403
  // ---- Open/Toggle Logic ----
376
404
  // Auto-focus the menu on open the way upstream's listbox does via its
377
- // `autoFocus: state.focusStrategy || true` prop (useComboBox.ts:490 → useSelectableCollection):
378
- // the first selectable selected key, else the first/last key for an explicit
379
- // strategy, else nothing. The port drives this from the state (createListBox
380
- // reimplements nav inline and does not honor a listbox `autoFocus` prop), so
381
- // BOTH open() and toggle() must apply it — a button/mouse open routes through
382
- // toggle(), and omitting it there left the menu opened with no active option
383
- // (no aria-activedescendant / no highlighted row) unlike upstream.
405
+ // `autoFocus: state.focusStrategy || true` prop (useComboBox.ts:535 →
406
+ // useSelectableCollection). createListBox does not honor a listbox
407
+ // `autoFocus` prop, so BOTH open() and toggle() apply it here. RAC applies
408
+ // this in a later effect; doing it synchronously keeps the first option
409
+ // paint (slot `aria-labelledby`) stable. createComboBox still announces
410
+ // option count on open.
384
411
  const applyOpenFocus = (strategy: FocusStrategy | null) => {
385
412
  const key = selectedKey();
386
413
  const nextFocusedKey =
@@ -398,15 +425,20 @@ export function createComboBoxState<T = unknown>(
398
425
  const open = (strategy: FocusStrategy | null = null, trigger?: MenuTriggerAction) => {
399
426
  const displayAll = trigger === "manual" || (trigger === "focus" && menuTrigger() === "focus");
400
427
 
401
- // Check if we should open
428
+ // RAC useComboBoxState.ts:331-340 — controlled `items` may open empty;
429
+ // showAllItems only when items are undefined (collection filtering).
402
430
  const filtered = filteredCollection();
403
431
  const original = originalCollection();
432
+ const items = getProps().items;
404
433
  const canOpen =
405
- allowsEmptyCollection() || filtered.size > 0 || (displayAll && original.size > 0);
434
+ allowsEmptyCollection() ||
435
+ filtered.size > 0 ||
436
+ (displayAll && original.size > 0) ||
437
+ items != null;
406
438
 
407
439
  if (!canOpen) return;
408
440
 
409
- if (displayAll && !overlayState.isOpen()) {
441
+ if (displayAll && !overlayState.isOpen() && items === undefined) {
410
442
  setShowAllItems(true);
411
443
  }
412
444
 
@@ -421,17 +453,20 @@ export function createComboBoxState<T = unknown>(
421
453
  const toggle = (strategy: FocusStrategy | null = null, trigger?: MenuTriggerAction) => {
422
454
  const displayAll = trigger === "manual" || (trigger === "focus" && menuTrigger() === "focus");
423
455
 
424
- // Check if we can open (if closed)
425
456
  const filtered = filteredCollection();
426
457
  const original = originalCollection();
458
+ const items = getProps().items;
427
459
  const canOpen =
428
- allowsEmptyCollection() || filtered.size > 0 || (displayAll && original.size > 0);
460
+ allowsEmptyCollection() ||
461
+ filtered.size > 0 ||
462
+ (displayAll && original.size > 0) ||
463
+ items != null;
429
464
 
430
465
  if (!canOpen && !overlayState.isOpen()) return;
431
466
 
432
467
  const willOpen = !overlayState.isOpen();
433
468
 
434
- if (displayAll && willOpen) {
469
+ if (displayAll && willOpen && items === undefined) {
435
470
  setShowAllItems(true);
436
471
  }
437
472
 
@@ -457,6 +492,8 @@ export function createComboBoxState<T = unknown>(
457
492
  if (isSelectionControlled() && isInputControlled()) {
458
493
  getProps().onSelectionChange?.(selectedKey());
459
494
  const item = selectedItem();
495
+ // RAC useComboBoxState.ts:543-545 — stop the auto-open-on-input effect
496
+ // from reopening after this close.
460
497
  setLastValue(item?.textValue ?? "");
461
498
  closeMenu();
462
499
  } else {
@@ -492,13 +529,14 @@ export function createComboBoxState<T = unknown>(
492
529
  }
493
530
 
494
531
  if (overlayState.isOpen() && focusedKey != null) {
495
- // If focused key is already selected, just commit
532
+ // RAC useComboBoxState.ts:564-572 — already-selected key goes through
533
+ // commitSelection. A new key is `selectionManager.select()` without
534
+ // close; the open/close effect then closes while the menu is still
535
+ // open, so auto-open (input !== last && !isOpen) is skipped.
496
536
  if (selectedKey() === focusedKey) {
497
537
  commitSelection();
498
538
  } else {
499
- // Select the focused item
500
- setSelectedKey(focusedKey);
501
- closeMenu();
539
+ listState.selectionManager.select(focusedKey);
502
540
  }
503
541
  } else {
504
542
  commitValue();
@@ -514,12 +552,14 @@ export function createComboBoxState<T = unknown>(
514
552
  };
515
553
 
516
554
  // ---- Focus Handling ----
517
- const [isFocused, setIsFocused] = createSignal(false);
518
- let valueOnFocus = "";
555
+ const [isFocused, setIsFocused] = createInternalSignal(false);
519
556
 
557
+ // RAC useComboBoxState.ts:578-593 also keeps `valueOnFocus` and, on blur,
558
+ // calls `validation.commitValidation()` when the input value or the display
559
+ // value moved while focused. This hook has no validation state at all, so
560
+ // the binding was written and never read; #560 owes the whole wiring.
520
561
  const setFocused = (focused: boolean) => {
521
562
  if (focused) {
522
- valueOnFocus = inputValue();
523
563
  if (menuTrigger() === "focus" && !getProps().isReadOnly) {
524
564
  open(null, "focus");
525
565
  }
@@ -532,42 +572,79 @@ export function createComboBoxState<T = unknown>(
532
572
  };
533
573
 
534
574
  // ---- Effects for Auto Open/Close ----
535
- createEffect(() => {
536
- const input = inputValue();
537
- const filtered = filteredCollection();
538
- const isOpen = overlayState.isOpen();
539
- const last = lastValue();
540
- const focused = isFocused();
541
-
542
- // Auto-open when typing
543
- if (
544
- focused &&
545
- (filtered.size > 0 || allowsEmptyCollection()) &&
546
- !isOpen &&
547
- input !== last &&
548
- menuTrigger() !== "manual"
549
- ) {
550
- open(null, "input");
551
- }
575
+ // RAC useComboBoxState.ts:408-496 is one effect: auto-open, auto-close,
576
+ // close-on-selection, then lastValue. Close-on-selection must not run as a
577
+ // later effect — after a fully-controlled commit the parent updates
578
+ // inputValue, a trailing close leaves !isOpen && input !== last, and
579
+ // auto-open reopens (D13 Enter re-announces "N options available.").
580
+ // lastDisplayValue starts as the current key so an initial selectedKey is
581
+ // not treated as a selection change (RAC lastValueRef = useRef(displayValue)).
582
+ let lastDisplayValue: Key | null | undefined = untrack(selectedKey);
583
+
584
+ createEffect(
585
+ () => ({
586
+ input: inputValue(),
587
+ filtered: filteredCollection(),
588
+ isOpen: overlayState.isOpen(),
589
+ last: lastValue(),
590
+ focused: isFocused(),
591
+ key: isMultiple() ? null : selectedKey(),
592
+ allowsEmpty: allowsEmptyCollection(),
593
+ trigger: menuTrigger(),
594
+ showingAll: showAllItems(),
595
+ inputControlled: isInputControlled(),
596
+ selectionControlled: isSelectionControlled(),
597
+ }),
598
+ ({
599
+ input,
600
+ filtered,
601
+ isOpen,
602
+ last,
603
+ focused,
604
+ key,
605
+ allowsEmpty,
606
+ trigger,
607
+ showingAll,
608
+ inputControlled,
609
+ selectionControlled,
610
+ }) => {
611
+ // Auto-open when typing
612
+ if (
613
+ focused &&
614
+ (filtered.size > 0 || allowsEmpty) &&
615
+ !isOpen &&
616
+ input !== last &&
617
+ trigger !== "manual"
618
+ ) {
619
+ open(null, "input");
620
+ }
552
621
 
553
- // Auto-close when empty (unless showing all)
554
- if (!showAllItems() && !allowsEmptyCollection() && isOpen && filtered.size === 0) {
555
- closeMenu();
556
- }
622
+ // Auto-close when empty (unless showing all)
623
+ if (!showingAll && !allowsEmpty && isOpen && filtered.size === 0) {
624
+ closeMenu();
625
+ }
557
626
 
558
- // Clear focused key when input changes
559
- if (input !== last) {
560
- listState.setFocusedKey(null);
561
- setShowAllItems(false);
627
+ // Close when an item is selected (RAC displayValue !== lastValueRef).
628
+ if (key != null && key !== lastDisplayValue) {
629
+ closeMenu();
630
+ }
562
631
 
563
- // Clear selection when input is cleared (if not fully controlled)
564
- if (input === "" && (!isInputControlled() || !isSelectionControlled())) {
565
- setSelectedKey(null);
632
+ // Clear focused key when input changes
633
+ if (input !== last) {
634
+ listState.setFocusedKey(null);
635
+ setShowAllItems(false);
636
+
637
+ // Clear selection when input is cleared (if not fully controlled)
638
+ if (input === "" && (!inputControlled || !selectionControlled)) {
639
+ setSelectedKey(null);
640
+ }
641
+
642
+ setLastValue(input);
566
643
  }
567
644
 
568
- setLastValue(input);
569
- }
570
- });
645
+ lastDisplayValue = key;
646
+ },
647
+ );
571
648
 
572
649
  // Keep the input text in sync with the selected item (single mode only).
573
650
  //
@@ -585,30 +662,30 @@ export function createComboBoxState<T = unknown>(
585
662
  // dependency. `originalCollection()` stays tracked (the unfiltered collection
586
663
  // only changes when `items` change, never on filtering) so a preset selection
587
664
  // still gets its text once async items arrive.
588
- createEffect(() => {
589
- if (isMultiple()) return;
590
- const key = selectedKey();
591
- const item = key != null ? originalCollection().getItem(key) : null;
592
- const textValue = item?.textValue ?? "";
593
-
594
- // Only update if selection changed and not fully controlled
595
- if (!isInputControlled() || !isSelectionControlled()) {
596
- if (key != null && textValue !== untrack(inputValue)) {
597
- setInputValue(textValue);
598
- setLastValue(textValue);
665
+ createEffect(
666
+ () => {
667
+ if (isMultiple()) return null;
668
+ const key = selectedKey();
669
+ const item = key != null ? originalCollection().getItem(key) : null;
670
+ return {
671
+ key,
672
+ textValue: item?.textValue ?? "",
673
+ inputControlled: isInputControlled(),
674
+ selectionControlled: isSelectionControlled(),
675
+ };
676
+ },
677
+ (data) => {
678
+ if (!data) return;
679
+ const { key, textValue, inputControlled, selectionControlled } = data;
680
+ // Only update if selection changed and not fully controlled
681
+ if (!inputControlled || !selectionControlled) {
682
+ if (key != null && textValue !== untrack(inputValue)) {
683
+ setInputValue(textValue);
684
+ setLastValue(textValue);
685
+ }
599
686
  }
600
- }
601
- });
602
-
603
- // Close when selection changes (only in single mode)
604
- createEffect((prevKey: Key | null | undefined) => {
605
- if (isMultiple()) return undefined;
606
- const key = selectedKey();
607
- if (key != null && key !== prevKey) {
608
- closeMenu();
609
- }
610
- return key;
611
- }, undefined);
687
+ },
688
+ );
612
689
 
613
690
  // ---- Selection Methods for ListState compatibility ----
614
691
  // These methods allow createOption to work with ComboBoxState
@@ -658,6 +735,7 @@ export function createComboBoxState<T = unknown>(
658
735
  selectedItem,
659
736
  setSelectedKey,
660
737
  selectedKeys,
738
+ setSelectedKeys,
661
739
  selectedItems,
662
740
  removeSelectedKey,
663
741
  inputValue,
@@ -690,6 +768,9 @@ export function createComboBoxState<T = unknown>(
690
768
 
691
769
  /**
692
770
  * Filter a collection based on input value.
771
+ * RAC `useComboBoxState.ts:644-672` copies nodes into a new `ListCollection`,
772
+ * which reassigns `index` (ListCollection.ts:51-53). Keeping the original
773
+ * `index` makes virtualized `aria-posinset` report the unfiltered position.
693
774
  */
694
775
  function filterCollection<T>(
695
776
  collection: Collection<T>,
@@ -701,19 +782,18 @@ function filterCollection<T>(
701
782
  }
702
783
 
703
784
  const filteredItems: CollectionNode<T>[] = [];
785
+ let index = 0;
704
786
 
705
787
  for (const item of collection) {
706
788
  if (item.type === "section") {
707
- // Filter section children
708
789
  const filteredChildren: CollectionNode<T>[] = [];
709
790
  if (item.childNodes) {
710
791
  for (const child of item.childNodes) {
711
792
  if (child.type === "item" && filter(child.textValue, inputValue)) {
712
- filteredChildren.push(child);
793
+ filteredChildren.push({ ...child, index: index++ });
713
794
  }
714
795
  }
715
796
  }
716
- // Only include section if it has matching children
717
797
  if (filteredChildren.length > 0) {
718
798
  filteredItems.push({
719
799
  ...item,
@@ -722,109 +802,12 @@ function filterCollection<T>(
722
802
  }
723
803
  } else if (item.type === "item") {
724
804
  if (filter(item.textValue, inputValue)) {
725
- filteredItems.push(item);
726
- }
727
- }
728
- }
729
-
730
- // Create a new collection from filtered items
731
- return createFilteredCollection(filteredItems, collection);
732
- }
733
-
734
- /**
735
- * Create a filtered collection wrapper.
736
- */
737
- function createFilteredCollection<T>(
738
- items: CollectionNode<T>[],
739
- original: Collection<T>,
740
- ): Collection<T> {
741
- const itemMap = new Map<Key, CollectionNode<T>>();
742
-
743
- for (const item of items) {
744
- itemMap.set(item.key, item);
745
- if (item.childNodes) {
746
- for (const child of item.childNodes) {
747
- itemMap.set(child.key, child);
805
+ filteredItems.push({ ...item, index: index++ });
748
806
  }
807
+ } else {
808
+ filteredItems.push({ ...item });
749
809
  }
750
810
  }
751
811
 
752
- return {
753
- get size() {
754
- let count = 0;
755
- for (const item of items) {
756
- if (item.type === "item") {
757
- count++;
758
- } else if (item.childNodes) {
759
- count += Array.from(item.childNodes).filter((c) => c.type === "item").length;
760
- }
761
- }
762
- return count;
763
- },
764
- getItem(key: Key) {
765
- return itemMap.get(key) ?? null;
766
- },
767
- getKeys() {
768
- return itemMap.keys();
769
- },
770
- getFirstKey() {
771
- for (const item of items) {
772
- if (item.type === "item") return item.key;
773
- if (item.childNodes) {
774
- for (const child of item.childNodes) {
775
- if (child.type === "item") return child.key;
776
- }
777
- }
778
- }
779
- return null;
780
- },
781
- getLastKey() {
782
- for (let i = items.length - 1; i >= 0; i--) {
783
- const item = items[i];
784
- if (item.type === "item") return item.key;
785
- if (item.childNodes) {
786
- const children = Array.from(item.childNodes);
787
- for (let j = children.length - 1; j >= 0; j--) {
788
- if (children[j].type === "item") return children[j].key;
789
- }
790
- }
791
- }
792
- return null;
793
- },
794
- getKeyBefore(key: Key) {
795
- return original.getKeyBefore(key);
796
- },
797
- getKeyAfter(key: Key) {
798
- return original.getKeyAfter(key);
799
- },
800
- at(index: number) {
801
- // Flatten items for indexing
802
- let currentIndex = 0;
803
- for (const item of items) {
804
- if (item.type === "item") {
805
- if (currentIndex === index) return item;
806
- currentIndex++;
807
- } else if (item.childNodes) {
808
- for (const child of item.childNodes) {
809
- if (child.type === "item") {
810
- if (currentIndex === index) return child;
811
- currentIndex++;
812
- }
813
- }
814
- }
815
- }
816
- return null;
817
- },
818
- getChildren(key: Key) {
819
- const item = itemMap.get(key);
820
- return item?.childNodes ?? [];
821
- },
822
- getTextValue(key: Key) {
823
- const item = itemMap.get(key);
824
- return item?.textValue ?? "";
825
- },
826
- [Symbol.iterator]() {
827
- return items[Symbol.iterator]();
828
- },
829
- };
812
+ return new ListCollection(filteredItems);
830
813
  }
@@ -1,12 +1,32 @@
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/data/useAsyncList.ts
14
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-stately/src/data/useListData.ts
15
+
1
16
  /**
2
17
  * createAsyncList - SolidJS port of React Spectrum's useAsyncList
3
18
  *
4
19
  * Manages state for an immutable async loaded list data structure, and provides
5
20
  * convenience methods to update the data over time. Manages loading and error
6
21
  * states, pagination, and sorting.
22
+ *
23
+ * Ported from:
24
+ * - packages/react-stately/src/data/useAsyncList.ts
25
+ * - packages/react-stately/src/data/useListData.ts
7
26
  */
8
27
 
9
- import { createSignal, untrack } from "solid-js";
28
+ import { untrack } from "solid-js";
29
+ import { createInternalSignal } from "../utils";
10
30
 
11
31
  export type Key = string | number;
12
32
  export type Selection = "all" | Set<Key>;
@@ -149,7 +169,7 @@ export function createAsyncList<T, C = string>(options: AsyncListOptions<T, C>):
149
169
  initialFilterText = "",
150
170
  } = options;
151
171
 
152
- const [state, setState] = createSignal<InternalState<T, C>>({
172
+ const [state, setState] = createInternalSignal<InternalState<T, C>>({
153
173
  loadingState: "idle",
154
174
  items: [],
155
175
  selectedKeys: initialSelectedKeys === "all" ? "all" : new Set(initialSelectedKeys || []),
@@ -1,11 +1,28 @@
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/data/useListData.ts
14
+
1
15
  /**
2
16
  * createListData - SolidJS port of React Spectrum's useListData
3
17
  *
4
18
  * Manages state for an immutable list data structure, and provides
5
19
  * convenience methods to update the data over time.
20
+ *
21
+ * Ported from packages/react-stately/src/data/useListData.ts.
6
22
  */
7
23
 
8
- import { createSignal, createMemo } from "solid-js";
24
+ import { createMemo } from "solid-js";
25
+ import { createInternalSignal } from "../utils";
9
26
 
10
27
  export type Key = string | number;
11
28
  export type Selection = "all" | Set<Key>;
@@ -88,7 +105,7 @@ export function createListData<T>(options: ListOptions<T>): ListData<T> {
88
105
  initialFilterText = "",
89
106
  } = options;
90
107
 
91
- const [state, setState] = createSignal<ListState<T>>({
108
+ const [state, setState] = createInternalSignal<ListState<T>>({
92
109
  items: initialItems,
93
110
  selectedKeys: initialSelectedKeys === "all" ? "all" : new Set(initialSelectedKeys || []),
94
111
  filterText: initialFilterText,