@cube-dev/ui-kit 0.182.0 → 0.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +40 -0
- package/dist/_internal/hooks/use-debounced-value.js +48 -31
- package/dist/_internal/hooks/use-debounced-value.js.map +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +22 -7
- package/dist/_internal/hooks/use-deprecation-warning.js.map +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-event.js.map +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js.map +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +12 -4
- package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js.map +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +90 -20
- package/dist/_internal/hooks/use-timer/use-timer.js.map +1 -1
- package/dist/_internal/hooks/use-warn.js +4 -4
- package/dist/_internal/hooks/use-warn.js.map +1 -1
- package/dist/components/Block.js +29 -7
- package/dist/components/Block.js.map +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/CollectionItem.js.map +1 -1
- package/dist/components/GlobalStyles.js +33 -9
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +4 -4
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/HiddenInput.js.map +1 -1
- package/dist/components/Root.js +137 -42
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +20 -8
- package/dist/components/actions/Action/Action.js.map +1 -1
- package/dist/components/actions/Banner/Banner.js +91 -22
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.js +5 -5
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +15 -5
- package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js.map +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +73 -80
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js.map +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +205 -68
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +26 -7
- package/dist/components/actions/ItemActionContext.js.map +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +215 -84
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +2 -2
- package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
- package/dist/components/actions/Link/Link.js +16 -7
- package/dist/components/actions/Link/Link.js.map +1 -1
- package/dist/components/actions/Menu/Menu.js +127 -72
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.js +120 -43
- package/dist/components/actions/Menu/MenuItem.js.map +1 -1
- package/dist/components/actions/Menu/MenuSection.js +79 -31
- package/dist/components/actions/Menu/MenuSection.js.map +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +316 -112
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +6 -12
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js.map +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/context.js.map +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/actions-run.js.map +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/index.js.map +1 -1
- package/dist/components/actions/use-action.js +3 -3
- package/dist/components/actions/use-action.js.map +1 -1
- package/dist/components/actions/use-anchored-menu.js +6 -6
- package/dist/components/actions/use-anchored-menu.js.map +1 -1
- package/dist/components/actions/use-context-menu.js +12 -12
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +84 -18
- package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
- package/dist/components/content/Alert/Alert.js +18 -7
- package/dist/components/content/Alert/Alert.js.map +1 -1
- package/dist/components/content/Alert/use-alert.js +53 -15
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +51 -13
- package/dist/components/content/Avatar/Avatar.js.map +1 -1
- package/dist/components/content/Badge/Badge.js +43 -10
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +29 -7
- package/dist/components/content/Card/Card.js.map +1 -1
- package/dist/components/content/Content.js +30 -7
- package/dist/components/content/Content.js.map +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +220 -60
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +453 -194
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +52 -14
- package/dist/components/content/Divider.js.map +1 -1
- package/dist/components/content/Footer.js +29 -7
- package/dist/components/content/Footer.js.map +1 -1
- package/dist/components/content/Header.js +29 -7
- package/dist/components/content/Header.js.map +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +55 -27
- package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +8 -8
- package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +429 -188
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.d.ts +27 -2
- package/dist/components/content/Item/Item.js +418 -152
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +173 -59
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +34 -9
- package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
- package/dist/components/content/Layout/GridLayout.js +38 -10
- package/dist/components/content/Layout/GridLayout.js.map +1 -1
- package/dist/components/content/Layout/Layout.js +30 -13
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +33 -8
- package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +48 -11
- package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +30 -21
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +33 -8
- package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +53 -14
- package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +48 -11
- package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +216 -57
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +60 -14
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +59 -17
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +89 -27
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +33 -8
- package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +206 -119
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/index.js.map +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Layout/utils.js.map +1 -1
- package/dist/components/content/Paragraph.js +25 -9
- package/dist/components/content/Paragraph.js.map +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +52 -14
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +52 -17
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
- package/dist/components/content/Result/Result.js +117 -38
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +26 -17
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.d.ts +6 -1
- package/dist/components/content/Tag/Tag.js +68 -13
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +61 -14
- package/dist/components/content/Text.js.map +1 -1
- package/dist/components/content/TextItem/TextItem.js +37 -16
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +98 -23
- package/dist/components/content/Title.js.map +1 -1
- package/dist/components/content/Tree/Tree.js +32 -32
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +10 -10
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/tree-index.js.map +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +123 -89
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +52 -21
- package/dist/components/content/Tree/use-load-data.js.map +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/highlightText.js.map +1 -1
- package/dist/components/content/use-auto-tooltip.d.ts +1 -1
- package/dist/components/content/use-auto-tooltip.js +231 -125
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +31 -31
- package/dist/components/data/DataTable/DataTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +41 -41
- package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +11 -11
- package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +41 -4
- package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +67 -30
- package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +95 -28
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +90 -41
- package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js.map +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +154 -64
- package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
- package/dist/components/data/TableBase/TableRow.js +211 -69
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableView.js +119 -80
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-menu.js.map +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/column-tint.js.map +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/row-menu.js.map +1 -1
- package/dist/components/data/TableBase/styled.d.ts +1 -0
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/table-tree.js.map +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/types.js.map +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-column-order.js +56 -12
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-container-width.js +24 -10
- package/dist/components/data/TableBase/use-container-width.js.map +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +68 -49
- package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +32 -18
- package/dist/components/data/TableBase/use-scrollability.js.map +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +130 -60
- package/dist/components/data/TableBase/use-table-columns.js.map +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js.map +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +39 -39
- package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +132 -68
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +168 -101
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +2 -2
- package/dist/components/data/TableBase/use-table-storage.js.map +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +181 -86
- package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.d.ts +8 -0
- package/dist/components/fields/Checkbox/Checkbox.js +58 -39
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +101 -33
- package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/Checkbox/context.js.map +1 -1
- package/dist/components/fields/ColorInput/ColorInput.d.ts +17 -1
- package/dist/components/fields/ColorInput/ColorInput.js +334 -152
- package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.d.ts +18 -2
- package/dist/components/fields/ColorPicker/ColorPicker.js +18 -17
- package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +52 -13
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +90 -28
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +216 -134
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +88 -49
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +129 -34
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.d.ts +17 -1
- package/dist/components/fields/DatePicker/DatePicker.js +200 -71
- package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +39 -8
- package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +109 -29
- package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.d.ts +17 -2
- package/dist/components/fields/DatePicker/DateRangePicker.js +230 -90
- package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +17 -2
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +481 -180
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +15 -6
- package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.d.ts +17 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +294 -93
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +15 -6
- package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +15 -7
- package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +15 -6
- package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +15 -6
- package/dist/components/fields/DatePicker/YearPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/period.js.map +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/props.js.map +1 -1
- package/dist/components/fields/DatePicker/utils.js +15 -8
- package/dist/components/fields/DatePicker/utils.js.map +1 -1
- package/dist/components/fields/FileInput/FileInput.js +3 -3
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +87 -87
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.d.ts +11 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js +24 -23
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/Input/Input.js.map +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +23 -10
- package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -1
- package/dist/components/fields/ListBox/ListBox.js +138 -53
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +156 -37
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +61 -33
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +123 -33
- package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +53 -15
- package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +149 -45
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.d.ts +20 -3
- package/dist/components/fields/Picker/Picker.js +11 -10
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.d.ts +10 -2
- package/dist/components/fields/RadioGroup/Radio.js +275 -104
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +149 -48
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/RadioGroup/context.js.map +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +80 -65
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +91 -28
- package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
- package/dist/components/fields/Select/Select.d.ts +24 -3
- package/dist/components/fields/Select/Select.js +376 -121
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +45 -10
- package/dist/components/fields/Slider/Gradation.js.map +1 -1
- package/dist/components/fields/Slider/HueSlider.js +121 -32
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +46 -10
- package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
- package/dist/components/fields/Slider/Slider.js +108 -23
- package/dist/components/fields/Slider/Slider.js.map +1 -1
- package/dist/components/fields/Slider/SliderBase.js +2 -2
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +96 -37
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +64 -23
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +190 -66
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TextArea/TextArea.js +137 -47
- package/dist/components/fields/TextArea/TextArea.js.map +1 -1
- package/dist/components/fields/TextInput/TextInput.js +80 -27
- package/dist/components/fields/TextInput/TextInput.js.map +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +2 -2
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +156 -83
- package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
- package/dist/components/fields/TriggerActions.js +11 -2
- package/dist/components/fields/TriggerActions.js.map +1 -1
- package/dist/components/fields/color/ColorPanel.js +237 -59
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/channels.js.map +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/color.js.map +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/color/context.js.map +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +197 -72
- package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
- package/dist/components/form/FieldWrapper/types.d.ts +1 -1
- package/dist/components/form/Form/Field.js +28 -12
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.js +95 -34
- package/dist/components/form/Form/Form.js.map +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +294 -81
- package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +32 -10
- package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +32 -10
- package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
- package/dist/components/form/Form/SubmitError.js +130 -32
- package/dist/components/form/Form/SubmitError.js.map +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/backend.js.map +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/index.js.map +1 -1
- package/dist/components/form/Form/modern/actions.js +140 -45
- package/dist/components/form/Form/modern/actions.js.map +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/context.js.map +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/controller.js.map +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js.map +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/field.js.map +1 -1
- package/dist/components/form/Form/modern/react.js +102 -19
- package/dist/components/form/Form/modern/react.js.map +1 -1
- package/dist/components/form/Form/modern/store.js +13 -3
- package/dist/components/form/Form/modern/store.js.map +1 -1
- package/dist/components/form/Form/modern/types.d.ts +3 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/validation.js.map +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/modern/values.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +236 -63
- package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +106 -61
- package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
- package/dist/components/form/Form/use-field/use-field.js +5 -4
- package/dist/components/form/Form/use-field/use-field.js.map +1 -1
- package/dist/components/form/Form/use-form.js +2 -1
- package/dist/components/form/Form/use-form.js.map +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Form/validation.js.map +1 -1
- package/dist/components/form/Label.js +127 -37
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/legacy-tooltip.js +28 -0
- package/dist/components/form/legacy-tooltip.js.map +1 -0
- package/dist/components/form/validation/ValidationIndicator.js +20 -5
- package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
- package/dist/components/form/validation/use-validation-props.js +36 -10
- package/dist/components/form/validation/use-validation-props.js.map +1 -1
- package/dist/components/form/wrapper.js +5 -3
- package/dist/components/form/wrapper.js.map +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +49 -29
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +8 -8
- package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
- package/dist/components/layout/Board/Board.js +27 -9
- package/dist/components/layout/Board/Board.js.map +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js.map +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js.map +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/Widget.js.map +1 -1
- package/dist/components/layout/Board/WidgetHost.js +159 -121
- package/dist/components/layout/Board/WidgetHost.js.map +1 -1
- package/dist/components/layout/Board/board-context.js +14 -5
- package/dist/components/layout/Board/board-context.js.map +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/board-store.js.map +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js.map +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js.map +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js.map +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js.map +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
- package/dist/components/layout/Board/grid-core/placement.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.js.map +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js.map +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/index.js.map +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js.map +1 -1
- package/dist/components/layout/Board/use-board-layout.js +8 -8
- package/dist/components/layout/Board/use-board-layout.js.map +1 -1
- package/dist/components/layout/Board/use-board-registry.js +257 -257
- package/dist/components/layout/Board/use-board-registry.js.map +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -1
- package/dist/components/layout/Board/use-board-selection.js +16 -16
- package/dist/components/layout/Board/use-board-selection.js.map +1 -1
- package/dist/components/layout/Flex.js +29 -7
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flow.js +29 -7
- package/dist/components/layout/Flow.js.map +1 -1
- package/dist/components/layout/Grid.js +30 -7
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Panel.js +9 -9
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.js +59 -16
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +62 -32
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.js +55 -11
- package/dist/components/layout/Space.js.map +1 -1
- package/dist/components/layout/Suffix.js +59 -16
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +394 -164
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +69 -26
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +25 -10
- package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +625 -235
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +65 -23
- package/dist/components/navigation/Tabs/TabDropIndicator.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +47 -19
- package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +106 -33
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +45 -45
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +53 -19
- package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +16 -6
- package/dist/components/navigation/Tabs/TabsContext.js.map +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js.map +1 -1
- package/dist/components/navigation/Tabs/styled.js +2 -2
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/types.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +50 -13
- package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +111 -63
- package/dist/components/navigation/Tabs/use-tab-indicator.js.map +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +54 -14
- package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
- package/dist/components/other/Calendar/Calendar.js +79 -31
- package/dist/components/other/Calendar/Calendar.js.map +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +66 -20
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +90 -40
- package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +80 -17
- package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +568 -144
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +425 -134
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +6 -6
- package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +50 -24
- package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/Calendar/styled.js.map +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +95 -34
- package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +153 -42
- package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +76 -54
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +146 -39
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +43 -18
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +13 -13
- package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogForm.d.ts +12 -7
- package/dist/components/overlays/Dialog/DialogForm.js +22 -10
- package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +214 -59
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +357 -0
- package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -0
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/context.js.map +1 -1
- package/dist/components/overlays/Dialog/index.d.ts +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +68 -0
- package/dist/components/overlays/Dialog/use-content-overflow.js.map +1 -0
- package/dist/components/overlays/Dialog/use-dialog-container.js +6 -6
- package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
- package/dist/components/overlays/Modal/Modal.js +140 -27
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
- package/dist/components/overlays/Modal/Overlay.js +4 -4
- package/dist/components/overlays/Modal/Overlay.js.map +1 -1
- package/dist/components/overlays/Modal/Popover.js +131 -29
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +142 -30
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +36 -7
- package/dist/components/overlays/Modal/Underlay.js.map +1 -1
- package/dist/components/overlays/Notifications/Notification.js +69 -32
- package/dist/components/overlays/Notifications/Notification.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +79 -26
- package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +138 -33
- package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +63 -16
- package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +312 -151
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +210 -58
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js.map +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.d.ts +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +3 -3
- package/dist/components/overlays/Notifications/format-relative-time.js.map +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/index.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +51 -51
- package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +12 -12
- package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +10 -10
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +24 -5
- package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +145 -43
- package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +25 -25
- package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +68 -15
- package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
- package/dist/components/overlays/Toast/index.js +100 -34
- package/dist/components/overlays/Toast/index.js.map +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
- package/dist/components/overlays/Toast/useToast.js +9 -9
- package/dist/components/overlays/Toast/useToast.js.map +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +88 -31
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +75 -10
- package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +189 -77
- package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/context.js.map +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.d.ts +16 -0
- package/dist/components/overlays/Tooltip/split-trigger-props.js +54 -0
- package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -0
- package/dist/components/portal/Portal.js +18 -3
- package/dist/components/portal/Portal.js.map +1 -1
- package/dist/components/portal/PortalProvider.js +11 -2
- package/dist/components/portal/PortalProvider.js.map +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/portal/usePortal.js.map +1 -1
- package/dist/components/shared/DraggableCollection.js +23 -23
- package/dist/components/shared/DraggableCollection.js.map +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/InvalidIcon.js.map +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js.map +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +156 -48
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +12 -3
- package/dist/components/status/Spin/Cube.js.map +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +21 -6
- package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
- package/dist/components/status/Spin/Spin.js +31 -7
- package/dist/components/status/Spin/Spin.js.map +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +23 -6
- package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
- package/dist/data/item-themes.d.ts +1 -1
- package/dist/data/item-themes.js +7 -1
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/data/themes.js.map +1 -1
- package/dist/eslint-plugin/defaults.generated.js +15 -5
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/index.js.map +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
- package/dist/i18n/I18nProvider.js +54 -13
- package/dist/i18n/I18nProvider.js.map +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/createFormatter.js.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/instance.js.map +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/locales.js.map +1 -1
- package/dist/i18n/useFormatter.js +10 -3
- package/dist/i18n/useFormatter.js.map +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/i18n/useI18n.js.map +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js.map +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js.map +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AiIcon.js.map +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js.map +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js.map +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js.map +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BackwardIcon.js.map +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BarChartIcon.js.map +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js.map +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BellIcon.js.map +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/BooleanIcon.js.map +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js.map +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CalendarIcon.js.map +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js.map +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js.map +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js.map +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js.map +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js.map +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js.map +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js.map +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js.map +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js.map +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js.map +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js.map +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js.map +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js.map +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js.map +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartPie2Icon.js.map +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/ChartScatterIcon.js.map +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js.map +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js.map +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CheckIcon.js.map +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js.map +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/ClearIcon.js.map +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js.map +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js.map +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CloseIcon.js.map +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/CodeIcon.js.map +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js.map +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CopyIcon.js.map +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CountIcon.js.map +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubeIcon.js.map +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js.map +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js.map +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js.map +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DangerIcon.js.map +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DashboardIcon.js.map +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js.map +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js.map +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js.map +1 -1
- package/dist/icons/DirectionIcon.js +67 -22
- package/dist/icons/DirectionIcon.js.map +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DonutIcon.js.map +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/DownIcon.js.map +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/EditIcon.js.map +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js.map +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js.map +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js.map +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeIcon.js.map +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js.map +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FilterIcon.js.map +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js.map +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderIcon.js.map +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js.map +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js.map +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/ForwardIcon.js.map +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js.map +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js.map +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js.map +1 -1
- package/dist/icons/Icon.js +60 -16
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoCircleIcon.js.map +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/InfoIcon.js.map +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/KeyIcon.js.map +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LeftIcon.js.map +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LineChartIcon.js.map +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LoadingIcon.js.map +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js.map +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/LockIcon.js.map +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/MoreIcon.js.map +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js.map +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/Number123Icon.js.map +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/NumberIcon.js.map +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js.map +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js.map +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PauseIcon.js.map +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PercentageIcon.js.map +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PieChartIcon.js.map +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PipetteIcon.js.map +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js.map +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlayIcon.js.map +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/PlusIcon.js.map +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js.map +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReloadIcon.js.map +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReportIcon.js.map +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/ReturnIcon.js.map +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RightIcon.js.map +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js.map +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SchemeIcon.js.map +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SearchIcon.js.map +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js.map +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/SettingsIcon.js.map +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js.map +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/ShieldIcon.js.map +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SlashIcon.js.map +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SparklesIcon.js.map +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/SqlIcon.js.map +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StatsIcon.js.map +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StopIcon.js.map +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/StringIcon.js.map +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js.map +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/SwitchIcon.js.map +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/TableIcon.js.map +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js.map +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js.map +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js.map +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js.map +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js.map +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TimeIcon.js.map +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/TrashIcon.js.map +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UnlockIcon.js.map +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UpIcon.js.map +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js.map +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserIcon.js.map +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/UserLockIcon.js.map +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/ViewIcon.js.map +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js.map +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/WarningIcon.js.map +1 -1
- package/dist/icons/wrap-icon.js +15 -7
- package/dist/icons/wrap-icon.js.map +1 -1
- package/dist/index.d.ts +22 -22
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/probe/canonicalize.js +2 -2
- package/dist/probe/canonicalize.js.map +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/css.js.map +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +17 -7
- package/dist/provider.js.map +1 -1
- package/dist/providers/TrackingProvider.js +33 -9
- package/dist/providers/TrackingProvider.js.map +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/navigationAdapter.default.js.map +1 -1
- package/dist/shared/form.d.ts +9 -2
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/all-tokens.js.map +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/base.js.map +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-seed.js.map +1 -1
- package/dist/tokens/color-theme.js +18 -3
- package/dist/tokens/color-theme.js.map +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/layout.js.map +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/lazy-styles.js.map +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/legacy-color.js.map +1 -1
- package/dist/tokens/palette-config.js +9 -2
- package/dist/tokens/palette-config.js.map +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +85 -21
- package/dist/tokens/resolve.js.map +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/shadows.js.map +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/sizes.js.map +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/spacing.js.map +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/tokens/typography.js.map +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/ResizeSensor.js.map +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/colors.js.map +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/dotize.js.map +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/is-dev-env.js.map +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/modules.js.map +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/promise.js.map +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/raf.js.map +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/random.js.map +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/range.js.map +1 -1
- package/dist/utils/react/RenderCache.js +2 -2
- package/dist/utils/react/RenderCache.js.map +1 -1
- package/dist/utils/react/Slots.js +67 -24
- package/dist/utils/react/Slots.js.map +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/chain.js.map +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/disabledProps.js.map +1 -1
- package/dist/utils/react/escapePropagation.js +1 -1
- package/dist/utils/react/escapePropagation.js.map +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +35 -12
- package/dist/utils/react/interactions.js.map +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/isTextOnly.js.map +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mapProps.js.map +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/mergeProps.js.map +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/nullableValue.js.map +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/programmaticFocus.js.map +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/resolveIcon.js.map +1 -1
- package/dist/utils/react/sharedStore.js +13 -2
- package/dist/utils/react/sharedStore.js.map +1 -1
- package/dist/utils/react/useBufferedValue.js +5 -5
- package/dist/utils/react/useBufferedValue.js.map +1 -1
- package/dist/utils/react/useCombinedRefs.js +20 -5
- package/dist/utils/react/useCombinedRefs.js.map +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +53 -17
- package/dist/utils/react/useControlledFocusVisible.js.map +1 -1
- package/dist/utils/react/useEventBus.js +43 -18
- package/dist/utils/react/useEventBus.js.map +1 -1
- package/dist/utils/react/useId.js +2 -1
- package/dist/utils/react/useId.js.map +1 -1
- package/dist/utils/react/useIsDarwin.js +29 -16
- package/dist/utils/react/useIsDarwin.js.map +1 -1
- package/dist/utils/react/useKeySymbols.js +23 -9
- package/dist/utils/react/useKeySymbols.js.map +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLayoutEffect.js.map +1 -1
- package/dist/utils/react/useLocalStorage.js +75 -30
- package/dist/utils/react/useLocalStorage.js.map +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useMergeStyles.js.map +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +25 -9
- package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
- package/dist/utils/react/usePopoverSync.js +175 -73
- package/dist/utils/react/usePopoverSync.js.map +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useQaProps.js.map +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useScheme.js.map +1 -1
- package/dist/utils/react/useViewportSize.js +43 -19
- package/dist/utils/react/useViewportSize.js.map +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/selection.js.map +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/styles.js.map +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/tree.js.map +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/utils/warnings.js.map +1 -1
- package/dist/version.js +2 -2
- package/dist/version.js.map +1 -1
- package/docs/FieldProperties.md +2 -2
- package/docs/Usage.md +9 -1
- package/docs/components/actions/ButtonSplit.md +2 -0
- package/docs/components/content/InfoBadge.md +1 -1
- package/docs/components/content/InlineInput.md +1 -1
- package/docs/components/content/Layout.md +1 -1
- package/docs/components/content/Tag.md +10 -2
- package/docs/components/fields/Checkbox.md +11 -0
- package/docs/components/fields/ColorInput.md +15 -8
- package/docs/components/fields/ColorPicker.md +16 -9
- package/docs/components/fields/ComboBox.md +16 -12
- package/docs/components/fields/DatePicker.md +2 -0
- package/docs/components/fields/FilterListBox.md +24 -19
- package/docs/components/fields/FilterPicker.md +27 -20
- package/docs/components/fields/ListBox.md +36 -26
- package/docs/components/fields/PeriodPicker.md +2 -0
- package/docs/components/fields/Picker.md +30 -22
- package/docs/components/fields/RadioGroup.md +2 -2
- package/docs/components/fields/Select.md +21 -12
- package/docs/components/form/Field.md +4 -4
- package/docs/components/form/Form.md +61 -578
- package/docs/components/form/ModernForm.md +22 -1
- package/docs/components/navigation/Tabs.md +3 -3
- package/docs/components/overlays/Dialog.md +30 -3
- package/docs/components/overlays/DialogForm.md +122 -263
- package/docs/components/overlays/DialogTrigger.md +1 -1
- package/docs/components/overlays/UseDialogContainer.md +11 -13
- package/docs/modern-form-guide.md +22 -1
- package/docs/modern-form-migration.md +1 -1
- package/package.json +7 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../_internal/hooks/use-event.js";
|
|
3
|
-
import {
|
|
3
|
+
import { c } from "react-compiler-runtime";
|
|
4
|
+
import { useSyncExternalStore } from "react";
|
|
4
5
|
|
|
5
6
|
//#region src/utils/react/useLocalStorage.ts
|
|
6
7
|
/** Global registry of listeners per key for same-tab cross-instance sync */
|
|
@@ -63,37 +64,81 @@ function getInitialValue(initialValue) {
|
|
|
63
64
|
* ```
|
|
64
65
|
*/
|
|
65
66
|
function useLocalStorage(key, initialValue) {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
const $ = c(15);
|
|
68
|
+
let t0;
|
|
69
|
+
if ($[0] !== initialValue) {
|
|
70
|
+
t0 = getInitialValue(initialValue);
|
|
71
|
+
$[0] = initialValue;
|
|
72
|
+
$[1] = t0;
|
|
73
|
+
} else t0 = $[1];
|
|
74
|
+
const resolvedInitial = t0;
|
|
75
|
+
let t1;
|
|
76
|
+
if ($[2] !== key) {
|
|
77
|
+
t1 = (onStoreChange) => {
|
|
78
|
+
if (!key) return _temp;
|
|
79
|
+
if (!listeners.has(key)) listeners.set(key, /* @__PURE__ */ new Set());
|
|
80
|
+
listeners.get(key).add(onStoreChange);
|
|
81
|
+
const handleStorageEvent = (event) => {
|
|
82
|
+
if (event.key === key) onStoreChange();
|
|
83
|
+
};
|
|
84
|
+
window.addEventListener("storage", handleStorageEvent);
|
|
85
|
+
return () => {
|
|
86
|
+
listeners.get(key)?.delete(onStoreChange);
|
|
87
|
+
if (listeners.get(key)?.size === 0) listeners.delete(key);
|
|
88
|
+
window.removeEventListener("storage", handleStorageEvent);
|
|
89
|
+
};
|
|
73
90
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
$[2] = key;
|
|
92
|
+
$[3] = t1;
|
|
93
|
+
} else t1 = $[3];
|
|
94
|
+
const subscribe = t1;
|
|
95
|
+
let t2;
|
|
96
|
+
if ($[4] !== key || $[5] !== resolvedInitial) {
|
|
97
|
+
t2 = () => {
|
|
98
|
+
if (!key || !isLocalStorageAvailable()) return resolvedInitial;
|
|
99
|
+
return parseJSON(localStorage.getItem(key), resolvedInitial);
|
|
79
100
|
};
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
101
|
+
$[4] = key;
|
|
102
|
+
$[5] = resolvedInitial;
|
|
103
|
+
$[6] = t2;
|
|
104
|
+
} else t2 = $[6];
|
|
105
|
+
const getSnapshot = t2;
|
|
106
|
+
let t3;
|
|
107
|
+
if ($[7] !== resolvedInitial) {
|
|
108
|
+
t3 = () => resolvedInitial;
|
|
109
|
+
$[7] = resolvedInitial;
|
|
110
|
+
$[8] = t3;
|
|
111
|
+
} else t3 = $[8];
|
|
112
|
+
const storedValue = useSyncExternalStore(subscribe, getSnapshot, t3);
|
|
113
|
+
let t4;
|
|
114
|
+
if ($[9] !== key || $[10] !== resolvedInitial) {
|
|
115
|
+
t4 = (update) => {
|
|
116
|
+
if (!key || !isLocalStorageAvailable()) return;
|
|
117
|
+
const currentValue = parseJSON(localStorage.getItem(key), resolvedInitial);
|
|
118
|
+
const newValue = typeof update === "function" ? update(currentValue) : update;
|
|
119
|
+
try {
|
|
120
|
+
localStorage.setItem(key, JSON.stringify(newValue));
|
|
121
|
+
notifyListeners(key);
|
|
122
|
+
} catch (t5) {
|
|
123
|
+
const error = t5;
|
|
124
|
+
console.error(`[useLocalStorage] Failed to save "${key}":`, error);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
$[9] = key;
|
|
128
|
+
$[10] = resolvedInitial;
|
|
129
|
+
$[11] = t4;
|
|
130
|
+
} else t4 = $[11];
|
|
131
|
+
const setValue = useEvent(t4);
|
|
132
|
+
let t5;
|
|
133
|
+
if ($[12] !== setValue || $[13] !== storedValue) {
|
|
134
|
+
t5 = [storedValue, setValue];
|
|
135
|
+
$[12] = setValue;
|
|
136
|
+
$[13] = storedValue;
|
|
137
|
+
$[14] = t5;
|
|
138
|
+
} else t5 = $[14];
|
|
139
|
+
return t5;
|
|
96
140
|
}
|
|
141
|
+
function _temp() {}
|
|
97
142
|
|
|
98
143
|
//#endregion
|
|
99
144
|
export { useLocalStorage };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalStorage.js","names":[],"sources":["../../../src/utils/react/useLocalStorage.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\n\nimport { useEvent } from '../../_internal/hooks/use-event';\n\n/** Like React.setState: either a value or a function of the previous value */\ntype Updater<T> = T | ((prev: T) => T);\n\n/** Global registry of listeners per key for same-tab cross-instance sync */\nconst listeners = new Map<string, Set<() => void>>();\n\n/** Notify all listeners for a given key */\nfunction notifyListeners(key: string): void {\n listeners.get(key)?.forEach((listener) => listener());\n}\n\n/** Check if localStorage is available */\nfunction isLocalStorageAvailable(): boolean {\n try {\n const testKey = '__localStorage_test__';\n window.localStorage.setItem(testKey, testKey);\n window.localStorage.removeItem(testKey);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Safely parse JSON with fallback */\nfunction parseJSON<T>(value: string | null, fallback: T): T {\n if (value === null) {\n return fallback;\n }\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return fallback;\n }\n}\n\n/** Get initial value, supporting lazy initializer */\nfunction getInitialValue<T>(initialValue: T | (() => T)): T {\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n}\n\n/**\n * A hook to persist state in localStorage with cross-instance synchronization.\n *\n * Features:\n * - JSON serialization/deserialization\n * - Syncs between hook instances with the same key (same tab)\n * - Syncs across browser tabs via storage event\n * - SSR-safe (gracefully handles missing localStorage)\n * - Supports lazy initial value\n *\n * @param key - The localStorage key. Pass `null` or `undefined` to disable the hook.\n * @param initialValue - Initial value or lazy initializer function\n * @returns Tuple of [value, setValue] similar to useState\n *\n * @example\n * ```tsx\n * // Basic usage\n * const [theme, setTheme] = useLocalStorage('theme', 'light');\n *\n * // With lazy initializer\n * const [settings, setSettings] = useLocalStorage('settings', () => getDefaultSettings());\n *\n * // Disabled (returns initialValue, setValue is no-op)\n * const [value, setValue] = useLocalStorage(null, 'default');\n *\n * // Conditionally enabled\n * const [data, setData] = useLocalStorage(isEnabled ? 'my-key' : null, {});\n * ```\n */\nexport function useLocalStorage<T>(\n key: string | null | undefined,\n initialValue: T | (() => T),\n): readonly [T, (value: Updater<T>) => void] {\n const resolvedInitial = getInitialValue(initialValue);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!key) {\n return () => {};\n }\n\n // Add to same-tab listeners\n if (!listeners.has(key)) {\n listeners.set(key, new Set());\n }\n listeners.get(key)!.add(onStoreChange);\n\n // Listen for cross-tab changes\n const handleStorageEvent = (event: StorageEvent) => {\n if (event.key === key) {\n onStoreChange();\n }\n };\n window.addEventListener('storage', handleStorageEvent);\n\n return () => {\n listeners.get(key)?.delete(onStoreChange);\n if (listeners.get(key)?.size === 0) {\n listeners.delete(key);\n }\n window.removeEventListener('storage', handleStorageEvent);\n };\n },\n [key],\n );\n\n const getSnapshot = useCallback((): T => {\n if (!key || !isLocalStorageAvailable()) {\n return resolvedInitial;\n }\n\n return parseJSON(localStorage.getItem(key), resolvedInitial);\n }, [key, resolvedInitial]);\n\n const getServerSnapshot = useCallback((): T => {\n return resolvedInitial;\n }, [resolvedInitial]);\n\n const storedValue = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n const setValue = useEvent((update: Updater<T>) => {\n if (!key || !isLocalStorageAvailable()) {\n return;\n }\n\n const currentValue = parseJSON<T>(\n localStorage.getItem(key),\n resolvedInitial,\n );\n const newValue =\n typeof update === 'function'\n ? (update as (prev: T) => T)(currentValue)\n : update;\n\n try {\n localStorage.setItem(key, JSON.stringify(newValue));\n notifyListeners(key);\n } catch (error) {\n console.error(`[useLocalStorage] Failed to save \"${key}\":`, error);\n }\n });\n\n return [storedValue, setValue] as const;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useLocalStorage.js","names":["useCallback","useSyncExternalStore","useEvent","Updater","T","prev","listeners","Map","Set","notifyListeners","key","get","forEach","listener","isLocalStorageAvailable","testKey","window","localStorage","setItem","removeItem","parseJSON","value","fallback","JSON","parse","getInitialValue","initialValue","useLocalStorage","$","_c","t0","resolvedInitial","t1","onStoreChange","_temp","has","set","add","handleStorageEvent","event","addEventListener","delete","size","removeEventListener","subscribe","t2","getItem","getSnapshot","t3","getServerSnapshot","storedValue","t4","update","currentValue","newValue","stringify","t5","error","console","setValue","const"],"sources":["../../../src/utils/react/useLocalStorage.ts"],"sourcesContent":["import { useCallback, useSyncExternalStore } from 'react';\n\nimport { useEvent } from '../../_internal/hooks/use-event';\n\n/** Like React.setState: either a value or a function of the previous value */\ntype Updater<T> = T | ((prev: T) => T);\n\n/** Global registry of listeners per key for same-tab cross-instance sync */\nconst listeners = new Map<string, Set<() => void>>();\n\n/** Notify all listeners for a given key */\nfunction notifyListeners(key: string): void {\n listeners.get(key)?.forEach((listener) => listener());\n}\n\n/** Check if localStorage is available */\nfunction isLocalStorageAvailable(): boolean {\n try {\n const testKey = '__localStorage_test__';\n window.localStorage.setItem(testKey, testKey);\n window.localStorage.removeItem(testKey);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Safely parse JSON with fallback */\nfunction parseJSON<T>(value: string | null, fallback: T): T {\n if (value === null) {\n return fallback;\n }\n\n try {\n return JSON.parse(value) as T;\n } catch {\n return fallback;\n }\n}\n\n/** Get initial value, supporting lazy initializer */\nfunction getInitialValue<T>(initialValue: T | (() => T)): T {\n return typeof initialValue === 'function'\n ? (initialValue as () => T)()\n : initialValue;\n}\n\n/**\n * A hook to persist state in localStorage with cross-instance synchronization.\n *\n * Features:\n * - JSON serialization/deserialization\n * - Syncs between hook instances with the same key (same tab)\n * - Syncs across browser tabs via storage event\n * - SSR-safe (gracefully handles missing localStorage)\n * - Supports lazy initial value\n *\n * @param key - The localStorage key. Pass `null` or `undefined` to disable the hook.\n * @param initialValue - Initial value or lazy initializer function\n * @returns Tuple of [value, setValue] similar to useState\n *\n * @example\n * ```tsx\n * // Basic usage\n * const [theme, setTheme] = useLocalStorage('theme', 'light');\n *\n * // With lazy initializer\n * const [settings, setSettings] = useLocalStorage('settings', () => getDefaultSettings());\n *\n * // Disabled (returns initialValue, setValue is no-op)\n * const [value, setValue] = useLocalStorage(null, 'default');\n *\n * // Conditionally enabled\n * const [data, setData] = useLocalStorage(isEnabled ? 'my-key' : null, {});\n * ```\n */\nexport function useLocalStorage<T>(\n key: string | null | undefined,\n initialValue: T | (() => T),\n): readonly [T, (value: Updater<T>) => void] {\n const resolvedInitial = getInitialValue(initialValue);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) => {\n if (!key) {\n return () => {};\n }\n\n // Add to same-tab listeners\n if (!listeners.has(key)) {\n listeners.set(key, new Set());\n }\n listeners.get(key)!.add(onStoreChange);\n\n // Listen for cross-tab changes\n const handleStorageEvent = (event: StorageEvent) => {\n if (event.key === key) {\n onStoreChange();\n }\n };\n window.addEventListener('storage', handleStorageEvent);\n\n return () => {\n listeners.get(key)?.delete(onStoreChange);\n if (listeners.get(key)?.size === 0) {\n listeners.delete(key);\n }\n window.removeEventListener('storage', handleStorageEvent);\n };\n },\n [key],\n );\n\n const getSnapshot = useCallback((): T => {\n if (!key || !isLocalStorageAvailable()) {\n return resolvedInitial;\n }\n\n return parseJSON(localStorage.getItem(key), resolvedInitial);\n }, [key, resolvedInitial]);\n\n const getServerSnapshot = useCallback((): T => {\n return resolvedInitial;\n }, [resolvedInitial]);\n\n const storedValue = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n\n const setValue = useEvent((update: Updater<T>) => {\n if (!key || !isLocalStorageAvailable()) {\n return;\n }\n\n const currentValue = parseJSON<T>(\n localStorage.getItem(key),\n resolvedInitial,\n );\n const newValue =\n typeof update === 'function'\n ? (update as (prev: T) => T)(currentValue)\n : update;\n\n try {\n localStorage.setItem(key, JSON.stringify(newValue));\n notifyListeners(key);\n } catch (error) {\n console.error(`[useLocalStorage] Failed to save \"${key}\":`, error);\n }\n });\n\n return [storedValue, setValue] as const;\n}\n"],"mappings":";;;;;;;AAQA,MAAMM,4BAAY,IAAIC,KAA8B;;AAGpD,SAASE,gBAAgBC,KAAmB;AAC1CJ,WAAUK,IAAID,IAAI,EAAEE,SAASC,aAAaA,UAAU,CAAC;;;AAIvD,SAASC,0BAAmC;AAC1C,KAAI;EACF,MAAMC,UAAU;AAChBC,SAAOC,aAAaC,QAAQH,SAASA,QAAQ;AAC7CC,SAAOC,aAAaE,WAAWJ,QAAQ;AACvC,SAAO;SACD;AACN,SAAO;;;;AAKX,SAASK,UAAaC,OAAsBC,UAAgB;AAC1D,KAAID,UAAU,KACZ,QAAOC;AAGT,KAAI;AACF,SAAOC,KAAKC,MAAMH,MAAM;SAClB;AACN,SAAOC;;;;AAKX,SAASG,gBAAmBC,cAAgC;AAC1D,QAAO,OAAOA,iBAAiB,aAC1BA,cAA0B,GAC3BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCN,SAAOC,gBAAAjB,KAAAgB,cAAA;CAAA,MAAAE,IAAAC,EAAA,GAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAF,cAAA;AAImBI,OAAAL,gBAAgBC,aAAa;AAAAE,IAAA,KAAAF;AAAAE,IAAA,KAAAE;OAAAA,MAAAF,EAAA;CAArD,MAAAG,kBAAwBD;CAA8B,IAAAE;AAAA,KAAAJ,EAAA,OAAAlB,KAAA;AAGpDsB,QAAAC,kBAAA;AACE,OAAI,CAACvB,IAAG,QACCwB;AAIT,OAAI,CAAC5B,UAAS6B,IAAKzB,IAAI,CACrBJ,WAAS8B,IAAK1B,qBAAK,IAAIF,KAAK,CAAC;AAE/BF,aAASK,IAAKD,IAAI,CAAA2B,IAAMJ,cAAc;GAGtC,MAAAK,sBAA2BC,UAAA;AACzB,QAAIA,MAAK7B,QAASA,IAChBuB,gBAAe;;AAGnBjB,UAAMwB,iBAAkB,WAAWF,mBAAmB;AAAA,gBAE/C;AACLhC,cAASK,IAAKD,IAAY,EAAA+B,OAACR,cAAc;AACzC,QAAI3B,UAASK,IAAKD,IAAU,EAAAgC,SAAK,EAC/BpC,WAASmC,OAAQ/B,IAAI;AAEvBM,WAAM2B,oBAAqB,WAAWL,mBAAmB;;;AAE5DV,IAAA,KAAAlB;AAAAkB,IAAA,KAAAI;OAAAA,MAAAJ,EAAA;CA3BH,MAAAgB,YAAkBZ;CA6BhB,IAAAa;AAAA,KAAAjB,EAAA,OAAAlB,OAAAkB,EAAA,OAAAG,iBAAA;AAE8Bc,aAAA;AAC9B,OAAI,CAACnC,OAAD,CAASI,yBAAyB,CAAA,QAC7BiB;AACR,UAEMX,UAAUH,aAAY6B,QAASpC,IAAI,EAAEqB,gBAAgB;;AAC7DH,IAAA,KAAAlB;AAAAkB,IAAA,KAAAG;AAAAH,IAAA,KAAAiB;OAAAA,MAAAjB,EAAA;CAND,MAAAmB,cAAoBF;CAMO,IAAAG;AAAA,KAAApB,EAAA,OAAAG,iBAAA;AAEWiB,aAC7BjB;AACRH,IAAA,KAAAG;AAAAH,IAAA,KAAAoB;OAAAA,MAAApB,EAAA;CAED,MAAAsB,cAAoBjD,qBAClB2C,WACAG,aANwBC,GAQzB;CAAC,IAAAG;AAAA,KAAAvB,EAAA,OAAAlB,OAAAkB,EAAA,QAAAG,iBAAA;AAEwBoB,QAAAC,WAAA;AACxB,OAAI,CAAC1C,OAAD,CAASI,yBAAyB,CAAA;GAItC,MAAAuC,eAAqBjC,UACnBH,aAAY6B,QAASpC,IAAI,EACzBqB,gBACD;GACD,MAAAuB,WACE,OAAOF,WAAW,aACbA,OAA0BC,aACrB,GAFVD;AAIF,OAAA;AACEnC,iBAAYC,QAASR,KAAKa,KAAIgC,UAAWD,SAAS,CAAC;AACnD7C,oBAAgBC,IAAI;YAAA8C,IAAA;IACbC,MAAAA,QAAAA;AACPC,YAAOD,MAAO,qCAAqC/C,IAAG,KAAM+C,MAAM;;;AAErE7B,IAAA,KAAAlB;AAAAkB,IAAA,MAAAG;AAAAH,IAAA,MAAAuB;OAAAA,MAAAvB,EAAA;CApBD,MAAA+B,WAAiBzD,SAASiD,GAoBxB;CAAC,IAAAK;AAAA,KAAA5B,EAAA,QAAA+B,YAAA/B,EAAA,QAAAsB,aAAA;AAEIM,OAAA,CAACN,aAAaS,SAAS;AAAA/B,IAAA,MAAA+B;AAAA/B,IAAA,MAAAsB;AAAAtB,IAAA,MAAA4B;OAAAA,MAAA5B,EAAA;AAAA,QAAvB4B;;AA7EF,SAAAtB,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeStyles.js","names":[],"sources":["../../../src/utils/react/useMergeStyles.ts"],"sourcesContent":["import { mergeStyles, Styles } from '@tenphi/tasty';\nimport { useMemo } from 'react';\n\n/**\n * Hook to merge base styles with sub-element style props.\n *\n * This simplifies the common pattern of accepting props like `tabListStyles`,\n * `prefixStyles`, etc. that should merge into `styles.TabList`, `styles.Prefix`, etc.\n *\n * @param styles - Base styles object\n * @param subStylesMap - Mapping of sub-element names to their additional styles\n * @returns Merged styles object\n *\n * @example\n * ```tsx\n * const { styles, tabListStyles, prefixStyles, suffixStyles, ...rest } = props;\n *\n * const mergedStyles = useMergeStyles(styles, {\n * TabList: tabListStyles,\n * Prefix: prefixStyles,\n * Suffix: suffixStyles,\n * });\n *\n * return <TabsElement styles={mergedStyles} {...rest} />;\n * ```\n */\nexport function useMergeStyles(\n styles: Styles | undefined,\n subStylesMap: Record<string, Styles | undefined>,\n): Styles {\n // Extract values for dependency array - must be stable\n const subStylesValues = Object.values(subStylesMap);\n\n return useMemo(() => {\n // Build sub-element styles object from the map\n const subStyles: Styles = {};\n\n for (const [element, elementStyles] of Object.entries(subStylesMap)) {\n if (elementStyles != null) {\n subStyles[element] = elementStyles;\n }\n }\n\n // Merge base styles with sub-element styles\n return mergeStyles(styles, subStyles);\n }, [styles, ...subStylesValues]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,
|
|
1
|
+
{"version":3,"file":"useMergeStyles.js","names":["mergeStyles","Styles","useMemo","useMergeStyles","styles","subStylesMap","Record","subStylesValues","Object","values","subStyles","element","elementStyles","entries"],"sources":["../../../src/utils/react/useMergeStyles.ts"],"sourcesContent":["import { mergeStyles, Styles } from '@tenphi/tasty';\nimport { useMemo } from 'react';\n\n/**\n * Hook to merge base styles with sub-element style props.\n *\n * This simplifies the common pattern of accepting props like `tabListStyles`,\n * `prefixStyles`, etc. that should merge into `styles.TabList`, `styles.Prefix`, etc.\n *\n * @param styles - Base styles object\n * @param subStylesMap - Mapping of sub-element names to their additional styles\n * @returns Merged styles object\n *\n * @example\n * ```tsx\n * const { styles, tabListStyles, prefixStyles, suffixStyles, ...rest } = props;\n *\n * const mergedStyles = useMergeStyles(styles, {\n * TabList: tabListStyles,\n * Prefix: prefixStyles,\n * Suffix: suffixStyles,\n * });\n *\n * return <TabsElement styles={mergedStyles} {...rest} />;\n * ```\n */\nexport function useMergeStyles(\n styles: Styles | undefined,\n subStylesMap: Record<string, Styles | undefined>,\n): Styles {\n // Extract values for dependency array - must be stable\n const subStylesValues = Object.values(subStylesMap);\n\n return useMemo(() => {\n // Build sub-element styles object from the map\n const subStyles: Styles = {};\n\n for (const [element, elementStyles] of Object.entries(subStylesMap)) {\n if (elementStyles != null) {\n subStyles[element] = elementStyles;\n }\n }\n\n // Merge base styles with sub-element styles\n return mergeStyles(styles, subStyles);\n }, [styles, ...subStylesValues]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAgBG,eACdC,QACAC,cACQ;AAIR,QAAOH,cAAc;EAEnB,MAAMQ,YAAoB,EAAE;AAE5B,OAAK,MAAM,CAACC,SAASC,kBAAkBJ,OAAOK,QAAQR,aAAa,CACjE,KAAIO,iBAAiB,KACnBF,WAAUC,WAAWC;AAKzB,SAAOZ,YAAYI,QAAQM,UAAU;IACpC,CAACN,QAAQ,GAdYI,OAAOC,OAAOJ,aAAa,CAcpB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../_internal/hooks/use-event.js";
|
|
3
|
+
import { c } from "react-compiler-runtime";
|
|
3
4
|
|
|
4
5
|
//#region src/utils/react/useOverlayEscapeGuard.ts
|
|
5
6
|
/**
|
|
@@ -26,14 +27,29 @@ import { useEvent } from "../../_internal/hooks/use-event.js";
|
|
|
26
27
|
* closure, so the frozen copy still sees the current `isOpen`.
|
|
27
28
|
*/
|
|
28
29
|
function useOverlayEscapeGuard(overlayProps, isOpen) {
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
const $ = c(6);
|
|
31
|
+
let t0;
|
|
32
|
+
if ($[0] !== isOpen || $[1] !== overlayProps) {
|
|
33
|
+
t0 = (event) => {
|
|
34
|
+
if (event.key === "Escape" && !isOpen) return;
|
|
35
|
+
overlayProps.onKeyDown?.(event);
|
|
36
|
+
};
|
|
37
|
+
$[0] = isOpen;
|
|
38
|
+
$[1] = overlayProps;
|
|
39
|
+
$[2] = t0;
|
|
40
|
+
} else t0 = $[2];
|
|
41
|
+
const onKeyDown = useEvent(t0);
|
|
42
|
+
let t1;
|
|
43
|
+
if ($[3] !== onKeyDown || $[4] !== overlayProps) {
|
|
44
|
+
t1 = {
|
|
45
|
+
...overlayProps,
|
|
46
|
+
onKeyDown
|
|
47
|
+
};
|
|
48
|
+
$[3] = onKeyDown;
|
|
49
|
+
$[4] = overlayProps;
|
|
50
|
+
$[5] = t1;
|
|
51
|
+
} else t1 = $[5];
|
|
52
|
+
return t1;
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOverlayEscapeGuard.js","names":[],"sources":["../../../src/utils/react/useOverlayEscapeGuard.ts"],"sourcesContent":["import { useEvent } from '../../_internal';\n\nimport type { DOMAttributes, KeyboardEvent } from 'react';\n\ntype OverlayDOMProps = DOMAttributes<any>;\n\n/**\n * Stops a CLOSED overlay from answering for `Escape` (CUB-4839).\n *\n * `useOverlay`'s `Escape` handler calls `stopPropagation()` and\n * `preventDefault()` for every `Escape` it sees, and only THEN asks whether\n * this overlay is the topmost one allowed to act on it — unlike\n * `onInteractOutside`, which it gates on `isOpen` up front. An overlay that has\n * already closed therefore consumes the key and does nothing with it, so the\n * `Escape` meant for the Dialog around it closes nothing at all.\n *\n * That is reachable here because our overlays stay mounted for their exit\n * transition while still holding DOM focus: pick an option from a list inside a\n * Dialog and the very next `Escape` lands in the closing list.\n *\n * Passing `useOverlay` an `isKeyboardDismissDisabled` of its own does NOT work,\n * and that is the reason this exists. `DisplayTransition` preserves content\n * across an exit by replaying the children it stored while the overlay was\n * open, so every value that subtree captured — `isKeyboardDismissDisabled`\n * included — stays frozen at its open-state reading for exactly the window\n * this has to guard. `useEvent` gets around it by returning a handler whose\n * identity never changes while its body always runs the latest render's\n * closure, so the frozen copy still sees the current `isOpen`.\n */\nexport function useOverlayEscapeGuard<T extends OverlayDOMProps>(\n overlayProps: T,\n isOpen: boolean | undefined,\n): T {\n const onKeyDown = useEvent((event: KeyboardEvent<any>) => {\n // Decline it, so it reaches whoever can actually act on it.\n if (event.key === 'Escape' && !isOpen) return;\n\n overlayProps.onKeyDown?.(event);\n });\n\n return { ...overlayProps, onKeyDown };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useOverlayEscapeGuard.js","names":["useEvent","DOMAttributes","KeyboardEvent","OverlayDOMProps","useOverlayEscapeGuard","overlayProps","isOpen","$","_c","t0","event","key","onKeyDown","t1"],"sources":["../../../src/utils/react/useOverlayEscapeGuard.ts"],"sourcesContent":["import { useEvent } from '../../_internal';\n\nimport type { DOMAttributes, KeyboardEvent } from 'react';\n\ntype OverlayDOMProps = DOMAttributes<any>;\n\n/**\n * Stops a CLOSED overlay from answering for `Escape` (CUB-4839).\n *\n * `useOverlay`'s `Escape` handler calls `stopPropagation()` and\n * `preventDefault()` for every `Escape` it sees, and only THEN asks whether\n * this overlay is the topmost one allowed to act on it — unlike\n * `onInteractOutside`, which it gates on `isOpen` up front. An overlay that has\n * already closed therefore consumes the key and does nothing with it, so the\n * `Escape` meant for the Dialog around it closes nothing at all.\n *\n * That is reachable here because our overlays stay mounted for their exit\n * transition while still holding DOM focus: pick an option from a list inside a\n * Dialog and the very next `Escape` lands in the closing list.\n *\n * Passing `useOverlay` an `isKeyboardDismissDisabled` of its own does NOT work,\n * and that is the reason this exists. `DisplayTransition` preserves content\n * across an exit by replaying the children it stored while the overlay was\n * open, so every value that subtree captured — `isKeyboardDismissDisabled`\n * included — stays frozen at its open-state reading for exactly the window\n * this has to guard. `useEvent` gets around it by returning a handler whose\n * identity never changes while its body always runs the latest render's\n * closure, so the frozen copy still sees the current `isOpen`.\n */\nexport function useOverlayEscapeGuard<T extends OverlayDOMProps>(\n overlayProps: T,\n isOpen: boolean | undefined,\n): T {\n const onKeyDown = useEvent((event: KeyboardEvent<any>) => {\n // Decline it, so it reaches whoever can actually act on it.\n if (event.key === 'Escape' && !isOpen) return;\n\n overlayProps.onKeyDown?.(event);\n });\n\n return { ...overlayProps, onKeyDown };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAOI,sBAAAC,cAAAC,QAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAD,UAAAC,EAAA,OAAAF,cAAA;AAIsBI,QAAAC,UAAA;AAEzB,OAAIA,MAAKC,QAAS,YAAd,CAA2BL,OAAM;AAErCD,gBAAYO,YAAaF,MAAM;;AAChCH,IAAA,KAAAD;AAAAC,IAAA,KAAAF;AAAAE,IAAA,KAAAE;OAAAA,MAAAF,EAAA;CALD,MAAAK,YAAkBZ,SAASS,GAKzB;CAAC,IAAAI;AAAA,KAAAN,EAAA,OAAAK,aAAAL,EAAA,OAAAF,cAAA;AAEIQ,OAAA;GAAA,GAAKR;GAAYO;GAAa;AAAAL,IAAA,KAAAK;AAAAL,IAAA,KAAAF;AAAAE,IAAA,KAAAM;OAAAA,MAAAN,EAAA;AAAA,QAA9BM"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.184.0 | Cube Dev Team */
|
|
2
2
|
import { EventBusContext, useEventBus } from "./useEventBus.js";
|
|
3
|
-
import {
|
|
3
|
+
import { c } from "react-compiler-runtime";
|
|
4
|
+
import { useContext, useEffect, useRef } from "react";
|
|
4
5
|
|
|
5
6
|
//#region src/utils/react/usePopoverSync.ts
|
|
6
7
|
/**
|
|
@@ -73,82 +74,176 @@ function isLogicalDescendantOf(target, ancestorMenuId, ancestorContainer) {
|
|
|
73
74
|
* flips off, `wasOpenRef` is reset so re-enabling later still emits if
|
|
74
75
|
* `isOpen` is true at that moment.
|
|
75
76
|
*/
|
|
76
|
-
function usePopoverSync(
|
|
77
|
+
function usePopoverSync(t0) {
|
|
78
|
+
const $ = c(28);
|
|
79
|
+
const { menuId, isOpen, onClose, enabled: t1, triggerRef, containerRef, dismissOnInnerButtonPress: t2, closeOnPeerOpen: t3 } = t0;
|
|
80
|
+
const enabled = t1 === void 0 ? true : t1;
|
|
81
|
+
const dismissOnInnerButtonPress = t2 === void 0 ? true : t2;
|
|
82
|
+
const closeOnPeerOpen = t3 === void 0 ? true : t3;
|
|
77
83
|
const { emit, on } = useEventBus();
|
|
78
84
|
const isOpenRef = useRef(isOpen);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
85
|
+
let t4;
|
|
86
|
+
let t5;
|
|
87
|
+
if ($[0] !== isOpen) {
|
|
88
|
+
t4 = () => {
|
|
89
|
+
isOpenRef.current = isOpen;
|
|
90
|
+
};
|
|
91
|
+
t5 = [isOpen];
|
|
92
|
+
$[0] = isOpen;
|
|
93
|
+
$[1] = t4;
|
|
94
|
+
$[2] = t5;
|
|
95
|
+
} else {
|
|
96
|
+
t4 = $[1];
|
|
97
|
+
t5 = $[2];
|
|
98
|
+
}
|
|
99
|
+
useEffect(t4, t5);
|
|
82
100
|
const onCloseRef = useRef(onClose);
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
101
|
+
let t6;
|
|
102
|
+
let t7;
|
|
103
|
+
if ($[3] !== onClose) {
|
|
104
|
+
t6 = () => {
|
|
105
|
+
onCloseRef.current = onClose;
|
|
106
|
+
};
|
|
107
|
+
t7 = [onClose];
|
|
108
|
+
$[3] = onClose;
|
|
109
|
+
$[4] = t6;
|
|
110
|
+
$[5] = t7;
|
|
111
|
+
} else {
|
|
112
|
+
t6 = $[4];
|
|
113
|
+
t7 = $[5];
|
|
114
|
+
}
|
|
115
|
+
useEffect(t6, t7);
|
|
86
116
|
const containerRefRef = useRef(containerRef);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
117
|
+
let t8;
|
|
118
|
+
let t9;
|
|
119
|
+
if ($[6] !== containerRef) {
|
|
120
|
+
t8 = () => {
|
|
121
|
+
containerRefRef.current = containerRef;
|
|
122
|
+
};
|
|
123
|
+
t9 = [containerRef];
|
|
124
|
+
$[6] = containerRef;
|
|
125
|
+
$[7] = t8;
|
|
126
|
+
$[8] = t9;
|
|
127
|
+
} else {
|
|
128
|
+
t8 = $[7];
|
|
129
|
+
t9 = $[8];
|
|
130
|
+
}
|
|
131
|
+
useEffect(t8, t9);
|
|
90
132
|
const triggerRefRef = useRef(triggerRef);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
133
|
+
let t10;
|
|
134
|
+
let t11;
|
|
135
|
+
if ($[9] !== triggerRef) {
|
|
136
|
+
t10 = () => {
|
|
137
|
+
triggerRefRef.current = triggerRef;
|
|
138
|
+
};
|
|
139
|
+
t11 = [triggerRef];
|
|
140
|
+
$[9] = triggerRef;
|
|
141
|
+
$[10] = t10;
|
|
142
|
+
$[11] = t11;
|
|
143
|
+
} else {
|
|
144
|
+
t10 = $[10];
|
|
145
|
+
t11 = $[11];
|
|
146
|
+
}
|
|
147
|
+
useEffect(t10, t11);
|
|
148
|
+
let t12;
|
|
149
|
+
let t13;
|
|
150
|
+
if ($[12] !== closeOnPeerOpen || $[13] !== dismissOnInnerButtonPress || $[14] !== enabled || $[15] !== menuId || $[16] !== on) {
|
|
151
|
+
t12 = () => {
|
|
152
|
+
if (!enabled) return;
|
|
153
|
+
const offOpen = closeOnPeerOpen ? on("popover:open", (data) => {
|
|
154
|
+
if (data.menuId === menuId || !isOpenRef.current) return;
|
|
155
|
+
const container = containerRefRef.current?.current ?? null;
|
|
156
|
+
if (isLogicalDescendantOf(data.triggerEl, menuId, container)) return;
|
|
157
|
+
onCloseRef.current();
|
|
158
|
+
}) : null;
|
|
159
|
+
const offDismiss = dismissOnInnerButtonPress ? on("popover:dismiss-ancestor", (data_0) => {
|
|
160
|
+
if (!isOpenRef.current) return;
|
|
161
|
+
const container_0 = containerRefRef.current?.current;
|
|
162
|
+
const from = data_0?.from;
|
|
163
|
+
if (!container_0 || !from) return;
|
|
164
|
+
if (container_0.contains(from)) onCloseRef.current();
|
|
165
|
+
}) : null;
|
|
166
|
+
return () => {
|
|
167
|
+
offOpen?.();
|
|
168
|
+
offDismiss?.();
|
|
169
|
+
};
|
|
112
170
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
171
|
+
t13 = [
|
|
172
|
+
on,
|
|
173
|
+
menuId,
|
|
174
|
+
enabled,
|
|
175
|
+
dismissOnInnerButtonPress,
|
|
176
|
+
closeOnPeerOpen
|
|
177
|
+
];
|
|
178
|
+
$[12] = closeOnPeerOpen;
|
|
179
|
+
$[13] = dismissOnInnerButtonPress;
|
|
180
|
+
$[14] = enabled;
|
|
181
|
+
$[15] = menuId;
|
|
182
|
+
$[16] = on;
|
|
183
|
+
$[17] = t12;
|
|
184
|
+
$[18] = t13;
|
|
185
|
+
} else {
|
|
186
|
+
t12 = $[17];
|
|
187
|
+
t13 = $[18];
|
|
188
|
+
}
|
|
189
|
+
useEffect(t12, t13);
|
|
120
190
|
const wasOpenRef = useRef(false);
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
191
|
+
let t14;
|
|
192
|
+
let t15;
|
|
193
|
+
if ($[19] !== emit || $[20] !== enabled || $[21] !== isOpen || $[22] !== menuId) {
|
|
194
|
+
t14 = () => {
|
|
195
|
+
if (!enabled) {
|
|
196
|
+
if (wasOpenRef.current) openPopovers.delete(menuId);
|
|
197
|
+
wasOpenRef.current = false;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (isOpen && !wasOpenRef.current) {
|
|
201
|
+
wasOpenRef.current = true;
|
|
202
|
+
openPopovers.set(menuId, {
|
|
203
|
+
getContainerEl: () => containerRefRef.current?.current ?? null,
|
|
204
|
+
getTriggerEl: () => triggerRefRef.current?.current ?? null
|
|
205
|
+
});
|
|
206
|
+
emit("popover:open", {
|
|
207
|
+
menuId,
|
|
208
|
+
triggerEl: triggerRefRef.current?.current ?? null
|
|
209
|
+
});
|
|
210
|
+
} else if (!isOpen && wasOpenRef.current) {
|
|
211
|
+
wasOpenRef.current = false;
|
|
212
|
+
openPopovers.delete(menuId);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
t15 = [
|
|
216
|
+
isOpen,
|
|
217
|
+
emit,
|
|
218
|
+
menuId,
|
|
219
|
+
enabled
|
|
220
|
+
];
|
|
221
|
+
$[19] = emit;
|
|
222
|
+
$[20] = enabled;
|
|
223
|
+
$[21] = isOpen;
|
|
224
|
+
$[22] = menuId;
|
|
225
|
+
$[23] = t14;
|
|
226
|
+
$[24] = t15;
|
|
227
|
+
} else {
|
|
228
|
+
t14 = $[23];
|
|
229
|
+
t15 = $[24];
|
|
230
|
+
}
|
|
231
|
+
useEffect(t14, t15);
|
|
232
|
+
let t16;
|
|
233
|
+
let t17;
|
|
234
|
+
if ($[25] !== menuId) {
|
|
235
|
+
t16 = () => () => {
|
|
149
236
|
openPopovers.delete(menuId);
|
|
150
237
|
};
|
|
151
|
-
|
|
238
|
+
t17 = [menuId];
|
|
239
|
+
$[25] = menuId;
|
|
240
|
+
$[26] = t16;
|
|
241
|
+
$[27] = t17;
|
|
242
|
+
} else {
|
|
243
|
+
t16 = $[26];
|
|
244
|
+
t17 = $[27];
|
|
245
|
+
}
|
|
246
|
+
useEffect(t16, t17);
|
|
152
247
|
}
|
|
153
248
|
/**
|
|
154
249
|
* Hook that returns a dispatcher to close the popover that contains a given
|
|
@@ -177,11 +272,18 @@ function usePopoverSync({ menuId, isOpen, onClose, enabled = true, triggerRef, c
|
|
|
177
272
|
* the dismiss flow gracefully degrades rather than throwing.
|
|
178
273
|
*/
|
|
179
274
|
function useDismissParentPopover() {
|
|
275
|
+
const $ = c(2);
|
|
180
276
|
const emit = useContext(EventBusContext)?.emit;
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
277
|
+
let t0;
|
|
278
|
+
if ($[0] !== emit) {
|
|
279
|
+
t0 = (from) => {
|
|
280
|
+
if (!from || !emit) return;
|
|
281
|
+
emit("popover:dismiss-ancestor", { from });
|
|
282
|
+
};
|
|
283
|
+
$[0] = emit;
|
|
284
|
+
$[1] = t0;
|
|
285
|
+
} else t0 = $[1];
|
|
286
|
+
return t0;
|
|
185
287
|
}
|
|
186
288
|
|
|
187
289
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePopoverSync.js","names":[],"sources":["../../../src/utils/react/usePopoverSync.ts"],"sourcesContent":["import { RefObject, useCallback, useContext, useEffect, useRef } from 'react';\n\nimport { EventBusContext, useEventBus } from './useEventBus';\n\nexport interface UsePopoverSyncOptions {\n /** Stable identifier for this popover instance (typically a generateRandomId() memo). */\n menuId: string;\n /** Current open state of this popover. */\n isOpen: boolean;\n /** Called when another popover opens while this one is open. */\n onClose: () => void;\n /**\n * When `false`, this popover does not participate in the sync (no listening,\n * no emitting). Useful for \"dummy\" triggers that proxy a real one (see\n * `MenuTrigger`'s `isDummy`). Defaults to `true`.\n */\n enabled?: boolean;\n /**\n * Ref to the popover's trigger element. When provided, the element is\n * included in the `popover:open` emit payload so peers can detect whether\n * the new opener is nested inside their own overlay (and skip closing in\n * that case). Optional — omitting it preserves the legacy \"always close on\n * peer open\" behaviour.\n */\n triggerRef?: RefObject<HTMLElement | null>;\n /**\n * Ref to the overlay/container element that hosts this popover's content.\n * When provided, the listener performs a DOM `contains()` check on incoming\n * peer triggers: peers whose trigger lives inside this container are\n * considered nested children and do NOT close us.\n */\n containerRef?: RefObject<HTMLElement | null>;\n /**\n * Whether this overlay closes when a Button/ItemButton inside its container\n * is pressed. Defaults to `true` (popover semantics — popovers are transient\n * surfaces and any action inside them should dismiss them). Set to `false`\n * for modals/trays/fullscreen dialogs — buttons inside a Dialog should not\n * auto-close it. Requires `containerRef` to be set; without it the listener\n * has no way to determine whether the dispatching button is \"inside\" this\n * overlay and is effectively a no-op.\n */\n dismissOnInnerButtonPress?: boolean;\n /**\n * Whether this overlay closes when a peer popover opens. Defaults to `true`\n * (popover semantics — only one popover open at a time). Set to `false` for\n * modals/trays/fullscreen dialogs so a peer popover opening cannot bypass\n * the dialog's own `isDismissable` / `onClose` handling and yank it shut.\n *\n * The host still EMITS `popover:open` regardless of this flag, so opening a\n * modal/tray correctly dismisses any peer popover that was open before.\n */\n closeOnPeerOpen?: boolean;\n}\n\ninterface PopoverOpenPayload {\n menuId: string;\n triggerEl: Element | null;\n}\n\ninterface PopoverDismissAncestorPayload {\n /** The DOM node of the button that requested the dismiss. */\n from: Element | null;\n}\n\ninterface PopoverRegistryEntry {\n getContainerEl: () => Element | null;\n getTriggerEl: () => Element | null;\n}\n\n/**\n * Module-level registry of currently open popovers. Lets us resolve the\n * LOGICAL parent of an arbitrary element across portal boundaries.\n *\n * Popover content is portaled to a shared root (`document.body` by default —\n * see `Overlay.tsx`), so a grandchild popover's trigger lives inside a\n * sibling portal rather than physically inside its grandparent's container.\n * A naive `container.contains(triggerEl)` check therefore misses the\n * relationship and closes the grandparent — the bug that surfaces with 3+\n * levels of `SubMenuTrigger` nesting.\n *\n * The registry stores closures over the host's refs so reads always see the\n * latest `.current` value without forcing a re-register per render.\n */\nconst openPopovers = new Map<string, PopoverRegistryEntry>();\n\n/**\n * Find the open popover whose container directly contains `target`. Returns\n * `null` for elements that live outside every registered popover (e.g. a\n * top-level trigger button rendered next to its overlay root).\n */\nfunction findOwningPopover(\n target: Element | null,\n): [string, PopoverRegistryEntry] | null {\n if (!target) return null;\n for (const entry of openPopovers) {\n if (entry[1].getContainerEl()?.contains(target)) {\n return entry;\n }\n }\n return null;\n}\n\n/**\n * Returns `true` when `target` is nested inside the overlay identified by\n * `ancestorMenuId` — either as a direct DOM descendant of `ancestorContainer`\n * or as a descendant of a chain of popovers whose triggers eventually land\n * inside it. Used by `popover:open` peers to avoid closing themselves when a\n * grand-child overlay opens through a portal.\n */\nfunction isLogicalDescendantOf(\n target: Element | null,\n ancestorMenuId: string,\n ancestorContainer: Element | null,\n): boolean {\n if (ancestorContainer && target && ancestorContainer.contains(target)) {\n return true;\n }\n let cur: Element | null = target;\n const visited = new Set<string>();\n while (cur) {\n const owner = findOwningPopover(cur);\n if (!owner) return false;\n const [id, entry] = owner;\n if (visited.has(id)) return false;\n visited.add(id);\n if (id === ancestorMenuId) return true;\n cur = entry.getTriggerEl();\n }\n return false;\n}\n\n/**\n * Coordinates the \"only one popover open at a time\" invariant via the EventBus.\n *\n * - When `isOpen` flips `false -> true`, emits `popover:open` once.\n * - While open, listens for peers' `popover:open` events and calls `onClose`.\n *\n * Implementation notes (ALL of these matter — losing any one re-introduces a\n * race that surfaces only under rapid trigger switching, which is hard to\n * reproduce in tests):\n *\n * 1. `isOpen` and `onClose` are read through refs inside the listener, so the\n * subscription effect's dep array does NOT include `isOpen`/`onClose`. This\n * keeps the listener identity stable across open/close transitions and\n * avoids the unsubscribe-emit-resubscribe window where an emit can be\n * delivered to a stale listener (or no listener).\n * 2. The emit fires only on the `false -> true` transition, gated by\n * `wasOpenRef`. A re-render where `isOpen` is still `true` must NOT\n * re-emit, otherwise it could re-trigger listeners on peers that just\n * opened in the same render flush.\n * 3. The `enabled` flag short-circuits both effects symmetrically. When it\n * flips off, `wasOpenRef` is reset so re-enabling later still emits if\n * `isOpen` is true at that moment.\n */\nexport function usePopoverSync({\n menuId,\n isOpen,\n onClose,\n enabled = true,\n triggerRef,\n containerRef,\n dismissOnInnerButtonPress = true,\n closeOnPeerOpen = true,\n}: UsePopoverSyncOptions): void {\n const { emit, on } = useEventBus();\n\n const isOpenRef = useRef(isOpen);\n useEffect(() => {\n isOpenRef.current = isOpen;\n }, [isOpen]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n // Track the latest containerRef via a stable ref-of-refs so the listener\n // never resubscribes when callers pass freshly-created ref wrappers across\n // renders. Same pattern as `onCloseRef` above — without this the listener's\n // effect would churn for any caller that doesn't memoize its refs.\n const containerRefRef = useRef(containerRef);\n useEffect(() => {\n containerRefRef.current = containerRef;\n }, [containerRef]);\n\n const triggerRefRef = useRef(triggerRef);\n useEffect(() => {\n triggerRefRef.current = triggerRef;\n }, [triggerRef]);\n\n useEffect(() => {\n if (!enabled) return;\n\n // `popover:open` listener — gated on `closeOnPeerOpen`. Modals/trays opt\n // out so a peer popover opening cannot bypass the dialog's\n // `isDismissable` / `onClose` handling and call `state.close()` directly.\n // Note: the EMIT side (lower in this hook) still fires regardless, so\n // opening a modal still correctly dismisses peer popovers.\n const offOpen = closeOnPeerOpen\n ? on('popover:open', (data: PopoverOpenPayload) => {\n if (data.menuId === menuId || !isOpenRef.current) return;\n const container = containerRefRef.current?.current ?? null;\n // Nested-popover guard: stay open when the opening peer's trigger is\n // a LOGICAL descendant of our overlay. Direct DOM containment only\n // covers the first level — for grand-child popovers the trigger lives\n // in a sibling portal, so we walk the registered popover chain back\n // up via each parent's trigger element. Without this, opening a\n // third-level `SubMenuTrigger` would close every ancestor menu.\n if (isLogicalDescendantOf(data.triggerEl, menuId, container)) return;\n onCloseRef.current();\n })\n : null;\n\n // `popover:dismiss-ancestor` is emitted by `Button` / `ItemButton` (and any\n // consumer using `useDismissParentPopover`) after their `onPress` runs.\n // Only popover-type overlays subscribe; modals/trays opt out via\n // `dismissOnInnerButtonPress: false` so a Button inside a Dialog content\n // does NOT auto-close the Dialog.\n const offDismiss = dismissOnInnerButtonPress\n ? on(\n 'popover:dismiss-ancestor',\n (data: PopoverDismissAncestorPayload) => {\n if (!isOpenRef.current) return;\n const container = containerRefRef.current?.current;\n const from = data?.from;\n // Require both a container and an originating element so we can do\n // the contains-check. Hosts without `containerRef` (e.g.\n // `use-anchored-menu`, `use-context-menu`) are silently no-op.\n if (!container || !from) return;\n if (container.contains(from)) onCloseRef.current();\n },\n )\n : null;\n\n return () => {\n offOpen?.();\n offDismiss?.();\n };\n }, [on, menuId, enabled, dismissOnInnerButtonPress, closeOnPeerOpen]);\n\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (!enabled) {\n if (wasOpenRef.current) {\n openPopovers.delete(menuId);\n }\n wasOpenRef.current = false;\n return;\n }\n if (isOpen && !wasOpenRef.current) {\n wasOpenRef.current = true;\n // Register BEFORE emitting so peers' listeners (deferred via the\n // bus's `setTimeout(0)`) can already see us in the registry when\n // they walk the logical chain.\n openPopovers.set(menuId, {\n getContainerEl: () => containerRefRef.current?.current ?? null,\n getTriggerEl: () => triggerRefRef.current?.current ?? null,\n });\n emit<PopoverOpenPayload>('popover:open', {\n menuId,\n triggerEl: triggerRefRef.current?.current ?? null,\n });\n } else if (!isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n openPopovers.delete(menuId);\n }\n }, [isOpen, emit, menuId, enabled]);\n\n // Final cleanup on unmount: covers the case where a host unmounts while\n // still flagged open (e.g. a parent unmount tears down a child popover\n // before its close transition runs).\n useEffect(() => {\n return () => {\n openPopovers.delete(menuId);\n };\n }, [menuId]);\n}\n\n/**\n * Hook that returns a dispatcher to close the popover that contains a given\n * DOM element. Used by `Button` / `ItemButton` to implement the default\n * \"press inside a popover closes the popover\" behaviour. Custom (non-Cube)\n * interactive controls can call this directly:\n *\n * ```tsx\n * const dismiss = useDismissParentPopover();\n * <MyCustomPressable onPress={(e) => { doThing(); dismiss(e.currentTarget); }} />\n * ```\n *\n * The actual dismiss is dispatched through the EventBus, which defers via\n * `setTimeout(0)` — so the user's synchronous handler (and any React state\n * updates it triggers) flushes BEFORE the popover closes. This is critical\n * for the \"open a hoisted modal from a popover footer\" case: the modal\n * mounts first, then the popover closes.\n *\n * Only popover-type containers (those that pass `dismissOnInnerButtonPress`\n * as `true`, the default) react to the event. Modal/tray/fullscreen Dialog\n * containers explicitly opt out so a Button inside their content does not\n * auto-close them.\n *\n * When called outside an `EventBusProvider` (e.g. in unit tests that render\n * a Button without wrapping in `<Root>`), the returned function is a no-op —\n * the dismiss flow gracefully degrades rather than throwing.\n */\nexport function useDismissParentPopover() {\n // Read context defensively: `Button` / `ItemButton` use this hook\n // unconditionally, but tests (and standalone usages outside `<Root>`) may\n // mount them without an `EventBusProvider`. A throw would crash every\n // Button render in those cases.\n const bus = useContext(EventBusContext);\n const emit = bus?.emit;\n return useCallback(\n (from: Element | null) => {\n if (!from || !emit) return;\n emit<PopoverDismissAncestorPayload>('popover:dismiss-ancestor', { from });\n },\n [emit],\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"usePopoverSync.js","names":["RefObject","useCallback","useContext","useEffect","useRef","EventBusContext","useEventBus","UsePopoverSyncOptions","menuId","isOpen","onClose","enabled","triggerRef","HTMLElement","containerRef","dismissOnInnerButtonPress","closeOnPeerOpen","PopoverOpenPayload","triggerEl","Element","PopoverDismissAncestorPayload","from","PopoverRegistryEntry","getContainerEl","getTriggerEl","openPopovers","Map","findOwningPopover","target","entry","contains","isLogicalDescendantOf","ancestorMenuId","ancestorContainer","cur","visited","Set","owner","id","has","add","usePopoverSync","t0","$","_c","t1","t2","t3","undefined","emit","on","isOpenRef","t4","t5","current","onCloseRef","t6","t7","containerRefRef","t8","t9","triggerRefRef","t10","t11","t12","t13","offOpen","data","container","offDismiss","data_0","container_0","wasOpenRef","t14","t15","delete","set","t16","t17","useDismissParentPopover","bus"],"sources":["../../../src/utils/react/usePopoverSync.ts"],"sourcesContent":["import { RefObject, useCallback, useContext, useEffect, useRef } from 'react';\n\nimport { EventBusContext, useEventBus } from './useEventBus';\n\nexport interface UsePopoverSyncOptions {\n /** Stable identifier for this popover instance (typically a generateRandomId() memo). */\n menuId: string;\n /** Current open state of this popover. */\n isOpen: boolean;\n /** Called when another popover opens while this one is open. */\n onClose: () => void;\n /**\n * When `false`, this popover does not participate in the sync (no listening,\n * no emitting). Useful for \"dummy\" triggers that proxy a real one (see\n * `MenuTrigger`'s `isDummy`). Defaults to `true`.\n */\n enabled?: boolean;\n /**\n * Ref to the popover's trigger element. When provided, the element is\n * included in the `popover:open` emit payload so peers can detect whether\n * the new opener is nested inside their own overlay (and skip closing in\n * that case). Optional — omitting it preserves the legacy \"always close on\n * peer open\" behaviour.\n */\n triggerRef?: RefObject<HTMLElement | null>;\n /**\n * Ref to the overlay/container element that hosts this popover's content.\n * When provided, the listener performs a DOM `contains()` check on incoming\n * peer triggers: peers whose trigger lives inside this container are\n * considered nested children and do NOT close us.\n */\n containerRef?: RefObject<HTMLElement | null>;\n /**\n * Whether this overlay closes when a Button/ItemButton inside its container\n * is pressed. Defaults to `true` (popover semantics — popovers are transient\n * surfaces and any action inside them should dismiss them). Set to `false`\n * for modals/trays/fullscreen dialogs — buttons inside a Dialog should not\n * auto-close it. Requires `containerRef` to be set; without it the listener\n * has no way to determine whether the dispatching button is \"inside\" this\n * overlay and is effectively a no-op.\n */\n dismissOnInnerButtonPress?: boolean;\n /**\n * Whether this overlay closes when a peer popover opens. Defaults to `true`\n * (popover semantics — only one popover open at a time). Set to `false` for\n * modals/trays/fullscreen dialogs so a peer popover opening cannot bypass\n * the dialog's own `isDismissable` / `onClose` handling and yank it shut.\n *\n * The host still EMITS `popover:open` regardless of this flag, so opening a\n * modal/tray correctly dismisses any peer popover that was open before.\n */\n closeOnPeerOpen?: boolean;\n}\n\ninterface PopoverOpenPayload {\n menuId: string;\n triggerEl: Element | null;\n}\n\ninterface PopoverDismissAncestorPayload {\n /** The DOM node of the button that requested the dismiss. */\n from: Element | null;\n}\n\ninterface PopoverRegistryEntry {\n getContainerEl: () => Element | null;\n getTriggerEl: () => Element | null;\n}\n\n/**\n * Module-level registry of currently open popovers. Lets us resolve the\n * LOGICAL parent of an arbitrary element across portal boundaries.\n *\n * Popover content is portaled to a shared root (`document.body` by default —\n * see `Overlay.tsx`), so a grandchild popover's trigger lives inside a\n * sibling portal rather than physically inside its grandparent's container.\n * A naive `container.contains(triggerEl)` check therefore misses the\n * relationship and closes the grandparent — the bug that surfaces with 3+\n * levels of `SubMenuTrigger` nesting.\n *\n * The registry stores closures over the host's refs so reads always see the\n * latest `.current` value without forcing a re-register per render.\n */\nconst openPopovers = new Map<string, PopoverRegistryEntry>();\n\n/**\n * Find the open popover whose container directly contains `target`. Returns\n * `null` for elements that live outside every registered popover (e.g. a\n * top-level trigger button rendered next to its overlay root).\n */\nfunction findOwningPopover(\n target: Element | null,\n): [string, PopoverRegistryEntry] | null {\n if (!target) return null;\n for (const entry of openPopovers) {\n if (entry[1].getContainerEl()?.contains(target)) {\n return entry;\n }\n }\n return null;\n}\n\n/**\n * Returns `true` when `target` is nested inside the overlay identified by\n * `ancestorMenuId` — either as a direct DOM descendant of `ancestorContainer`\n * or as a descendant of a chain of popovers whose triggers eventually land\n * inside it. Used by `popover:open` peers to avoid closing themselves when a\n * grand-child overlay opens through a portal.\n */\nfunction isLogicalDescendantOf(\n target: Element | null,\n ancestorMenuId: string,\n ancestorContainer: Element | null,\n): boolean {\n if (ancestorContainer && target && ancestorContainer.contains(target)) {\n return true;\n }\n let cur: Element | null = target;\n const visited = new Set<string>();\n while (cur) {\n const owner = findOwningPopover(cur);\n if (!owner) return false;\n const [id, entry] = owner;\n if (visited.has(id)) return false;\n visited.add(id);\n if (id === ancestorMenuId) return true;\n cur = entry.getTriggerEl();\n }\n return false;\n}\n\n/**\n * Coordinates the \"only one popover open at a time\" invariant via the EventBus.\n *\n * - When `isOpen` flips `false -> true`, emits `popover:open` once.\n * - While open, listens for peers' `popover:open` events and calls `onClose`.\n *\n * Implementation notes (ALL of these matter — losing any one re-introduces a\n * race that surfaces only under rapid trigger switching, which is hard to\n * reproduce in tests):\n *\n * 1. `isOpen` and `onClose` are read through refs inside the listener, so the\n * subscription effect's dep array does NOT include `isOpen`/`onClose`. This\n * keeps the listener identity stable across open/close transitions and\n * avoids the unsubscribe-emit-resubscribe window where an emit can be\n * delivered to a stale listener (or no listener).\n * 2. The emit fires only on the `false -> true` transition, gated by\n * `wasOpenRef`. A re-render where `isOpen` is still `true` must NOT\n * re-emit, otherwise it could re-trigger listeners on peers that just\n * opened in the same render flush.\n * 3. The `enabled` flag short-circuits both effects symmetrically. When it\n * flips off, `wasOpenRef` is reset so re-enabling later still emits if\n * `isOpen` is true at that moment.\n */\nexport function usePopoverSync({\n menuId,\n isOpen,\n onClose,\n enabled = true,\n triggerRef,\n containerRef,\n dismissOnInnerButtonPress = true,\n closeOnPeerOpen = true,\n}: UsePopoverSyncOptions): void {\n const { emit, on } = useEventBus();\n\n const isOpenRef = useRef(isOpen);\n useEffect(() => {\n isOpenRef.current = isOpen;\n }, [isOpen]);\n\n const onCloseRef = useRef(onClose);\n useEffect(() => {\n onCloseRef.current = onClose;\n }, [onClose]);\n\n // Track the latest containerRef via a stable ref-of-refs so the listener\n // never resubscribes when callers pass freshly-created ref wrappers across\n // renders. Same pattern as `onCloseRef` above — without this the listener's\n // effect would churn for any caller that doesn't memoize its refs.\n const containerRefRef = useRef(containerRef);\n useEffect(() => {\n containerRefRef.current = containerRef;\n }, [containerRef]);\n\n const triggerRefRef = useRef(triggerRef);\n useEffect(() => {\n triggerRefRef.current = triggerRef;\n }, [triggerRef]);\n\n useEffect(() => {\n if (!enabled) return;\n\n // `popover:open` listener — gated on `closeOnPeerOpen`. Modals/trays opt\n // out so a peer popover opening cannot bypass the dialog's\n // `isDismissable` / `onClose` handling and call `state.close()` directly.\n // Note: the EMIT side (lower in this hook) still fires regardless, so\n // opening a modal still correctly dismisses peer popovers.\n const offOpen = closeOnPeerOpen\n ? on('popover:open', (data: PopoverOpenPayload) => {\n if (data.menuId === menuId || !isOpenRef.current) return;\n const container = containerRefRef.current?.current ?? null;\n // Nested-popover guard: stay open when the opening peer's trigger is\n // a LOGICAL descendant of our overlay. Direct DOM containment only\n // covers the first level — for grand-child popovers the trigger lives\n // in a sibling portal, so we walk the registered popover chain back\n // up via each parent's trigger element. Without this, opening a\n // third-level `SubMenuTrigger` would close every ancestor menu.\n if (isLogicalDescendantOf(data.triggerEl, menuId, container)) return;\n onCloseRef.current();\n })\n : null;\n\n // `popover:dismiss-ancestor` is emitted by `Button` / `ItemButton` (and any\n // consumer using `useDismissParentPopover`) after their `onPress` runs.\n // Only popover-type overlays subscribe; modals/trays opt out via\n // `dismissOnInnerButtonPress: false` so a Button inside a Dialog content\n // does NOT auto-close the Dialog.\n const offDismiss = dismissOnInnerButtonPress\n ? on(\n 'popover:dismiss-ancestor',\n (data: PopoverDismissAncestorPayload) => {\n if (!isOpenRef.current) return;\n const container = containerRefRef.current?.current;\n const from = data?.from;\n // Require both a container and an originating element so we can do\n // the contains-check. Hosts without `containerRef` (e.g.\n // `use-anchored-menu`, `use-context-menu`) are silently no-op.\n if (!container || !from) return;\n if (container.contains(from)) onCloseRef.current();\n },\n )\n : null;\n\n return () => {\n offOpen?.();\n offDismiss?.();\n };\n }, [on, menuId, enabled, dismissOnInnerButtonPress, closeOnPeerOpen]);\n\n const wasOpenRef = useRef(false);\n useEffect(() => {\n if (!enabled) {\n if (wasOpenRef.current) {\n openPopovers.delete(menuId);\n }\n wasOpenRef.current = false;\n return;\n }\n if (isOpen && !wasOpenRef.current) {\n wasOpenRef.current = true;\n // Register BEFORE emitting so peers' listeners (deferred via the\n // bus's `setTimeout(0)`) can already see us in the registry when\n // they walk the logical chain.\n openPopovers.set(menuId, {\n getContainerEl: () => containerRefRef.current?.current ?? null,\n getTriggerEl: () => triggerRefRef.current?.current ?? null,\n });\n emit<PopoverOpenPayload>('popover:open', {\n menuId,\n triggerEl: triggerRefRef.current?.current ?? null,\n });\n } else if (!isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n openPopovers.delete(menuId);\n }\n }, [isOpen, emit, menuId, enabled]);\n\n // Final cleanup on unmount: covers the case where a host unmounts while\n // still flagged open (e.g. a parent unmount tears down a child popover\n // before its close transition runs).\n useEffect(() => {\n return () => {\n openPopovers.delete(menuId);\n };\n }, [menuId]);\n}\n\n/**\n * Hook that returns a dispatcher to close the popover that contains a given\n * DOM element. Used by `Button` / `ItemButton` to implement the default\n * \"press inside a popover closes the popover\" behaviour. Custom (non-Cube)\n * interactive controls can call this directly:\n *\n * ```tsx\n * const dismiss = useDismissParentPopover();\n * <MyCustomPressable onPress={(e) => { doThing(); dismiss(e.currentTarget); }} />\n * ```\n *\n * The actual dismiss is dispatched through the EventBus, which defers via\n * `setTimeout(0)` — so the user's synchronous handler (and any React state\n * updates it triggers) flushes BEFORE the popover closes. This is critical\n * for the \"open a hoisted modal from a popover footer\" case: the modal\n * mounts first, then the popover closes.\n *\n * Only popover-type containers (those that pass `dismissOnInnerButtonPress`\n * as `true`, the default) react to the event. Modal/tray/fullscreen Dialog\n * containers explicitly opt out so a Button inside their content does not\n * auto-close them.\n *\n * When called outside an `EventBusProvider` (e.g. in unit tests that render\n * a Button without wrapping in `<Root>`), the returned function is a no-op —\n * the dismiss flow gracefully degrades rather than throwing.\n */\nexport function useDismissParentPopover() {\n // Read context defensively: `Button` / `ItemButton` use this hook\n // unconditionally, but tests (and standalone usages outside `<Root>`) may\n // mount them without an `EventBusProvider`. A throw would crash every\n // Button render in those cases.\n const bus = useContext(EventBusContext);\n const emit = bus?.emit;\n return useCallback(\n (from: Element | null) => {\n if (!from || !emit) return;\n emit<PopoverDismissAncestorPayload>('popover:dismiss-ancestor', { from });\n },\n [emit],\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQaProps.js","names":[],"sources":["../../../src/utils/react/useQaProps.ts"],"sourcesContent":["type Props = {\n qa?: string;\n qaVal?: string;\n 'data-qa'?: string;\n 'data-qa-val'?: string;\n};\n\n/**\n * Processes QA props.\n * If `qa` or `qaVal` props are present, they are not modified and have higher priority.\n * Otherwise, maps `data-qa` to `qa` and `data-qa-val` to `qaVal`.\n * Data attributes are always removed.\n * Modifies the original props object without copying it.\n * Accepts only non-falsy values, otherwise deletes both props.\n *\n * @param props - The object to process\n * @returns The modified object\n */\nexport function useQaProps<T extends Props>(props: T): T {\n // Helper function to process qa attributes\n const processQaAttribute = (propName: string, dataAttrName: string) => {\n if (props[propName] !== undefined || props[dataAttrName] !== undefined) {\n const propValue = props[propName];\n const dataAttrValue = props[dataAttrName];\n\n if (!propValue) {\n if (dataAttrValue) {\n // If prop is empty but data-attr is truthy, map data-attr to prop\n props[propName] = dataAttrValue;\n } else {\n // Both values are falsy, delete both\n delete props[propName];\n }\n }\n\n delete props[dataAttrName];\n }\n };\n\n // Process qa attributes\n processQaAttribute('qa', 'data-qa');\n processQaAttribute('qaVal', 'data-qa-val');\n\n return props;\n}\n"],"mappings":";;;;;;;;;;;;;AAkBA,
|
|
1
|
+
{"version":3,"file":"useQaProps.js","names":["Props","qa","qaVal","useQaProps","props","T","processQaAttribute","propName","dataAttrName","undefined","propValue","dataAttrValue"],"sources":["../../../src/utils/react/useQaProps.ts"],"sourcesContent":["type Props = {\n qa?: string;\n qaVal?: string;\n 'data-qa'?: string;\n 'data-qa-val'?: string;\n};\n\n/**\n * Processes QA props.\n * If `qa` or `qaVal` props are present, they are not modified and have higher priority.\n * Otherwise, maps `data-qa` to `qa` and `data-qa-val` to `qaVal`.\n * Data attributes are always removed.\n * Modifies the original props object without copying it.\n * Accepts only non-falsy values, otherwise deletes both props.\n *\n * @param props - The object to process\n * @returns The modified object\n */\nexport function useQaProps<T extends Props>(props: T): T {\n // Helper function to process qa attributes\n const processQaAttribute = (propName: string, dataAttrName: string) => {\n if (props[propName] !== undefined || props[dataAttrName] !== undefined) {\n const propValue = props[propName];\n const dataAttrValue = props[dataAttrName];\n\n if (!propValue) {\n if (dataAttrValue) {\n // If prop is empty but data-attr is truthy, map data-attr to prop\n props[propName] = dataAttrValue;\n } else {\n // Both values are falsy, delete both\n delete props[propName];\n }\n }\n\n delete props[dataAttrName];\n }\n };\n\n // Process qa attributes\n processQaAttribute('qa', 'data-qa');\n processQaAttribute('qaVal', 'data-qa-val');\n\n return props;\n}\n"],"mappings":";;;;;;;;;;;;;AAkBA,SAAgBG,WAA4BC,OAAa;CAEvD,MAAME,sBAAsBC,UAAkBC,iBAAyB;AACrE,MAAIJ,MAAMG,cAAcE,UAAaL,MAAMI,kBAAkBC,QAAW;GACtE,MAAMC,YAAYN,MAAMG;GACxB,MAAMI,gBAAgBP,MAAMI;AAE5B,OAAI,CAACE,UACH,KAAIC,cAEFP,OAAMG,YAAYI;OAGlB,QAAOP,MAAMG;AAIjB,UAAOH,MAAMI;;;AAKjBF,oBAAmB,MAAM,UAAU;AACnCA,oBAAmB,SAAS,cAAc;AAE1C,QAAOF"}
|