@cube-dev/ui-kit 0.179.0 → 0.181.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 (686) hide show
  1. package/dist/CHANGELOG.md +28 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.d.ts +1 -0
  19. package/dist/components/actions/Button/Button.js +3 -3
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuSection.js +1 -1
  33. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  36. package/dist/components/actions/Menu/context.js +1 -1
  37. package/dist/components/actions/Menu/styled.js +1 -1
  38. package/dist/components/actions/actions-run.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +2 -2
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +2 -2
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/data/DataTable/DataTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  105. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  106. package/dist/components/data/TableBase/RowCollection.js +1 -1
  107. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  108. package/dist/components/data/TableBase/TableRow.js +1 -1
  109. package/dist/components/data/TableBase/TableView.js +1 -1
  110. package/dist/components/data/TableBase/column-menu.js +1 -1
  111. package/dist/components/data/TableBase/column-tint.js +1 -1
  112. package/dist/components/data/TableBase/row-menu.js +1 -1
  113. package/dist/components/data/TableBase/styled.d.ts +2 -1
  114. package/dist/components/data/TableBase/styled.js +1 -1
  115. package/dist/components/data/TableBase/table-tree.js +1 -1
  116. package/dist/components/data/TableBase/types.js +1 -1
  117. package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
  118. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  119. package/dist/components/data/TableBase/use-column-order.js +1 -1
  120. package/dist/components/data/TableBase/use-container-width.js +1 -1
  121. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  122. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  123. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  124. package/dist/components/data/TableBase/use-table-search.js +1 -1
  125. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  128. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  129. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  130. package/dist/components/fields/Checkbox/Checkbox.d.ts +10 -1
  131. package/dist/components/fields/Checkbox/Checkbox.js +4 -5
  132. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  133. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  134. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  135. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  136. package/dist/components/fields/Checkbox/context.js +1 -1
  137. package/dist/components/fields/ColorInput/ColorInput.d.ts +1 -1
  138. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  139. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  140. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +1 -1
  141. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  142. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  143. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  144. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +1 -1
  145. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  146. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  147. package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -1
  148. package/dist/components/fields/ComboBox/ComboBox.js +8 -2
  149. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  150. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  151. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  152. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  153. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
  154. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  155. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -1
  156. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  157. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  158. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  159. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -1
  160. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  161. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  162. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  163. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  164. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  165. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  166. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  167. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +4 -1
  168. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  169. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  170. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +4 -1
  171. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  173. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  174. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +1 -1
  175. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  176. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  177. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  178. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -1
  179. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  180. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  181. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  182. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  183. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  184. package/dist/components/fields/DatePicker/period.js +1 -1
  185. package/dist/components/fields/DatePicker/props.js +1 -1
  186. package/dist/components/fields/DatePicker/utils.js +1 -1
  187. package/dist/components/fields/FileInput/FileInput.d.ts +6 -1
  188. package/dist/components/fields/FileInput/FileInput.js +38 -29
  189. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  190. package/dist/components/fields/FilterListBox/FilterListBox.d.ts +1 -1
  191. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  192. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  193. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +1 -1
  194. package/dist/components/fields/FilterPicker/FilterPicker.js +8 -5
  195. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  196. package/dist/components/fields/Input/Input.js +1 -1
  197. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  198. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  199. package/dist/components/fields/ListBox/ListBox.js +5 -3
  200. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  201. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  202. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  203. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  204. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  205. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  206. package/dist/components/fields/NumberInput/NumberInput.d.ts +3 -1
  207. package/dist/components/fields/NumberInput/NumberInput.js +3 -3
  208. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  209. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  210. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  211. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  212. package/dist/components/fields/Picker/Picker.js +8 -5
  213. package/dist/components/fields/Picker/Picker.js.map +1 -1
  214. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  215. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  216. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  217. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  218. package/dist/components/fields/RadioGroup/context.js +1 -1
  219. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  220. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  221. package/dist/components/fields/Select/Select.d.ts +1 -1
  222. package/dist/components/fields/Select/Select.js +16 -2
  223. package/dist/components/fields/Select/Select.js.map +1 -1
  224. package/dist/components/fields/Slider/Gradation.js +1 -1
  225. package/dist/components/fields/Slider/HueSlider.js +1 -1
  226. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  227. package/dist/components/fields/Slider/Slider.js +1 -1
  228. package/dist/components/fields/Slider/SliderBase.js +2 -2
  229. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  230. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  231. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  232. package/dist/components/fields/Slider/elements.js +1 -1
  233. package/dist/components/fields/Slider/index.js +1 -1
  234. package/dist/components/fields/Slider/types.d.ts +1 -1
  235. package/dist/components/fields/Switch/Switch.d.ts +5 -1
  236. package/dist/components/fields/Switch/Switch.js +1 -1
  237. package/dist/components/fields/Switch/Switch.js.map +1 -1
  238. package/dist/components/fields/TextArea/TextArea.d.ts +2 -0
  239. package/dist/components/fields/TextArea/TextArea.js +1 -1
  240. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  241. package/dist/components/fields/TextInput/TextInput.d.ts +4 -1
  242. package/dist/components/fields/TextInput/TextInput.js +1 -1
  243. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  244. package/dist/components/fields/TextInput/TextInputBase.d.ts +1 -1
  245. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  246. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  247. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  248. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +1 -1
  249. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  250. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  251. package/dist/components/fields/TriggerActions.js +1 -1
  252. package/dist/components/fields/color/ColorPanel.js +1 -1
  253. package/dist/components/fields/color/channels.js +1 -1
  254. package/dist/components/fields/color/color.js +1 -1
  255. package/dist/components/fields/color/context.js +1 -1
  256. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  257. package/dist/components/form/Form/Field.d.ts +2 -0
  258. package/dist/components/form/Form/Field.js +1 -1
  259. package/dist/components/form/Form/Field.js.map +1 -1
  260. package/dist/components/form/Form/Form.d.ts +38 -2
  261. package/dist/components/form/Form/Form.js +86 -16
  262. package/dist/components/form/Form/Form.js.map +1 -1
  263. package/dist/components/form/Form/ModernFormRoot.d.ts +24 -0
  264. package/dist/components/form/Form/ModernFormRoot.js +115 -0
  265. package/dist/components/form/Form/ModernFormRoot.js.map +1 -0
  266. package/dist/components/form/Form/ResetButton/ResetButton.d.ts +2 -1
  267. package/dist/components/form/Form/ResetButton/ResetButton.js +17 -2
  268. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  269. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +4 -1
  270. package/dist/components/form/Form/SubmitButton/SubmitButton.js +18 -3
  271. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  272. package/dist/components/form/Form/SubmitError.d.ts +8 -2
  273. package/dist/components/form/Form/SubmitError.js +33 -3
  274. package/dist/components/form/Form/SubmitError.js.map +1 -1
  275. package/dist/components/form/Form/backend.d.ts +25 -0
  276. package/dist/components/form/Form/backend.js +30 -0
  277. package/dist/components/form/Form/backend.js.map +1 -0
  278. package/dist/components/form/Form/index.d.ts +26 -8
  279. package/dist/components/form/Form/index.js +10 -2
  280. package/dist/components/form/Form/index.js.map +1 -1
  281. package/dist/components/form/Form/modern/actions.js +59 -0
  282. package/dist/components/form/Form/modern/actions.js.map +1 -0
  283. package/dist/components/form/Form/modern/context.d.ts +12 -0
  284. package/dist/components/form/Form/modern/context.js +14 -0
  285. package/dist/components/form/Form/modern/context.js.map +1 -0
  286. package/dist/components/form/Form/modern/controller.d.ts +34 -0
  287. package/dist/components/form/Form/modern/controller.js +59 -0
  288. package/dist/components/form/Form/modern/controller.js.map +1 -0
  289. package/dist/components/form/Form/modern/field-binding.js +59 -0
  290. package/dist/components/form/Form/modern/field-binding.js.map +1 -0
  291. package/dist/components/form/Form/modern/field.d.ts +30 -0
  292. package/dist/components/form/Form/modern/field.js +23 -0
  293. package/dist/components/form/Form/modern/field.js.map +1 -0
  294. package/dist/components/form/Form/modern/path-types.d.ts +16 -0
  295. package/dist/components/form/Form/modern/react.d.ts +26 -0
  296. package/dist/components/form/Form/modern/react.js +45 -0
  297. package/dist/components/form/Form/modern/react.js.map +1 -0
  298. package/dist/components/form/Form/modern/read-types.d.ts +11 -0
  299. package/dist/components/form/Form/modern/store.js +876 -0
  300. package/dist/components/form/Form/modern/store.js.map +1 -0
  301. package/dist/components/form/Form/modern/types.d.ts +189 -0
  302. package/dist/components/form/Form/modern/validation.d.ts +28 -0
  303. package/dist/components/form/Form/modern/validation.js +41 -0
  304. package/dist/components/form/Form/modern/validation.js.map +1 -0
  305. package/dist/components/form/Form/modern/values.d.ts +7 -0
  306. package/dist/components/form/Form/modern/values.js +158 -0
  307. package/dist/components/form/Form/modern/values.js.map +1 -0
  308. package/dist/components/form/Form/use-field/types.d.ts +4 -1
  309. package/dist/components/form/Form/use-field/use-field-binding.js +97 -0
  310. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -0
  311. package/dist/components/form/Form/use-field/use-field-props.d.ts +14 -1
  312. package/dist/components/form/Form/use-field/use-field-props.js +80 -52
  313. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  314. package/dist/components/form/Form/use-field/use-field.d.ts +9 -1
  315. package/dist/components/form/Form/use-field/use-field.js +47 -22
  316. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  317. package/dist/components/form/Form/use-form.d.ts +4 -1
  318. package/dist/components/form/Form/use-form.js +6 -2
  319. package/dist/components/form/Form/use-form.js.map +1 -1
  320. package/dist/components/form/Form/validation.js +2 -2
  321. package/dist/components/form/Label.js +1 -1
  322. package/dist/components/form/index.d.ts +11 -3
  323. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  324. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  325. package/dist/components/form/validation/use-validation-props.js +1 -1
  326. package/dist/components/form/wrapper.js +1 -1
  327. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  328. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  329. package/dist/components/layout/Board/Board.js +1 -1
  330. package/dist/components/layout/Board/BoardProvider.js +1 -1
  331. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  332. package/dist/components/layout/Board/Widget.js +1 -1
  333. package/dist/components/layout/Board/WidgetHost.js +1 -1
  334. package/dist/components/layout/Board/board-context.js +1 -1
  335. package/dist/components/layout/Board/board-store.js +1 -1
  336. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  337. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  338. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  339. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  340. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  341. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  342. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  343. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  344. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  345. package/dist/components/layout/Board/index.js +1 -1
  346. package/dist/components/layout/Board/responsive-utils.js +1 -1
  347. package/dist/components/layout/Board/use-board-layout.js +1 -1
  348. package/dist/components/layout/Board/use-board-registry.js +1 -1
  349. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  350. package/dist/components/layout/Board/use-board-selection.js +1 -1
  351. package/dist/components/layout/Flex.js +1 -1
  352. package/dist/components/layout/Flow.js +1 -1
  353. package/dist/components/layout/Grid.js +1 -1
  354. package/dist/components/layout/Panel.js +1 -1
  355. package/dist/components/layout/Prefix.js +1 -1
  356. package/dist/components/layout/ResizablePanel.js +1 -1
  357. package/dist/components/layout/Space.js +1 -1
  358. package/dist/components/layout/Suffix.js +1 -1
  359. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  360. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  361. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  362. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  363. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  364. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  365. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  366. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  367. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  368. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  369. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  370. package/dist/components/navigation/Tabs/styled.js +1 -1
  371. package/dist/components/navigation/Tabs/types.js +1 -1
  372. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  373. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  374. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  375. package/dist/components/other/Calendar/Calendar.js +1 -1
  376. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  377. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  378. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  379. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  380. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  381. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  382. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  383. package/dist/components/other/Calendar/styled.js +1 -1
  384. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  385. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  386. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  387. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  388. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  389. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  390. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  391. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  392. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  393. package/dist/components/overlays/Dialog/context.js +1 -1
  394. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  395. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  396. package/dist/components/overlays/Modal/Modal.js +1 -1
  397. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  398. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  399. package/dist/components/overlays/Modal/Overlay.js +8 -2
  400. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  401. package/dist/components/overlays/Modal/Popover.js +4 -2
  402. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  403. package/dist/components/overlays/Modal/Tray.js +1 -1
  404. package/dist/components/overlays/Modal/Underlay.js +1 -1
  405. package/dist/components/overlays/Modal/types.d.ts +1 -0
  406. package/dist/components/overlays/Notifications/Notification.js +1 -1
  407. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  408. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  409. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  410. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  411. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  412. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  413. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  414. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  415. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  416. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  417. package/dist/components/overlays/Notifications/index.js +1 -1
  418. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  419. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  420. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  421. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  422. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  423. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  424. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  425. package/dist/components/overlays/Toast/index.js +1 -1
  426. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  427. package/dist/components/overlays/Toast/useToast.js +1 -1
  428. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  429. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  430. package/dist/components/overlays/Tooltip/TooltipTrigger.js +12 -2
  431. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  432. package/dist/components/overlays/Tooltip/context.js +1 -1
  433. package/dist/components/portal/Portal.js +1 -1
  434. package/dist/components/portal/PortalProvider.d.ts +2 -0
  435. package/dist/components/portal/PortalProvider.js +1 -1
  436. package/dist/components/portal/index.d.ts +1 -0
  437. package/dist/components/portal/usePortal.js +1 -1
  438. package/dist/components/shared/DraggableCollection.js +1 -1
  439. package/dist/components/shared/InvalidIcon.js +1 -1
  440. package/dist/components/shared/ValidIcon.js +1 -1
  441. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  442. package/dist/components/status/Spin/Cube.js +1 -1
  443. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  444. package/dist/components/status/Spin/Spin.js +1 -1
  445. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  446. package/dist/data/item-themes.js +1 -1
  447. package/dist/data/themes.js +1 -1
  448. package/dist/eslint-plugin/defaults.generated.js +1 -1
  449. package/dist/eslint-plugin/index.js +1 -1
  450. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  451. package/dist/i18n/I18nProvider.js +1 -1
  452. package/dist/i18n/createFormatter.js +1 -1
  453. package/dist/i18n/index.js +1 -1
  454. package/dist/i18n/instance.js +1 -1
  455. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  456. package/dist/i18n/locales/en-US/uikit.js +1 -1
  457. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  458. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  459. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  460. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  461. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  462. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  463. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  464. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  465. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  466. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  467. package/dist/i18n/locales.js +1 -1
  468. package/dist/i18n/useFormatter.js +1 -1
  469. package/dist/i18n/useI18n.js +1 -1
  470. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  471. package/dist/icons/AdjustmentsIcon.js +1 -1
  472. package/dist/icons/AiIcon.js +1 -1
  473. package/dist/icons/AreaChartIcon.js +1 -1
  474. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  475. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  476. package/dist/icons/BackwardIcon.js +1 -1
  477. package/dist/icons/BarChartIcon.js +1 -1
  478. package/dist/icons/BellFilledIcon.js +1 -1
  479. package/dist/icons/BellIcon.js +1 -1
  480. package/dist/icons/BooleanIcon.js +1 -1
  481. package/dist/icons/CalendarEditIcon.js +1 -1
  482. package/dist/icons/CalendarIcon.js +1 -1
  483. package/dist/icons/CaretDownIcon.js +1 -1
  484. package/dist/icons/CaretUpIcon.js +1 -1
  485. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  486. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  487. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  488. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  489. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  490. package/dist/icons/ChartBarLineIcon.js +1 -1
  491. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  492. package/dist/icons/ChartBarStackedIcon.js +1 -1
  493. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  494. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  495. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  496. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  497. package/dist/icons/ChartBubbleIcon.js +1 -1
  498. package/dist/icons/ChartDonut2Icon.js +1 -1
  499. package/dist/icons/ChartFunnelIcon.js +1 -1
  500. package/dist/icons/ChartHeatmapIcon.js +1 -1
  501. package/dist/icons/ChartKPIIcon.js +1 -1
  502. package/dist/icons/ChartPie2Icon.js +1 -1
  503. package/dist/icons/ChartScatterIcon.js +1 -1
  504. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  505. package/dist/icons/CheckCircleIcon.js +1 -1
  506. package/dist/icons/CheckIcon.js +1 -1
  507. package/dist/icons/CircleFilledIcon.js +1 -1
  508. package/dist/icons/ClearIcon.js +1 -1
  509. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  510. package/dist/icons/CloseCircleIcon.js +1 -1
  511. package/dist/icons/CloseIcon.js +1 -1
  512. package/dist/icons/CodeIcon.js +1 -1
  513. package/dist/icons/ColumnTotalIcon.js +1 -1
  514. package/dist/icons/CopyIcon.js +1 -1
  515. package/dist/icons/CountIcon.js +1 -1
  516. package/dist/icons/CubeIcon.js +1 -1
  517. package/dist/icons/CubePauseIcon.js +1 -1
  518. package/dist/icons/CubePlayIcon.js +1 -1
  519. package/dist/icons/CurrencyDollarIcon.js +1 -1
  520. package/dist/icons/DangerIcon.js +1 -1
  521. package/dist/icons/DashboardIcon.js +1 -1
  522. package/dist/icons/DatabaseIcon.js +1 -1
  523. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  524. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  525. package/dist/icons/DirectionIcon.js +1 -1
  526. package/dist/icons/DonutIcon.js +1 -1
  527. package/dist/icons/DownIcon.js +1 -1
  528. package/dist/icons/EditIcon.js +1 -1
  529. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  530. package/dist/icons/ExclamationCircleIcon.js +1 -1
  531. package/dist/icons/ExclamationIcon.js +1 -1
  532. package/dist/icons/EyeIcon.js +1 -1
  533. package/dist/icons/EyeInvisibleIcon.js +1 -1
  534. package/dist/icons/FilterIcon.js +1 -1
  535. package/dist/icons/FolderFilledIcon.js +1 -1
  536. package/dist/icons/FolderIcon.js +1 -1
  537. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  538. package/dist/icons/FolderOpenIcon.js +1 -1
  539. package/dist/icons/ForwardIcon.js +1 -1
  540. package/dist/icons/GripVerticalIcon.js +1 -1
  541. package/dist/icons/HierarchyIcon.js +1 -1
  542. package/dist/icons/HierarchyOpenIcon.js +1 -1
  543. package/dist/icons/Icon.js +1 -1
  544. package/dist/icons/InfoCircleIcon.js +1 -1
  545. package/dist/icons/InfoIcon.js +1 -1
  546. package/dist/icons/KeyIcon.js +1 -1
  547. package/dist/icons/LeftIcon.js +1 -1
  548. package/dist/icons/LineChartIcon.js +1 -1
  549. package/dist/icons/LoadingIcon.js +1 -1
  550. package/dist/icons/LockFilledIcon.js +1 -1
  551. package/dist/icons/LockIcon.js +1 -1
  552. package/dist/icons/MoreIcon.js +1 -1
  553. package/dist/icons/NotAllowedIcon.js +1 -1
  554. package/dist/icons/Number123Icon.js +1 -1
  555. package/dist/icons/NumberIcon.js +1 -1
  556. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  557. package/dist/icons/PauseCircleIcon.js +1 -1
  558. package/dist/icons/PauseIcon.js +1 -1
  559. package/dist/icons/PercentageIcon.js +1 -1
  560. package/dist/icons/PieChartIcon.js +1 -1
  561. package/dist/icons/PipetteIcon.js +1 -1
  562. package/dist/icons/PlayCircleIcon.js +1 -1
  563. package/dist/icons/PlayIcon.js +1 -1
  564. package/dist/icons/PlusIcon.js +1 -1
  565. package/dist/icons/ProgressBarIcon.js +1 -1
  566. package/dist/icons/ReloadIcon.js +1 -1
  567. package/dist/icons/ReportIcon.js +1 -1
  568. package/dist/icons/ReturnIcon.js +1 -1
  569. package/dist/icons/RightIcon.js +1 -1
  570. package/dist/icons/RowTotalsIcon.js +1 -1
  571. package/dist/icons/SchemeIcon.js +1 -1
  572. package/dist/icons/SearchIcon.js +1 -1
  573. package/dist/icons/SemanticQueryIcon.js +1 -1
  574. package/dist/icons/SettingsIcon.js +1 -1
  575. package/dist/icons/ShieldFilledIcon.js +1 -1
  576. package/dist/icons/ShieldIcon.js +1 -1
  577. package/dist/icons/SlashIcon.js +1 -1
  578. package/dist/icons/SparklesIcon.js +1 -1
  579. package/dist/icons/SqlIcon.js +1 -1
  580. package/dist/icons/StatsIcon.js +1 -1
  581. package/dist/icons/StopIcon.js +1 -1
  582. package/dist/icons/StringIcon.js +1 -1
  583. package/dist/icons/SubtotalsIcon.js +1 -1
  584. package/dist/icons/SwitchIcon.js +1 -1
  585. package/dist/icons/TableIcon.js +1 -1
  586. package/dist/icons/ThumbsDownIcon.js +1 -1
  587. package/dist/icons/ThumbsUpIcon.js +1 -1
  588. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  589. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  590. package/dist/icons/ThunderboltIcon.js +1 -1
  591. package/dist/icons/TimeIcon.js +1 -1
  592. package/dist/icons/TrashIcon.js +1 -1
  593. package/dist/icons/UnlockIcon.js +1 -1
  594. package/dist/icons/UpIcon.js +1 -1
  595. package/dist/icons/UserGroupIcon.js +1 -1
  596. package/dist/icons/UserIcon.js +1 -1
  597. package/dist/icons/UserLockIcon.js +1 -1
  598. package/dist/icons/ViewIcon.js +1 -1
  599. package/dist/icons/WarningFilledIcon.js +1 -1
  600. package/dist/icons/WarningIcon.js +1 -1
  601. package/dist/icons/wrap-icon.js +1 -1
  602. package/dist/index.d.ts +13 -4
  603. package/dist/index.js +4 -4
  604. package/dist/probe/canonicalize.js +1 -1
  605. package/dist/probe/css.js +1 -1
  606. package/dist/probe/index.js +1 -1
  607. package/dist/provider.js +1 -1
  608. package/dist/providers/TrackingProvider.js +1 -1
  609. package/dist/providers/navigationAdapter.default.js +1 -1
  610. package/dist/shared/form.d.ts +28 -6
  611. package/dist/shared/index.d.ts +1 -1
  612. package/dist/tokens/all-tokens.js +1 -1
  613. package/dist/tokens/base.js +1 -1
  614. package/dist/tokens/color-seed.js +1 -1
  615. package/dist/tokens/color-theme.js +1 -1
  616. package/dist/tokens/colors.js +1 -1
  617. package/dist/tokens/layout.js +1 -1
  618. package/dist/tokens/lazy-styles.js +1 -1
  619. package/dist/tokens/legacy-color.js +1 -1
  620. package/dist/tokens/palette-config.js +1 -1
  621. package/dist/tokens/palette.js +1 -1
  622. package/dist/tokens/resolve.js +1 -1
  623. package/dist/tokens/shadows.js +1 -1
  624. package/dist/tokens/sizes.js +1 -1
  625. package/dist/tokens/spacing.js +1 -1
  626. package/dist/tokens/typography.js +1 -1
  627. package/dist/utils/ResizeSensor.js +1 -1
  628. package/dist/utils/colors.js +1 -1
  629. package/dist/utils/dotize.js +1 -1
  630. package/dist/utils/is-dev-env.js +1 -1
  631. package/dist/utils/modules.js +1 -1
  632. package/dist/utils/promise.js +1 -1
  633. package/dist/utils/raf.js +1 -1
  634. package/dist/utils/random.js +1 -1
  635. package/dist/utils/range.js +1 -1
  636. package/dist/utils/react/RenderCache.js +1 -1
  637. package/dist/utils/react/Slots.js +1 -1
  638. package/dist/utils/react/chain.js +1 -1
  639. package/dist/utils/react/disabledProps.js +1 -1
  640. package/dist/utils/react/escapePropagation.js +39 -0
  641. package/dist/utils/react/escapePropagation.js.map +1 -0
  642. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  643. package/dist/utils/react/index.js +1 -1
  644. package/dist/utils/react/interactions.js +1 -1
  645. package/dist/utils/react/isTextOnly.js +1 -1
  646. package/dist/utils/react/mapProps.js +1 -1
  647. package/dist/utils/react/mergeProps.js +1 -1
  648. package/dist/utils/react/nullableValue.js +1 -1
  649. package/dist/utils/react/programmaticFocus.js +58 -0
  650. package/dist/utils/react/programmaticFocus.js.map +1 -0
  651. package/dist/utils/react/resolveIcon.js +1 -1
  652. package/dist/utils/react/sharedStore.js +1 -1
  653. package/dist/utils/react/useBufferedValue.js +1 -1
  654. package/dist/utils/react/useCombinedRefs.js +1 -1
  655. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  656. package/dist/utils/react/useEventBus.js +1 -1
  657. package/dist/utils/react/useId.js +1 -1
  658. package/dist/utils/react/useIsDarwin.js +1 -1
  659. package/dist/utils/react/useKeySymbols.js +1 -1
  660. package/dist/utils/react/useLayoutEffect.js +1 -1
  661. package/dist/utils/react/useLocalStorage.js +1 -1
  662. package/dist/utils/react/useMergeStyles.js +1 -1
  663. package/dist/utils/react/useOverlayEscapeGuard.js +41 -0
  664. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -0
  665. package/dist/utils/react/usePopoverSync.js +1 -1
  666. package/dist/utils/react/useQaProps.js +1 -1
  667. package/dist/utils/react/useScheme.js +1 -1
  668. package/dist/utils/react/useViewportSize.js +1 -1
  669. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  670. package/dist/utils/selection.js +1 -1
  671. package/dist/utils/styles.js +1 -1
  672. package/dist/utils/tree.js +1 -1
  673. package/dist/utils/warnings.js +1 -1
  674. package/dist/version.js +3 -3
  675. package/docs/CreateComponent.md +4 -0
  676. package/docs/FieldProperties.md +25 -13
  677. package/docs/Usage.md +17 -29
  678. package/docs/components/fields/FileInput.md +4 -0
  679. package/docs/components/form/Field.md +2 -2
  680. package/docs/components/form/Form.md +26 -2
  681. package/docs/components/form/FormInstance.md +5 -9
  682. package/docs/components/form/ModernForm.md +269 -0
  683. package/docs/modern-form-guide.md +269 -0
  684. package/docs/modern-form-migration.md +65 -0
  685. package/docs/modern-form-typecheck.md +35 -0
  686. package/package.json +12 -3
