@cube-dev/ui-kit 0.204.0 → 0.206.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 +36 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +221 -132
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.d.ts +2 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +3 -2
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +8 -2
- package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.d.ts +5 -2
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/checked-keys.js +1 -1
- package/dist/components/content/Tree/rowId.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +114 -72
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/ItemTable/item-table-sections.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableRowLink.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +21 -20
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-body-sections.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/CalendarPopover.js +281 -0
- package/dist/components/fields/DatePicker/CalendarPopover.js.map +1 -0
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +26 -24
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +4 -2
- package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +10 -0
- package/dist/components/fields/DatePicker/DateRangePicker.js +143 -65
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +172 -165
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterListBox/styled.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/FilterPicker/FilterTree.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +108 -118
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +10 -12
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +198 -174
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +18 -3
- package/dist/components/form/Form/modern/store.js.map +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/field-layout.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +190 -187
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +2 -1
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/segmented-styles.js +53 -0
- package/dist/components/navigation/Tabs/segmented-styles.js.map +1 -0
- package/dist/components/navigation/Tabs/styled.js +15 -28
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.d.ts +4 -4
- 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 +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.d.ts +3 -3
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +4 -4
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +101 -123
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +60 -51
- package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +6 -3
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +2 -2
- package/dist/components/status/Spin/Cube.js.map +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +70 -70
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +3 -2
- package/dist/i18n/locales/en-US/uikit.js +3 -2
- package/dist/i18n/locales/en-US/uikit.json.d.ts +1 -0
- package/dist/i18n/locales/es-ES/uikit.js +3 -2
- package/dist/i18n/locales/es-MX/uikit.js +3 -2
- package/dist/i18n/locales/fr-FR/uikit.js +3 -2
- package/dist/i18n/locales/it-IT/uikit.js +3 -2
- package/dist/i18n/locales/ja-JP/uikit.js +3 -2
- package/dist/i18n/locales/nb-NO/uikit.js +3 -2
- package/dist/i18n/locales/pt-BR/uikit.js +3 -2
- package/dist/i18n/locales/pt-PT/uikit.js +3 -2
- package/dist/i18n/locales/sv-SE/uikit.js +3 -2
- package/dist/i18n/locales/vi-VN/uikit.js +3 -2
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +7 -5
- package/dist/utils/react/useScheme.js.map +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/Theming.md +1 -1
- package/docs/Usage.md +26 -0
- package/docs/components/content/Item.md +1 -1
- package/docs/components/content/TextItem.md +13 -1
- package/docs/components/data/ItemTable.md +1 -1
- package/docs/components/fields/RadioGroup.md +5 -4
- package/docs/components/form/Form.md +2 -0
- package/docs/components/form/ModernForm.md +5 -1
- package/docs/components/navigation/Tabs.md +5 -3
- package/docs/components/overlays/DialogContainer.md +1 -1
- package/docs/components/overlays/DialogTrigger.md +2 -2
- package/docs/components/overlays/Notifications.md +17 -0
- package/docs/components/overlays/Toast.md +1 -1
- package/docs/modern-form-guide.md +5 -1
- package/docs/tasty/ai-agents.md +3 -2
- package/docs/tasty/dsl.md +52 -0
- package/docs/tasty/styles.md +27 -15
- package/package.json +5 -3
- package/tasty.config.generated.ts +526 -0
- package/tasty.config.ts +29 -422
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { getFieldKey, hasPath, normalizePath, readPath } from "./values.js";
|
|
3
3
|
import { getControllerInternals } from "./controller.js";
|
|
4
4
|
//#region src/components/form/Form/modern/field-binding.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { normalizePath } from "./values.js";
|
|
3
3
|
//#region src/components/form/Form/modern/field.ts
|
|
4
4
|
function createFormField(form, path, options = {}) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.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";
|
|
@@ -95,6 +95,7 @@ function createFormStore(inputOptions = {}) {
|
|
|
95
95
|
registrations: /* @__PURE__ */ new Set(),
|
|
96
96
|
touched: false,
|
|
97
97
|
edited: false,
|
|
98
|
+
userWrites: 0,
|
|
98
99
|
errors: EMPTY_ERRORS,
|
|
99
100
|
status: "unvalidated",
|
|
100
101
|
validationRevision: 0
|
|
@@ -293,7 +294,10 @@ function createFormStore(inputOptions = {}) {
|
|
|
293
294
|
invalidateRelated(record.path, previous, config);
|
|
294
295
|
}
|
|
295
296
|
if (config.touch ?? config.source === "user") record.touched = true;
|
|
296
|
-
if (config.source === "user")
|
|
297
|
+
if (config.source === "user") {
|
|
298
|
+
record.edited = true;
|
|
299
|
+
record.userWrites++;
|
|
300
|
+
}
|
|
297
301
|
if (changed && (config.notify ?? config.source === "user")) event([record.name], "set", config.source);
|
|
298
302
|
return changed;
|
|
299
303
|
}
|
|
@@ -475,6 +479,15 @@ function createFormStore(inputOptions = {}) {
|
|
|
475
479
|
function spendCleanEdits() {
|
|
476
480
|
for (const record of records.values()) if (record.edited && !dirty(record)) record.edited = false;
|
|
477
481
|
}
|
|
482
|
+
function snapshotSubmission(include) {
|
|
483
|
+
return {
|
|
484
|
+
payload: include === "all" ? values : activeValues(),
|
|
485
|
+
userWrites: new Map(Array.from(records.values(), (record) => [record, record.userWrites]))
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
function spendSubmittedEdits({ payload, userWrites }) {
|
|
489
|
+
for (const record of records.values()) if (record.edited && hasPath(payload, record.path) && userWrites.get(record) === record.userWrites) record.edited = false;
|
|
490
|
+
}
|
|
478
491
|
function reset(config = {}) {
|
|
479
492
|
batch(() => {
|
|
480
493
|
if (Object.hasOwn(config, "values")) replaceDefaults(config.values ?? {});
|
|
@@ -747,8 +760,9 @@ function createFormStore(inputOptions = {}) {
|
|
|
747
760
|
}
|
|
748
761
|
return;
|
|
749
762
|
}
|
|
763
|
+
const submitted = snapshotSubmission(include);
|
|
750
764
|
try {
|
|
751
|
-
await callbacks.onSubmit?.(
|
|
765
|
+
await callbacks.onSubmit?.(submitted.payload, {
|
|
752
766
|
include,
|
|
753
767
|
signal: token.signal
|
|
754
768
|
});
|
|
@@ -772,6 +786,7 @@ function createFormStore(inputOptions = {}) {
|
|
|
772
786
|
};
|
|
773
787
|
}
|
|
774
788
|
if (!settled) {
|
|
789
|
+
if (result.status === "submitted") spendSubmittedEdits(submitted);
|
|
775
790
|
token.complete(result.status === "failed" ? { error: result.error } : void 0);
|
|
776
791
|
finish(result);
|
|
777
792
|
if (result.status === "submitted" && binding === owner) try {
|
|
@@ -1 +1 @@
|
|
|
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","edited","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","spendCleanEdits","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","hasUserEdits","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> extends Omit<\n RegistrationOptions<ErrorValue>,\n 'dependsOn'\n> {\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 /** A user write changed it; a blur, `touch()` or a programmatic set never does. */\n edited: 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 edited: 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 (config.source === 'user') record.edited = 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 record.edited = 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 record.edited = false;\n }\n event(Array.from(records.keys()), 'defaults');\n }\n spendCleanEdits();\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 spendCleanEdits();\n });\n }\n\n // A new baseline that matches what the user typed, or replaces it, spends\n // the edit: a later set from code is not the user's.\n function spendCleanEdits() {\n for (const record of records.values()) {\n if (record.edited && !dirty(record)) record.edited = false;\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 record.edited = 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 const record = ensure(path);\n record.touched = touched;\n if (!touched) record.edited = false;\n });\n },\n hasUserEdits() {\n for (const record of records.values()) {\n if (record.edited && dirty(record)) return true;\n }\n return false;\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","edited","userWrites","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","spendCleanEdits","adoptDefaultValues","when","preserveDirty","candidates","preserved","filter","exists","saved","snapshotSubmission","include","payload","spendSubmittedEdits","ReturnType","reset","setFieldErrors","copied","startValidation","current","signal","aborted","complete","cancel","startSubmission","immediate","parentSignal","AbortSignal","stale","token","committed","validationValues","timer","setTimeout","settled","finish","clearTimeout","removeEventListener","addEventListener","once","run","getValue","getValues","delay","paths","targets","runs","revisions","all","then","results","cancelSubmission","bindCallbacks","own","submit","reason","pendingValidation","validatedRecords","changedSinceValidation","fromEntries","onSubmitFailed","submitted","onSubmit","failure","subscribe","entry","dispose","clear","getSnapshot","getFieldSnapshot","getActiveValues","subscribeSelector","selector","snapshot","Selected","selected","updateCallbacks","blur","hasUserEdits","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> extends Omit<\n RegistrationOptions<ErrorValue>,\n 'dependsOn'\n> {\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 /** A user write changed it; a blur, `touch()` or a programmatic set never does. */\n edited: boolean;\n /** Counts user writes, so a submit can tell one that came after its payload. */\n userWrites: number;\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 edited: false,\n userWrites: 0,\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 (config.source === 'user') {\n record.edited = true;\n record.userWrites++;\n }\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 record.edited = 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 record.edited = false;\n }\n event(Array.from(records.keys()), 'defaults');\n }\n spendCleanEdits();\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 spendCleanEdits();\n });\n }\n\n // A new baseline that matches what the user typed, or replaces it, spends\n // the edit: a later set from code is not the user's.\n function spendCleanEdits() {\n for (const record of records.values()) {\n if (record.edited && !dirty(record)) record.edited = false;\n }\n }\n\n // What a submit carried, and how many user writes each field had then.\n function snapshotSubmission(include: 'active' | 'all') {\n return {\n payload: include === 'all' ? values : activeValues(),\n userWrites: new Map(\n Array.from(records.values(), (record) => [record, record.userWrites]),\n ),\n };\n }\n\n // A successful submit saved what it carried, so those fields hold no unsaved\n // edits until the user changes them again. A field the user changed while\n // the request ran, or one the payload left out, keeps its edit. A value the\n // code wrote meanwhile (a normalized one, say) is not the user's.\n function spendSubmittedEdits({\n payload,\n userWrites,\n }: ReturnType<typeof snapshotSubmission>) {\n for (const record of records.values()) {\n if (\n record.edited &&\n hasPath(payload, record.path) &&\n userWrites.get(record) === record.userWrites\n )\n record.edited = false;\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 record.edited = 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 const submitted = snapshotSubmission(include);\n try {\n await callbacks.onSubmit?.(submitted.payload as FormValues<T>, {\n include,\n 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 if (result.status === 'submitted') spendSubmittedEdits(submitted);\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 const record = ensure(path);\n record.touched = touched;\n if (!touched) record.edited = false;\n });\n },\n hasUserEdits() {\n for (const record of records.values()) {\n if (record.edited && dirty(record)) return true;\n }\n return false;\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,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { applyRule } from "../validation.js";
|
|
3
3
|
//#region src/components/form/Form/modern/validation.ts
|
|
4
4
|
/** Compare constraints and function source; captures still need deps/rulesKey. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
//#region src/components/form/Form/modern/values.ts
|
|
3
3
|
const ownedContainers = /* @__PURE__ */ new WeakSet();
|
|
4
4
|
function freezeContainer(value) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
//#region src/components/form/Form/reset-unbound-controls.ts
|
|
3
3
|
/**
|
|
4
4
|
* Both form roots cancel a native reset, because the browser would put a bound
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useEvent } from "../../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { isModernFormController } from "../backend.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { warn } from "../../../../utils/warnings.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useEvent } from "../../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { useIsFirstRender } from "../../../../_internal/hooks/use-is-first-render.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { FORM_BACKEND, isModernFormController, modernBackendUnavailableError } from "./backend.js";
|
|
3
3
|
import { applyRules } from "./validation.js";
|
|
4
4
|
import { dotizeConvert } from "../../../utils/dotize.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useProviderProps } from "../../provider.js";
|
|
4
4
|
import { useI18n } from "../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { warn } from "../../utils/warnings.js";
|
|
3
3
|
//#region src/components/form/field-chrome.ts
|
|
4
4
|
/** Empty slot values suppress content; numeric zero is still text. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles, mergeStyleLayers } from "../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../utils/react/mergeProps.js";
|
|
4
4
|
import { rendersFieldChrome } from "./wrapper.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { warn } from "../../utils/warnings.js";
|
|
3
3
|
//#region src/components/form/legacy-tooltip.ts
|
|
4
4
|
let hasWarnedAboutLegacyTooltip = false;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { LoadingIcon } from "../../../icons/LoadingIcon.js";
|
|
3
3
|
import { hasValidationState } from "./resolve-validation-props.js";
|
|
4
4
|
import { InvalidIcon } from "../../shared/InvalidIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
//#region src/components/form/validation/resolve-validation-props.ts
|
|
3
3
|
/**
|
|
4
4
|
* Normalizes the validation props of a field into a pair of booleans.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
3
3
|
import { resolveValidationProps } from "./resolve-validation-props.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { mergeStyleLayers } from "../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../utils/react/mergeProps.js";
|
|
4
4
|
import { hasFieldContent, warnAboutForceField } from "./field-chrome.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { c } from "react/compiler-runtime";
|
|
3
3
|
import { useCallback, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
//#region src/components/helpers/DisplayTransition/DisplayTransition.tsx
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { DisplayTransition } from "../DisplayTransition/DisplayTransition.js";
|
|
3
3
|
import { tasty } from "@tenphi/tasty";
|
|
4
4
|
import { isValidElement, useCallback, useLayoutEffect, useRef, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.206.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|