@cube-dev/ui-kit 0.182.0 → 0.184.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.
- package/dist/CHANGELOG.md +40 -0
- package/dist/_internal/hooks/use-debounced-value.js +48 -31
- package/dist/_internal/hooks/use-debounced-value.js.map +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +22 -7
- package/dist/_internal/hooks/use-deprecation-warning.js.map +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-event.js.map +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js.map +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +12 -4
- package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js.map +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +90 -20
- package/dist/_internal/hooks/use-timer/use-timer.js.map +1 -1
- package/dist/_internal/hooks/use-warn.js +4 -4
- package/dist/_internal/hooks/use-warn.js.map +1 -1
- package/dist/components/Block.js +29 -7
- package/dist/components/Block.js.map +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +33 -9
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +4 -4
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/HiddenInput.js.map +1 -1
- package/dist/components/Root.js +137 -42
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +20 -8
- package/dist/components/actions/Action/Action.js.map +1 -1
- package/dist/components/actions/Banner/Banner.js +91 -22
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.js +5 -5
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +15 -5
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js.map +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +73 -80
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js.map +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +205 -68
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +26 -7
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +215 -84
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +16 -7
- package/dist/components/actions/Link/Link.js.map +1 -1
- package/dist/components/actions/Menu/Menu.js +127 -72
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.js +120 -43
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +79 -31
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +316 -112
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +6 -12
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js.map +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/context.js.map +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/actions-run.js.map +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/index.js.map +1 -1
- package/dist/components/actions/use-action.js +3 -3
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +6 -6
- package/dist/components/actions/use-anchored-menu.js.map +1 -1
- package/dist/components/actions/use-context-menu.js +12 -12
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +84 -18
- package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
- package/dist/components/content/Alert/Alert.js +18 -7
- package/dist/components/content/Alert/Alert.js.map +1 -1
- package/dist/components/content/Alert/use-alert.js +53 -15
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +51 -13
- package/dist/components/content/Avatar/Avatar.js.map +1 -1
- package/dist/components/content/Badge/Badge.js +43 -10
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +29 -7
- package/dist/components/content/Card/Card.js.map +1 -1
- package/dist/components/content/Content.js +30 -7
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +220 -60
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +453 -194
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +52 -14
- package/dist/components/content/Divider.js.map +1 -1
- package/dist/components/content/Footer.js +29 -7
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.js +29 -7
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +55 -27
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +8 -8
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +429 -188
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +27 -2
- package/dist/components/content/Item/Item.js +418 -152
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +173 -59
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +34 -9
- package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
- package/dist/components/content/Layout/GridLayout.js +38 -10
- package/dist/components/content/Layout/GridLayout.js.map +1 -1
- package/dist/components/content/Layout/Layout.js +30 -13
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +33 -8
- package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +48 -11
- package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +30 -21
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +33 -8
- package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +53 -14
- package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +48 -11
- package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +216 -57
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +60 -14
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +59 -17
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +89 -27
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +33 -8
- package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +206 -119
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/index.js.map +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Layout/utils.js.map +1 -1
- package/dist/components/content/Paragraph.js +25 -9
- package/dist/components/content/Paragraph.js.map +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +52 -14
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +52 -17
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
- package/dist/components/content/Result/Result.js +117 -38
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +26 -17
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +6 -1
- package/dist/components/content/Tag/Tag.js +68 -13
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +61 -14
- package/dist/components/content/Text.js.map +1 -1
- package/dist/components/content/TextItem/TextItem.js +37 -16
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +98 -23
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +32 -32
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +10 -10
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/tree-index.js.map +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +123 -89
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +52 -21
- package/dist/components/content/Tree/use-load-data.js.map +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/highlightText.js.map +1 -1
- package/dist/components/content/use-auto-tooltip.d.ts +1 -1
- package/dist/components/content/use-auto-tooltip.js +231 -125
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +31 -31
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +41 -41
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +11 -11
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +41 -4
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +67 -30
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +95 -28
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +90 -41
- package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js.map +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +154 -64
- package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
- package/dist/components/data/TableBase/TableRow.js +211 -69
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableView.js +119 -80
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-menu.js.map +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/column-tint.js.map +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/row-menu.js.map +1 -1
- package/dist/components/data/TableBase/styled.d.ts +1 -0
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/table-tree.js.map +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/types.js.map +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-column-order.js +56 -12
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-container-width.js +24 -10
- package/dist/components/data/TableBase/use-container-width.js.map +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +68 -49
- package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +32 -18
- package/dist/components/data/TableBase/use-scrollability.js.map +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +130 -60
- package/dist/components/data/TableBase/use-table-columns.js.map +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js.map +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +39 -39
- package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +132 -68
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +168 -101
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +2 -2
- package/dist/components/data/TableBase/use-table-storage.js.map +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +181 -86
- package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +8 -0
- package/dist/components/fields/Checkbox/Checkbox.js +58 -39
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +101 -33
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/Checkbox/context.js.map +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +17 -1
- package/dist/components/fields/ColorInput/ColorInput.js +334 -152
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +18 -2
- package/dist/components/fields/ColorPicker/ColorPicker.js +18 -17
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +52 -13
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +90 -28
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +216 -134
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +88 -49
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +129 -34
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +17 -1
- package/dist/components/fields/DatePicker/DatePicker.js +200 -71
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +39 -8
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +109 -29
- package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +17 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js +230 -90
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +17 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +481 -180
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +15 -6
- package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +17 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +294 -93
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +15 -6
- package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +15 -7
- package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +15 -6
- package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +15 -6
- package/dist/components/fields/DatePicker/YearPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/period.js.map +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/props.js.map +1 -1
- package/dist/components/fields/DatePicker/utils.js +15 -8
- package/dist/components/fields/DatePicker/utils.js.map +1 -1
- package/dist/components/fields/FileInput/FileInput.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +87 -87
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +11 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js +24 -23
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/Input/Input.js.map +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +23 -10
- package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -1
- package/dist/components/fields/ListBox/ListBox.js +138 -53
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +156 -37
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +61 -33
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +123 -33
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +53 -15
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +149 -45
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +20 -3
- package/dist/components/fields/Picker/Picker.js +11 -10
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +10 -2
- package/dist/components/fields/RadioGroup/Radio.js +275 -104
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +149 -48
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/RadioGroup/context.js.map +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +80 -65
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +91 -28
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +24 -3
- package/dist/components/fields/Select/Select.js +376 -121
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +45 -10
- package/dist/components/fields/Slider/Gradation.js.map +1 -1
- package/dist/components/fields/Slider/HueSlider.js +121 -32
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +46 -10
- package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
- package/dist/components/fields/Slider/Slider.js +108 -23
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -2
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +96 -37
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +64 -23
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +190 -66
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TextArea/TextArea.js +137 -47
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +80 -27
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +2 -2
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +156 -83
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +11 -2
- package/dist/components/fields/TriggerActions.js.map +1 -1
- package/dist/components/fields/color/ColorPanel.js +237 -59
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/channels.js.map +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/color.js.map +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/color/context.js.map +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +197 -72
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +1 -1
- package/dist/components/form/Form/Field.js +28 -12
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.js +95 -34
- package/dist/components/form/Form/Form.js.map +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +294 -81
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +32 -10
- package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +32 -10
- package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/dist/components/form/Form/SubmitError.js +130 -32
- package/dist/components/form/Form/SubmitError.js.map +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/backend.js.map +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/index.js.map +1 -1
- package/dist/components/form/Form/modern/actions.js +140 -45
- package/dist/components/form/Form/modern/actions.js.map +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/context.js.map +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/controller.js.map +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js.map +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/field.js.map +1 -1
- package/dist/components/form/Form/modern/react.js +102 -19
- package/dist/components/form/Form/modern/react.js.map +1 -1
- package/dist/components/form/Form/modern/store.js +13 -3
- package/dist/components/form/Form/modern/store.js.map +1 -1
- package/dist/components/form/Form/modern/types.d.ts +3 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/validation.js.map +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/modern/values.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +236 -63
- package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +106 -61
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.js +5 -4
- package/dist/components/form/Form/use-field/use-field.js.map +1 -1
- package/dist/components/form/Form/use-form.js +2 -1
- package/dist/components/form/Form/use-form.js.map +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Form/validation.js.map +1 -1
- package/dist/components/form/Label.js +127 -37
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/legacy-tooltip.js +28 -0
- package/dist/components/form/legacy-tooltip.js.map +1 -0
- package/dist/components/form/validation/ValidationIndicator.js +20 -5
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
- package/dist/components/form/validation/use-validation-props.js +36 -10
- package/dist/components/form/validation/use-validation-props.js.map +1 -1
- package/dist/components/form/wrapper.js +5 -3
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +49 -29
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +8 -8
- package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
- package/dist/components/layout/Board/Board.js +27 -9
- package/dist/components/layout/Board/Board.js.map +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js.map +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js.map +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/Widget.js.map +1 -1
- package/dist/components/layout/Board/WidgetHost.js +159 -121
- package/dist/components/layout/Board/WidgetHost.js.map +1 -1
- package/dist/components/layout/Board/board-context.js +14 -5
- package/dist/components/layout/Board/board-context.js.map +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/board-store.js.map +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js.map +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js.map +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js.map +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js.map +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
- package/dist/components/layout/Board/grid-core/placement.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.js.map +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js.map +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/index.js.map +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js.map +1 -1
- package/dist/components/layout/Board/use-board-layout.js +8 -8
- package/dist/components/layout/Board/use-board-layout.js.map +1 -1
- package/dist/components/layout/Board/use-board-registry.js +257 -257
- package/dist/components/layout/Board/use-board-registry.js.map +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -1
- package/dist/components/layout/Board/use-board-selection.js +16 -16
- package/dist/components/layout/Board/use-board-selection.js.map +1 -1
- package/dist/components/layout/Flex.js +29 -7
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flow.js +29 -7
- package/dist/components/layout/Flow.js.map +1 -1
- package/dist/components/layout/Grid.js +30 -7
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Panel.js +9 -9
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.js +59 -16
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +62 -32
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.js +55 -11
- package/dist/components/layout/Space.js.map +1 -1
- package/dist/components/layout/Suffix.js +59 -16
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +394 -164
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +69 -26
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +25 -10
- package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +625 -235
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +65 -23
- package/dist/components/navigation/Tabs/TabDropIndicator.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +47 -19
- package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +106 -33
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +45 -45
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +53 -19
- package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +16 -6
- package/dist/components/navigation/Tabs/TabsContext.js.map +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js.map +1 -1
- package/dist/components/navigation/Tabs/styled.js +2 -2
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +50 -13
- package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +111 -63
- package/dist/components/navigation/Tabs/use-tab-indicator.js.map +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +54 -14
- package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
- package/dist/components/other/Calendar/Calendar.js +79 -31
- package/dist/components/other/Calendar/Calendar.js.map +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +66 -20
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +90 -40
- package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +80 -17
- package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +568 -144
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +425 -134
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +6 -6
- package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +50 -24
- package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/Calendar/styled.js.map +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +95 -34
- package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +153 -42
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +76 -54
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +146 -39
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +43 -18
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +13 -13
- package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogForm.d.ts +12 -7
- package/dist/components/overlays/Dialog/DialogForm.js +22 -10
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +214 -59
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +357 -0
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -0
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +1 -1
- package/dist/components/overlays/Dialog/index.d.ts +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +68 -0
- package/dist/components/overlays/Dialog/use-content-overflow.js.map +1 -0
- package/dist/components/overlays/Dialog/use-dialog-container.js +6 -6
- package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
- package/dist/components/overlays/Modal/Modal.js +140 -27
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
- package/dist/components/overlays/Modal/Overlay.js +4 -4
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +131 -29
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +142 -30
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +36 -7
- package/dist/components/overlays/Modal/Underlay.js.map +1 -1
- package/dist/components/overlays/Notifications/Notification.js +69 -32
- package/dist/components/overlays/Notifications/Notification.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +79 -26
- package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +138 -33
- package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +63 -16
- package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +312 -151
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +210 -58
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js.map +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.d.ts +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +3 -3
- package/dist/components/overlays/Notifications/format-relative-time.js.map +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/index.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +51 -51
- package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +12 -12
- package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +10 -10
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +24 -5
- package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +145 -43
- package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +25 -25
- package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +68 -15
- package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
- package/dist/components/overlays/Toast/index.js +100 -34
- package/dist/components/overlays/Toast/index.js.map +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
- package/dist/components/overlays/Toast/useToast.js +9 -9
- package/dist/components/overlays/Toast/useToast.js.map +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +88 -31
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +75 -10
- package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +189 -77
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.d.ts +16 -0
- package/dist/components/overlays/Tooltip/split-trigger-props.js +54 -0
- package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -0
- package/dist/components/portal/Portal.js +18 -3
- package/dist/components/portal/Portal.js.map +1 -1
- package/dist/components/portal/PortalProvider.js +11 -2
- package/dist/components/portal/PortalProvider.js.map +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/portal/usePortal.js.map +1 -1
- package/dist/components/shared/DraggableCollection.js +23 -23
- package/dist/components/shared/DraggableCollection.js.map +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/InvalidIcon.js.map +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js.map +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +156 -48
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +12 -3
- package/dist/components/status/Spin/Cube.js.map +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +21 -6
- package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
- package/dist/components/status/Spin/Spin.js +31 -7
- package/dist/components/status/Spin/Spin.js.map +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +23 -6
- package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
- package/dist/data/item-themes.d.ts +1 -1
- package/dist/data/item-themes.js +7 -1
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/data/themes.js.map +1 -1
- package/dist/eslint-plugin/defaults.generated.js +15 -5
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/index.js.map +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
- package/dist/i18n/I18nProvider.js +54 -13
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/createFormatter.js.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/instance.js.map +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/locales.js.map +1 -1
- package/dist/i18n/useFormatter.js +10 -3
- package/dist/i18n/useFormatter.js.map +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/i18n/useI18n.js.map +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js.map +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js.map +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AiIcon.js.map +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js.map +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js.map +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js.map +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BackwardIcon.js.map +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BarChartIcon.js.map +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js.map +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BellIcon.js.map +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/BooleanIcon.js.map +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js.map +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CalendarIcon.js.map +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js.map +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js.map +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js.map +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js.map +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js.map +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js.map +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js.map +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js.map +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js.map +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js.map +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js.map +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js.map +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js.map +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartPie2Icon.js.map +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/ChartScatterIcon.js.map +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js.map +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js.map +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CheckIcon.js.map +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js.map +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/ClearIcon.js.map +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js.map +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js.map +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CloseIcon.js.map +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/CodeIcon.js.map +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js.map +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CopyIcon.js.map +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CountIcon.js.map +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubeIcon.js.map +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js.map +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js.map +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js.map +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DangerIcon.js.map +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DashboardIcon.js.map +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js.map +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js.map +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js.map +1 -1
- package/dist/icons/DirectionIcon.js +67 -22
- package/dist/icons/DirectionIcon.js.map +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DonutIcon.js.map +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/DownIcon.js.map +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/EditIcon.js.map +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js.map +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js.map +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js.map +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeIcon.js.map +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js.map +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FilterIcon.js.map +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js.map +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderIcon.js.map +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js.map +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js.map +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/ForwardIcon.js.map +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js.map +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js.map +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js.map +1 -1
- package/dist/icons/Icon.js +60 -16
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoCircleIcon.js.map +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/InfoIcon.js.map +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/KeyIcon.js.map +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LeftIcon.js.map +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LineChartIcon.js.map +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LoadingIcon.js.map +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js.map +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/LockIcon.js.map +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/MoreIcon.js.map +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js.map +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/Number123Icon.js.map +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/NumberIcon.js.map +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js.map +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js.map +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PauseIcon.js.map +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PercentageIcon.js.map +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PieChartIcon.js.map +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PipetteIcon.js.map +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js.map +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlayIcon.js.map +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/PlusIcon.js.map +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js.map +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReloadIcon.js.map +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReportIcon.js.map +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/ReturnIcon.js.map +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RightIcon.js.map +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js.map +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SchemeIcon.js.map +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SearchIcon.js.map +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js.map +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/SettingsIcon.js.map +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js.map +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/ShieldIcon.js.map +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SlashIcon.js.map +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SparklesIcon.js.map +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/SqlIcon.js.map +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StatsIcon.js.map +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StopIcon.js.map +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/StringIcon.js.map +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js.map +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/SwitchIcon.js.map +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/TableIcon.js.map +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js.map +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js.map +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js.map +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js.map +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js.map +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TimeIcon.js.map +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/TrashIcon.js.map +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UnlockIcon.js.map +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UpIcon.js.map +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js.map +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserIcon.js.map +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/UserLockIcon.js.map +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/ViewIcon.js.map +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js.map +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/WarningIcon.js.map +1 -1
- package/dist/icons/wrap-icon.js +15 -7
- package/dist/icons/wrap-icon.js.map +1 -1
- package/dist/index.d.ts +22 -22
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/probe/canonicalize.js +2 -2
- package/dist/probe/canonicalize.js.map +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/css.js.map +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +17 -7
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +33 -9
- package/dist/providers/TrackingProvider.js.map +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/navigationAdapter.default.js.map +1 -1
- package/dist/shared/form.d.ts +9 -2
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/all-tokens.js.map +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/base.js.map +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-seed.js.map +1 -1
- package/dist/tokens/color-theme.js +18 -3
- package/dist/tokens/color-theme.js.map +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/layout.js.map +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/lazy-styles.js.map +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/legacy-color.js.map +1 -1
- package/dist/tokens/palette-config.js +9 -2
- package/dist/tokens/palette-config.js.map +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +85 -21
- package/dist/tokens/resolve.js.map +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/shadows.js.map +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/sizes.js.map +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/spacing.js.map +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/tokens/typography.js.map +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/ResizeSensor.js.map +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/colors.js.map +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/dotize.js.map +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/is-dev-env.js.map +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/modules.js.map +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/promise.js.map +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/raf.js.map +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/random.js.map +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/range.js.map +1 -1
- package/dist/utils/react/RenderCache.js +2 -2
- package/dist/utils/react/RenderCache.js.map +1 -1
- package/dist/utils/react/Slots.js +67 -24
- package/dist/utils/react/Slots.js.map +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/chain.js.map +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/disabledProps.js.map +1 -1
- package/dist/utils/react/escapePropagation.js +1 -1
- package/dist/utils/react/escapePropagation.js.map +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +35 -12
- package/dist/utils/react/interactions.js.map +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/isTextOnly.js.map +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mapProps.js.map +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/mergeProps.js.map +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/nullableValue.js.map +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/programmaticFocus.js.map +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/resolveIcon.js.map +1 -1
- package/dist/utils/react/sharedStore.js +13 -2
- package/dist/utils/react/sharedStore.js.map +1 -1
- package/dist/utils/react/useBufferedValue.js +5 -5
- package/dist/utils/react/useBufferedValue.js.map +1 -1
- package/dist/utils/react/useCombinedRefs.js +20 -5
- package/dist/utils/react/useCombinedRefs.js.map +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +53 -17
- package/dist/utils/react/useControlledFocusVisible.js.map +1 -1
- package/dist/utils/react/useEventBus.js +43 -18
- package/dist/utils/react/useEventBus.js.map +1 -1
- package/dist/utils/react/useId.js +2 -1
- package/dist/utils/react/useId.js.map +1 -1
- package/dist/utils/react/useIsDarwin.js +29 -16
- package/dist/utils/react/useIsDarwin.js.map +1 -1
- package/dist/utils/react/useKeySymbols.js +23 -9
- package/dist/utils/react/useKeySymbols.js.map +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLayoutEffect.js.map +1 -1
- package/dist/utils/react/useLocalStorage.js +75 -30
- package/dist/utils/react/useLocalStorage.js.map +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useMergeStyles.js.map +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +25 -9
- package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
- package/dist/utils/react/usePopoverSync.js +175 -73
- package/dist/utils/react/usePopoverSync.js.map +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useQaProps.js.map +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useScheme.js.map +1 -1
- package/dist/utils/react/useViewportSize.js +43 -19
- package/dist/utils/react/useViewportSize.js.map +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/selection.js.map +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/styles.js.map +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/tree.js.map +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/utils/warnings.js.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/docs/FieldProperties.md +2 -2
- package/docs/Usage.md +9 -1
- package/docs/components/actions/ButtonSplit.md +2 -0
- package/docs/components/content/InfoBadge.md +1 -1
- package/docs/components/content/InlineInput.md +1 -1
- package/docs/components/content/Layout.md +1 -1
- package/docs/components/content/Tag.md +10 -2
- package/docs/components/fields/Checkbox.md +11 -0
- package/docs/components/fields/ColorInput.md +15 -8
- package/docs/components/fields/ColorPicker.md +16 -9
- package/docs/components/fields/ComboBox.md +16 -12
- package/docs/components/fields/DatePicker.md +2 -0
- package/docs/components/fields/FilterListBox.md +24 -19
- package/docs/components/fields/FilterPicker.md +27 -20
- package/docs/components/fields/ListBox.md +36 -26
- package/docs/components/fields/PeriodPicker.md +2 -0
- package/docs/components/fields/Picker.md +30 -22
- package/docs/components/fields/RadioGroup.md +2 -2
- package/docs/components/fields/Select.md +21 -12
- package/docs/components/form/Field.md +4 -4
- package/docs/components/form/Form.md +61 -578
- package/docs/components/form/ModernForm.md +22 -1
- package/docs/components/navigation/Tabs.md +3 -3
- package/docs/components/overlays/Dialog.md +30 -3
- package/docs/components/overlays/DialogForm.md +122 -263
- package/docs/components/overlays/DialogTrigger.md +1 -1
- package/docs/components/overlays/UseDialogContainer.md +11 -13
- package/docs/modern-form-guide.md +22 -1
- package/docs/modern-form-migration.md +1 -1
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","names":[],"sources":["../../../../../src/components/form/Form/modern/field.ts"],"sourcesContent":["import { normalizePath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type { FormController } from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue, FormValues } from './read-types';\nimport type { RegistrationOptions } from './types';\nimport type { FormPath } from './values';\n\ndeclare const FIELD_VALUE: unique symbol;\n\n/** Pure configuration, never a mutable/reactive field instance. */\nexport interface FormField<Value = unknown> {\n readonly [FIELD_VALUE]: Value;\n readonly form: FormController<any>;\n readonly path: FormPath;\n readonly options: RegistrationOptions<ReactNode>;\n}\n\nexport interface FormFieldContext<T extends object> {\n readonly signal: AbortSignal;\n getValue<const Path extends FormPath>(\n path: CheckedFormPath<T, Path>,\n ): FormReadValue<FormValueAtPath<T, Path>> | undefined;\n getValues(): FormValues<T>;\n}\n\nexport interface FormFieldOptions<T extends object, Value>\n extends Omit<RegistrationOptions<ReactNode>, 'defaultValue' | 'isEqual'> {\n readonly validate?: (\n value: FormReadValue<Value> | undefined,\n context: FormFieldContext<T>,\n ) => ReactNode | void | Promise<ReactNode | void>;\n readonly defaultValue?: Value;\n readonly isEqual?: (\n previous: FormReadValue<Value> | undefined,\n next: FormReadValue<Value> | undefined,\n ) => boolean;\n}\n\nexport function createFormField<T extends object, Value>(\n form: FormController<T>,\n path: FormPath,\n options: FormFieldOptions<T, Value> = {},\n): FormField<Value> {\n const { validate, ...registration } = options;\n const normalized = normalizePath(path);\n return Object.freeze({\n form,\n path: typeof path === 'string' ? path : normalized,\n options: Object.freeze({\n ...registration,\n ...(validate && {\n rules: [\n ...(registration.rules ?? []),\n {\n // The adapter has fixed source. Retain the authored function for\n // lazy rule comparison, without changing the consumer's deps.\n authored: validate,\n validator: (_rule, value, context) =>\n validate(value, context as FormFieldContext<T>),\n },\n ],\n }),\n }),\n }) as FormField<Value>;\n}\n"],"mappings":";;;;AAwCA,
|
|
1
|
+
{"version":3,"file":"field.js","names":["normalizePath","ReactNode","FormController","CheckedFormPath","FormValueAtPath","FormReadValue","FormValues","RegistrationOptions","FormPath","FIELD_VALUE","FormField","Value","form","path","options","FormFieldContext","signal","AbortSignal","getValue","T","Path","getValues","FormFieldOptions","Omit","validate","value","context","Promise","defaultValue","isEqual","previous","next","createFormField","registration","normalized","Object","freeze","rules","authored","validator","_rule"],"sources":["../../../../../src/components/form/Form/modern/field.ts"],"sourcesContent":["import { normalizePath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type { FormController } from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue, FormValues } from './read-types';\nimport type { RegistrationOptions } from './types';\nimport type { FormPath } from './values';\n\ndeclare const FIELD_VALUE: unique symbol;\n\n/** Pure configuration, never a mutable/reactive field instance. */\nexport interface FormField<Value = unknown> {\n readonly [FIELD_VALUE]: Value;\n readonly form: FormController<any>;\n readonly path: FormPath;\n readonly options: RegistrationOptions<ReactNode>;\n}\n\nexport interface FormFieldContext<T extends object> {\n readonly signal: AbortSignal;\n getValue<const Path extends FormPath>(\n path: CheckedFormPath<T, Path>,\n ): FormReadValue<FormValueAtPath<T, Path>> | undefined;\n getValues(): FormValues<T>;\n}\n\nexport interface FormFieldOptions<T extends object, Value>\n extends Omit<RegistrationOptions<ReactNode>, 'defaultValue' | 'isEqual'> {\n readonly validate?: (\n value: FormReadValue<Value> | undefined,\n context: FormFieldContext<T>,\n ) => ReactNode | void | Promise<ReactNode | void>;\n readonly defaultValue?: Value;\n readonly isEqual?: (\n previous: FormReadValue<Value> | undefined,\n next: FormReadValue<Value> | undefined,\n ) => boolean;\n}\n\nexport function createFormField<T extends object, Value>(\n form: FormController<T>,\n path: FormPath,\n options: FormFieldOptions<T, Value> = {},\n): FormField<Value> {\n const { validate, ...registration } = options;\n const normalized = normalizePath(path);\n return Object.freeze({\n form,\n path: typeof path === 'string' ? path : normalized,\n options: Object.freeze({\n ...registration,\n ...(validate && {\n rules: [\n ...(registration.rules ?? []),\n {\n // The adapter has fixed source. Retain the authored function for\n // lazy rule comparison, without changing the consumer's deps.\n authored: validate,\n validator: (_rule, value, context) =>\n validate(value, context as FormFieldContext<T>),\n },\n ],\n }),\n }),\n }) as FormField<Value>;\n}\n"],"mappings":";;;;AAwCA,SAAgBgC,gBACdpB,MACAC,MACAC,UAAsC,EAAE,EACtB;CAClB,MAAM,EAAEU,UAAU,GAAGS,iBAAiBnB;CACtC,MAAMoB,aAAalC,cAAca,KAAK;AACtC,QAAOsB,OAAOC,OAAO;EACnBxB;EACAC,MAAM,OAAOA,SAAS,WAAWA,OAAOqB;EACxCpB,SAASqB,OAAOC,OAAO;GACrB,GAAGH;GACH,GAAIT,YAAY,EACda,OAAO,CACL,GAAIJ,aAAaI,SAAS,EAAE,EAC5B;IAGEC,UAAUd;IACVe,YAAYC,OAAOf,OAAOC,YACxBF,SAASC,OAAOC,QAA8B;IACjD,CAAA,EAEJ;GACF,CAAA;EACF,CAAC"}
|
|
@@ -1,43 +1,126 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { ModernControllerContext } from "./context.js";
|
|
4
4
|
import { getFieldKey, normalizePath, readPath } from "./values.js";
|
|
5
5
|
import { createFormController, getControllerInternals } from "./controller.js";
|
|
6
|
-
import {
|
|
6
|
+
import { c } from "react-compiler-runtime";
|
|
7
|
+
import { useContext, useState } from "react";
|
|
7
8
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
8
9
|
import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";
|
|
9
10
|
|
|
10
11
|
//#region src/components/form/Form/modern/react.tsx
|
|
11
12
|
function useFormController(options) {
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
const $ = c(9);
|
|
14
|
+
let t0;
|
|
15
|
+
if ($[0] !== options) {
|
|
16
|
+
t0 = () => createFormController(options);
|
|
17
|
+
$[0] = options;
|
|
18
|
+
$[1] = t0;
|
|
19
|
+
} else t0 = $[1];
|
|
20
|
+
const [controller] = useState(t0);
|
|
21
|
+
let t1;
|
|
22
|
+
if ($[2] !== controller) {
|
|
23
|
+
t1 = getControllerInternals(controller, "Form.useController()");
|
|
24
|
+
$[2] = controller;
|
|
25
|
+
$[3] = t1;
|
|
26
|
+
} else t1 = $[3];
|
|
27
|
+
const { store } = t1;
|
|
28
|
+
let t2;
|
|
29
|
+
if ($[4] !== options?.onSubmit || $[5] !== options?.onSubmitFailed || $[6] !== options?.onValuesChange || $[7] !== store) {
|
|
30
|
+
t2 = () => {
|
|
31
|
+
store.updateCallbacks({
|
|
32
|
+
onSubmit: options?.onSubmit,
|
|
33
|
+
onSubmitFailed: options?.onSubmitFailed,
|
|
34
|
+
onValuesChange: options?.onValuesChange
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
$[4] = options?.onSubmit;
|
|
38
|
+
$[5] = options?.onSubmitFailed;
|
|
39
|
+
$[6] = options?.onValuesChange;
|
|
40
|
+
$[7] = store;
|
|
41
|
+
$[8] = t2;
|
|
42
|
+
} else t2 = $[8];
|
|
43
|
+
useLayoutEffect$1(t2);
|
|
21
44
|
return controller;
|
|
22
45
|
}
|
|
23
46
|
function useFormValue(form, path) {
|
|
24
|
-
const
|
|
25
|
-
|
|
47
|
+
const $ = c(4);
|
|
48
|
+
let t0;
|
|
49
|
+
if ($[0] !== path) {
|
|
50
|
+
t0 = normalizePath(path);
|
|
51
|
+
$[0] = path;
|
|
52
|
+
$[1] = t0;
|
|
53
|
+
} else t0 = $[1];
|
|
54
|
+
const normalized = t0;
|
|
55
|
+
let t1;
|
|
56
|
+
if ($[2] !== normalized) {
|
|
57
|
+
t1 = (state) => readPath(state.values, normalized);
|
|
58
|
+
$[2] = normalized;
|
|
59
|
+
$[3] = t1;
|
|
60
|
+
} else t1 = $[3];
|
|
61
|
+
return useFormSelector(form, t1);
|
|
26
62
|
}
|
|
27
63
|
function useFormFieldState(form, path) {
|
|
28
|
-
const
|
|
29
|
-
|
|
64
|
+
const $ = c(4);
|
|
65
|
+
let t0;
|
|
66
|
+
if ($[0] !== path) {
|
|
67
|
+
t0 = getFieldKey(path);
|
|
68
|
+
$[0] = path;
|
|
69
|
+
$[1] = t0;
|
|
70
|
+
} else t0 = $[1];
|
|
71
|
+
const key = t0;
|
|
72
|
+
let t1;
|
|
73
|
+
if ($[2] !== key) {
|
|
74
|
+
t1 = (state) => state.fields[key];
|
|
75
|
+
$[2] = key;
|
|
76
|
+
$[3] = t1;
|
|
77
|
+
} else t1 = $[3];
|
|
78
|
+
return useFormSelector(form, t1);
|
|
30
79
|
}
|
|
31
80
|
function useFormSelector(controller, selector, options) {
|
|
32
|
-
const
|
|
81
|
+
const $ = c(2);
|
|
82
|
+
let t0;
|
|
83
|
+
if ($[0] !== controller) {
|
|
84
|
+
t0 = getControllerInternals(controller, "Form.useSelector()");
|
|
85
|
+
$[0] = controller;
|
|
86
|
+
$[1] = t0;
|
|
87
|
+
} else t0 = $[1];
|
|
88
|
+
const { getServerSnapshot } = t0;
|
|
33
89
|
return useSyncExternalStoreWithSelector(controller.subscribe, controller.getSnapshot, getServerSnapshot, selector, options?.isEqual);
|
|
34
90
|
}
|
|
35
91
|
function FormSubscribe(props) {
|
|
92
|
+
const $ = c(10);
|
|
36
93
|
const fromContext = useContext(ModernControllerContext);
|
|
37
|
-
|
|
94
|
+
let t0;
|
|
95
|
+
if ($[0] !== fromContext || $[1] !== props) {
|
|
96
|
+
t0 = Object.hasOwn(props, "form") ? props.form : fromContext;
|
|
97
|
+
$[0] = fromContext;
|
|
98
|
+
$[1] = props;
|
|
99
|
+
$[2] = t0;
|
|
100
|
+
} else t0 = $[2];
|
|
101
|
+
const controller = t0;
|
|
38
102
|
if (!controller) throw new Error("<Form.Subscribe> requires a modern form prop or a modern <Form> root.");
|
|
39
|
-
|
|
40
|
-
|
|
103
|
+
let t1;
|
|
104
|
+
if ($[3] !== props.isEqual) {
|
|
105
|
+
t1 = { isEqual: props.isEqual };
|
|
106
|
+
$[3] = props.isEqual;
|
|
107
|
+
$[4] = t1;
|
|
108
|
+
} else t1 = $[4];
|
|
109
|
+
const selected = useFormSelector(controller, props.selector, t1);
|
|
110
|
+
let t2;
|
|
111
|
+
if ($[5] !== props.children || $[6] !== selected) {
|
|
112
|
+
t2 = props.children(selected);
|
|
113
|
+
$[5] = props.children;
|
|
114
|
+
$[6] = selected;
|
|
115
|
+
$[7] = t2;
|
|
116
|
+
} else t2 = $[7];
|
|
117
|
+
let t3;
|
|
118
|
+
if ($[8] !== t2) {
|
|
119
|
+
t3 = /* @__PURE__ */ jsx(Fragment$1, { children: t2 });
|
|
120
|
+
$[8] = t2;
|
|
121
|
+
$[9] = t3;
|
|
122
|
+
} else t3 = $[9];
|
|
123
|
+
return t3;
|
|
41
124
|
}
|
|
42
125
|
|
|
43
126
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","names":[],"sources":["../../../../../src/components/form/Form/modern/react.tsx"],"sourcesContent":["import { useContext, useMemo, useState } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\n\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\n\nimport { ModernControllerContext } from './context';\nimport { createFormController, getControllerInternals } from './controller';\nimport { getFieldKey, normalizePath, readPath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type {\n FormController,\n ModernFieldState,\n ModernFormState,\n UseFormControllerOptions,\n} from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue } from './read-types';\nimport type { FormPath } from './values';\n\nexport function useFormController<T extends object = Record<string, unknown>>(\n options?: UseFormControllerOptions<T>,\n): FormController<T> {\n // Initial options seed synchronously. A new options object never resets the\n // controller, and the creator does not subscribe its owner to form changes.\n const [controller] = useState(() => createFormController(options));\n const { store } = getControllerInternals(controller, 'Form.useController()');\n // Intentionally commit after every render: callbacks are live, unlike the\n // initial defaults/policy. Abandoned renders must never replace callbacks.\n useLayoutEffect(() => {\n store.updateCallbacks({\n onSubmit: options?.onSubmit,\n onSubmitFailed: options?.onSubmitFailed,\n onValuesChange: options?.onValuesChange,\n });\n });\n // Do not dispose from effect cleanup: Strict Mode and hidden React trees\n // reconnect effects while preserving state. Subscriptions own their cleanup;\n // the controller has no external resources and is collected with its owner.\n return controller;\n}\n\nexport function useFormValue<T extends object, const Path extends FormPath>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): FormReadValue<FormValueAtPath<T, Path>> | undefined {\n const normalized = useMemo(() => normalizePath(path), [path]);\n return useFormSelector(form, (state) =>\n readPath(state.values, normalized),\n ) as FormReadValue<FormValueAtPath<T, Path>> | undefined;\n}\n\nexport function useFormFieldState<\n T extends object,\n const Path extends FormPath,\n>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): ModernFieldState<FormValueAtPath<T, Path>> | undefined {\n const key = useMemo(() => getFieldKey(path), [path]);\n return useFormSelector(form, (state) => state.fields[key]) as\n | ModernFieldState<FormValueAtPath<T, Path>>\n | undefined;\n}\n\nexport interface FormSelectorOptions<Selected> {\n isEqual?: (previous: Selected, next: Selected) => boolean;\n}\n\nexport function useFormSelector<T extends object, Selected>(\n controller: FormController<T>,\n selector: (state: ModernFormState<T>) => Selected,\n options?: FormSelectorOptions<Selected>,\n): Selected {\n const { getServerSnapshot } = getControllerInternals(\n controller,\n 'Form.useSelector()',\n );\n return useSyncExternalStoreWithSelector(\n controller.subscribe,\n controller.getSnapshot,\n getServerSnapshot,\n selector,\n options?.isEqual,\n );\n}\n\nexport interface FormSubscribeProps<T extends object, Selected>\n extends FormSelectorOptions<Selected> {\n /** Omit to use modern context. An explicit undefined detaches from context. */\n form?: FormController<T>;\n selector: (state: ModernFormState<T>) => Selected;\n children: (selected: Selected) => ReactNode;\n}\n\nexport function FormSubscribe<\n T extends object = Record<string, unknown>,\n Selected = unknown,\n>(props: FormSubscribeProps<T, Selected>) {\n const fromContext = useContext(ModernControllerContext);\n const controller = Object.hasOwn(props, 'form') ? props.form : fromContext;\n if (!controller) {\n throw new Error(\n '<Form.Subscribe> requires a modern form prop or a modern <Form> root.',\n );\n }\n const selected = useFormSelector(controller, props.selector, {\n isEqual: props.isEqual,\n });\n return <>{props.children(selected)}</>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"react.js","names":["useContext","useMemo","useState","useSyncExternalStoreWithSelector","useLayoutEffect","ModernControllerContext","createFormController","getControllerInternals","getFieldKey","normalizePath","readPath","ReactNode","FormController","ModernFieldState","ModernFormState","UseFormControllerOptions","CheckedFormPath","FormValueAtPath","FormReadValue","FormPath","useFormController","options","$","_c","t0","controller","t1","store","t2","onSubmit","onSubmitFailed","onValuesChange","updateCallbacks","useFormValue","form","path","normalized","state","values","useFormSelector","T","Path","useFormFieldState","key","fields","FormSelectorOptions","isEqual","previous","Selected","next","selector","getServerSnapshot","subscribe","getSnapshot","FormSubscribeProps","children","selected","FormSubscribe","props","fromContext","Object","hasOwn","Error","t3"],"sources":["../../../../../src/components/form/Form/modern/react.tsx"],"sourcesContent":["import { useContext, useMemo, useState } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\n\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\n\nimport { ModernControllerContext } from './context';\nimport { createFormController, getControllerInternals } from './controller';\nimport { getFieldKey, normalizePath, readPath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type {\n FormController,\n ModernFieldState,\n ModernFormState,\n UseFormControllerOptions,\n} from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue } from './read-types';\nimport type { FormPath } from './values';\n\nexport function useFormController<T extends object = Record<string, unknown>>(\n options?: UseFormControllerOptions<T>,\n): FormController<T> {\n // Initial options seed synchronously. A new options object never resets the\n // controller, and the creator does not subscribe its owner to form changes.\n const [controller] = useState(() => createFormController(options));\n const { store } = getControllerInternals(controller, 'Form.useController()');\n // Intentionally commit after every render: callbacks are live, unlike the\n // initial defaults/policy. Abandoned renders must never replace callbacks.\n useLayoutEffect(() => {\n store.updateCallbacks({\n onSubmit: options?.onSubmit,\n onSubmitFailed: options?.onSubmitFailed,\n onValuesChange: options?.onValuesChange,\n });\n });\n // Do not dispose from effect cleanup: Strict Mode and hidden React trees\n // reconnect effects while preserving state. Subscriptions own their cleanup;\n // the controller has no external resources and is collected with its owner.\n return controller;\n}\n\nexport function useFormValue<T extends object, const Path extends FormPath>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): FormReadValue<FormValueAtPath<T, Path>> | undefined {\n const normalized = useMemo(() => normalizePath(path), [path]);\n return useFormSelector(form, (state) =>\n readPath(state.values, normalized),\n ) as FormReadValue<FormValueAtPath<T, Path>> | undefined;\n}\n\nexport function useFormFieldState<\n T extends object,\n const Path extends FormPath,\n>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): ModernFieldState<FormValueAtPath<T, Path>> | undefined {\n const key = useMemo(() => getFieldKey(path), [path]);\n return useFormSelector(form, (state) => state.fields[key]) as\n | ModernFieldState<FormValueAtPath<T, Path>>\n | undefined;\n}\n\nexport interface FormSelectorOptions<Selected> {\n isEqual?: (previous: Selected, next: Selected) => boolean;\n}\n\nexport function useFormSelector<T extends object, Selected>(\n controller: FormController<T>,\n selector: (state: ModernFormState<T>) => Selected,\n options?: FormSelectorOptions<Selected>,\n): Selected {\n const { getServerSnapshot } = getControllerInternals(\n controller,\n 'Form.useSelector()',\n );\n return useSyncExternalStoreWithSelector(\n controller.subscribe,\n controller.getSnapshot,\n getServerSnapshot,\n selector,\n options?.isEqual,\n );\n}\n\nexport interface FormSubscribeProps<T extends object, Selected>\n extends FormSelectorOptions<Selected> {\n /** Omit to use modern context. An explicit undefined detaches from context. */\n form?: FormController<T>;\n selector: (state: ModernFormState<T>) => Selected;\n children: (selected: Selected) => ReactNode;\n}\n\nexport function FormSubscribe<\n T extends object = Record<string, unknown>,\n Selected = unknown,\n>(props: FormSubscribeProps<T, Selected>) {\n const fromContext = useContext(ModernControllerContext);\n const controller = Object.hasOwn(props, 'form') ? props.form : fromContext;\n if (!controller) {\n throw new Error(\n '<Form.Subscribe> requires a modern form prop or a modern <Form> root.',\n );\n }\n const selected = useFormSelector(controller, props.selector, {\n isEqual: props.isEqual,\n });\n return <>{props.children(selected)}</>;\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
|
|
2
2
|
import { FORM_BACKEND } from "../backend.js";
|
|
3
3
|
import { createValueSnapshotter, defineValue, formValueEqual, freezeContainer, getFieldKey, hasPath, isPlainObject, normalizePath, pathValueChanged, readPath, readonlySet, sameMembers, writePath } from "./values.js";
|
|
4
4
|
import { rulesSignature, runRules } from "./validation.js";
|
|
@@ -659,10 +659,13 @@ function createFormStore(inputOptions = {}) {
|
|
|
659
659
|
submission = void 0;
|
|
660
660
|
});
|
|
661
661
|
}
|
|
662
|
-
function bindCallbacks(callbacks) {
|
|
662
|
+
function bindCallbacks(callbacks, onSubmitted) {
|
|
663
663
|
assertLive();
|
|
664
664
|
if (binding) developmentError("A second Form root owns this controller; the newest callback binding wins.");
|
|
665
|
-
const own = {
|
|
665
|
+
const own = {
|
|
666
|
+
callbacks: { ...callbacks },
|
|
667
|
+
onSubmitted
|
|
668
|
+
};
|
|
666
669
|
binding = own;
|
|
667
670
|
let released = false;
|
|
668
671
|
return Object.freeze({
|
|
@@ -712,6 +715,7 @@ function createFormStore(inputOptions = {}) {
|
|
|
712
715
|
finish({ status: "stale" });
|
|
713
716
|
return;
|
|
714
717
|
}
|
|
718
|
+
const owner = binding;
|
|
715
719
|
const callbacks = resolveCallbacks();
|
|
716
720
|
let result;
|
|
717
721
|
if (!validation.isValid) {
|
|
@@ -761,6 +765,11 @@ function createFormStore(inputOptions = {}) {
|
|
|
761
765
|
if (!settled) {
|
|
762
766
|
token.complete(result.status === "failed" ? { error: result.error } : void 0);
|
|
763
767
|
finish(result);
|
|
768
|
+
if (result.status === "submitted" && binding === owner) try {
|
|
769
|
+
owner?.onSubmitted?.();
|
|
770
|
+
} catch (error) {
|
|
771
|
+
report(error);
|
|
772
|
+
}
|
|
764
773
|
}
|
|
765
774
|
};
|
|
766
775
|
run().catch((error) => {
|
|
@@ -825,6 +834,7 @@ function createFormStore(inputOptions = {}) {
|
|
|
825
834
|
validate,
|
|
826
835
|
submit,
|
|
827
836
|
bindCallbacks,
|
|
837
|
+
cancelSubmission,
|
|
828
838
|
updateCallbacks(callbacks) {
|
|
829
839
|
options.onSubmit = callbacks.onSubmit;
|
|
830
840
|
options.onSubmitFailed = callbacks.onSubmitFailed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","names":[],"sources":["../../../../../src/components/form/Form/modern/store.ts"],"sourcesContent":["import { FORM_BACKEND } from '../backend';\n\nimport { rulesSignature, runRules } from './validation';\nimport {\n createValueSnapshotter,\n defineValue,\n formValueEqual,\n freezeContainer,\n getFieldKey,\n hasPath,\n isPlainObject,\n normalizePath,\n pathValueChanged,\n readonlySet,\n readPath,\n sameMembers,\n writePath,\n} from './values';\n\nimport type { FormValues } from './read-types';\nimport type {\n CallbackBinding,\n FieldState,\n FormCallbacks,\n FormChange,\n FormState,\n FormStore,\n FormStoreOptions,\n ModernFieldValidationResult,\n ModernSubmitResult,\n ModernValidationResult,\n RegistrationOptions,\n RegistrationToken,\n SetValueOptions,\n SubmissionToken,\n ValidationToken,\n} from './types';\nimport type { FormPath } from './values';\n\ninterface PreparedRegistration<ErrorValue>\n extends Omit<RegistrationOptions<ErrorValue>, 'dependsOn'> {\n readonly dependsOn?: readonly (readonly string[])[];\n}\n\ninterface Registration<ErrorValue> {\n options: PreparedRegistration<ErrorValue>;\n signature: string;\n order: number;\n defaultConsidered: boolean;\n}\n\ninterface FieldRecord<ErrorValue> {\n name: string;\n path: readonly string[];\n /** Defaults create aggregate metadata; explicit commands/fields own guards. */\n explicit: boolean;\n registrations: Set<Registration<ErrorValue>>;\n owner?: Registration<ErrorValue>;\n fieldDefault?: { value: unknown };\n touched: boolean;\n errors: readonly ErrorValue[];\n status: FieldState['status'];\n validationRevision: number;\n validation?: AbortController;\n reads?: Map<string, readonly string[]>;\n readsAll?: boolean;\n}\n\nconst EMPTY_ERRORS = Object.freeze([]);\nconst EMPTY_OBJECT = Object.freeze({});\nconst EMPTY_FIELDS = Object.freeze(Object.create(null)) as Readonly<\n Record<string, never>\n>;\n\nfunction related(a: readonly string[], b: readonly string[]): boolean {\n return a\n .slice(0, Math.min(a.length, b.length))\n .every((key, index) => key === b[index]);\n}\n\nfunction sameDependencies(\n a: readonly unknown[] = [],\n b: readonly unknown[] = [],\n) {\n return (\n a.length === b.length &&\n a.every((value, index) => Object.is(value, b[index]))\n );\n}\n\nfunction samePaths(\n a: readonly (readonly string[])[] = [],\n b: readonly (readonly string[])[] = [],\n) {\n return (\n a.length === b.length &&\n a.every((path, index) => sameDependencies(path, b[index]))\n );\n}\n\ninterface ActivePath {\n terminal: boolean;\n children: Map<string, ActivePath>;\n}\n\n/** Only traverse path ancestors; a field's value (even cyclic data) is a leaf. */\nfunction projectActive(\n value: unknown,\n path: ActivePath,\n previous: unknown,\n): unknown {\n if (path.terminal) return value;\n const result: Record<string, unknown> | unknown[] = Array.isArray(value)\n ? []\n : {};\n if (isPlainObject(value) || Array.isArray(value)) {\n for (const [key, child] of path.children) {\n if (!Object.hasOwn(value, key)) continue;\n defineValue(\n result,\n key,\n projectActive(\n Reflect.get(value, key),\n child,\n readPath(previous, [key]),\n ),\n );\n }\n }\n return formValueEqual(result, previous) ? previous : freezeContainer(result);\n}\n\n/**\n * Framework-neutral store, registration ownership, and async pipelines.\n * Not exported from the package; React receives the public command facade.\n */\nexport function createFormStore<\n T extends object = Record<string, unknown>,\n ErrorValue = unknown,\n>(\n inputOptions: FormStoreOptions<T, ErrorValue> = {},\n): FormStore<T, ErrorValue> {\n const options = { ...inputOptions };\n const ownValue = createValueSnapshotter();\n const records = new Map<string, FieldRecord<ErrorValue>>();\n // Subscription identity belongs to the registration, not to the callback.\n const listeners = new Set<{ notify: () => void }>();\n let values: object = ownValue(options.defaultValues ?? {});\n let defaults = values;\n let submitError: unknown;\n let submission: AbortController | undefined;\n let binding: { callbacks: FormCallbacks<T, ErrorValue> } | undefined;\n let order = 0;\n let depth = 0;\n let notifying = false;\n let disposed = false;\n let pending = false;\n let changes: FormChange[] = [];\n const cancellations = new Set<AbortController>();\n\n let state: FormState<T, ErrorValue> = Object.freeze({\n values: values as FormValues<T>,\n defaultValues: defaults as FormValues<T>,\n activeValues: EMPTY_OBJECT as FormValues<T>,\n fields: EMPTY_FIELDS,\n dirtyFields: readonlySet<string>([]),\n touchedFields: readonlySet<string>([]),\n isDirty: false,\n isTouched: false,\n isValid: false,\n isInvalid: false,\n isValidating: false,\n isSubmitting: false,\n canReset: false,\n submitError: undefined,\n revision: 0,\n });\n\n function assertLive() {\n if (disposed) throw new Error('Cannot use a disposed modern form store.');\n }\n\n function report(error: unknown) {\n try {\n if (options.onListenerError) options.onListenerError(error);\n else console.error('[form-store] Listener failed', error);\n } catch (reportError) {\n // An error reporter must not break delivery to the remaining listeners.\n console.error('[form-store] Error reporter failed', reportError);\n }\n }\n\n function developmentError(message: string) {\n if (process.env.NODE_ENV === 'production') return;\n try {\n if (options.onDevelopmentError) options.onDevelopmentError(message);\n else console.error(`[form-store] ${message}`);\n } catch (error) {\n report(error);\n }\n }\n\n function ensure(path: FormPath, explicit = true): FieldRecord<ErrorValue> {\n const normalized = normalizePath(path);\n const name = getFieldKey(normalized);\n let record = records.get(name);\n if (!record) {\n record = {\n name,\n path: normalized,\n explicit,\n registrations: new Set(),\n touched: false,\n errors: EMPTY_ERRORS,\n status: 'unvalidated',\n validationRevision: 0,\n };\n records.set(name, record);\n }\n record.explicit ||= explicit;\n return record;\n }\n\n function dirty(record: FieldRecord<ErrorValue>): boolean {\n return (\n hasPath(values, record.path) &&\n !(record.owner?.options.isEqual ?? formValueEqual)(\n readPath(values, record.path),\n readPath(defaults, record.path),\n )\n );\n }\n\n function invalidate(record: FieldRecord<ErrorValue>, keepErrors = false) {\n const controller = record.validation;\n record.validation = undefined;\n record.reads = undefined;\n record.readsAll = false;\n record.validationRevision++;\n record.status = 'unvalidated';\n if (!keepErrors) record.errors = EMPTY_ERRORS;\n // Abort handlers are user code. Deliver them after the complete snapshot\n // publishes, so they cannot interleave writes with the command cancelling\n // them (or resurrect a token that command later overwrites).\n if (controller) cancellations.add(controller);\n }\n\n function cancelPending() {\n for (const controller of Array.from(cancellations)) {\n cancellations.delete(controller);\n controller.abort();\n }\n }\n\n function dependencyChanged(\n record: FieldRecord<ErrorValue>,\n previous: object,\n ) {\n return (\n record.owner?.options.dependsOn?.some((path) =>\n pathValueChanged(previous, values, path),\n ) ?? false\n );\n }\n\n function validationReadChanged(\n record: FieldRecord<ErrorValue>,\n previous: object,\n ) {\n if (!record.validation) return false;\n if (record.readsAll && previous !== values) return true;\n for (const path of record.reads?.values() ?? []) {\n if (pathValueChanged(previous, values, path)) return true;\n }\n return false;\n }\n\n function invalidateRelated(\n path: readonly string[],\n previous: object,\n config?: SetValueOptions,\n ) {\n for (const record of records.values()) {\n const dependency = dependencyChanged(record, previous);\n const fieldChanged =\n related(path, record.path) ||\n pathValueChanged(previous, values, record.path);\n if (\n fieldChanged ||\n dependency ||\n validationReadChanged(record, previous)\n ) {\n const revalidate =\n (fieldChanged || dependency) &&\n !!config &&\n !!record.registrations.size &&\n (config.validate === 'always' ||\n (config.validate !== 'never' &&\n (record.owner?.options.validateTrigger === 'onChange' ||\n !!record.errors.length ||\n (dependency && record.status !== 'unvalidated'))));\n invalidate(record, revalidate);\n if (revalidate) void validateRecord(record, false);\n }\n }\n }\n\n function activeValues(): object {\n const tree: ActivePath = { terminal: false, children: new Map() };\n // A registered parent includes its complete object, including inactive\n // descendants. Register only the leaves to submit only those leaves.\n for (const record of records.values()) {\n if (!record.registrations.size || !hasPath(values, record.path)) continue;\n let node = tree;\n for (const key of record.path) {\n let child = node.children.get(key);\n if (!child) {\n child = { terminal: false, children: new Map() };\n node.children.set(key, child);\n }\n node = child;\n }\n node.terminal = true;\n }\n return projectActive(values, tree, state.activeValues) as object;\n }\n\n function buildSnapshot(): FormState<T, ErrorValue> {\n const fields: Record<string, FieldState<ErrorValue>> = Object.create(null);\n const dirtyNames = new Set<string>();\n const touchedNames = new Set<string>();\n let activeCount = 0;\n let validCount = 0;\n let invalid = false;\n let validating = false;\n let resettable = submitError != null;\n for (const record of records.values()) {\n const field: FieldState<ErrorValue> = {\n name: record.name,\n value: readPath(values, record.path),\n defaultValue: readPath(defaults, record.path),\n errors: record.errors,\n status: record.status,\n touched: record.touched,\n dirty: dirty(record),\n active: record.registrations.size > 0,\n registrationCount: record.registrations.size,\n validationRevision: record.validationRevision,\n };\n const previous = state.fields[record.name];\n Object.defineProperty(fields, record.name, {\n value: formValueEqual(field, previous)\n ? previous\n : Object.freeze(field),\n enumerable: true,\n });\n if (field.dirty) dirtyNames.add(record.name);\n if (field.touched) touchedNames.add(record.name);\n resettable ||=\n field.dirty ||\n field.touched ||\n !!field.errors.length ||\n field.status !== 'unvalidated';\n if (field.active) {\n activeCount++;\n if (field.status === 'valid') validCount++;\n invalid ||= field.status === 'invalid';\n validating ||= field.status === 'validating';\n }\n }\n const next: FormState<T, ErrorValue> = {\n values: values as FormValues<T>,\n defaultValues: defaults as FormValues<T>,\n activeValues: activeValues() as FormValues<T>,\n fields: formValueEqual(fields, state.fields)\n ? state.fields\n : Object.freeze(fields),\n dirtyFields: sameMembers(dirtyNames, state.dirtyFields)\n ? state.dirtyFields\n : readonlySet(dirtyNames),\n touchedFields: sameMembers(touchedNames, state.touchedFields)\n ? state.touchedFields\n : readonlySet(touchedNames),\n isDirty: dirtyNames.size > 0,\n isTouched: touchedNames.size > 0,\n isValid: activeCount > 0 && validCount === activeCount,\n isInvalid: invalid,\n isValidating: validating,\n isSubmitting: !!submission,\n canReset: !submission && resettable,\n submitError,\n revision: state.revision,\n };\n if (formValueEqual(next, state)) return state;\n return Object.freeze({ ...next, revision: state.revision + 1 });\n }\n\n function flush() {\n if (depth || notifying || disposed) return;\n notifying = true;\n try {\n while ((pending || cancellations.size) && !disposed) {\n pending = false;\n const events = changes;\n changes = [];\n const previous = state;\n state = buildSnapshot();\n const published = state;\n if (state !== previous) {\n for (const listener of Array.from(listeners)) {\n if (!listeners.has(listener)) continue;\n try {\n listener.notify();\n } catch (error) {\n report(error);\n }\n }\n }\n if (events.length && !disposed && resolveCallbacks().onValuesChange) {\n // One callback per transaction; names are unioned, user source wins,\n // and the final command supplies the transaction's kind.\n const change: FormChange = Object.freeze({\n names: Object.freeze(\n Array.from(new Set(events.flatMap((event) => event.names))),\n ),\n source: events.some((event) => event.source === 'user')\n ? 'user'\n : 'program',\n kind: events[events.length - 1].kind,\n });\n try {\n const result = resolveCallbacks().onValuesChange?.(\n published.values,\n change,\n );\n if (result) Promise.resolve(result).catch(report);\n } catch (error) {\n report(error);\n }\n }\n cancelPending();\n }\n } finally {\n notifying = false;\n }\n }\n\n function batch(fn: () => void) {\n assertLive();\n depth++;\n try {\n fn();\n } finally {\n depth--;\n pending = true;\n flush();\n }\n }\n\n function event(\n names: string[],\n kind: FormChange['kind'],\n source: FormChange['source'] = 'program',\n ) {\n if (names.length) changes.push({ names, kind, source });\n }\n\n function write(\n path: FormPath,\n value: unknown,\n config: SetValueOptions = {},\n ): boolean {\n const normalized = normalizePath(path);\n const previous = values;\n const next = writePath(values, normalized, ownValue(value));\n const record = ensure(normalized);\n const changed = next !== values;\n if (changed) {\n values = next;\n invalidateRelated(record.path, previous, config);\n }\n if (config.touch ?? config.source === 'user') record.touched = true;\n if (changed && (config.notify ?? config.source === 'user')) {\n event([record.name], 'set', config.source);\n }\n return changed;\n }\n\n function setValue(path: FormPath, value: unknown, config?: SetValueOptions) {\n // Validate paths before entering a transaction (no partial invalid writes).\n const normalized = normalizePath(path);\n const prepared = { ...config };\n batch(() => {\n write(normalized, value, prepared);\n });\n }\n\n function setValues(next: Partial<T>, config?: SetValueOptions) {\n assertLive();\n const prepared = { ...config };\n const entries = Object.entries(next).map(\n ([name, value]) => [normalizePath(name), ownValue(value)] as const,\n );\n // Copying input or an invalid array-length write can throw. Check every\n // value/path before the first write, including when inside an outer batch.\n let checked = values;\n for (const [path, value] of entries)\n checked = writePath(checked, path, value);\n batch(() => {\n for (const [path, value] of entries) write(path, value, prepared);\n });\n }\n\n function prepareRegistration(\n path: FormPath,\n config: RegistrationOptions<ErrorValue>,\n ): PreparedRegistration<ErrorValue> {\n const prepared = {\n ...config,\n deps: config.deps ? Object.freeze([...config.deps]) : undefined,\n dependsOn: config.dependsOn?.map((dependency) =>\n Object.freeze(normalizePath(dependency)),\n ),\n rules: config.rules?.map((rule) =>\n Object.freeze({\n ...rule,\n ...(rule.enum ? { enum: Object.freeze([...rule.enum]) } : {}),\n }),\n ),\n };\n if (Object.hasOwn(prepared, 'defaultValue')) {\n prepared.defaultValue = ownValue(prepared.defaultValue);\n const normalized = normalizePath(path);\n if (!hasPath(values, normalized) && !hasPath(defaults, normalized)) {\n writePath(values, normalized, prepared.defaultValue);\n writePath(defaults, normalized, prepared.defaultValue);\n }\n }\n return prepared;\n }\n\n function seed(\n record: FieldRecord<ErrorValue>,\n registration: Registration<ErrorValue>,\n ) {\n if (\n registration.defaultConsidered ||\n !Object.hasOwn(registration.options, 'defaultValue')\n )\n return;\n registration.defaultConsidered = true;\n const value = ownValue(registration.options.defaultValue);\n if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) {\n const previous = values;\n values = writePath(values, record.path, value);\n defaults = writePath(defaults, record.path, value);\n record.fieldDefault = { value };\n invalidateRelated(record.path, previous);\n } else if (\n record.fieldDefault &&\n record.registrations.size > 1 &&\n !formValueEqual(record.fieldDefault.value, value)\n ) {\n developmentError(\n `Field \"${record.name}\" registered with conflicting defaultValue; the first default is kept.`,\n );\n }\n }\n\n function register(\n path: FormPath,\n config: RegistrationOptions<ErrorValue> = {},\n ): RegistrationToken<ErrorValue> {\n assertLive();\n const normalized = normalizePath(path);\n const prepared = prepareRegistration(normalized, config);\n const signature = rulesSignature(prepared.rules, {\n hashFunctions: prepared.rulesKey === undefined,\n });\n const record = ensure(normalized);\n const registration: Registration<ErrorValue> = {\n options: prepared,\n signature,\n order: ++order,\n defaultConsidered: false,\n };\n let released = false;\n batch(() => {\n record.registrations.add(registration);\n record.owner = registration;\n seed(record, registration);\n invalidate(record);\n });\n return Object.freeze({\n name: record.name,\n get released() {\n return released || disposed;\n },\n update(next: RegistrationOptions<ErrorValue>) {\n if (released || disposed) return;\n const prepared = prepareRegistration(record.path, next);\n const signature = rulesSignature(prepared.rules, {\n hashFunctions: prepared.rulesKey === undefined,\n });\n const validationChanged =\n registration.signature !== signature ||\n registration.options.rulesKey !== prepared.rulesKey ||\n !sameDependencies(registration.options.deps, prepared.deps) ||\n !samePaths(registration.options.dependsOn, prepared.dependsOn) ||\n registration.options.validationDelay !== prepared.validationDelay ||\n registration.options.validateTrigger !== prepared.validateTrigger ||\n registration.options.errorPolicy !== prepared.errorPolicy;\n const hasNewDefault =\n !registration.defaultConsidered &&\n Object.hasOwn(prepared, 'defaultValue');\n if (\n !hasNewDefault &&\n !validationChanged &&\n (registration.options.preserve ?? true) ===\n (prepared.preserve ?? true) &&\n registration.options.isEqual === prepared.isEqual\n ) {\n // Keep the latest closures/messages without invalidating equivalent rules.\n registration.options = prepared;\n return;\n }\n batch(() => {\n registration.options = prepared;\n registration.signature = signature;\n registration.order = ++order;\n // Only an ownership change invalidates; equivalent options pushed\n // after every React commit must not cause a publication loop.\n const revalidate =\n validationChanged && record.status !== 'unvalidated';\n if (record.owner !== registration || validationChanged)\n invalidate(record, revalidate);\n record.owner = registration;\n seed(record, registration);\n if (revalidate) void validateRecord(record, false);\n });\n },\n release(config: { deferValueRemoval?: boolean } = {}) {\n if (released || disposed) return;\n released = true;\n batch(() => {\n record.registrations.delete(registration);\n if (record.owner === registration) {\n record.owner = Array.from(record.registrations).sort(\n (a, b) => b.order - a.order,\n )[0];\n invalidate(record);\n }\n if (!record.registrations.size) {\n if (registration.options.preserve === false) {\n const removeValue = () => {\n const previous = values;\n values = writePath(values, record.path, undefined, true);\n record.touched = false;\n invalidateRelated(record.path, previous, { validate: 'auto' });\n if (!hasPath(defaults, record.path))\n records.delete(record.name);\n };\n if (config.deferValueRemoval) {\n // Unregister and abort immediately. Only destructive retention\n // cleanup waits one microtask, allowing Strict Mode's effect\n // replay to reconnect without losing the current value.\n const revision = record.validationRevision;\n queueMicrotask(() => {\n if (\n !disposed &&\n records.get(record.name) === record &&\n !record.registrations.size &&\n record.validationRevision === revision\n )\n batch(removeValue);\n });\n } else removeValue();\n }\n if (\n !hasPath(values, record.path) &&\n !hasPath(defaults, record.path)\n )\n records.delete(record.name);\n }\n });\n },\n });\n }\n\n function replaceDefaults(next: Partial<T>) {\n const entries = Object.keys(next);\n entries.forEach((name) => normalizePath(name));\n defaults = ownValue(next);\n for (const name of entries) ensure(name, false);\n for (const record of records.values()) record.fieldDefault = undefined;\n }\n\n function setDefaultValues(\n next: Partial<T>,\n config: { currentValues?: 'preserve' | 'replace' } = {},\n ) {\n const replace = config.currentValues === 'replace';\n batch(() => {\n replaceDefaults(next);\n if (replace) {\n values = defaults;\n for (const record of records.values()) {\n invalidate(record);\n record.touched = false;\n }\n event(Array.from(records.keys()), 'defaults');\n }\n });\n }\n\n function adoptDefaultValues(\n next: Partial<T>,\n config: {\n when?: 'untouched' | 'clean' | 'always';\n preserveDirty?: boolean;\n } = {},\n ) {\n const when = config.when ?? 'untouched';\n const preserveDirty = config.preserveDirty ?? false;\n batch(() => {\n // Retain edits at the narrowest guarded field path. This also protects a\n // nested edited leaf when the server replaces its containing object.\n const candidates = Array.from(records.values());\n const preserved = candidates\n .filter((record) => {\n // An implicitly tracked parent must not shield untouched siblings\n // when an explicit nested field is the actual edited control.\n if (\n !record.explicit &&\n candidates.some(\n (child) =>\n child.explicit &&\n child.path.length > record.path.length &&\n related(record.path, child.path),\n )\n )\n return false;\n return (\n (when === 'untouched' && record.touched) ||\n (when === 'clean' && dirty(record)) ||\n (preserveDirty && dirty(record))\n );\n })\n .map((record) => ({\n path: record.path,\n exists: hasPath(values, record.path),\n value: readPath(values, record.path),\n }));\n const previous = values;\n replaceDefaults(next);\n values = defaults;\n for (const saved of preserved.sort(\n (a, b) => a.path.length - b.path.length,\n )) {\n values = writePath(values, saved.path, saved.value, !saved.exists);\n }\n const names: string[] = [];\n for (const record of records.values()) {\n const changed = pathValueChanged(previous, values, record.path);\n if (\n changed ||\n dependencyChanged(record, previous) ||\n validationReadChanged(record, previous)\n )\n invalidate(record);\n if (changed) names.push(record.name);\n }\n event(names, 'adopt');\n });\n }\n\n function reset(config: { values?: Partial<T> } = {}) {\n batch(() => {\n if (Object.hasOwn(config, 'values')) replaceDefaults(config.values ?? {});\n values = defaults;\n const names = Array.from(records.keys());\n for (const record of records.values()) {\n invalidate(record);\n record.touched = false;\n if (!record.registrations.size && !hasPath(values, record.path))\n records.delete(record.name);\n }\n const previous = submission;\n submission = undefined;\n submitError = undefined;\n if (previous) cancellations.add(previous);\n event(names, 'reset');\n });\n }\n\n function setFieldErrors(path: FormPath, errors: readonly ErrorValue[]) {\n assertLive();\n const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;\n batch(() => {\n const record = ensure(path);\n const status = copied.length ? 'invalid' : 'valid';\n if (record.status === status && formValueEqual(record.errors, copied))\n return;\n invalidate(record);\n record.errors = copied;\n record.status = status;\n });\n }\n\n function startValidation(path: FormPath): ValidationToken<ErrorValue> {\n assertLive();\n const record = records.get(getFieldKey(path));\n if (!record?.registrations.size)\n throw new Error('Only active form fields can validate.');\n const controller = new AbortController();\n batch(() => {\n invalidate(record, true);\n record.validation = controller;\n record.status = 'validating';\n });\n const current = () =>\n !disposed &&\n record.validation === controller &&\n !controller.signal.aborted;\n return Object.freeze({\n signal: controller.signal,\n complete(errors: readonly ErrorValue[]) {\n if (!current()) return false;\n const copied = errors.length\n ? Object.freeze([...errors])\n : EMPTY_ERRORS;\n batch(() => {\n record.validation = undefined;\n record.reads = undefined;\n record.readsAll = false;\n record.errors = copied;\n record.status = copied.length ? 'invalid' : 'valid';\n });\n return true;\n },\n cancel() {\n if (current())\n batch(() => {\n invalidate(record, true);\n });\n },\n });\n }\n\n function startSubmission(): SubmissionToken | undefined {\n assertLive();\n if (submission) return undefined;\n const controller = new AbortController();\n batch(() => {\n submission = controller;\n submitError = undefined;\n });\n return Object.freeze({\n signal: controller.signal,\n complete(result?: { error: unknown }) {\n if (disposed || submission !== controller || controller.signal.aborted)\n return false;\n const error = result?.error;\n batch(() => {\n submission = undefined;\n submitError = error;\n });\n return true;\n },\n });\n }\n\n function validateRecord(\n record: FieldRecord<ErrorValue>,\n immediate: boolean,\n parentSignal?: AbortSignal,\n ): Promise<ModernFieldValidationResult<ErrorValue>> {\n const result = (errors: readonly ErrorValue[], stale = false) => ({\n name: record.name,\n errors,\n isValid: !stale && !errors.length,\n stale,\n });\n if (parentSignal?.aborted)\n return Promise.resolve(result(EMPTY_ERRORS, true));\n const config = record.owner?.options;\n const rules = config?.rules ?? [];\n const token = startValidation(record.path);\n const revision = record.validationRevision;\n if (token.signal.aborted || parentSignal?.aborted) {\n token.cancel();\n return Promise.resolve(result(EMPTY_ERRORS, true));\n }\n if (!rules.length) {\n record.reads = undefined;\n record.readsAll = false;\n const committed = token.complete(EMPTY_ERRORS);\n return Promise.resolve(\n result(\n EMPTY_ERRORS,\n !committed || record.validationRevision !== revision,\n ),\n );\n }\n const validationValues = values;\n const reads = new Map<string, readonly string[]>();\n record.reads = reads;\n record.readsAll = false;\n const value = readPath(validationValues, record.path);\n return new Promise((resolve) => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let settled = false;\n const finish = (errors: readonly ErrorValue[], stale: boolean) => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n token.signal.removeEventListener('abort', abort);\n parentSignal?.removeEventListener('abort', cancel);\n resolve(result(errors, stale));\n };\n const abort = () => finish(EMPTY_ERRORS, true);\n const cancel = () => token.cancel();\n token.signal.addEventListener('abort', abort, { once: true });\n parentSignal?.addEventListener('abort', cancel, { once: true });\n const run = async () => {\n timer = undefined;\n const errors = await runRules(\n value,\n rules,\n {\n name: record.name,\n signal: token.signal,\n getValue: (path) => {\n const normalized = normalizePath(path);\n if (!settled && !token.signal.aborted) {\n reads.set(getFieldKey(normalized), normalized);\n if (pathValueChanged(validationValues, values, normalized))\n token.cancel();\n }\n return readPath(validationValues, normalized);\n },\n getValues: () => {\n if (!settled && !token.signal.aborted) {\n record.readsAll = true;\n if (values !== validationValues) token.cancel();\n }\n return validationValues as FormValues<T>;\n },\n },\n config?.errorPolicy ?? options.errorPolicy ?? 'first',\n );\n if (!settled) {\n const committed = token.complete(errors);\n finish(\n Object.freeze(errors),\n !committed ||\n record.validationRevision !== revision ||\n !!parentSignal?.aborted,\n );\n }\n };\n const delay = immediate ? 0 : config?.validationDelay ?? 0;\n if (delay > 0) timer = setTimeout(() => void run(), delay);\n else void run();\n });\n }\n\n function validate(\n paths?: readonly FormPath[],\n config: { immediate?: boolean; signal?: AbortSignal } = {},\n ): Promise<ModernValidationResult<ErrorValue>> {\n assertLive();\n const targets = paths\n ? Array.from(new Set(paths.map(getFieldKey))).map((key) =>\n records.get(key),\n )\n : Array.from(records.values());\n const active = targets.filter(\n (record): record is FieldRecord<ErrorValue> =>\n !!record?.registrations.size,\n );\n let runs: Promise<ModernFieldValidationResult<ErrorValue>>[] = [];\n let revisions: number[] = [];\n batch(() => {\n runs = active.map((record) =>\n validateRecord(record, config.immediate ?? true, config.signal),\n );\n // Capture before publishing: a synchronous subscriber can edit/reset.\n revisions = active.map((record) => record.validationRevision);\n });\n return Promise.all(runs).then((results) => {\n const fields = results.map((result, index) => {\n const record = active[index];\n return record.validationRevision === revisions[index] &&\n !!record.registrations.size &&\n !config.signal?.aborted\n ? result\n : { ...result, stale: true, isValid: false };\n });\n return {\n fields,\n stale: fields.some((field) => field.stale) || !!config.signal?.aborted,\n isValid: !!fields.length && fields.every((field) => field.isValid),\n };\n });\n }\n\n function resolveCallbacks(): FormCallbacks<T, ErrorValue> {\n return { ...options, ...binding?.callbacks };\n }\n\n function cancelSubmission() {\n batch(() => {\n if (submission) cancellations.add(submission);\n submission = undefined;\n });\n }\n\n function bindCallbacks(\n callbacks: FormCallbacks<T, ErrorValue>,\n ): CallbackBinding<T, ErrorValue> {\n assertLive();\n if (binding)\n developmentError(\n 'A second Form root owns this controller; the newest callback binding wins.',\n );\n const own = { callbacks: { ...callbacks } };\n binding = own;\n let released = false;\n return Object.freeze({\n update(next: FormCallbacks<T, ErrorValue>) {\n if (!released && !disposed && binding === own)\n own.callbacks = { ...next };\n },\n release() {\n if (released || disposed) return;\n released = true;\n if (binding === own) {\n binding = undefined;\n cancelSubmission();\n }\n },\n });\n }\n\n async function submit(\n config: { include?: 'active' | 'all' } = {},\n ): Promise<ModernSubmitResult<ErrorValue>> {\n const token = startSubmission();\n if (!token) return { status: 'ignored', reason: 'submitting' };\n const include = config.include ?? 'active';\n // Cancellation settles promptly even if a validator or callback ignores its signal.\n return new Promise((resolve) => {\n let settled = false;\n const finish = (result: ModernSubmitResult<ErrorValue>) => {\n if (settled) return;\n settled = true;\n token.signal.removeEventListener('abort', abort);\n resolve(result);\n };\n const abort = () => finish({ status: 'stale' });\n token.signal.addEventListener('abort', abort, { once: true });\n if (token.signal.aborted) {\n abort();\n return;\n }\n const run = async () => {\n const pendingValidation = validate(undefined, { signal: token.signal });\n const validatedRecords = Array.from(records.values()).filter(\n (record) => record.registrations.size,\n );\n const revisions = validatedRecords.map(\n (record) => record.validationRevision,\n );\n const validation = await pendingValidation;\n if (settled) return;\n const changedSinceValidation =\n validatedRecords.length !== validation.fields.length ||\n validatedRecords.length !==\n Array.from(records.values()).filter(\n (record) => record.registrations.size,\n ).length ||\n validatedRecords.some(\n (record, index) =>\n !record.registrations.size ||\n record.validationRevision !== revisions[index],\n );\n if (validation.stale || changedSinceValidation) {\n token.complete();\n finish({ status: 'stale' });\n return;\n }\n const callbacks = resolveCallbacks();\n let result: ModernSubmitResult<ErrorValue>;\n if (!validation.isValid) {\n const errors = Object.fromEntries(\n validation.fields\n .filter((field) => !field.isValid)\n .map((field) => [field.name, field.errors]),\n );\n result = { status: 'invalid', errors: Object.freeze(errors) };\n try {\n await callbacks.onSubmitFailed?.({\n status: 'invalid',\n errors: Object.freeze(errors),\n });\n } catch (error) {\n report(error);\n }\n if (!settled) {\n token.complete();\n finish(result);\n }\n return;\n }\n try {\n await callbacks.onSubmit?.(\n (include === 'all' ? values : activeValues()) as FormValues<T>,\n { include, signal: token.signal },\n );\n result = { status: 'submitted' };\n } catch (error) {\n if (settled) return;\n // Keep the guard active while failure callbacks run.\n batch(() => {\n submitError = error;\n });\n try {\n await callbacks.onSubmitFailed?.({ status: 'failed', error });\n } catch (failure) {\n report(failure);\n }\n result = { status: 'failed', error };\n }\n if (!settled) {\n token.complete(\n result.status === 'failed' ? { error: result.error } : undefined,\n );\n finish(result);\n }\n };\n void run().catch((error) => {\n if (!settled) {\n token.complete({ error });\n finish({ status: 'failed', error });\n }\n });\n });\n }\n\n function subscribe(listener: () => void) {\n assertLive();\n const entry = { notify: listener };\n listeners.add(entry);\n return () => {\n listeners.delete(entry);\n };\n }\n\n function dispose() {\n if (disposed) return;\n disposed = true;\n listeners.clear();\n binding = undefined;\n changes = [];\n pending = false;\n for (const record of records.values()) {\n record.registrations.clear();\n record.owner = undefined;\n invalidate(record);\n }\n const previous = submission;\n submission = undefined;\n if (previous) cancellations.add(previous);\n state = buildSnapshot();\n records.clear();\n cancelPending();\n }\n\n for (const name of Object.keys(values)) ensure(name, false);\n state = buildSnapshot();\n\n return Object.freeze({\n [FORM_BACKEND]: 'modern' as const,\n getSnapshot: () => state,\n getFieldSnapshot: (path: FormPath) => state.fields[getFieldKey(path)],\n getValue: (path: FormPath) => readPath(values, normalizePath(path)),\n getValues: () => values as FormValues<T>,\n getActiveValues: () => activeValues() as FormValues<T>,\n subscribe,\n subscribeSelector<Selected>(\n selector: (snapshot: FormState<T, ErrorValue>) => Selected,\n listener: (value: Selected, previous: Selected) => void,\n isEqual: (a: Selected, b: Selected) => boolean = Object.is,\n ) {\n let selected = selector(state);\n return subscribe(() => {\n const next = selector(state);\n if (isEqual(selected, next)) return;\n const previous = selected;\n selected = next;\n listener(next, previous);\n });\n },\n register,\n validate,\n submit,\n bindCallbacks,\n updateCallbacks(callbacks: FormCallbacks<T, ErrorValue>) {\n options.onSubmit = callbacks.onSubmit;\n options.onSubmitFailed = callbacks.onSubmitFailed;\n options.onValuesChange = callbacks.onValuesChange;\n },\n blur(path: FormPath) {\n const record = records.get(getFieldKey(path));\n if (!record?.registrations.size) return;\n batch(() => {\n record.touched = true;\n if ((record.owner?.options.validateTrigger ?? 'onBlur') === 'onBlur')\n void validateRecord(record, false);\n });\n },\n setValue,\n setValues,\n batch,\n setDefaultValues,\n adoptDefaultValues,\n reset,\n touch(path: FormPath, touched = true) {\n batch(() => {\n ensure(path).touched = touched;\n });\n },\n setFieldErrors,\n clearFieldErrors: (path: FormPath) => setFieldErrors(path, EMPTY_ERRORS),\n startValidation,\n startSubmission,\n setSubmitError(error: unknown) {\n batch(() => {\n submitError = error;\n });\n },\n clearSubmitError() {\n batch(() => {\n submitError = undefined;\n });\n },\n dispose,\n debug: Object.freeze({\n listenerCount: () => listeners.size,\n registrationCount: () =>\n Array.from(records.values()).reduce(\n (count, record) => count + record.registrations.size,\n 0,\n ),\n }),\n }) as FormStore<T, ErrorValue>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","names":["FORM_BACKEND","rulesSignature","runRules","createValueSnapshotter","defineValue","formValueEqual","freezeContainer","getFieldKey","hasPath","isPlainObject","normalizePath","pathValueChanged","readonlySet","readPath","sameMembers","writePath","FormValues","CallbackBinding","FieldState","FormCallbacks","FormChange","FormState","FormStore","FormStoreOptions","ModernFieldValidationResult","ModernSubmitResult","ModernValidationResult","RegistrationOptions","RegistrationToken","SetValueOptions","SubmissionToken","ValidationToken","FormPath","PreparedRegistration","Omit","ErrorValue","dependsOn","Registration","options","signature","order","defaultConsidered","FieldRecord","name","path","explicit","registrations","Set","owner","fieldDefault","value","touched","errors","status","validationRevision","validation","AbortController","reads","Map","readsAll","EMPTY_ERRORS","Object","freeze","EMPTY_OBJECT","EMPTY_FIELDS","create","Readonly","Record","related","a","b","slice","Math","min","length","every","key","index","sameDependencies","is","samePaths","ActivePath","terminal","children","projectActive","previous","result","Array","isArray","child","hasOwn","Reflect","get","createFormStore","inputOptions","T","ownValue","records","listeners","notify","values","defaultValues","defaults","submitError","submission","binding","callbacks","onSubmitted","depth","notifying","disposed","pending","changes","cancellations","state","activeValues","fields","dirtyFields","touchedFields","isDirty","isTouched","isValid","isInvalid","isValidating","isSubmitting","canReset","undefined","revision","assertLive","Error","report","error","onListenerError","console","reportError","developmentError","message","process","env","NODE_ENV","onDevelopmentError","ensure","normalized","record","set","dirty","isEqual","invalidate","keepErrors","controller","add","cancelPending","from","delete","abort","dependencyChanged","some","validationReadChanged","invalidateRelated","config","dependency","fieldChanged","revalidate","size","validate","validateTrigger","validateRecord","tree","node","buildSnapshot","dirtyNames","touchedNames","activeCount","validCount","invalid","validating","resettable","field","defaultValue","active","registrationCount","defineProperty","enumerable","next","flush","events","published","listener","has","resolveCallbacks","onValuesChange","change","names","flatMap","event","source","kind","Promise","resolve","catch","batch","fn","push","write","changed","touch","setValue","prepared","setValues","Partial","entries","map","const","checked","prepareRegistration","deps","rules","rule","enum","seed","registration","register","hashFunctions","rulesKey","released","update","validationChanged","validationDelay","errorPolicy","hasNewDefault","preserve","release","deferValueRemoval","sort","removeValue","queueMicrotask","replaceDefaults","keys","forEach","setDefaultValues","currentValues","replace","adoptDefaultValues","when","preserveDirty","candidates","preserved","filter","exists","saved","reset","setFieldErrors","copied","startValidation","current","signal","aborted","complete","cancel","startSubmission","immediate","parentSignal","AbortSignal","stale","token","committed","validationValues","timer","ReturnType","setTimeout","settled","finish","clearTimeout","removeEventListener","addEventListener","once","run","getValue","getValues","delay","paths","targets","runs","revisions","all","then","results","cancelSubmission","bindCallbacks","own","submit","include","reason","pendingValidation","validatedRecords","changedSinceValidation","fromEntries","onSubmitFailed","onSubmit","failure","subscribe","entry","dispose","clear","getSnapshot","getFieldSnapshot","getActiveValues","subscribeSelector","selector","snapshot","Selected","selected","updateCallbacks","blur","clearFieldErrors","setSubmitError","clearSubmitError","debug","listenerCount","reduce","count"],"sources":["../../../../../src/components/form/Form/modern/store.ts"],"sourcesContent":["import { FORM_BACKEND } from '../backend';\n\nimport { rulesSignature, runRules } from './validation';\nimport {\n createValueSnapshotter,\n defineValue,\n formValueEqual,\n freezeContainer,\n getFieldKey,\n hasPath,\n isPlainObject,\n normalizePath,\n pathValueChanged,\n readonlySet,\n readPath,\n sameMembers,\n writePath,\n} from './values';\n\nimport type { FormValues } from './read-types';\nimport type {\n CallbackBinding,\n FieldState,\n FormCallbacks,\n FormChange,\n FormState,\n FormStore,\n FormStoreOptions,\n ModernFieldValidationResult,\n ModernSubmitResult,\n ModernValidationResult,\n RegistrationOptions,\n RegistrationToken,\n SetValueOptions,\n SubmissionToken,\n ValidationToken,\n} from './types';\nimport type { FormPath } from './values';\n\ninterface PreparedRegistration<ErrorValue>\n extends Omit<RegistrationOptions<ErrorValue>, 'dependsOn'> {\n readonly dependsOn?: readonly (readonly string[])[];\n}\n\ninterface Registration<ErrorValue> {\n options: PreparedRegistration<ErrorValue>;\n signature: string;\n order: number;\n defaultConsidered: boolean;\n}\n\ninterface FieldRecord<ErrorValue> {\n name: string;\n path: readonly string[];\n /** Defaults create aggregate metadata; explicit commands/fields own guards. */\n explicit: boolean;\n registrations: Set<Registration<ErrorValue>>;\n owner?: Registration<ErrorValue>;\n fieldDefault?: { value: unknown };\n touched: boolean;\n errors: readonly ErrorValue[];\n status: FieldState['status'];\n validationRevision: number;\n validation?: AbortController;\n reads?: Map<string, readonly string[]>;\n readsAll?: boolean;\n}\n\nconst EMPTY_ERRORS = Object.freeze([]);\nconst EMPTY_OBJECT = Object.freeze({});\nconst EMPTY_FIELDS = Object.freeze(Object.create(null)) as Readonly<\n Record<string, never>\n>;\n\nfunction related(a: readonly string[], b: readonly string[]): boolean {\n return a\n .slice(0, Math.min(a.length, b.length))\n .every((key, index) => key === b[index]);\n}\n\nfunction sameDependencies(\n a: readonly unknown[] = [],\n b: readonly unknown[] = [],\n) {\n return (\n a.length === b.length &&\n a.every((value, index) => Object.is(value, b[index]))\n );\n}\n\nfunction samePaths(\n a: readonly (readonly string[])[] = [],\n b: readonly (readonly string[])[] = [],\n) {\n return (\n a.length === b.length &&\n a.every((path, index) => sameDependencies(path, b[index]))\n );\n}\n\ninterface ActivePath {\n terminal: boolean;\n children: Map<string, ActivePath>;\n}\n\n/** Only traverse path ancestors; a field's value (even cyclic data) is a leaf. */\nfunction projectActive(\n value: unknown,\n path: ActivePath,\n previous: unknown,\n): unknown {\n if (path.terminal) return value;\n const result: Record<string, unknown> | unknown[] = Array.isArray(value)\n ? []\n : {};\n if (isPlainObject(value) || Array.isArray(value)) {\n for (const [key, child] of path.children) {\n if (!Object.hasOwn(value, key)) continue;\n defineValue(\n result,\n key,\n projectActive(\n Reflect.get(value, key),\n child,\n readPath(previous, [key]),\n ),\n );\n }\n }\n return formValueEqual(result, previous) ? previous : freezeContainer(result);\n}\n\n/**\n * Framework-neutral store, registration ownership, and async pipelines.\n * Not exported from the package; React receives the public command facade.\n */\nexport function createFormStore<\n T extends object = Record<string, unknown>,\n ErrorValue = unknown,\n>(\n inputOptions: FormStoreOptions<T, ErrorValue> = {},\n): FormStore<T, ErrorValue> {\n const options = { ...inputOptions };\n const ownValue = createValueSnapshotter();\n const records = new Map<string, FieldRecord<ErrorValue>>();\n // Subscription identity belongs to the registration, not to the callback.\n const listeners = new Set<{ notify: () => void }>();\n let values: object = ownValue(options.defaultValues ?? {});\n let defaults = values;\n let submitError: unknown;\n let submission: AbortController | undefined;\n let binding:\n | { callbacks: FormCallbacks<T, ErrorValue>; onSubmitted?: () => void }\n | undefined;\n let order = 0;\n let depth = 0;\n let notifying = false;\n let disposed = false;\n let pending = false;\n let changes: FormChange[] = [];\n const cancellations = new Set<AbortController>();\n\n let state: FormState<T, ErrorValue> = Object.freeze({\n values: values as FormValues<T>,\n defaultValues: defaults as FormValues<T>,\n activeValues: EMPTY_OBJECT as FormValues<T>,\n fields: EMPTY_FIELDS,\n dirtyFields: readonlySet<string>([]),\n touchedFields: readonlySet<string>([]),\n isDirty: false,\n isTouched: false,\n isValid: false,\n isInvalid: false,\n isValidating: false,\n isSubmitting: false,\n canReset: false,\n submitError: undefined,\n revision: 0,\n });\n\n function assertLive() {\n if (disposed) throw new Error('Cannot use a disposed modern form store.');\n }\n\n function report(error: unknown) {\n try {\n if (options.onListenerError) options.onListenerError(error);\n else console.error('[form-store] Listener failed', error);\n } catch (reportError) {\n // An error reporter must not break delivery to the remaining listeners.\n console.error('[form-store] Error reporter failed', reportError);\n }\n }\n\n function developmentError(message: string) {\n if (process.env.NODE_ENV === 'production') return;\n try {\n if (options.onDevelopmentError) options.onDevelopmentError(message);\n else console.error(`[form-store] ${message}`);\n } catch (error) {\n report(error);\n }\n }\n\n function ensure(path: FormPath, explicit = true): FieldRecord<ErrorValue> {\n const normalized = normalizePath(path);\n const name = getFieldKey(normalized);\n let record = records.get(name);\n if (!record) {\n record = {\n name,\n path: normalized,\n explicit,\n registrations: new Set(),\n touched: false,\n errors: EMPTY_ERRORS,\n status: 'unvalidated',\n validationRevision: 0,\n };\n records.set(name, record);\n }\n record.explicit ||= explicit;\n return record;\n }\n\n function dirty(record: FieldRecord<ErrorValue>): boolean {\n return (\n hasPath(values, record.path) &&\n !(record.owner?.options.isEqual ?? formValueEqual)(\n readPath(values, record.path),\n readPath(defaults, record.path),\n )\n );\n }\n\n function invalidate(record: FieldRecord<ErrorValue>, keepErrors = false) {\n const controller = record.validation;\n record.validation = undefined;\n record.reads = undefined;\n record.readsAll = false;\n record.validationRevision++;\n record.status = 'unvalidated';\n if (!keepErrors) record.errors = EMPTY_ERRORS;\n // Abort handlers are user code. Deliver them after the complete snapshot\n // publishes, so they cannot interleave writes with the command cancelling\n // them (or resurrect a token that command later overwrites).\n if (controller) cancellations.add(controller);\n }\n\n function cancelPending() {\n for (const controller of Array.from(cancellations)) {\n cancellations.delete(controller);\n controller.abort();\n }\n }\n\n function dependencyChanged(\n record: FieldRecord<ErrorValue>,\n previous: object,\n ) {\n return (\n record.owner?.options.dependsOn?.some((path) =>\n pathValueChanged(previous, values, path),\n ) ?? false\n );\n }\n\n function validationReadChanged(\n record: FieldRecord<ErrorValue>,\n previous: object,\n ) {\n if (!record.validation) return false;\n if (record.readsAll && previous !== values) return true;\n for (const path of record.reads?.values() ?? []) {\n if (pathValueChanged(previous, values, path)) return true;\n }\n return false;\n }\n\n function invalidateRelated(\n path: readonly string[],\n previous: object,\n config?: SetValueOptions,\n ) {\n for (const record of records.values()) {\n const dependency = dependencyChanged(record, previous);\n const fieldChanged =\n related(path, record.path) ||\n pathValueChanged(previous, values, record.path);\n if (\n fieldChanged ||\n dependency ||\n validationReadChanged(record, previous)\n ) {\n const revalidate =\n (fieldChanged || dependency) &&\n !!config &&\n !!record.registrations.size &&\n (config.validate === 'always' ||\n (config.validate !== 'never' &&\n (record.owner?.options.validateTrigger === 'onChange' ||\n !!record.errors.length ||\n (dependency && record.status !== 'unvalidated'))));\n invalidate(record, revalidate);\n if (revalidate) void validateRecord(record, false);\n }\n }\n }\n\n function activeValues(): object {\n const tree: ActivePath = { terminal: false, children: new Map() };\n // A registered parent includes its complete object, including inactive\n // descendants. Register only the leaves to submit only those leaves.\n for (const record of records.values()) {\n if (!record.registrations.size || !hasPath(values, record.path)) continue;\n let node = tree;\n for (const key of record.path) {\n let child = node.children.get(key);\n if (!child) {\n child = { terminal: false, children: new Map() };\n node.children.set(key, child);\n }\n node = child;\n }\n node.terminal = true;\n }\n return projectActive(values, tree, state.activeValues) as object;\n }\n\n function buildSnapshot(): FormState<T, ErrorValue> {\n const fields: Record<string, FieldState<ErrorValue>> = Object.create(null);\n const dirtyNames = new Set<string>();\n const touchedNames = new Set<string>();\n let activeCount = 0;\n let validCount = 0;\n let invalid = false;\n let validating = false;\n let resettable = submitError != null;\n for (const record of records.values()) {\n const field: FieldState<ErrorValue> = {\n name: record.name,\n value: readPath(values, record.path),\n defaultValue: readPath(defaults, record.path),\n errors: record.errors,\n status: record.status,\n touched: record.touched,\n dirty: dirty(record),\n active: record.registrations.size > 0,\n registrationCount: record.registrations.size,\n validationRevision: record.validationRevision,\n };\n const previous = state.fields[record.name];\n Object.defineProperty(fields, record.name, {\n value: formValueEqual(field, previous)\n ? previous\n : Object.freeze(field),\n enumerable: true,\n });\n if (field.dirty) dirtyNames.add(record.name);\n if (field.touched) touchedNames.add(record.name);\n resettable ||=\n field.dirty ||\n field.touched ||\n !!field.errors.length ||\n field.status !== 'unvalidated';\n if (field.active) {\n activeCount++;\n if (field.status === 'valid') validCount++;\n invalid ||= field.status === 'invalid';\n validating ||= field.status === 'validating';\n }\n }\n const next: FormState<T, ErrorValue> = {\n values: values as FormValues<T>,\n defaultValues: defaults as FormValues<T>,\n activeValues: activeValues() as FormValues<T>,\n fields: formValueEqual(fields, state.fields)\n ? state.fields\n : Object.freeze(fields),\n dirtyFields: sameMembers(dirtyNames, state.dirtyFields)\n ? state.dirtyFields\n : readonlySet(dirtyNames),\n touchedFields: sameMembers(touchedNames, state.touchedFields)\n ? state.touchedFields\n : readonlySet(touchedNames),\n isDirty: dirtyNames.size > 0,\n isTouched: touchedNames.size > 0,\n isValid: activeCount > 0 && validCount === activeCount,\n isInvalid: invalid,\n isValidating: validating,\n isSubmitting: !!submission,\n canReset: !submission && resettable,\n submitError,\n revision: state.revision,\n };\n if (formValueEqual(next, state)) return state;\n return Object.freeze({ ...next, revision: state.revision + 1 });\n }\n\n function flush() {\n if (depth || notifying || disposed) return;\n notifying = true;\n try {\n while ((pending || cancellations.size) && !disposed) {\n pending = false;\n const events = changes;\n changes = [];\n const previous = state;\n state = buildSnapshot();\n const published = state;\n if (state !== previous) {\n for (const listener of Array.from(listeners)) {\n if (!listeners.has(listener)) continue;\n try {\n listener.notify();\n } catch (error) {\n report(error);\n }\n }\n }\n if (events.length && !disposed && resolveCallbacks().onValuesChange) {\n // One callback per transaction; names are unioned, user source wins,\n // and the final command supplies the transaction's kind.\n const change: FormChange = Object.freeze({\n names: Object.freeze(\n Array.from(new Set(events.flatMap((event) => event.names))),\n ),\n source: events.some((event) => event.source === 'user')\n ? 'user'\n : 'program',\n kind: events[events.length - 1].kind,\n });\n try {\n const result = resolveCallbacks().onValuesChange?.(\n published.values,\n change,\n );\n if (result) Promise.resolve(result).catch(report);\n } catch (error) {\n report(error);\n }\n }\n cancelPending();\n }\n } finally {\n notifying = false;\n }\n }\n\n function batch(fn: () => void) {\n assertLive();\n depth++;\n try {\n fn();\n } finally {\n depth--;\n pending = true;\n flush();\n }\n }\n\n function event(\n names: string[],\n kind: FormChange['kind'],\n source: FormChange['source'] = 'program',\n ) {\n if (names.length) changes.push({ names, kind, source });\n }\n\n function write(\n path: FormPath,\n value: unknown,\n config: SetValueOptions = {},\n ): boolean {\n const normalized = normalizePath(path);\n const previous = values;\n const next = writePath(values, normalized, ownValue(value));\n const record = ensure(normalized);\n const changed = next !== values;\n if (changed) {\n values = next;\n invalidateRelated(record.path, previous, config);\n }\n if (config.touch ?? config.source === 'user') record.touched = true;\n if (changed && (config.notify ?? config.source === 'user')) {\n event([record.name], 'set', config.source);\n }\n return changed;\n }\n\n function setValue(path: FormPath, value: unknown, config?: SetValueOptions) {\n // Validate paths before entering a transaction (no partial invalid writes).\n const normalized = normalizePath(path);\n const prepared = { ...config };\n batch(() => {\n write(normalized, value, prepared);\n });\n }\n\n function setValues(next: Partial<T>, config?: SetValueOptions) {\n assertLive();\n const prepared = { ...config };\n const entries = Object.entries(next).map(\n ([name, value]) => [normalizePath(name), ownValue(value)] as const,\n );\n // Copying input or an invalid array-length write can throw. Check every\n // value/path before the first write, including when inside an outer batch.\n let checked = values;\n for (const [path, value] of entries)\n checked = writePath(checked, path, value);\n batch(() => {\n for (const [path, value] of entries) write(path, value, prepared);\n });\n }\n\n function prepareRegistration(\n path: FormPath,\n config: RegistrationOptions<ErrorValue>,\n ): PreparedRegistration<ErrorValue> {\n const prepared = {\n ...config,\n deps: config.deps ? Object.freeze([...config.deps]) : undefined,\n dependsOn: config.dependsOn?.map((dependency) =>\n Object.freeze(normalizePath(dependency)),\n ),\n rules: config.rules?.map((rule) =>\n Object.freeze({\n ...rule,\n ...(rule.enum ? { enum: Object.freeze([...rule.enum]) } : {}),\n }),\n ),\n };\n if (Object.hasOwn(prepared, 'defaultValue')) {\n prepared.defaultValue = ownValue(prepared.defaultValue);\n const normalized = normalizePath(path);\n if (!hasPath(values, normalized) && !hasPath(defaults, normalized)) {\n writePath(values, normalized, prepared.defaultValue);\n writePath(defaults, normalized, prepared.defaultValue);\n }\n }\n return prepared;\n }\n\n function seed(\n record: FieldRecord<ErrorValue>,\n registration: Registration<ErrorValue>,\n ) {\n if (\n registration.defaultConsidered ||\n !Object.hasOwn(registration.options, 'defaultValue')\n )\n return;\n registration.defaultConsidered = true;\n const value = ownValue(registration.options.defaultValue);\n if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) {\n const previous = values;\n values = writePath(values, record.path, value);\n defaults = writePath(defaults, record.path, value);\n record.fieldDefault = { value };\n invalidateRelated(record.path, previous);\n } else if (\n record.fieldDefault &&\n record.registrations.size > 1 &&\n !formValueEqual(record.fieldDefault.value, value)\n ) {\n developmentError(\n `Field \"${record.name}\" registered with conflicting defaultValue; the first default is kept.`,\n );\n }\n }\n\n function register(\n path: FormPath,\n config: RegistrationOptions<ErrorValue> = {},\n ): RegistrationToken<ErrorValue> {\n assertLive();\n const normalized = normalizePath(path);\n const prepared = prepareRegistration(normalized, config);\n const signature = rulesSignature(prepared.rules, {\n hashFunctions: prepared.rulesKey === undefined,\n });\n const record = ensure(normalized);\n const registration: Registration<ErrorValue> = {\n options: prepared,\n signature,\n order: ++order,\n defaultConsidered: false,\n };\n let released = false;\n batch(() => {\n record.registrations.add(registration);\n record.owner = registration;\n seed(record, registration);\n invalidate(record);\n });\n return Object.freeze({\n name: record.name,\n get released() {\n return released || disposed;\n },\n update(next: RegistrationOptions<ErrorValue>) {\n if (released || disposed) return;\n const prepared = prepareRegistration(record.path, next);\n const signature = rulesSignature(prepared.rules, {\n hashFunctions: prepared.rulesKey === undefined,\n });\n const validationChanged =\n registration.signature !== signature ||\n registration.options.rulesKey !== prepared.rulesKey ||\n !sameDependencies(registration.options.deps, prepared.deps) ||\n !samePaths(registration.options.dependsOn, prepared.dependsOn) ||\n registration.options.validationDelay !== prepared.validationDelay ||\n registration.options.validateTrigger !== prepared.validateTrigger ||\n registration.options.errorPolicy !== prepared.errorPolicy;\n const hasNewDefault =\n !registration.defaultConsidered &&\n Object.hasOwn(prepared, 'defaultValue');\n if (\n !hasNewDefault &&\n !validationChanged &&\n (registration.options.preserve ?? true) ===\n (prepared.preserve ?? true) &&\n registration.options.isEqual === prepared.isEqual\n ) {\n // Keep the latest closures/messages without invalidating equivalent rules.\n registration.options = prepared;\n return;\n }\n batch(() => {\n registration.options = prepared;\n registration.signature = signature;\n registration.order = ++order;\n // Only an ownership change invalidates; equivalent options pushed\n // after every React commit must not cause a publication loop.\n const revalidate =\n validationChanged && record.status !== 'unvalidated';\n if (record.owner !== registration || validationChanged)\n invalidate(record, revalidate);\n record.owner = registration;\n seed(record, registration);\n if (revalidate) void validateRecord(record, false);\n });\n },\n release(config: { deferValueRemoval?: boolean } = {}) {\n if (released || disposed) return;\n released = true;\n batch(() => {\n record.registrations.delete(registration);\n if (record.owner === registration) {\n record.owner = Array.from(record.registrations).sort(\n (a, b) => b.order - a.order,\n )[0];\n invalidate(record);\n }\n if (!record.registrations.size) {\n if (registration.options.preserve === false) {\n const removeValue = () => {\n const previous = values;\n values = writePath(values, record.path, undefined, true);\n record.touched = false;\n invalidateRelated(record.path, previous, { validate: 'auto' });\n if (!hasPath(defaults, record.path))\n records.delete(record.name);\n };\n if (config.deferValueRemoval) {\n // Unregister and abort immediately. Only destructive retention\n // cleanup waits one microtask, allowing Strict Mode's effect\n // replay to reconnect without losing the current value.\n const revision = record.validationRevision;\n queueMicrotask(() => {\n if (\n !disposed &&\n records.get(record.name) === record &&\n !record.registrations.size &&\n record.validationRevision === revision\n )\n batch(removeValue);\n });\n } else removeValue();\n }\n if (\n !hasPath(values, record.path) &&\n !hasPath(defaults, record.path)\n )\n records.delete(record.name);\n }\n });\n },\n });\n }\n\n function replaceDefaults(next: Partial<T>) {\n const entries = Object.keys(next);\n entries.forEach((name) => normalizePath(name));\n defaults = ownValue(next);\n for (const name of entries) ensure(name, false);\n for (const record of records.values()) record.fieldDefault = undefined;\n }\n\n function setDefaultValues(\n next: Partial<T>,\n config: { currentValues?: 'preserve' | 'replace' } = {},\n ) {\n const replace = config.currentValues === 'replace';\n batch(() => {\n replaceDefaults(next);\n if (replace) {\n values = defaults;\n for (const record of records.values()) {\n invalidate(record);\n record.touched = false;\n }\n event(Array.from(records.keys()), 'defaults');\n }\n });\n }\n\n function adoptDefaultValues(\n next: Partial<T>,\n config: {\n when?: 'untouched' | 'clean' | 'always';\n preserveDirty?: boolean;\n } = {},\n ) {\n const when = config.when ?? 'untouched';\n const preserveDirty = config.preserveDirty ?? false;\n batch(() => {\n // Retain edits at the narrowest guarded field path. This also protects a\n // nested edited leaf when the server replaces its containing object.\n const candidates = Array.from(records.values());\n const preserved = candidates\n .filter((record) => {\n // An implicitly tracked parent must not shield untouched siblings\n // when an explicit nested field is the actual edited control.\n if (\n !record.explicit &&\n candidates.some(\n (child) =>\n child.explicit &&\n child.path.length > record.path.length &&\n related(record.path, child.path),\n )\n )\n return false;\n return (\n (when === 'untouched' && record.touched) ||\n (when === 'clean' && dirty(record)) ||\n (preserveDirty && dirty(record))\n );\n })\n .map((record) => ({\n path: record.path,\n exists: hasPath(values, record.path),\n value: readPath(values, record.path),\n }));\n const previous = values;\n replaceDefaults(next);\n values = defaults;\n for (const saved of preserved.sort(\n (a, b) => a.path.length - b.path.length,\n )) {\n values = writePath(values, saved.path, saved.value, !saved.exists);\n }\n const names: string[] = [];\n for (const record of records.values()) {\n const changed = pathValueChanged(previous, values, record.path);\n if (\n changed ||\n dependencyChanged(record, previous) ||\n validationReadChanged(record, previous)\n )\n invalidate(record);\n if (changed) names.push(record.name);\n }\n event(names, 'adopt');\n });\n }\n\n function reset(config: { values?: Partial<T> } = {}) {\n batch(() => {\n if (Object.hasOwn(config, 'values')) replaceDefaults(config.values ?? {});\n values = defaults;\n const names = Array.from(records.keys());\n for (const record of records.values()) {\n invalidate(record);\n record.touched = false;\n if (!record.registrations.size && !hasPath(values, record.path))\n records.delete(record.name);\n }\n const previous = submission;\n submission = undefined;\n submitError = undefined;\n if (previous) cancellations.add(previous);\n event(names, 'reset');\n });\n }\n\n function setFieldErrors(path: FormPath, errors: readonly ErrorValue[]) {\n assertLive();\n const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;\n batch(() => {\n const record = ensure(path);\n const status = copied.length ? 'invalid' : 'valid';\n if (record.status === status && formValueEqual(record.errors, copied))\n return;\n invalidate(record);\n record.errors = copied;\n record.status = status;\n });\n }\n\n function startValidation(path: FormPath): ValidationToken<ErrorValue> {\n assertLive();\n const record = records.get(getFieldKey(path));\n if (!record?.registrations.size)\n throw new Error('Only active form fields can validate.');\n const controller = new AbortController();\n batch(() => {\n invalidate(record, true);\n record.validation = controller;\n record.status = 'validating';\n });\n const current = () =>\n !disposed &&\n record.validation === controller &&\n !controller.signal.aborted;\n return Object.freeze({\n signal: controller.signal,\n complete(errors: readonly ErrorValue[]) {\n if (!current()) return false;\n const copied = errors.length\n ? Object.freeze([...errors])\n : EMPTY_ERRORS;\n batch(() => {\n record.validation = undefined;\n record.reads = undefined;\n record.readsAll = false;\n record.errors = copied;\n record.status = copied.length ? 'invalid' : 'valid';\n });\n return true;\n },\n cancel() {\n if (current())\n batch(() => {\n invalidate(record, true);\n });\n },\n });\n }\n\n function startSubmission(): SubmissionToken | undefined {\n assertLive();\n if (submission) return undefined;\n const controller = new AbortController();\n batch(() => {\n submission = controller;\n submitError = undefined;\n });\n return Object.freeze({\n signal: controller.signal,\n complete(result?: { error: unknown }) {\n if (disposed || submission !== controller || controller.signal.aborted)\n return false;\n const error = result?.error;\n batch(() => {\n submission = undefined;\n submitError = error;\n });\n return true;\n },\n });\n }\n\n function validateRecord(\n record: FieldRecord<ErrorValue>,\n immediate: boolean,\n parentSignal?: AbortSignal,\n ): Promise<ModernFieldValidationResult<ErrorValue>> {\n const result = (errors: readonly ErrorValue[], stale = false) => ({\n name: record.name,\n errors,\n isValid: !stale && !errors.length,\n stale,\n });\n if (parentSignal?.aborted)\n return Promise.resolve(result(EMPTY_ERRORS, true));\n const config = record.owner?.options;\n const rules = config?.rules ?? [];\n const token = startValidation(record.path);\n const revision = record.validationRevision;\n if (token.signal.aborted || parentSignal?.aborted) {\n token.cancel();\n return Promise.resolve(result(EMPTY_ERRORS, true));\n }\n if (!rules.length) {\n record.reads = undefined;\n record.readsAll = false;\n const committed = token.complete(EMPTY_ERRORS);\n return Promise.resolve(\n result(\n EMPTY_ERRORS,\n !committed || record.validationRevision !== revision,\n ),\n );\n }\n const validationValues = values;\n const reads = new Map<string, readonly string[]>();\n record.reads = reads;\n record.readsAll = false;\n const value = readPath(validationValues, record.path);\n return new Promise((resolve) => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n let settled = false;\n const finish = (errors: readonly ErrorValue[], stale: boolean) => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n token.signal.removeEventListener('abort', abort);\n parentSignal?.removeEventListener('abort', cancel);\n resolve(result(errors, stale));\n };\n const abort = () => finish(EMPTY_ERRORS, true);\n const cancel = () => token.cancel();\n token.signal.addEventListener('abort', abort, { once: true });\n parentSignal?.addEventListener('abort', cancel, { once: true });\n const run = async () => {\n timer = undefined;\n const errors = await runRules(\n value,\n rules,\n {\n name: record.name,\n signal: token.signal,\n getValue: (path) => {\n const normalized = normalizePath(path);\n if (!settled && !token.signal.aborted) {\n reads.set(getFieldKey(normalized), normalized);\n if (pathValueChanged(validationValues, values, normalized))\n token.cancel();\n }\n return readPath(validationValues, normalized);\n },\n getValues: () => {\n if (!settled && !token.signal.aborted) {\n record.readsAll = true;\n if (values !== validationValues) token.cancel();\n }\n return validationValues as FormValues<T>;\n },\n },\n config?.errorPolicy ?? options.errorPolicy ?? 'first',\n );\n if (!settled) {\n const committed = token.complete(errors);\n finish(\n Object.freeze(errors),\n !committed ||\n record.validationRevision !== revision ||\n !!parentSignal?.aborted,\n );\n }\n };\n const delay = immediate ? 0 : config?.validationDelay ?? 0;\n if (delay > 0) timer = setTimeout(() => void run(), delay);\n else void run();\n });\n }\n\n function validate(\n paths?: readonly FormPath[],\n config: { immediate?: boolean; signal?: AbortSignal } = {},\n ): Promise<ModernValidationResult<ErrorValue>> {\n assertLive();\n const targets = paths\n ? Array.from(new Set(paths.map(getFieldKey))).map((key) =>\n records.get(key),\n )\n : Array.from(records.values());\n const active = targets.filter(\n (record): record is FieldRecord<ErrorValue> =>\n !!record?.registrations.size,\n );\n let runs: Promise<ModernFieldValidationResult<ErrorValue>>[] = [];\n let revisions: number[] = [];\n batch(() => {\n runs = active.map((record) =>\n validateRecord(record, config.immediate ?? true, config.signal),\n );\n // Capture before publishing: a synchronous subscriber can edit/reset.\n revisions = active.map((record) => record.validationRevision);\n });\n return Promise.all(runs).then((results) => {\n const fields = results.map((result, index) => {\n const record = active[index];\n return record.validationRevision === revisions[index] &&\n !!record.registrations.size &&\n !config.signal?.aborted\n ? result\n : { ...result, stale: true, isValid: false };\n });\n return {\n fields,\n stale: fields.some((field) => field.stale) || !!config.signal?.aborted,\n isValid: !!fields.length && fields.every((field) => field.isValid),\n };\n });\n }\n\n function resolveCallbacks(): FormCallbacks<T, ErrorValue> {\n return { ...options, ...binding?.callbacks };\n }\n\n function cancelSubmission() {\n batch(() => {\n if (submission) cancellations.add(submission);\n submission = undefined;\n });\n }\n\n function bindCallbacks(\n callbacks: FormCallbacks<T, ErrorValue>,\n onSubmitted?: () => void,\n ): CallbackBinding<T, ErrorValue> {\n assertLive();\n if (binding)\n developmentError(\n 'A second Form root owns this controller; the newest callback binding wins.',\n );\n const own = { callbacks: { ...callbacks }, onSubmitted };\n binding = own;\n let released = false;\n return Object.freeze({\n update(next: FormCallbacks<T, ErrorValue>) {\n if (!released && !disposed && binding === own)\n own.callbacks = { ...next };\n },\n release() {\n if (released || disposed) return;\n released = true;\n if (binding === own) {\n binding = undefined;\n cancelSubmission();\n }\n },\n });\n }\n\n async function submit(\n config: { include?: 'active' | 'all' } = {},\n ): Promise<ModernSubmitResult<ErrorValue>> {\n const token = startSubmission();\n if (!token) return { status: 'ignored', reason: 'submitting' };\n const include = config.include ?? 'active';\n // Cancellation settles promptly even if a validator or callback ignores its signal.\n return new Promise((resolve) => {\n let settled = false;\n const finish = (result: ModernSubmitResult<ErrorValue>) => {\n if (settled) return;\n settled = true;\n token.signal.removeEventListener('abort', abort);\n resolve(result);\n };\n const abort = () => finish({ status: 'stale' });\n token.signal.addEventListener('abort', abort, { once: true });\n if (token.signal.aborted) {\n abort();\n return;\n }\n const run = async () => {\n const pendingValidation = validate(undefined, { signal: token.signal });\n const validatedRecords = Array.from(records.values()).filter(\n (record) => record.registrations.size,\n );\n const revisions = validatedRecords.map(\n (record) => record.validationRevision,\n );\n const validation = await pendingValidation;\n if (settled) return;\n const changedSinceValidation =\n validatedRecords.length !== validation.fields.length ||\n validatedRecords.length !==\n Array.from(records.values()).filter(\n (record) => record.registrations.size,\n ).length ||\n validatedRecords.some(\n (record, index) =>\n !record.registrations.size ||\n record.validationRevision !== revisions[index],\n );\n if (validation.stale || changedSinceValidation) {\n token.complete();\n finish({ status: 'stale' });\n return;\n }\n const owner = binding;\n const callbacks = resolveCallbacks();\n let result: ModernSubmitResult<ErrorValue>;\n if (!validation.isValid) {\n const errors = Object.fromEntries(\n validation.fields\n .filter((field) => !field.isValid)\n .map((field) => [field.name, field.errors]),\n );\n result = { status: 'invalid', errors: Object.freeze(errors) };\n try {\n await callbacks.onSubmitFailed?.({\n status: 'invalid',\n errors: Object.freeze(errors),\n });\n } catch (error) {\n report(error);\n }\n if (!settled) {\n token.complete();\n finish(result);\n }\n return;\n }\n try {\n await callbacks.onSubmit?.(\n (include === 'all' ? values : activeValues()) as FormValues<T>,\n { include, signal: token.signal },\n );\n result = { status: 'submitted' };\n } catch (error) {\n if (settled) return;\n // Keep the guard active while failure callbacks run.\n batch(() => {\n submitError = error;\n });\n try {\n await callbacks.onSubmitFailed?.({ status: 'failed', error });\n } catch (failure) {\n report(failure);\n }\n result = { status: 'failed', error };\n }\n if (!settled) {\n token.complete(\n result.status === 'failed' ? { error: result.error } : undefined,\n );\n finish(result);\n // Finish before a wrapper closes/unmounts its root. Closing must not\n // turn a successful submission into a stale result.\n if (result.status === 'submitted' && binding === owner) {\n try {\n owner?.onSubmitted?.();\n } catch (error) {\n report(error);\n }\n }\n }\n };\n void run().catch((error) => {\n if (!settled) {\n token.complete({ error });\n finish({ status: 'failed', error });\n }\n });\n });\n }\n\n function subscribe(listener: () => void) {\n assertLive();\n const entry = { notify: listener };\n listeners.add(entry);\n return () => {\n listeners.delete(entry);\n };\n }\n\n function dispose() {\n if (disposed) return;\n disposed = true;\n listeners.clear();\n binding = undefined;\n changes = [];\n pending = false;\n for (const record of records.values()) {\n record.registrations.clear();\n record.owner = undefined;\n invalidate(record);\n }\n const previous = submission;\n submission = undefined;\n if (previous) cancellations.add(previous);\n state = buildSnapshot();\n records.clear();\n cancelPending();\n }\n\n for (const name of Object.keys(values)) ensure(name, false);\n state = buildSnapshot();\n\n return Object.freeze({\n [FORM_BACKEND]: 'modern' as const,\n getSnapshot: () => state,\n getFieldSnapshot: (path: FormPath) => state.fields[getFieldKey(path)],\n getValue: (path: FormPath) => readPath(values, normalizePath(path)),\n getValues: () => values as FormValues<T>,\n getActiveValues: () => activeValues() as FormValues<T>,\n subscribe,\n subscribeSelector<Selected>(\n selector: (snapshot: FormState<T, ErrorValue>) => Selected,\n listener: (value: Selected, previous: Selected) => void,\n isEqual: (a: Selected, b: Selected) => boolean = Object.is,\n ) {\n let selected = selector(state);\n return subscribe(() => {\n const next = selector(state);\n if (isEqual(selected, next)) return;\n const previous = selected;\n selected = next;\n listener(next, previous);\n });\n },\n register,\n validate,\n submit,\n bindCallbacks,\n cancelSubmission,\n updateCallbacks(callbacks: FormCallbacks<T, ErrorValue>) {\n options.onSubmit = callbacks.onSubmit;\n options.onSubmitFailed = callbacks.onSubmitFailed;\n options.onValuesChange = callbacks.onValuesChange;\n },\n blur(path: FormPath) {\n const record = records.get(getFieldKey(path));\n if (!record?.registrations.size) return;\n batch(() => {\n record.touched = true;\n if ((record.owner?.options.validateTrigger ?? 'onBlur') === 'onBlur')\n void validateRecord(record, false);\n });\n },\n setValue,\n setValues,\n batch,\n setDefaultValues,\n adoptDefaultValues,\n reset,\n touch(path: FormPath, touched = true) {\n batch(() => {\n ensure(path).touched = touched;\n });\n },\n setFieldErrors,\n clearFieldErrors: (path: FormPath) => setFieldErrors(path, EMPTY_ERRORS),\n startValidation,\n startSubmission,\n setSubmitError(error: unknown) {\n batch(() => {\n submitError = error;\n });\n },\n clearSubmitError() {\n batch(() => {\n submitError = undefined;\n });\n },\n dispose,\n debug: Object.freeze({\n listenerCount: () => listeners.size,\n registrationCount: () =>\n Array.from(records.values()).reduce(\n (count, record) => count + record.registrations.size,\n 0,\n ),\n }),\n }) as FormStore<T, ErrorValue>;\n}\n"],"mappings":"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"}
|
|
@@ -155,7 +155,9 @@ interface FormStore<T extends object = Record<string, unknown>, ErrorValue = unk
|
|
|
155
155
|
include?: 'active' | 'all';
|
|
156
156
|
}): Promise<ModernSubmitResult<ErrorValue>>;
|
|
157
157
|
blur(path: FormPath): void;
|
|
158
|
-
bindCallbacks(callbacks: FormCallbacks<T, ErrorValue
|
|
158
|
+
bindCallbacks(callbacks: FormCallbacks<T, ErrorValue>, onSubmitted?: () => void): CallbackBinding<T, ErrorValue>;
|
|
159
|
+
/** Internal wrapper lifecycle command; does not discard retained drafts. */
|
|
160
|
+
cancelSubmission(): void;
|
|
159
161
|
updateCallbacks(callbacks: FormCallbacks<T, ErrorValue>): void;
|
|
160
162
|
setValue(path: FormPath, value: unknown, options?: SetValueOptions): void;
|
|
161
163
|
setValues(values: Partial<T>, options?: SetValueOptions): void;
|