@@ -0,0 +1,876 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
2
+ import { FORM_BACKEND } from "../backend.js";
3
+ import { createValueSnapshotter, defineValue, formValueEqual, freezeContainer, getFieldKey, hasPath, isPlainObject, normalizePath, pathValueChanged, readPath, readonlySet, sameMembers, writePath } from "./values.js";
4
+ import { rulesSignature, runRules } from "./validation.js";
5
+
6
+ //#region src/components/form/Form/modern/store.ts
7
+ const EMPTY_ERRORS = Object.freeze([]);
8
+ const EMPTY_OBJECT = Object.freeze({});
9
+ const EMPTY_FIELDS = Object.freeze(Object.create(null));
10
+ function related(a, b) {
11
+ return a.slice(0, Math.min(a.length, b.length)).every((key, index) => key === b[index]);
12
+ }
13
+ function sameDependencies(a = [], b = []) {
14
+ return a.length === b.length && a.every((value, index) => Object.is(value, b[index]));
15
+ }
16
+ function samePaths(a = [], b = []) {
17
+ return a.length === b.length && a.every((path, index) => sameDependencies(path, b[index]));
18
+ }
19
+ /** Only traverse path ancestors; a field's value (even cyclic data) is a leaf. */
20
+ function projectActive(value, path, previous) {
21
+ if (path.terminal) return value;
22
+ const result = Array.isArray(value) ? [] : {};
23
+ if (isPlainObject(value) || Array.isArray(value)) for (const [key, child] of path.children) {
24
+ if (!Object.hasOwn(value, key)) continue;
25
+ defineValue(result, key, projectActive(Reflect.get(value, key), child, readPath(previous, [key])));
26
+ }
27
+ return formValueEqual(result, previous) ? previous : freezeContainer(result);
28
+ }
29
+ /**
30
+ * Framework-neutral store, registration ownership, and async pipelines.
31
+ * Not exported from the package; React receives the public command facade.
32
+ */
33
+ function createFormStore(inputOptions = {}) {
34
+ const options = { ...inputOptions };
35
+ const ownValue = createValueSnapshotter();
36
+ const records = /* @__PURE__ */ new Map();
37
+ const listeners = /* @__PURE__ */ new Set();
38
+ let values = ownValue(options.defaultValues ?? {});
39
+ let defaults = values;
40
+ let submitError;
41
+ let submission;
42
+ let binding;
43
+ let order = 0;
44
+ let depth = 0;
45
+ let notifying = false;
46
+ let disposed = false;
47
+ let pending = false;
48
+ let changes = [];
49
+ const cancellations = /* @__PURE__ */ new Set();
50
+ let state = Object.freeze({
51
+ values,
52
+ defaultValues: defaults,
53
+ activeValues: EMPTY_OBJECT,
54
+ fields: EMPTY_FIELDS,
55
+ dirtyFields: readonlySet([]),
56
+ touchedFields: readonlySet([]),
57
+ isDirty: false,
58
+ isTouched: false,
59
+ isValid: false,
60
+ isInvalid: false,
61
+ isValidating: false,
62
+ isSubmitting: false,
63
+ canReset: false,
64
+ submitError: void 0,
65
+ revision: 0
66
+ });
67
+ function assertLive() {
68
+ if (disposed) throw new Error("Cannot use a disposed modern form store.");
69
+ }
70
+ function report(error) {
71
+ try {
72
+ if (options.onListenerError) options.onListenerError(error);
73
+ else console.error("[form-store] Listener failed", error);
74
+ } catch (reportError) {
75
+ console.error("[form-store] Error reporter failed", reportError);
76
+ }
77
+ }
78
+ function developmentError(message) {
79
+ if (process.env.NODE_ENV === "production") return;
80
+ try {
81
+ if (options.onDevelopmentError) options.onDevelopmentError(message);
82
+ else console.error(`[form-store] ${message}`);
83
+ } catch (error) {
84
+ report(error);
85
+ }
86
+ }
87
+ function ensure(path, explicit = true) {
88
+ const normalized = normalizePath(path);
89
+ const name = getFieldKey(normalized);
90
+ let record = records.get(name);
91
+ if (!record) {
92
+ record = {
93
+ name,
94
+ path: normalized,
95
+ explicit,
96
+ registrations: /* @__PURE__ */ new Set(),
97
+ touched: false,
98
+ errors: EMPTY_ERRORS,
99
+ status: "unvalidated",
100
+ validationRevision: 0
101
+ };
102
+ records.set(name, record);
103
+ }
104
+ record.explicit ||= explicit;
105
+ return record;
106
+ }
107
+ function dirty(record) {
108
+ return hasPath(values, record.path) && !(record.owner?.options.isEqual ?? formValueEqual)(readPath(values, record.path), readPath(defaults, record.path));
109
+ }
110
+ function invalidate(record, keepErrors = false) {
111
+ const controller = record.validation;
112
+ record.validation = void 0;
113
+ record.reads = void 0;
114
+ record.readsAll = false;
115
+ record.validationRevision++;
116
+ record.status = "unvalidated";
117
+ if (!keepErrors) record.errors = EMPTY_ERRORS;
118
+ if (controller) cancellations.add(controller);
119
+ }
120
+ function cancelPending() {
121
+ for (const controller of Array.from(cancellations)) {
122
+ cancellations.delete(controller);
123
+ controller.abort();
124
+ }
125
+ }
126
+ function dependencyChanged(record, previous) {
127
+ return record.owner?.options.dependsOn?.some((path) => pathValueChanged(previous, values, path)) ?? false;
128
+ }
129
+ function validationReadChanged(record, previous) {
130
+ if (!record.validation) return false;
131
+ if (record.readsAll && previous !== values) return true;
132
+ for (const path of record.reads?.values() ?? []) if (pathValueChanged(previous, values, path)) return true;
133
+ return false;
134
+ }
135
+ function invalidateRelated(path, previous, config) {
136
+ for (const record of records.values()) {
137
+ const dependency = dependencyChanged(record, previous);
138
+ const fieldChanged = related(path, record.path) || pathValueChanged(previous, values, record.path);
139
+ if (fieldChanged || dependency || validationReadChanged(record, previous)) {
140
+ const revalidate = (fieldChanged || dependency) && !!config && !!record.registrations.size && (config.validate === "always" || config.validate !== "never" && (record.owner?.options.validateTrigger === "onChange" || !!record.errors.length || dependency && record.status !== "unvalidated"));
141
+ invalidate(record, revalidate);
142
+ if (revalidate) validateRecord(record, false);
143
+ }
144
+ }
145
+ }
146
+ function activeValues() {
147
+ const tree = {
148
+ terminal: false,
149
+ children: /* @__PURE__ */ new Map()
150
+ };
151
+ for (const record of records.values()) {
152
+ if (!record.registrations.size || !hasPath(values, record.path)) continue;
153
+ let node = tree;
154
+ for (const key of record.path) {
155
+ let child = node.children.get(key);
156
+ if (!child) {
157
+ child = {
158
+ terminal: false,
159
+ children: /* @__PURE__ */ new Map()
160
+ };
161
+ node.children.set(key, child);
162
+ }
163
+ node = child;
164
+ }
165
+ node.terminal = true;
166
+ }
167
+ return projectActive(values, tree, state.activeValues);
168
+ }
169
+ function buildSnapshot() {
170
+ const fields = Object.create(null);
171
+ const dirtyNames = /* @__PURE__ */ new Set();
172
+ const touchedNames = /* @__PURE__ */ new Set();
173
+ let activeCount = 0;
174
+ let validCount = 0;
175
+ let invalid = false;
176
+ let validating = false;
177
+ let resettable = submitError != null;
178
+ for (const record of records.values()) {
179
+ const field = {
180
+ name: record.name,
181
+ value: readPath(values, record.path),
182
+ defaultValue: readPath(defaults, record.path),
183
+ errors: record.errors,
184
+ status: record.status,
185
+ touched: record.touched,
186
+ dirty: dirty(record),
187
+ active: record.registrations.size > 0,
188
+ registrationCount: record.registrations.size,
189
+ validationRevision: record.validationRevision
190
+ };
191
+ const previous = state.fields[record.name];
192
+ Object.defineProperty(fields, record.name, {
193
+ value: formValueEqual(field, previous) ? previous : Object.freeze(field),
194
+ enumerable: true
195
+ });
196
+ if (field.dirty) dirtyNames.add(record.name);
197
+ if (field.touched) touchedNames.add(record.name);
198
+ resettable ||= field.dirty || field.touched || !!field.errors.length || field.status !== "unvalidated";
199
+ if (field.active) {
200
+ activeCount++;
201
+ if (field.status === "valid") validCount++;
202
+ invalid ||= field.status === "invalid";
203
+ validating ||= field.status === "validating";
204
+ }
205
+ }
206
+ const next = {
207
+ values,
208
+ defaultValues: defaults,
209
+ activeValues: activeValues(),
210
+ fields: formValueEqual(fields, state.fields) ? state.fields : Object.freeze(fields),
211
+ dirtyFields: sameMembers(dirtyNames, state.dirtyFields) ? state.dirtyFields : readonlySet(dirtyNames),
212
+ touchedFields: sameMembers(touchedNames, state.touchedFields) ? state.touchedFields : readonlySet(touchedNames),
213
+ isDirty: dirtyNames.size > 0,
214
+ isTouched: touchedNames.size > 0,
215
+ isValid: activeCount > 0 && validCount === activeCount,
216
+ isInvalid: invalid,
217
+ isValidating: validating,
218
+ isSubmitting: !!submission,
219
+ canReset: !submission && resettable,
220
+ submitError,
221
+ revision: state.revision
222
+ };
223
+ if (formValueEqual(next, state)) return state;
224
+ return Object.freeze({
225
+ ...next,
226
+ revision: state.revision + 1
227
+ });
228
+ }
229
+ function flush() {
230
+ if (depth || notifying || disposed) return;
231
+ notifying = true;
232
+ try {
233
+ while ((pending || cancellations.size) && !disposed) {
234
+ pending = false;
235
+ const events = changes;
236
+ changes = [];
237
+ const previous = state;
238
+ state = buildSnapshot();
239
+ const published = state;
240
+ if (state !== previous) for (const listener of Array.from(listeners)) {
241
+ if (!listeners.has(listener)) continue;
242
+ try {
243
+ listener.notify();
244
+ } catch (error) {
245
+ report(error);
246
+ }
247
+ }
248
+ if (events.length && !disposed && resolveCallbacks().onValuesChange) {
249
+ const change = Object.freeze({
250
+ names: Object.freeze(Array.from(new Set(events.flatMap((event) => event.names)))),
251
+ source: events.some((event) => event.source === "user") ? "user" : "program",
252
+ kind: events[events.length - 1].kind
253
+ });
254
+ try {
255
+ const result = resolveCallbacks().onValuesChange?.(published.values, change);
256
+ if (result) Promise.resolve(result).catch(report);
257
+ } catch (error) {
258
+ report(error);
259
+ }
260
+ }
261
+ cancelPending();
262
+ }
263
+ } finally {
264
+ notifying = false;
265
+ }
266
+ }
267
+ function batch(fn) {
268
+ assertLive();
269
+ depth++;
270
+ try {
271
+ fn();
272
+ } finally {
273
+ depth--;
274
+ pending = true;
275
+ flush();
276
+ }
277
+ }
278
+ function event(names, kind, source = "program") {
279
+ if (names.length) changes.push({
280
+ names,
281
+ kind,
282
+ source
283
+ });
284
+ }
285
+ function write(path, value, config = {}) {
286
+ const normalized = normalizePath(path);
287
+ const previous = values;
288
+ const next = writePath(values, normalized, ownValue(value));
289
+ const record = ensure(normalized);
290
+ const changed = next !== values;
291
+ if (changed) {
292
+ values = next;
293
+ invalidateRelated(record.path, previous, config);
294
+ }
295
+ if (config.touch ?? config.source === "user") record.touched = true;
296
+ if (changed && (config.notify ?? config.source === "user")) event([record.name], "set", config.source);
297
+ return changed;
298
+ }
299
+ function setValue(path, value, config) {
300
+ const normalized = normalizePath(path);
301
+ const prepared = { ...config };
302
+ batch(() => {
303
+ write(normalized, value, prepared);
304
+ });
305
+ }
306
+ function setValues(next, config) {
307
+ assertLive();
308
+ const prepared = { ...config };
309
+ const entries = Object.entries(next).map(([name, value]) => [normalizePath(name), ownValue(value)]);
310
+ let checked = values;
311
+ for (const [path, value] of entries) checked = writePath(checked, path, value);
312
+ batch(() => {
313
+ for (const [path, value] of entries) write(path, value, prepared);
314
+ });
315
+ }
316
+ function prepareRegistration(path, config) {
317
+ const prepared = {
318
+ ...config,
319
+ deps: config.deps ? Object.freeze([...config.deps]) : void 0,
320
+ dependsOn: config.dependsOn?.map((dependency) => Object.freeze(normalizePath(dependency))),
321
+ rules: config.rules?.map((rule) => Object.freeze({
322
+ ...rule,
323
+ ...rule.enum ? { enum: Object.freeze([...rule.enum]) } : {}
324
+ }))
325
+ };
326
+ if (Object.hasOwn(prepared, "defaultValue")) {
327
+ prepared.defaultValue = ownValue(prepared.defaultValue);
328
+ const normalized = normalizePath(path);
329
+ if (!hasPath(values, normalized) && !hasPath(defaults, normalized)) {
330
+ writePath(values, normalized, prepared.defaultValue);
331
+ writePath(defaults, normalized, prepared.defaultValue);
332
+ }
333
+ }
334
+ return prepared;
335
+ }
336
+ function seed(record, registration) {
337
+ if (registration.defaultConsidered || !Object.hasOwn(registration.options, "defaultValue")) return;
338
+ registration.defaultConsidered = true;
339
+ const value = ownValue(registration.options.defaultValue);
340
+ if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) {
341
+ const previous = values;
342
+ values = writePath(values, record.path, value);
343
+ defaults = writePath(defaults, record.path, value);
344
+ record.fieldDefault = { value };
345
+ invalidateRelated(record.path, previous);
346
+ } else if (record.fieldDefault && record.registrations.size > 1 && !formValueEqual(record.fieldDefault.value, value)) developmentError(`Field "${record.name}" registered with conflicting defaultValue; the first default is kept.`);
347
+ }
348
+ function register(path, config = {}) {
349
+ assertLive();
350
+ const normalized = normalizePath(path);
351
+ const prepared = prepareRegistration(normalized, config);
352
+ const signature = rulesSignature(prepared.rules, { hashFunctions: prepared.rulesKey === void 0 });
353
+ const record = ensure(normalized);
354
+ const registration = {
355
+ options: prepared,
356
+ signature,
357
+ order: ++order,
358
+ defaultConsidered: false
359
+ };
360
+ let released = false;
361
+ batch(() => {
362
+ record.registrations.add(registration);
363
+ record.owner = registration;
364
+ seed(record, registration);
365
+ invalidate(record);
366
+ });
367
+ return Object.freeze({
368
+ name: record.name,
369
+ get released() {
370
+ return released || disposed;
371
+ },
372
+ update(next) {
373
+ if (released || disposed) return;
374
+ const prepared = prepareRegistration(record.path, next);
375
+ const signature = rulesSignature(prepared.rules, { hashFunctions: prepared.rulesKey === void 0 });
376
+ const validationChanged = registration.signature !== signature || registration.options.rulesKey !== prepared.rulesKey || !sameDependencies(registration.options.deps, prepared.deps) || !samePaths(registration.options.dependsOn, prepared.dependsOn) || registration.options.validationDelay !== prepared.validationDelay || registration.options.validateTrigger !== prepared.validateTrigger || registration.options.errorPolicy !== prepared.errorPolicy;
377
+ if (!(!registration.defaultConsidered && Object.hasOwn(prepared, "defaultValue")) && !validationChanged && (registration.options.preserve ?? true) === (prepared.preserve ?? true) && registration.options.isEqual === prepared.isEqual) {
378
+ registration.options = prepared;
379
+ return;
380
+ }
381
+ batch(() => {
382
+ registration.options = prepared;
383
+ registration.signature = signature;
384
+ registration.order = ++order;
385
+ const revalidate = validationChanged && record.status !== "unvalidated";
386
+ if (record.owner !== registration || validationChanged) invalidate(record, revalidate);
387
+ record.owner = registration;
388
+ seed(record, registration);
389
+ if (revalidate) validateRecord(record, false);
390
+ });
391
+ },
392
+ release(config = {}) {
393
+ if (released || disposed) return;
394
+ released = true;
395
+ batch(() => {
396
+ record.registrations.delete(registration);
397
+ if (record.owner === registration) {
398
+ record.owner = Array.from(record.registrations).sort((a, b) => b.order - a.order)[0];
399
+ invalidate(record);
400
+ }
401
+ if (!record.registrations.size) {
402
+ if (registration.options.preserve === false) {
403
+ const removeValue = () => {
404
+ const previous = values;
405
+ values = writePath(values, record.path, void 0, true);
406
+ record.touched = false;
407
+ invalidateRelated(record.path, previous, { validate: "auto" });
408
+ if (!hasPath(defaults, record.path)) records.delete(record.name);
409
+ };
410
+ if (config.deferValueRemoval) {
411
+ const revision = record.validationRevision;
412
+ queueMicrotask(() => {
413
+ if (!disposed && records.get(record.name) === record && !record.registrations.size && record.validationRevision === revision) batch(removeValue);
414
+ });
415
+ } else removeValue();
416
+ }
417
+ if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) records.delete(record.name);
418
+ }
419
+ });
420
+ }
421
+ });
422
+ }
423
+ function replaceDefaults(next) {
424
+ const entries = Object.keys(next);
425
+ entries.forEach((name) => normalizePath(name));
426
+ defaults = ownValue(next);
427
+ for (const name of entries) ensure(name, false);
428
+ for (const record of records.values()) record.fieldDefault = void 0;
429
+ }
430
+ function setDefaultValues(next, config = {}) {
431
+ const replace = config.currentValues === "replace";
432
+ batch(() => {
433
+ replaceDefaults(next);
434
+ if (replace) {
435
+ values = defaults;
436
+ for (const record of records.values()) {
437
+ invalidate(record);
438
+ record.touched = false;
439
+ }
440
+ event(Array.from(records.keys()), "defaults");
441
+ }
442
+ });
443
+ }
444
+ function adoptDefaultValues(next, config = {}) {
445
+ const when = config.when ?? "untouched";
446
+ const preserveDirty = config.preserveDirty ?? false;
447
+ batch(() => {
448
+ const candidates = Array.from(records.values());
449
+ const preserved = candidates.filter((record) => {
450
+ if (!record.explicit && candidates.some((child) => child.explicit && child.path.length > record.path.length && related(record.path, child.path))) return false;
451
+ return when === "untouched" && record.touched || when === "clean" && dirty(record) || preserveDirty && dirty(record);
452
+ }).map((record) => ({
453
+ path: record.path,
454
+ exists: hasPath(values, record.path),
455
+ value: readPath(values, record.path)
456
+ }));
457
+ const previous = values;
458
+ replaceDefaults(next);
459
+ values = defaults;
460
+ for (const saved of preserved.sort((a, b) => a.path.length - b.path.length)) values = writePath(values, saved.path, saved.value, !saved.exists);
461
+ const names = [];
462
+ for (const record of records.values()) {
463
+ const changed = pathValueChanged(previous, values, record.path);
464
+ if (changed || dependencyChanged(record, previous) || validationReadChanged(record, previous)) invalidate(record);
465
+ if (changed) names.push(record.name);
466
+ }
467
+ event(names, "adopt");
468
+ });
469
+ }
470
+ function reset(config = {}) {
471
+ batch(() => {
472
+ if (Object.hasOwn(config, "values")) replaceDefaults(config.values ?? {});
473
+ values = defaults;
474
+ const names = Array.from(records.keys());
475
+ for (const record of records.values()) {
476
+ invalidate(record);
477
+ record.touched = false;
478
+ if (!record.registrations.size && !hasPath(values, record.path)) records.delete(record.name);
479
+ }
480
+ const previous = submission;
481
+ submission = void 0;
482
+ submitError = void 0;
483
+ if (previous) cancellations.add(previous);
484
+ event(names, "reset");
485
+ });
486
+ }
487
+ function setFieldErrors(path, errors) {
488
+ assertLive();
489
+ const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;
490
+ batch(() => {
491
+ const record = ensure(path);
492
+ const status = copied.length ? "invalid" : "valid";
493
+ if (record.status === status && formValueEqual(record.errors, copied)) return;
494
+ invalidate(record);
495
+ record.errors = copied;
496
+ record.status = status;
497
+ });
498
+ }
499
+ function startValidation(path) {
500
+ assertLive();
501
+ const record = records.get(getFieldKey(path));
502
+ if (!record?.registrations.size) throw new Error("Only active form fields can validate.");
503
+ const controller = new AbortController();
504
+ batch(() => {
505
+ invalidate(record, true);
506
+ record.validation = controller;
507
+ record.status = "validating";
508
+ });
509
+ const current = () => !disposed && record.validation === controller && !controller.signal.aborted;
510
+ return Object.freeze({
511
+ signal: controller.signal,
512
+ complete(errors) {
513
+ if (!current()) return false;
514
+ const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;
515
+ batch(() => {
516
+ record.validation = void 0;
517
+ record.reads = void 0;
518
+ record.readsAll = false;
519
+ record.errors = copied;
520
+ record.status = copied.length ? "invalid" : "valid";
521
+ });
522
+ return true;
523
+ },
524
+ cancel() {
525
+ if (current()) batch(() => {
526
+ invalidate(record, true);
527
+ });
528
+ }
529
+ });
530
+ }
531
+ function startSubmission() {
532
+ assertLive();
533
+ if (submission) return void 0;
534
+ const controller = new AbortController();
535
+ batch(() => {
536
+ submission = controller;
537
+ submitError = void 0;
538
+ });
539
+ return Object.freeze({
540
+ signal: controller.signal,
541
+ complete(result) {
542
+ if (disposed || submission !== controller || controller.signal.aborted) return false;
543
+ const error = result?.error;
544
+ batch(() => {
545
+ submission = void 0;
546
+ submitError = error;
547
+ });
548
+ return true;
549
+ }
550
+ });
551
+ }
552
+ function validateRecord(record, immediate, parentSignal) {
553
+ const result = (errors, stale = false) => ({
554
+ name: record.name,
555
+ errors,
556
+ isValid: !stale && !errors.length,
557
+ stale
558
+ });
559
+ if (parentSignal?.aborted) return Promise.resolve(result(EMPTY_ERRORS, true));
560
+ const config = record.owner?.options;
561
+ const rules = config?.rules ?? [];
562
+ const token = startValidation(record.path);
563
+ const revision = record.validationRevision;
564
+ if (token.signal.aborted || parentSignal?.aborted) {
565
+ token.cancel();
566
+ return Promise.resolve(result(EMPTY_ERRORS, true));
567
+ }
568
+ if (!rules.length) {
569
+ record.reads = void 0;
570
+ record.readsAll = false;
571
+ const committed = token.complete(EMPTY_ERRORS);
572
+ return Promise.resolve(result(EMPTY_ERRORS, !committed || record.validationRevision !== revision));
573
+ }
574
+ const validationValues = values;
575
+ const reads = /* @__PURE__ */ new Map();
576
+ record.reads = reads;
577
+ record.readsAll = false;
578
+ const value = readPath(validationValues, record.path);
579
+ return new Promise((resolve) => {
580
+ let timer;
581
+ let settled = false;
582
+ const finish = (errors, stale) => {
583
+ if (settled) return;
584
+ settled = true;
585
+ clearTimeout(timer);
586
+ token.signal.removeEventListener("abort", abort);
587
+ parentSignal?.removeEventListener("abort", cancel);
588
+ resolve(result(errors, stale));
589
+ };
590
+ const abort = () => finish(EMPTY_ERRORS, true);
591
+ const cancel = () => token.cancel();
592
+ token.signal.addEventListener("abort", abort, { once: true });
593
+ parentSignal?.addEventListener("abort", cancel, { once: true });
594
+ const run = async () => {
595
+ timer = void 0;
596
+ const errors = await runRules(value, rules, {
597
+ name: record.name,
598
+ signal: token.signal,
599
+ getValue: (path) => {
600
+ const normalized = normalizePath(path);
601
+ if (!settled && !token.signal.aborted) {
602
+ reads.set(getFieldKey(normalized), normalized);
603
+ if (pathValueChanged(validationValues, values, normalized)) token.cancel();
604
+ }
605
+ return readPath(validationValues, normalized);
606
+ },
607
+ getValues: () => {
608
+ if (!settled && !token.signal.aborted) {
609
+ record.readsAll = true;
610
+ if (values !== validationValues) token.cancel();
611
+ }
612
+ return validationValues;
613
+ }
614
+ }, config?.errorPolicy ?? options.errorPolicy ?? "first");
615
+ if (!settled) {
616
+ const committed = token.complete(errors);
617
+ finish(Object.freeze(errors), !committed || record.validationRevision !== revision || !!parentSignal?.aborted);
618
+ }
619
+ };
620
+ const delay = immediate ? 0 : config?.validationDelay ?? 0;
621
+ if (delay > 0) timer = setTimeout(() => void run(), delay);
622
+ else run();
623
+ });
624
+ }
625
+ function validate(paths, config = {}) {
626
+ assertLive();
627
+ const active = (paths ? Array.from(new Set(paths.map(getFieldKey))).map((key) => records.get(key)) : Array.from(records.values())).filter((record) => !!record?.registrations.size);
628
+ let runs = [];
629
+ let revisions = [];
630
+ batch(() => {
631
+ runs = active.map((record) => validateRecord(record, config.immediate ?? true, config.signal));
632
+ revisions = active.map((record) => record.validationRevision);
633
+ });
634
+ return Promise.all(runs).then((results) => {
635
+ const fields = results.map((result, index) => {
636
+ const record = active[index];
637
+ return record.validationRevision === revisions[index] && !!record.registrations.size && !config.signal?.aborted ? result : {
638
+ ...result,
639
+ stale: true,
640
+ isValid: false
641
+ };
642
+ });
643
+ return {
644
+ fields,
645
+ stale: fields.some((field) => field.stale) || !!config.signal?.aborted,
646
+ isValid: !!fields.length && fields.every((field) => field.isValid)
647
+ };
648
+ });
649
+ }
650
+ function resolveCallbacks() {
651
+ return {
652
+ ...options,
653
+ ...binding?.callbacks
654
+ };
655
+ }
656
+ function cancelSubmission() {
657
+ batch(() => {
658
+ if (submission) cancellations.add(submission);
659
+ submission = void 0;
660
+ });
661
+ }
662
+ function bindCallbacks(callbacks) {
663
+ assertLive();
664
+ if (binding) developmentError("A second Form root owns this controller; the newest callback binding wins.");
665
+ const own = { callbacks: { ...callbacks } };
666
+ binding = own;
667
+ let released = false;
668
+ return Object.freeze({
669
+ update(next) {
670
+ if (!released && !disposed && binding === own) own.callbacks = { ...next };
671
+ },
672
+ release() {
673
+ if (released || disposed) return;
674
+ released = true;
675
+ if (binding === own) {
676
+ binding = void 0;
677
+ cancelSubmission();
678
+ }
679
+ }
680
+ });
681
+ }
682
+ async function submit(config = {}) {
683
+ const token = startSubmission();
684
+ if (!token) return {
685
+ status: "ignored",
686
+ reason: "submitting"
687
+ };
688
+ const include = config.include ?? "active";
689
+ return new Promise((resolve) => {
690
+ let settled = false;
691
+ const finish = (result) => {
692
+ if (settled) return;
693
+ settled = true;
694
+ token.signal.removeEventListener("abort", abort);
695
+ resolve(result);
696
+ };
697
+ const abort = () => finish({ status: "stale" });
698
+ token.signal.addEventListener("abort", abort, { once: true });
699
+ if (token.signal.aborted) {
700
+ abort();
701
+ return;
702
+ }
703
+ const run = async () => {
704
+ const pendingValidation = validate(void 0, { signal: token.signal });
705
+ const validatedRecords = Array.from(records.values()).filter((record) => record.registrations.size);
706
+ const revisions = validatedRecords.map((record) => record.validationRevision);
707
+ const validation = await pendingValidation;
708
+ if (settled) return;
709
+ const changedSinceValidation = validatedRecords.length !== validation.fields.length || validatedRecords.length !== Array.from(records.values()).filter((record) => record.registrations.size).length || validatedRecords.some((record, index) => !record.registrations.size || record.validationRevision !== revisions[index]);
710
+ if (validation.stale || changedSinceValidation) {
711
+ token.complete();
712
+ finish({ status: "stale" });
713
+ return;
714
+ }
715
+ const callbacks = resolveCallbacks();
716
+ let result;
717
+ if (!validation.isValid) {
718
+ const errors = Object.fromEntries(validation.fields.filter((field) => !field.isValid).map((field) => [field.name, field.errors]));
719
+ result = {
720
+ status: "invalid",
721
+ errors: Object.freeze(errors)
722
+ };
723
+ try {
724
+ await callbacks.onSubmitFailed?.({
725
+ status: "invalid",
726
+ errors: Object.freeze(errors)
727
+ });
728
+ } catch (error) {
729
+ report(error);
730
+ }
731
+ if (!settled) {
732
+ token.complete();
733
+ finish(result);
734
+ }
735
+ return;
736
+ }
737
+ try {
738
+ await callbacks.onSubmit?.(include === "all" ? values : activeValues(), {
739
+ include,
740
+ signal: token.signal
741
+ });
742
+ result = { status: "submitted" };
743
+ } catch (error) {
744
+ if (settled) return;
745
+ batch(() => {
746
+ submitError = error;
747
+ });
748
+ try {
749
+ await callbacks.onSubmitFailed?.({
750
+ status: "failed",
751
+ error
752
+ });
753
+ } catch (failure) {
754
+ report(failure);
755
+ }
756
+ result = {
757
+ status: "failed",
758
+ error
759
+ };
760
+ }
761
+ if (!settled) {
762
+ token.complete(result.status === "failed" ? { error: result.error } : void 0);
763
+ finish(result);
764
+ }
765
+ };
766
+ run().catch((error) => {
767
+ if (!settled) {
768
+ token.complete({ error });
769
+ finish({
770
+ status: "failed",
771
+ error
772
+ });
773
+ }
774
+ });
775
+ });
776
+ }
777
+ function subscribe(listener) {
778
+ assertLive();
779
+ const entry = { notify: listener };
780
+ listeners.add(entry);
781
+ return () => {
782
+ listeners.delete(entry);
783
+ };
784
+ }
785
+ function dispose() {
786
+ if (disposed) return;
787
+ disposed = true;
788
+ listeners.clear();
789
+ binding = void 0;
790
+ changes = [];
791
+ pending = false;
792
+ for (const record of records.values()) {
793
+ record.registrations.clear();
794
+ record.owner = void 0;
795
+ invalidate(record);
796
+ }
797
+ const previous = submission;
798
+ submission = void 0;
799
+ if (previous) cancellations.add(previous);
800
+ state = buildSnapshot();
801
+ records.clear();
802
+ cancelPending();
803
+ }
804
+ for (const name of Object.keys(values)) ensure(name, false);
805
+ state = buildSnapshot();
806
+ return Object.freeze({
807
+ [FORM_BACKEND]: "modern",
808
+ getSnapshot: () => state,
809
+ getFieldSnapshot: (path) => state.fields[getFieldKey(path)],
810
+ getValue: (path) => readPath(values, normalizePath(path)),
811
+ getValues: () => values,
812
+ getActiveValues: () => activeValues(),
813
+ subscribe,
814
+ subscribeSelector(selector, listener, isEqual = Object.is) {
815
+ let selected = selector(state);
816
+ return subscribe(() => {
817
+ const next = selector(state);
818
+ if (isEqual(selected, next)) return;
819
+ const previous = selected;
820
+ selected = next;
821
+ listener(next, previous);
822
+ });
823
+ },
824
+ register,
825
+ validate,
826
+ submit,
827
+ bindCallbacks,
828
+ updateCallbacks(callbacks) {
829
+ options.onSubmit = callbacks.onSubmit;
830
+ options.onSubmitFailed = callbacks.onSubmitFailed;
831
+ options.onValuesChange = callbacks.onValuesChange;
832
+ },
833
+ blur(path) {
834
+ const record = records.get(getFieldKey(path));
835
+ if (!record?.registrations.size) return;
836
+ batch(() => {
837
+ record.touched = true;
838
+ if ((record.owner?.options.validateTrigger ?? "onBlur") === "onBlur") validateRecord(record, false);
839
+ });
840
+ },
841
+ setValue,
842
+ setValues,
843
+ batch,
844
+ setDefaultValues,
845
+ adoptDefaultValues,
846
+ reset,
847
+ touch(path, touched = true) {
848
+ batch(() => {
849
+ ensure(path).touched = touched;
850
+ });
851
+ },
852
+ setFieldErrors,
853
+ clearFieldErrors: (path) => setFieldErrors(path, EMPTY_ERRORS),
854
+ startValidation,
855
+ startSubmission,
856
+ setSubmitError(error) {
857
+ batch(() => {
858
+ submitError = error;
859
+ });
860
+ },
861
+ clearSubmitError() {
862
+ batch(() => {
863
+ submitError = void 0;
864
+ });
865
+ },
866
+ dispose,
867
+ debug: Object.freeze({
868
+ listenerCount: () => listeners.size,
869
+ registrationCount: () => Array.from(records.values()).reduce((count, record) => count + record.registrations.size, 0)
870
+ })
871
+ });
872
+ }
873
+
874
+ //#endregion
875
+ export { createFormStore };
876
+ //# sourceMappingURL=store.js.map