@cube-dev/ui-kit 0.145.1 → 0.145.2
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 +8 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.d.ts +1 -0
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +1 -1
- package/dist/components/content/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.js +18 -1
- package/dist/components/layout/Board/Board.js.map +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +6 -4
- package/dist/components/layout/Board/WidgetHost.js.map +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +17 -12
- package/dist/components/layout/Board/use-board-registry.js.map +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.d.ts +2 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Modal/types.d.ts +1 -0
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.d.ts +2 -0
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/index.d.ts +1 -0
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { collides, getFirstCollision } from "./collision.js";
|
|
3
3
|
import { sortLayoutItemsByColRow, sortLayoutItemsByRowCol } from "./sort.js";
|
|
4
4
|
import { bottom, cloneLayout, cloneLayoutItem, getStatics } from "./layout.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
//#region src/components/layout/Board/grid-core/constraints.ts
|
|
3
3
|
function clamp(value, min, max) {
|
|
4
4
|
return Math.max(min, Math.min(max, value));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { getCompactor, horizontalCompactor, noCompactor, verticalCompactor } from "./grid-core/compactors.js";
|
|
3
3
|
import { aspectRatio, boundedX, boundedY, containerBounds, gridBounds, maxSize, minMaxSize, minSize, snapToGrid } from "./grid-core/constraints.js";
|
|
4
4
|
import { BoardProvider } from "./BoardProvider.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { cloneLayout } from "./grid-core/layout.js";
|
|
4
4
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { BoardWidgetStore } from "./board-store.js";
|
|
4
4
|
import { cloneLayout, getLayoutItem, moveElement } from "./grid-core/layout.js";
|
|
@@ -8,19 +8,24 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
|
8
8
|
|
|
9
9
|
//#region src/components/layout/Board/use-board-registry.ts
|
|
10
10
|
/**
|
|
11
|
-
* The dragged widget's
|
|
11
|
+
* The dragged widget's center in viewport coordinates.
|
|
12
12
|
*
|
|
13
|
-
* This is the anchor
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
13
|
+
* This is the anchor the drop-target hit-test uses to pick which board a drag is
|
|
14
|
+
* over, so a board (including an empty one) opens as soon as the widget's center
|
|
15
|
+
* enters it rather than only once its whole top-left corner is inside.
|
|
16
|
+
*
|
|
17
|
+
* The landing itself stays anchored to the grabbed top-left (`rect.left/top` in
|
|
18
|
+
* `computeLanding`): that point is this center offset by the widget's own fixed
|
|
19
|
+
* pixel size, so the resolved landing cell keeps corresponding to where the
|
|
20
|
+
* floating overlay clone is drawn (see `WidgetHost`) and the placeholder keeps
|
|
21
|
+
* tracking the ghost. The only unavoidable divergence is while the widget
|
|
22
|
+
* physically overhangs a board edge - a placeholder cannot render outside row 0
|
|
23
|
+
* / column 0 - which is the accepted tradeoff for opening on the center.
|
|
19
24
|
*/
|
|
20
|
-
function
|
|
25
|
+
function rectCenter(rect) {
|
|
21
26
|
return {
|
|
22
|
-
x: rect.left,
|
|
23
|
-
y: rect.top
|
|
27
|
+
x: rect.left + rect.width / 2,
|
|
28
|
+
y: rect.top + rect.height / 2
|
|
24
29
|
};
|
|
25
30
|
}
|
|
26
31
|
function useBoardRegistry(options) {
|
|
@@ -229,7 +234,7 @@ function useBoardRegistry(options) {
|
|
|
229
234
|
top: ds.rect.top + deltaY
|
|
230
235
|
};
|
|
231
236
|
const source = boardsRef.current.get(ds.sourceBoardId);
|
|
232
|
-
const anchor =
|
|
237
|
+
const anchor = rectCenter(newRect);
|
|
233
238
|
let target = hitTest(anchor) ?? source ?? null;
|
|
234
239
|
if (target && source && target.id !== source.id && isAncestorBoard(target, source)) {
|
|
235
240
|
const containerRect = getBoardContainerRect(source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-board-registry.js","names":[],"sources":["../../../../src/components/layout/Board/use-board-registry.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\n\nimport {\n BoardDragState,\n BoardEntry,\n BoardRegistryContextValue,\n ViewportRect,\n WidgetTransferInfo,\n} from './board-context';\nimport { BoardWidgetStore } from './board-store';\nimport {\n applyPositionConstraints,\n calcXYRaw,\n cloneLayout,\n getLayoutItem,\n LayoutItem,\n moveElement,\n} from './grid-core';\n\n/**\n * The dragged widget's top-left corner in viewport coordinates.\n *\n * This is the anchor `computeLanding` maps into a target board's grid, and the\n * same point the floating overlay clone is positioned at (see `WidgetHost`), so\n * the drop-target hit-test must use it too. Picking the target by the widget's\n * center instead lets a wide/tall widget select a board its top-left has not yet\n * entered: `computeLanding` then clamps the landing to that board's edge and the\n * placeholder/drop slot drift away from where the overlay is actually drawn.\n */\nfunction rectOrigin(rect: ViewportRect): { x: number; y: number } {\n return { x: rect.left, y: rect.top };\n}\n\n/**\n * Cross-board drag orchestration.\n *\n * Owns the shared widget-content store, the drag overlay ref, and the registry\n * of boards. Handles moving an item inside a board and transferring it between\n * boards (including nested ones) by hit-testing the pointer against each board's\n * content rectangle.\n */\nexport interface UseBoardRegistryOptions {\n /** Fired when a widget is dropped from one board into another. */\n onWidgetTransfer?: (info: WidgetTransferInfo) => void;\n}\n\nexport function useBoardRegistry(\n options?: UseBoardRegistryOptions,\n): BoardRegistryContextValue {\n const store = useMemo(() => new BoardWidgetStore(), []);\n // Latest transfer callback, read from a ref so the stable `onDragEnd` handler\n // always calls the current one without re-creating the registry.\n const onTransferRef = useRef(options?.onWidgetTransfer);\n onTransferRef.current = options?.onWidgetTransfer;\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const boardsRef = useRef<Map<string, BoardEntry>>(new Map());\n const dragStateRef = useRef<BoardDragState | null>(null);\n const affectedRef = useRef<Set<string>>(new Set());\n // Snapshot of the source board's layout at drag start, used to restore the\n // source when the pointer leaves it (the dragged item is never removed from\n // the source mid-drag, so its gesture host stays mounted).\n const sourceSnapshotRef = useRef<LayoutItem[]>([]);\n // Snapshot of each visited target board's layout at the moment the pointer\n // first entered it. Used to restore a board when the pointer leaves it, and as\n // the clean seed for the reflow preview on (re-)entry. Never mutated.\n const targetSnapshotsRef = useRef<Map<string, LayoutItem[]>>(new Map());\n // The current target board's live working layout (including the incoming\n // item). Carried across frames so small pointer movements reflow the board\n // incrementally - exactly like an in-board drag - instead of recomputing from\n // scratch each frame (which lets collision resolution sink the item to the\n // bottom of an occupied column).\n const previewRef = useRef<{ boardId: string; working: LayoutItem[] } | null>(\n null,\n );\n // Board content rects captured at drag start. Reading geometry from here (not\n // live getBoundingClientRect) means the live-reflow preview can't move the\n // rects that selection/landing depend on -> no feedback loop.\n const frozenRectsRef = useRef<Map<string, DOMRect>>(new Map());\n // Ids of boards nested inside the dragged widget, captured at drag start.\n // Such a board must never be a drop target: dropping a widget into a board\n // nested within itself removes it from the tree that renders that board.\n // The overlay-containment check in `hitTest` only catches these once the\n // dragged widget has floated into the overlay, but `useMove` fires the first\n // `onMove` synchronously with `onMoveStart` (before React relocates the\n // widget into the overlay), so on a tiny one-move drag the nested board is\n // still in-grid and would be selected. Excluding these ids for the whole\n // gesture closes that window.\n const nestedInDraggedRef = useRef<Set<string>>(new Set());\n // Last landing position computed for the current target board (grid units).\n const lastLandingRef = useRef<{ x: number; y: number } | null>(null);\n // Live pointer position (viewport coords) tracked for the whole drag via a\n // window listener. `useMove` only reports deltas, but the ancestor-handoff gate\n // needs the actual cursor (not the dragged widget's top-left anchor, which sits\n // above the cursor by the grab offset) so a nested board hands off to its\n // ancestor only once the *pointer* truly leaves the container widget. Null for\n // keyboard drags (no pointer) and until the first pointer move.\n const pointerPosRef = useRef<{ x: number; y: number } | null>(null);\n const [dragState, setDragStateInternal] = useState<BoardDragState | null>(\n null,\n );\n\n const setDragState = useCallback((next: BoardDragState | null) => {\n dragStateRef.current = next;\n setDragStateInternal(next);\n }, []);\n\n // Record the live cursor for the ancestor-handoff gate (see `pointerPosRef`).\n // Capture phase so it lands before `useMove`'s own window listeners drive the\n // frame's `onDragMove`.\n const trackPointer = useCallback((e: PointerEvent) => {\n pointerPosRef.current = { x: e.clientX, y: e.clientY };\n }, []);\n\n // Safety net: drop the window listener if the hook unmounts mid-drag.\n useEffect(\n () => () => window.removeEventListener('pointermove', trackPointer, true),\n [trackPointer],\n );\n\n const registerBoard = useCallback((entry: BoardEntry) => {\n boardsRef.current.set(entry.id, entry);\n return () => {\n // Only remove if a newer board instance hasn't already taken over this id\n // (boards can remount when their host widget is relocated, e.g. dragged).\n if (boardsRef.current.get(entry.id) === entry) {\n boardsRef.current.delete(entry.id);\n }\n };\n }, []);\n\n // Geometry frozen at drag start; falls back to the live rect for boards that\n // mount (or become visible) mid-drag. A board hidden at drag start - e.g. a\n // board inside an inactive tab - has a degenerate (0x0) frozen rect; ignore\n // it and read the live rect instead, freezing that first real measurement so\n // later frames stay stable (no preview feedback loop). This lets a tab board\n // revealed by a spring-loaded tab switch become a valid drop/landing target.\n const getBoardRect = useCallback((entry: BoardEntry): DOMRect | null => {\n const frozen = frozenRectsRef.current.get(entry.id);\n if (frozen && frozen.width > 0 && frozen.height > 0) return frozen;\n\n const live = entry.getContentRect();\n if (live && live.width > 0 && live.height > 0) {\n frozenRectsRef.current.set(entry.id, live);\n return live;\n }\n\n return frozen ?? live;\n }, []);\n\n /** True when board `outer` DOM-contains board `inner` (outer is an ancestor). */\n const isAncestorBoard = useCallback(\n (outer: BoardEntry, inner: BoardEntry): boolean => {\n const outerNode = outer.getContentNode();\n const innerNode = inner.getContentNode();\n return !!outerNode && !!innerNode && outerNode.contains(innerNode);\n },\n [],\n );\n\n /**\n * Viewport rect of the widget host a nested board lives in, or null for a\n * top-level board. Lets a drag stay anchored to a nested board while the anchor\n * is still within its container widget (e.g. over a Tabs header sitting above\n * the board), so an ancestor board does not reflow prematurely.\n */\n const getBoardContainerRect = useCallback(\n (entry: BoardEntry): DOMRect | null => {\n const host = entry\n .getContentNode()\n ?.parentElement?.closest<HTMLElement>('[data-board-widget-host]');\n return host?.getBoundingClientRect() ?? null;\n },\n [],\n );\n\n /** Whether a point falls within a rect (inclusive of edges). */\n const pointInRect = useCallback(\n (point: { x: number; y: number }, rect: DOMRect): boolean =>\n point.x >= rect.left &&\n point.x <= rect.right &&\n point.y >= rect.top &&\n point.y <= rect.bottom,\n [],\n );\n\n /** Find the most-nested droppable board whose content rect contains a point. */\n const hitTest = useCallback(\n (point: { x: number; y: number }): BoardEntry | null => {\n let best: BoardEntry | null = null;\n let bestArea = Infinity;\n\n // During a pointer drag the dragged widget (and any board nested inside it)\n // lives in the overlay portal. Such boards must never be drop targets -\n // dropping a widget into a board nested within itself would remove it from\n // the tree that renders that board.\n const overlay = overlayRef.current;\n\n boardsRef.current.forEach((entry) => {\n if (!entry.isDroppable()) return;\n if (nestedInDraggedRef.current.has(entry.id)) return;\n if (overlay && overlay.contains(entry.getContentNode())) return;\n // Skip boards that are currently hidden - e.g. the board inside an\n // inactive tab after a spring-loaded tab switch. Such a board keeps the\n // frozen rect it had while visible, which would otherwise shadow the\n // sibling board now shown in the exact same screen area (tabs share it),\n // trapping the drag in the hidden board. A hidden element reports a\n // zero-sized live rect, so use that as the visibility gate while still\n // reading geometry from the frozen rect (no preview feedback loop).\n const liveRect = entry.getContentRect();\n if (!liveRect || liveRect.width === 0 || liveRect.height === 0) return;\n const rect = getBoardRect(entry);\n if (!rect) return;\n if (\n point.x >= rect.left &&\n point.x <= rect.right &&\n point.y >= rect.top &&\n point.y <= rect.bottom\n ) {\n const area = rect.width * rect.height;\n if (area < bestArea) {\n bestArea = area;\n best = entry;\n }\n }\n });\n\n return best;\n },\n [getBoardRect],\n );\n\n const onDragStart = useEvent(\n (\n boardId: string,\n itemId: string,\n rect: ViewportRect,\n pointerType: string,\n widgetNode: HTMLElement | null,\n ) => {\n const entry = boardsRef.current.get(boardId);\n const item = entry ? getLayoutItem(entry.getLayout(), itemId) : undefined;\n if (!entry || !item) return;\n\n // Record boards nested inside the dragged widget so they are never picked\n // as a drop target (dropping a widget into a board nested within itself\n // would unmount it). Computed here, before the widget floats into the\n // overlay, while its nested boards are still in-grid descendants.\n const nested = new Set<string>();\n if (widgetNode) {\n boardsRef.current.forEach((e) => {\n const node = e.getContentNode();\n if (node && widgetNode.contains(node)) nested.add(e.id);\n });\n }\n nestedInDraggedRef.current = nested;\n\n // Freeze every board's geometry for the whole gesture so live-reflow\n // preview writes can't move the rects selection/landing read.\n const frozen = new Map<string, DOMRect>();\n boardsRef.current.forEach((e) => {\n const r = e.getContentRect();\n if (r) frozen.set(e.id, r);\n });\n frozenRectsRef.current = frozen;\n\n affectedRef.current = new Set([boardId]);\n sourceSnapshotRef.current = cloneLayout(entry.getLayout());\n previewRef.current = null;\n lastLandingRef.current = { x: item.x, y: item.y };\n // Start tracking the live cursor for the ancestor-handoff gate. Keyboard\n // drags have no pointer, so the gate falls back to the widget anchor.\n pointerPosRef.current = null;\n if (pointerType !== 'keyboard') {\n window.addEventListener('pointermove', trackPointer, true);\n }\n // Layout-item constraints win; otherwise fall back to the ones declared on\n // the owning `Board.Widget` so position constraints apply during drag.\n const draggedItem: LayoutItem = {\n ...item,\n constraints: item.constraints ?? store.get(itemId)?.constraints,\n };\n const next: BoardDragState = {\n sourceBoardId: boardId,\n currentBoardId: boardId,\n itemId,\n item: draggedItem,\n rect,\n pointerType,\n nestedBoardIds: nested,\n };\n setDragState(next);\n entry.setPlaceholder({ ...item });\n },\n );\n\n /** Compute the constrained landing position of an item on a target board. */\n const computeLanding = useCallback(\n (\n target: BoardEntry,\n item: LayoutItem,\n rect: ViewportRect,\n ): { x: number; y: number } => {\n const pp = target.getPositionParams();\n const contentRect = getBoardRect(target);\n const localLeft = rect.left - (contentRect?.left ?? 0);\n const localTop = rect.top - (contentRect?.top ?? 0);\n const raw = calcXYRaw(pp, localTop, localLeft);\n\n return applyPositionConstraints(\n target.getConstraints(),\n item,\n raw.x,\n raw.y,\n {\n cols: pp.cols,\n maxRows: target.getMaxRows(),\n containerWidth: pp.containerWidth,\n containerHeight: target.getContainerHeight(),\n rowHeight: pp.rowHeight,\n margin: pp.margin,\n layout: target.getLayout(),\n },\n );\n },\n [getBoardRect],\n );\n\n const moveWithinBoard = useCallback(\n (entry: BoardEntry, item: LayoutItem, x: number, y: number) => {\n const pp = entry.getPositionParams();\n const compactor = entry.getCompactor();\n const layout = entry.getLayout();\n const live = getLayoutItem(layout, item.i);\n const working = live ? [...layout] : [...layout, { ...item, x, y }];\n const target = getLayoutItem(working, item.i);\n if (!target) return;\n\n const moved = moveElement(\n working,\n target,\n x,\n y,\n true,\n compactor.preventCollision,\n compactor.type,\n pp.cols,\n compactor.allowOverlap,\n );\n const compacted = [...compactor.compact(moved, pp.cols)];\n entry.applyLayout(compacted, false);\n entry.setPlaceholder(getLayoutItem(compacted, item.i) ?? null);\n },\n [],\n );\n\n /**\n * Live cross-board reflow preview. Pushes the target board's *other* widgets\n * aside to make room for the incoming item, without ever adding the dragged\n * item's host to the target (it stays visualized as a placeholder + overlay\n * clone, and its gesture host remains mounted in the source board).\n *\n * Continuity: the working layout (including the incoming item) is carried\n * across frames via `previewRef`, so a small pointer movement moves the item\n * one step and reflows the neighbours incrementally - identical to an in-board\n * drag. Recomputing from the clean snapshot every frame instead lets\n * `moveElement`/compaction sink the item to the bottom of an occupied column\n * (the \"pushed too far below\" bug). On (re-)entry the working layout is seeded\n * from a *clone* of the snapshot so the stored snapshot is never mutated.\n */\n const previewOnTarget = useCallback(\n (target: BoardEntry, item: LayoutItem, x: number, y: number) => {\n const pp = target.getPositionParams();\n const compactor = target.getCompactor();\n\n const carried =\n previewRef.current?.boardId === target.id\n ? previewRef.current.working\n : null;\n const base = (\n carried ??\n cloneLayout(\n targetSnapshotsRef.current.get(target.id) ?? target.getLayout(),\n )\n ).filter((l) => l.i !== item.i);\n\n // Reuse the item's carried position as the move origin (continuity). On\n // first entry there is none, so seed it just above (or left of) its target\n // cell: that makes the first `moveElement` an *active* placement (never a\n // no-op) that pushes colliding widgets aside instead of the item sinking.\n const prevItem = carried ? getLayoutItem(carried, item.i) : undefined;\n const dragged: LayoutItem = prevItem\n ? { ...prevItem }\n : compactor.type === 'horizontal'\n ? { ...item, x: Math.max(0, x) - 1, y }\n : { ...item, x, y: Math.max(0, y) - 1 };\n const working = [...base, dragged];\n\n const moved = moveElement(\n working,\n dragged,\n x,\n y,\n true,\n compactor.preventCollision,\n compactor.type,\n pp.cols,\n compactor.allowOverlap,\n );\n const compacted = [...compactor.compact(moved, pp.cols)];\n previewRef.current = { boardId: target.id, working: compacted };\n\n const landed = getLayoutItem(compacted, item.i) ?? { ...item, x, y };\n // Apply only the other widgets so the dragged item is never rendered as a\n // host on the target board.\n target.applyLayout(\n compacted.filter((l) => l.i !== item.i),\n false,\n );\n target.setPlaceholder({ ...landed });\n },\n [],\n );\n\n const onDragMove = useEvent(\n (deltaX: number, deltaY: number, _pointerType: string) => {\n const ds = dragStateRef.current;\n if (!ds) return;\n\n const newRect: ViewportRect = {\n ...ds.rect,\n left: ds.rect.left + deltaX,\n top: ds.rect.top + deltaY,\n };\n\n const source = boardsRef.current.get(ds.sourceBoardId);\n // Hit-test with the widget's top-left corner - the same anchor\n // `computeLanding` and the overlay clone use - so the chosen board always\n // contains the landing anchor and the placeholder can't diverge from the\n // floating overlay (see `rectOrigin`). Fall back to the source board so a\n // pointer outside every board keeps the widget anchored to where it came\n // from. Frozen rects make this deterministic (no preview-induced flip-flop).\n const anchor = rectOrigin(newRect);\n let target = hitTest(anchor) ?? source ?? null;\n\n // Keep the drag on a nested source board while the cursor is still within\n // the widget that hosts it, instead of handing off to an ancestor board.\n // Hit-testing anchors on the dragged widget's top-left corner, which sits\n // above the cursor by the grab offset, so nudging a widget up inside a\n // nested board (e.g. toward a Tabs header above it) pushes that anchor into\n // the ancestor's area while the pointer is still over the container. Gating\n // on the real cursor (not the anchor) means the ancestor only reflows once\n // the pointer truly leaves the container widget - no transient shift.\n // Cross-tab / sibling boards are unaffected: they are not ancestors of the\n // source, so a real move out still hands off normally.\n if (\n target &&\n source &&\n target.id !== source.id &&\n isAncestorBoard(target, source)\n ) {\n const containerRect = getBoardContainerRect(source);\n const gatePoint = pointerPosRef.current ?? anchor;\n if (containerRect && pointInRect(gatePoint, containerRect)) {\n target = source;\n }\n }\n\n if (!target) {\n setDragState({ ...ds, rect: newRect });\n return;\n }\n\n const { x, y } = computeLanding(target, ds.item, newRect);\n lastLandingRef.current = { x, y };\n\n // Same board: run the live in-board preview (item stays owned by the\n // source, so its gesture host is never unmounted).\n if (target.id === ds.sourceBoardId) {\n if (ds.currentBoardId !== ds.sourceBoardId) {\n // Returning from another board: restore that board's pushed widgets\n // to their pre-hover arrangement and clear its placeholder.\n const prev = boardsRef.current.get(ds.currentBoardId);\n const snap = targetSnapshotsRef.current.get(ds.currentBoardId);\n if (snap) prev?.applyLayout(cloneLayout(snap), false);\n prev?.setPlaceholder(null);\n previewRef.current = null;\n }\n moveWithinBoard(target, ds.item, x, y);\n setDragState({\n ...ds,\n currentBoardId: ds.sourceBoardId,\n rect: newRect,\n });\n return;\n }\n\n // Cross-board: preview the transfer live by pushing the target board's\n // other widgets aside (see `previewOnTarget`). The dragged item's host\n // stays mounted in the source board for the entire drag; the actual\n // transfer is committed on drop.\n if (ds.currentBoardId !== target.id) {\n const prev = boardsRef.current.get(ds.currentBoardId);\n if (ds.currentBoardId === ds.sourceBoardId) {\n // Leaving the source: restore it to its pre-drag arrangement.\n prev?.applyLayout(cloneLayout(sourceSnapshotRef.current), false);\n } else {\n // Leaving another target board: restore its pushed widgets.\n const snap = targetSnapshotsRef.current.get(ds.currentBoardId);\n if (snap) prev?.applyLayout(cloneLayout(snap), false);\n }\n prev?.setPlaceholder(null);\n // Drop the carried working layout so the newly entered target seeds a\n // fresh preview from its own clean snapshot.\n previewRef.current = null;\n\n // Snapshot the newly entered target once, as the stable base for its\n // reflow preview.\n if (!targetSnapshotsRef.current.has(target.id)) {\n targetSnapshotsRef.current.set(\n target.id,\n cloneLayout(target.getLayout()),\n );\n }\n }\n\n previewOnTarget(target, ds.item, x, y);\n affectedRef.current.add(target.id);\n setDragState({ ...ds, currentBoardId: target.id, rect: newRect });\n },\n );\n\n const onDragEnd = useEvent(() => {\n window.removeEventListener('pointermove', trackPointer, true);\n pointerPosRef.current = null;\n const ds = dragStateRef.current;\n if (!ds) return;\n\n const source = boardsRef.current.get(ds.sourceBoardId);\n const target = boardsRef.current.get(ds.currentBoardId);\n const droppedInSource = !target || target.id === ds.sourceBoardId;\n\n if (droppedInSource) {\n // Commit a freshly compacted source so the result never depends on the\n // last preview frame (which may have been mid-reflow).\n if (source) {\n const sp = source.getPositionParams();\n const sc = source.getCompactor();\n source.applyLayout([...sc.compact(source.getLayout(), sp.cols)], true);\n }\n } else {\n const landing = lastLandingRef.current ?? { x: ds.item.x, y: ds.item.y };\n\n // Remove the item from the source board and compact.\n if (source) {\n const sp = source.getPositionParams();\n const sc = source.getCompactor();\n const remaining = source.getLayout().filter((l) => l.i !== ds.itemId);\n source.applyLayout([...sc.compact(remaining, sp.cols)], true);\n }\n\n const tp = target!.getPositionParams();\n const tc = target!.getCompactor();\n\n // Prefer committing the exact arrangement the user was previewing (item\n // already placed with the neighbours reflowed around it via continuity).\n const carried =\n previewRef.current?.boardId === target!.id &&\n getLayoutItem(previewRef.current.working, ds.itemId)\n ? previewRef.current.working\n : null;\n\n let finalLayout: LayoutItem[];\n if (carried) {\n finalLayout = [...tc.compact(cloneLayout(carried), tp.cols)];\n } else {\n // No preview frame ran (e.g. a teleport drop). Seed the item just above\n // (or left of) its landing cell so `moveElement` actively places it\n // rather than no-opping and letting compaction sink it to the bottom.\n const newItem: LayoutItem =\n tc.type === 'horizontal'\n ? { ...ds.item, x: Math.max(0, landing.x) - 1, y: landing.y }\n : { ...ds.item, x: landing.x, y: Math.max(0, landing.y) - 1 };\n const base = [\n ...cloneLayout(\n (\n targetSnapshotsRef.current.get(target!.id) ?? target!.getLayout()\n ).filter((l) => l.i !== ds.itemId),\n ),\n newItem,\n ];\n const moved = moveElement(\n base,\n newItem,\n landing.x,\n landing.y,\n true,\n tc.preventCollision,\n tc.type,\n tp.cols,\n tc.allowOverlap,\n );\n finalLayout = [...tc.compact(moved, tp.cols)];\n }\n target!.applyLayout(finalLayout, true);\n\n // Signal the transfer so a controlled app can move the widget's\n // declaration into the destination container (positions are already\n // reported via each board's onLayoutChange).\n onTransferRef.current?.({\n widgetId: ds.itemId,\n fromBoardId: ds.sourceBoardId,\n toBoardId: target!.id,\n item: getLayoutItem(finalLayout, ds.itemId) ?? {\n ...ds.item,\n x: landing.x,\n y: landing.y,\n },\n });\n }\n\n const ids = new Set(affectedRef.current);\n ids.add(ds.sourceBoardId);\n ids.add(ds.currentBoardId);\n ids.forEach((id) => boardsRef.current.get(id)?.setPlaceholder(null));\n\n affectedRef.current.clear();\n sourceSnapshotRef.current = [];\n targetSnapshotsRef.current.clear();\n frozenRectsRef.current.clear();\n nestedInDraggedRef.current = new Set();\n previewRef.current = null;\n lastLandingRef.current = null;\n setDragState(null);\n });\n\n return useMemo(\n () => ({\n store,\n overlayRef,\n registerBoard,\n onDragStart,\n onDragMove,\n onDragEnd,\n dragState,\n }),\n [store, registerBoard, onDragStart, onDragMove, onDragEnd, dragState],\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA+BA,SAAS,WAAW,MAA8C;AAChE,QAAO;EAAE,GAAG,KAAK;EAAM,GAAG,KAAK;EAAK;;AAgBtC,SAAgB,iBACd,SAC2B;CAC3B,MAAM,QAAQ,cAAc,IAAI,kBAAkB,EAAE,EAAE,CAAC;CAGvD,MAAM,gBAAgB,OAAO,SAAS,iBAAiB;AACvD,eAAc,UAAU,SAAS;CACjC,MAAM,aAAa,OAA8B,KAAK;CACtD,MAAM,YAAY,uBAAgC,IAAI,KAAK,CAAC;CAC5D,MAAM,eAAe,OAA8B,KAAK;CACxD,MAAM,cAAc,uBAAoB,IAAI,KAAK,CAAC;CAIlD,MAAM,oBAAoB,OAAqB,EAAE,CAAC;CAIlD,MAAM,qBAAqB,uBAAkC,IAAI,KAAK,CAAC;CAMvE,MAAM,aAAa,OACjB,KACD;CAID,MAAM,iBAAiB,uBAA6B,IAAI,KAAK,CAAC;CAU9D,MAAM,qBAAqB,uBAAoB,IAAI,KAAK,CAAC;CAEzD,MAAM,iBAAiB,OAAwC,KAAK;CAOpE,MAAM,gBAAgB,OAAwC,KAAK;CACnE,MAAM,CAAC,WAAW,wBAAwB,SACxC,KACD;CAED,MAAM,eAAe,aAAa,SAAgC;AAChE,eAAa,UAAU;AACvB,uBAAqB,KAAK;IACzB,EAAE,CAAC;CAKN,MAAM,eAAe,aAAa,MAAoB;AACpD,gBAAc,UAAU;GAAE,GAAG,EAAE;GAAS,GAAG,EAAE;GAAS;IACrD,EAAE,CAAC;AAGN,uBACc,OAAO,oBAAoB,eAAe,cAAc,KAAK,EACzE,CAAC,aAAa,CACf;CAED,MAAM,gBAAgB,aAAa,UAAsB;AACvD,YAAU,QAAQ,IAAI,MAAM,IAAI,MAAM;AACtC,eAAa;AAGX,OAAI,UAAU,QAAQ,IAAI,MAAM,GAAG,KAAK,MACtC,WAAU,QAAQ,OAAO,MAAM,GAAG;;IAGrC,EAAE,CAAC;CAQN,MAAM,eAAe,aAAa,UAAsC;EACtE,MAAM,SAAS,eAAe,QAAQ,IAAI,MAAM,GAAG;AACnD,MAAI,UAAU,OAAO,QAAQ,KAAK,OAAO,SAAS,EAAG,QAAO;EAE5D,MAAM,OAAO,MAAM,gBAAgB;AACnC,MAAI,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,GAAG;AAC7C,kBAAe,QAAQ,IAAI,MAAM,IAAI,KAAK;AAC1C,UAAO;;AAGT,SAAO,UAAU;IAChB,EAAE,CAAC;;CAGN,MAAM,kBAAkB,aACrB,OAAmB,UAA+B;EACjD,MAAM,YAAY,MAAM,gBAAgB;EACxC,MAAM,YAAY,MAAM,gBAAgB;AACxC,SAAO,CAAC,CAAC,aAAa,CAAC,CAAC,aAAa,UAAU,SAAS,UAAU;IAEpE,EAAE,CACH;;;;;;;CAQD,MAAM,wBAAwB,aAC3B,UAAsC;AAIrC,UAHa,MACV,gBAAgB,EACf,eAAe,QAAqB,2BAA2B,GACtD,uBAAuB,IAAI;IAE1C,EAAE,CACH;;CAGD,MAAM,cAAc,aACjB,OAAiC,SAChC,MAAM,KAAK,KAAK,QAChB,MAAM,KAAK,KAAK,SAChB,MAAM,KAAK,KAAK,OAChB,MAAM,KAAK,KAAK,QAClB,EAAE,CACH;;CAGD,MAAM,UAAU,aACb,UAAuD;EACtD,IAAI,OAA0B;EAC9B,IAAI,WAAW;EAMf,MAAM,UAAU,WAAW;AAE3B,YAAU,QAAQ,SAAS,UAAU;AACnC,OAAI,CAAC,MAAM,aAAa,CAAE;AAC1B,OAAI,mBAAmB,QAAQ,IAAI,MAAM,GAAG,CAAE;AAC9C,OAAI,WAAW,QAAQ,SAAS,MAAM,gBAAgB,CAAC,CAAE;GAQzD,MAAM,WAAW,MAAM,gBAAgB;AACvC,OAAI,CAAC,YAAY,SAAS,UAAU,KAAK,SAAS,WAAW,EAAG;GAChE,MAAM,OAAO,aAAa,MAAM;AAChC,OAAI,CAAC,KAAM;AACX,OACE,MAAM,KAAK,KAAK,QAChB,MAAM,KAAK,KAAK,SAChB,MAAM,KAAK,KAAK,OAChB,MAAM,KAAK,KAAK,QAChB;IACA,MAAM,OAAO,KAAK,QAAQ,KAAK;AAC/B,QAAI,OAAO,UAAU;AACnB,gBAAW;AACX,YAAO;;;IAGX;AAEF,SAAO;IAET,CAAC,aAAa,CACf;CAED,MAAM,cAAc,UAEhB,SACA,QACA,MACA,aACA,eACG;EACH,MAAM,QAAQ,UAAU,QAAQ,IAAI,QAAQ;EAC5C,MAAM,OAAO,QAAQ,cAAc,MAAM,WAAW,EAAE,OAAO,GAAG;AAChE,MAAI,CAAC,SAAS,CAAC,KAAM;EAMrB,MAAM,yBAAS,IAAI,KAAa;AAChC,MAAI,WACF,WAAU,QAAQ,SAAS,MAAM;GAC/B,MAAM,OAAO,EAAE,gBAAgB;AAC/B,OAAI,QAAQ,WAAW,SAAS,KAAK,CAAE,QAAO,IAAI,EAAE,GAAG;IACvD;AAEJ,qBAAmB,UAAU;EAI7B,MAAM,yBAAS,IAAI,KAAsB;AACzC,YAAU,QAAQ,SAAS,MAAM;GAC/B,MAAM,IAAI,EAAE,gBAAgB;AAC5B,OAAI,EAAG,QAAO,IAAI,EAAE,IAAI,EAAE;IAC1B;AACF,iBAAe,UAAU;AAEzB,cAAY,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;AACxC,oBAAkB,UAAU,YAAY,MAAM,WAAW,CAAC;AAC1D,aAAW,UAAU;AACrB,iBAAe,UAAU;GAAE,GAAG,KAAK;GAAG,GAAG,KAAK;GAAG;AAGjD,gBAAc,UAAU;AACxB,MAAI,gBAAgB,WAClB,QAAO,iBAAiB,eAAe,cAAc,KAAK;AAiB5D,eAT6B;GAC3B,eAAe;GACf,gBAAgB;GAChB;GACA,MAR8B;IAC9B,GAAG;IACH,aAAa,KAAK,eAAe,MAAM,IAAI,OAAO,EAAE;IACrD;GAMC;GACA;GACA,gBAAgB;GACjB,CACiB;AAClB,QAAM,eAAe,EAAE,GAAG,MAAM,CAAC;GAEpC;;CAGD,MAAM,iBAAiB,aAEnB,QACA,MACA,SAC6B;EAC7B,MAAM,KAAK,OAAO,mBAAmB;EACrC,MAAM,cAAc,aAAa,OAAO;EACxC,MAAM,YAAY,KAAK,QAAQ,aAAa,QAAQ;EAEpD,MAAM,MAAM,UAAU,IADL,KAAK,OAAO,aAAa,OAAO,IACb,UAAU;AAE9C,SAAO,yBACL,OAAO,gBAAgB,EACvB,MACA,IAAI,GACJ,IAAI,GACJ;GACE,MAAM,GAAG;GACT,SAAS,OAAO,YAAY;GAC5B,gBAAgB,GAAG;GACnB,iBAAiB,OAAO,oBAAoB;GAC5C,WAAW,GAAG;GACd,QAAQ,GAAG;GACX,QAAQ,OAAO,WAAW;GAC3B,CACF;IAEH,CAAC,aAAa,CACf;CAED,MAAM,kBAAkB,aACrB,OAAmB,MAAkB,GAAW,MAAc;EAC7D,MAAM,KAAK,MAAM,mBAAmB;EACpC,MAAM,YAAY,MAAM,cAAc;EACtC,MAAM,SAAS,MAAM,WAAW;EAEhC,MAAM,UADO,cAAc,QAAQ,KAAK,EAAE,GACnB,CAAC,GAAG,OAAO,GAAG,CAAC,GAAG,QAAQ;GAAE,GAAG;GAAM;GAAG;GAAG,CAAC;EACnE,MAAM,SAAS,cAAc,SAAS,KAAK,EAAE;AAC7C,MAAI,CAAC,OAAQ;EAEb,MAAM,QAAQ,YACZ,SACA,QACA,GACA,GACA,MACA,UAAU,kBACV,UAAU,MACV,GAAG,MACH,UAAU,aACX;EACD,MAAM,YAAY,CAAC,GAAG,UAAU,QAAQ,OAAO,GAAG,KAAK,CAAC;AACxD,QAAM,YAAY,WAAW,MAAM;AACnC,QAAM,eAAe,cAAc,WAAW,KAAK,EAAE,IAAI,KAAK;IAEhE,EAAE,CACH;;;;;;;;;;;;;;;CAgBD,MAAM,kBAAkB,aACrB,QAAoB,MAAkB,GAAW,MAAc;EAC9D,MAAM,KAAK,OAAO,mBAAmB;EACrC,MAAM,YAAY,OAAO,cAAc;EAEvC,MAAM,UACJ,WAAW,SAAS,YAAY,OAAO,KACnC,WAAW,QAAQ,UACnB;EACN,MAAM,QACJ,WACA,YACE,mBAAmB,QAAQ,IAAI,OAAO,GAAG,IAAI,OAAO,WAAW,CAChE,EACD,QAAQ,MAAM,EAAE,MAAM,KAAK,EAAE;EAM/B,MAAM,WAAW,UAAU,cAAc,SAAS,KAAK,EAAE,GAAG;EAC5D,MAAM,UAAsB,WACxB,EAAE,GAAG,UAAU,GACf,UAAU,SAAS,eACjB;GAAE,GAAG;GAAM,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG;GAAG;GAAG,GACrC;GAAE,GAAG;GAAM;GAAG,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG;GAAG;EAG3C,MAAM,QAAQ,YAFE,CAAC,GAAG,MAAM,QAAQ,EAIhC,SACA,GACA,GACA,MACA,UAAU,kBACV,UAAU,MACV,GAAG,MACH,UAAU,aACX;EACD,MAAM,YAAY,CAAC,GAAG,UAAU,QAAQ,OAAO,GAAG,KAAK,CAAC;AACxD,aAAW,UAAU;GAAE,SAAS,OAAO;GAAI,SAAS;GAAW;EAE/D,MAAM,SAAS,cAAc,WAAW,KAAK,EAAE,IAAI;GAAE,GAAG;GAAM;GAAG;GAAG;AAGpE,SAAO,YACL,UAAU,QAAQ,MAAM,EAAE,MAAM,KAAK,EAAE,EACvC,MACD;AACD,SAAO,eAAe,EAAE,GAAG,QAAQ,CAAC;IAEtC,EAAE,CACH;CAED,MAAM,aAAa,UAChB,QAAgB,QAAgB,iBAAyB;EACxD,MAAM,KAAK,aAAa;AACxB,MAAI,CAAC,GAAI;EAET,MAAM,UAAwB;GAC5B,GAAG,GAAG;GACN,MAAM,GAAG,KAAK,OAAO;GACrB,KAAK,GAAG,KAAK,MAAM;GACpB;EAED,MAAM,SAAS,UAAU,QAAQ,IAAI,GAAG,cAAc;EAOtD,MAAM,SAAS,WAAW,QAAQ;EAClC,IAAI,SAAS,QAAQ,OAAO,IAAI,UAAU;AAY1C,MACE,UACA,UACA,OAAO,OAAO,OAAO,MACrB,gBAAgB,QAAQ,OAAO,EAC/B;GACA,MAAM,gBAAgB,sBAAsB,OAAO;GACnD,MAAM,YAAY,cAAc,WAAW;AAC3C,OAAI,iBAAiB,YAAY,WAAW,cAAc,CACxD,UAAS;;AAIb,MAAI,CAAC,QAAQ;AACX,gBAAa;IAAE,GAAG;IAAI,MAAM;IAAS,CAAC;AACtC;;EAGF,MAAM,EAAE,GAAG,MAAM,eAAe,QAAQ,GAAG,MAAM,QAAQ;AACzD,iBAAe,UAAU;GAAE;GAAG;GAAG;AAIjC,MAAI,OAAO,OAAO,GAAG,eAAe;AAClC,OAAI,GAAG,mBAAmB,GAAG,eAAe;IAG1C,MAAM,OAAO,UAAU,QAAQ,IAAI,GAAG,eAAe;IACrD,MAAM,OAAO,mBAAmB,QAAQ,IAAI,GAAG,eAAe;AAC9D,QAAI,KAAM,OAAM,YAAY,YAAY,KAAK,EAAE,MAAM;AACrD,UAAM,eAAe,KAAK;AAC1B,eAAW,UAAU;;AAEvB,mBAAgB,QAAQ,GAAG,MAAM,GAAG,EAAE;AACtC,gBAAa;IACX,GAAG;IACH,gBAAgB,GAAG;IACnB,MAAM;IACP,CAAC;AACF;;AAOF,MAAI,GAAG,mBAAmB,OAAO,IAAI;GACnC,MAAM,OAAO,UAAU,QAAQ,IAAI,GAAG,eAAe;AACrD,OAAI,GAAG,mBAAmB,GAAG,cAE3B,OAAM,YAAY,YAAY,kBAAkB,QAAQ,EAAE,MAAM;QAC3D;IAEL,MAAM,OAAO,mBAAmB,QAAQ,IAAI,GAAG,eAAe;AAC9D,QAAI,KAAM,OAAM,YAAY,YAAY,KAAK,EAAE,MAAM;;AAEvD,SAAM,eAAe,KAAK;AAG1B,cAAW,UAAU;AAIrB,OAAI,CAAC,mBAAmB,QAAQ,IAAI,OAAO,GAAG,CAC5C,oBAAmB,QAAQ,IACzB,OAAO,IACP,YAAY,OAAO,WAAW,CAAC,CAChC;;AAIL,kBAAgB,QAAQ,GAAG,MAAM,GAAG,EAAE;AACtC,cAAY,QAAQ,IAAI,OAAO,GAAG;AAClC,eAAa;GAAE,GAAG;GAAI,gBAAgB,OAAO;GAAI,MAAM;GAAS,CAAC;GAEpE;CAED,MAAM,YAAY,eAAe;AAC/B,SAAO,oBAAoB,eAAe,cAAc,KAAK;AAC7D,gBAAc,UAAU;EACxB,MAAM,KAAK,aAAa;AACxB,MAAI,CAAC,GAAI;EAET,MAAM,SAAS,UAAU,QAAQ,IAAI,GAAG,cAAc;EACtD,MAAM,SAAS,UAAU,QAAQ,IAAI,GAAG,eAAe;AAGvD,MAFwB,CAAC,UAAU,OAAO,OAAO,GAAG,eAKlD;OAAI,QAAQ;IACV,MAAM,KAAK,OAAO,mBAAmB;IACrC,MAAM,KAAK,OAAO,cAAc;AAChC,WAAO,YAAY,CAAC,GAAG,GAAG,QAAQ,OAAO,WAAW,EAAE,GAAG,KAAK,CAAC,EAAE,KAAK;;SAEnE;GACL,MAAM,UAAU,eAAe,WAAW;IAAE,GAAG,GAAG,KAAK;IAAG,GAAG,GAAG,KAAK;IAAG;AAGxE,OAAI,QAAQ;IACV,MAAM,KAAK,OAAO,mBAAmB;IACrC,MAAM,KAAK,OAAO,cAAc;IAChC,MAAM,YAAY,OAAO,WAAW,CAAC,QAAQ,MAAM,EAAE,MAAM,GAAG,OAAO;AACrE,WAAO,YAAY,CAAC,GAAG,GAAG,QAAQ,WAAW,GAAG,KAAK,CAAC,EAAE,KAAK;;GAG/D,MAAM,KAAK,OAAQ,mBAAmB;GACtC,MAAM,KAAK,OAAQ,cAAc;GAIjC,MAAM,UACJ,WAAW,SAAS,YAAY,OAAQ,MACxC,cAAc,WAAW,QAAQ,SAAS,GAAG,OAAO,GAChD,WAAW,QAAQ,UACnB;GAEN,IAAI;AACJ,OAAI,QACF,eAAc,CAAC,GAAG,GAAG,QAAQ,YAAY,QAAQ,EAAE,GAAG,KAAK,CAAC;QACvD;IAIL,MAAM,UACJ,GAAG,SAAS,eACR;KAAE,GAAG,GAAG;KAAM,GAAG,KAAK,IAAI,GAAG,QAAQ,EAAE,GAAG;KAAG,GAAG,QAAQ;KAAG,GAC3D;KAAE,GAAG,GAAG;KAAM,GAAG,QAAQ;KAAG,GAAG,KAAK,IAAI,GAAG,QAAQ,EAAE,GAAG;KAAG;IASjE,MAAM,QAAQ,YARD,CACX,GAAG,aAEC,mBAAmB,QAAQ,IAAI,OAAQ,GAAG,IAAI,OAAQ,WAAW,EACjE,QAAQ,MAAM,EAAE,MAAM,GAAG,OAAO,CACnC,EACD,QACD,EAGC,SACA,QAAQ,GACR,QAAQ,GACR,MACA,GAAG,kBACH,GAAG,MACH,GAAG,MACH,GAAG,aACJ;AACD,kBAAc,CAAC,GAAG,GAAG,QAAQ,OAAO,GAAG,KAAK,CAAC;;AAE/C,UAAQ,YAAY,aAAa,KAAK;AAKtC,iBAAc,UAAU;IACtB,UAAU,GAAG;IACb,aAAa,GAAG;IAChB,WAAW,OAAQ;IACnB,MAAM,cAAc,aAAa,GAAG,OAAO,IAAI;KAC7C,GAAG,GAAG;KACN,GAAG,QAAQ;KACX,GAAG,QAAQ;KACZ;IACF,CAAC;;EAGJ,MAAM,MAAM,IAAI,IAAI,YAAY,QAAQ;AACxC,MAAI,IAAI,GAAG,cAAc;AACzB,MAAI,IAAI,GAAG,eAAe;AAC1B,MAAI,SAAS,OAAO,UAAU,QAAQ,IAAI,GAAG,EAAE,eAAe,KAAK,CAAC;AAEpE,cAAY,QAAQ,OAAO;AAC3B,oBAAkB,UAAU,EAAE;AAC9B,qBAAmB,QAAQ,OAAO;AAClC,iBAAe,QAAQ,OAAO;AAC9B,qBAAmB,0BAAU,IAAI,KAAK;AACtC,aAAW,UAAU;AACrB,iBAAe,UAAU;AACzB,eAAa,KAAK;GAClB;AAEF,QAAO,eACE;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAO;EAAe;EAAa;EAAY;EAAW;EAAU,CACtE"}
|
|
1
|
+
{"version":3,"file":"use-board-registry.js","names":[],"sources":["../../../../src/components/layout/Board/use-board-registry.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\n\nimport {\n BoardDragState,\n BoardEntry,\n BoardRegistryContextValue,\n ViewportRect,\n WidgetTransferInfo,\n} from './board-context';\nimport { BoardWidgetStore } from './board-store';\nimport {\n applyPositionConstraints,\n calcXYRaw,\n cloneLayout,\n getLayoutItem,\n LayoutItem,\n moveElement,\n} from './grid-core';\n\n/**\n * The dragged widget's center in viewport coordinates.\n *\n * This is the anchor the drop-target hit-test uses to pick which board a drag is\n * over, so a board (including an empty one) opens as soon as the widget's center\n * enters it rather than only once its whole top-left corner is inside.\n *\n * The landing itself stays anchored to the grabbed top-left (`rect.left/top` in\n * `computeLanding`): that point is this center offset by the widget's own fixed\n * pixel size, so the resolved landing cell keeps corresponding to where the\n * floating overlay clone is drawn (see `WidgetHost`) and the placeholder keeps\n * tracking the ghost. The only unavoidable divergence is while the widget\n * physically overhangs a board edge - a placeholder cannot render outside row 0\n * / column 0 - which is the accepted tradeoff for opening on the center.\n */\nfunction rectCenter(rect: ViewportRect): { x: number; y: number } {\n return { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 };\n}\n\n/**\n * Cross-board drag orchestration.\n *\n * Owns the shared widget-content store, the drag overlay ref, and the registry\n * of boards. Handles moving an item inside a board and transferring it between\n * boards (including nested ones) by hit-testing the pointer against each board's\n * content rectangle.\n */\nexport interface UseBoardRegistryOptions {\n /** Fired when a widget is dropped from one board into another. */\n onWidgetTransfer?: (info: WidgetTransferInfo) => void;\n}\n\nexport function useBoardRegistry(\n options?: UseBoardRegistryOptions,\n): BoardRegistryContextValue {\n const store = useMemo(() => new BoardWidgetStore(), []);\n // Latest transfer callback, read from a ref so the stable `onDragEnd` handler\n // always calls the current one without re-creating the registry.\n const onTransferRef = useRef(options?.onWidgetTransfer);\n onTransferRef.current = options?.onWidgetTransfer;\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const boardsRef = useRef<Map<string, BoardEntry>>(new Map());\n const dragStateRef = useRef<BoardDragState | null>(null);\n const affectedRef = useRef<Set<string>>(new Set());\n // Snapshot of the source board's layout at drag start, used to restore the\n // source when the pointer leaves it (the dragged item is never removed from\n // the source mid-drag, so its gesture host stays mounted).\n const sourceSnapshotRef = useRef<LayoutItem[]>([]);\n // Snapshot of each visited target board's layout at the moment the pointer\n // first entered it. Used to restore a board when the pointer leaves it, and as\n // the clean seed for the reflow preview on (re-)entry. Never mutated.\n const targetSnapshotsRef = useRef<Map<string, LayoutItem[]>>(new Map());\n // The current target board's live working layout (including the incoming\n // item). Carried across frames so small pointer movements reflow the board\n // incrementally - exactly like an in-board drag - instead of recomputing from\n // scratch each frame (which lets collision resolution sink the item to the\n // bottom of an occupied column).\n const previewRef = useRef<{ boardId: string; working: LayoutItem[] } | null>(\n null,\n );\n // Board content rects captured at drag start. Reading geometry from here (not\n // live getBoundingClientRect) means the live-reflow preview can't move the\n // rects that selection/landing depend on -> no feedback loop.\n const frozenRectsRef = useRef<Map<string, DOMRect>>(new Map());\n // Ids of boards nested inside the dragged widget, captured at drag start.\n // Such a board must never be a drop target: dropping a widget into a board\n // nested within itself removes it from the tree that renders that board.\n // The overlay-containment check in `hitTest` only catches these once the\n // dragged widget has floated into the overlay, but `useMove` fires the first\n // `onMove` synchronously with `onMoveStart` (before React relocates the\n // widget into the overlay), so on a tiny one-move drag the nested board is\n // still in-grid and would be selected. Excluding these ids for the whole\n // gesture closes that window.\n const nestedInDraggedRef = useRef<Set<string>>(new Set());\n // Last landing position computed for the current target board (grid units).\n const lastLandingRef = useRef<{ x: number; y: number } | null>(null);\n // Live pointer position (viewport coords) tracked for the whole drag via a\n // window listener. `useMove` only reports deltas, but the ancestor-handoff gate\n // needs the actual cursor (not the dragged widget's top-left anchor, which sits\n // above the cursor by the grab offset) so a nested board hands off to its\n // ancestor only once the *pointer* truly leaves the container widget. Null for\n // keyboard drags (no pointer) and until the first pointer move.\n const pointerPosRef = useRef<{ x: number; y: number } | null>(null);\n const [dragState, setDragStateInternal] = useState<BoardDragState | null>(\n null,\n );\n\n const setDragState = useCallback((next: BoardDragState | null) => {\n dragStateRef.current = next;\n setDragStateInternal(next);\n }, []);\n\n // Record the live cursor for the ancestor-handoff gate (see `pointerPosRef`).\n // Capture phase so it lands before `useMove`'s own window listeners drive the\n // frame's `onDragMove`.\n const trackPointer = useCallback((e: PointerEvent) => {\n pointerPosRef.current = { x: e.clientX, y: e.clientY };\n }, []);\n\n // Safety net: drop the window listener if the hook unmounts mid-drag.\n useEffect(\n () => () => window.removeEventListener('pointermove', trackPointer, true),\n [trackPointer],\n );\n\n const registerBoard = useCallback((entry: BoardEntry) => {\n boardsRef.current.set(entry.id, entry);\n return () => {\n // Only remove if a newer board instance hasn't already taken over this id\n // (boards can remount when their host widget is relocated, e.g. dragged).\n if (boardsRef.current.get(entry.id) === entry) {\n boardsRef.current.delete(entry.id);\n }\n };\n }, []);\n\n // Geometry frozen at drag start; falls back to the live rect for boards that\n // mount (or become visible) mid-drag. A board hidden at drag start - e.g. a\n // board inside an inactive tab - has a degenerate (0x0) frozen rect; ignore\n // it and read the live rect instead, freezing that first real measurement so\n // later frames stay stable (no preview feedback loop). This lets a tab board\n // revealed by a spring-loaded tab switch become a valid drop/landing target.\n const getBoardRect = useCallback((entry: BoardEntry): DOMRect | null => {\n const frozen = frozenRectsRef.current.get(entry.id);\n if (frozen && frozen.width > 0 && frozen.height > 0) return frozen;\n\n const live = entry.getContentRect();\n if (live && live.width > 0 && live.height > 0) {\n frozenRectsRef.current.set(entry.id, live);\n return live;\n }\n\n return frozen ?? live;\n }, []);\n\n /** True when board `outer` DOM-contains board `inner` (outer is an ancestor). */\n const isAncestorBoard = useCallback(\n (outer: BoardEntry, inner: BoardEntry): boolean => {\n const outerNode = outer.getContentNode();\n const innerNode = inner.getContentNode();\n return !!outerNode && !!innerNode && outerNode.contains(innerNode);\n },\n [],\n );\n\n /**\n * Viewport rect of the widget host a nested board lives in, or null for a\n * top-level board. Lets a drag stay anchored to a nested board while the anchor\n * is still within its container widget (e.g. over a Tabs header sitting above\n * the board), so an ancestor board does not reflow prematurely.\n */\n const getBoardContainerRect = useCallback(\n (entry: BoardEntry): DOMRect | null => {\n const host = entry\n .getContentNode()\n ?.parentElement?.closest<HTMLElement>('[data-board-widget-host]');\n return host?.getBoundingClientRect() ?? null;\n },\n [],\n );\n\n /** Whether a point falls within a rect (inclusive of edges). */\n const pointInRect = useCallback(\n (point: { x: number; y: number }, rect: DOMRect): boolean =>\n point.x >= rect.left &&\n point.x <= rect.right &&\n point.y >= rect.top &&\n point.y <= rect.bottom,\n [],\n );\n\n /** Find the most-nested droppable board whose content rect contains a point. */\n const hitTest = useCallback(\n (point: { x: number; y: number }): BoardEntry | null => {\n let best: BoardEntry | null = null;\n let bestArea = Infinity;\n\n // During a pointer drag the dragged widget (and any board nested inside it)\n // lives in the overlay portal. Such boards must never be drop targets -\n // dropping a widget into a board nested within itself would remove it from\n // the tree that renders that board.\n const overlay = overlayRef.current;\n\n boardsRef.current.forEach((entry) => {\n if (!entry.isDroppable()) return;\n if (nestedInDraggedRef.current.has(entry.id)) return;\n if (overlay && overlay.contains(entry.getContentNode())) return;\n // Skip boards that are currently hidden - e.g. the board inside an\n // inactive tab after a spring-loaded tab switch. Such a board keeps the\n // frozen rect it had while visible, which would otherwise shadow the\n // sibling board now shown in the exact same screen area (tabs share it),\n // trapping the drag in the hidden board. A hidden element reports a\n // zero-sized live rect, so use that as the visibility gate while still\n // reading geometry from the frozen rect (no preview feedback loop).\n const liveRect = entry.getContentRect();\n if (!liveRect || liveRect.width === 0 || liveRect.height === 0) return;\n const rect = getBoardRect(entry);\n if (!rect) return;\n if (\n point.x >= rect.left &&\n point.x <= rect.right &&\n point.y >= rect.top &&\n point.y <= rect.bottom\n ) {\n const area = rect.width * rect.height;\n if (area < bestArea) {\n bestArea = area;\n best = entry;\n }\n }\n });\n\n return best;\n },\n [getBoardRect],\n );\n\n const onDragStart = useEvent(\n (\n boardId: string,\n itemId: string,\n rect: ViewportRect,\n pointerType: string,\n widgetNode: HTMLElement | null,\n ) => {\n const entry = boardsRef.current.get(boardId);\n const item = entry ? getLayoutItem(entry.getLayout(), itemId) : undefined;\n if (!entry || !item) return;\n\n // Record boards nested inside the dragged widget so they are never picked\n // as a drop target (dropping a widget into a board nested within itself\n // would unmount it). Computed here, before the widget floats into the\n // overlay, while its nested boards are still in-grid descendants.\n const nested = new Set<string>();\n if (widgetNode) {\n boardsRef.current.forEach((e) => {\n const node = e.getContentNode();\n if (node && widgetNode.contains(node)) nested.add(e.id);\n });\n }\n nestedInDraggedRef.current = nested;\n\n // Freeze every board's geometry for the whole gesture so live-reflow\n // preview writes can't move the rects selection/landing read.\n const frozen = new Map<string, DOMRect>();\n boardsRef.current.forEach((e) => {\n const r = e.getContentRect();\n if (r) frozen.set(e.id, r);\n });\n frozenRectsRef.current = frozen;\n\n affectedRef.current = new Set([boardId]);\n sourceSnapshotRef.current = cloneLayout(entry.getLayout());\n previewRef.current = null;\n lastLandingRef.current = { x: item.x, y: item.y };\n // Start tracking the live cursor for the ancestor-handoff gate. Keyboard\n // drags have no pointer, so the gate falls back to the widget anchor.\n pointerPosRef.current = null;\n if (pointerType !== 'keyboard') {\n window.addEventListener('pointermove', trackPointer, true);\n }\n // Layout-item constraints win; otherwise fall back to the ones declared on\n // the owning `Board.Widget` so position constraints apply during drag.\n const draggedItem: LayoutItem = {\n ...item,\n constraints: item.constraints ?? store.get(itemId)?.constraints,\n };\n const next: BoardDragState = {\n sourceBoardId: boardId,\n currentBoardId: boardId,\n itemId,\n item: draggedItem,\n rect,\n pointerType,\n nestedBoardIds: nested,\n };\n setDragState(next);\n entry.setPlaceholder({ ...item });\n },\n );\n\n /** Compute the constrained landing position of an item on a target board. */\n const computeLanding = useCallback(\n (\n target: BoardEntry,\n item: LayoutItem,\n rect: ViewportRect,\n ): { x: number; y: number } => {\n const pp = target.getPositionParams();\n const contentRect = getBoardRect(target);\n const localLeft = rect.left - (contentRect?.left ?? 0);\n const localTop = rect.top - (contentRect?.top ?? 0);\n const raw = calcXYRaw(pp, localTop, localLeft);\n\n return applyPositionConstraints(\n target.getConstraints(),\n item,\n raw.x,\n raw.y,\n {\n cols: pp.cols,\n maxRows: target.getMaxRows(),\n containerWidth: pp.containerWidth,\n containerHeight: target.getContainerHeight(),\n rowHeight: pp.rowHeight,\n margin: pp.margin,\n layout: target.getLayout(),\n },\n );\n },\n [getBoardRect],\n );\n\n const moveWithinBoard = useCallback(\n (entry: BoardEntry, item: LayoutItem, x: number, y: number) => {\n const pp = entry.getPositionParams();\n const compactor = entry.getCompactor();\n const layout = entry.getLayout();\n const live = getLayoutItem(layout, item.i);\n const working = live ? [...layout] : [...layout, { ...item, x, y }];\n const target = getLayoutItem(working, item.i);\n if (!target) return;\n\n const moved = moveElement(\n working,\n target,\n x,\n y,\n true,\n compactor.preventCollision,\n compactor.type,\n pp.cols,\n compactor.allowOverlap,\n );\n const compacted = [...compactor.compact(moved, pp.cols)];\n entry.applyLayout(compacted, false);\n entry.setPlaceholder(getLayoutItem(compacted, item.i) ?? null);\n },\n [],\n );\n\n /**\n * Live cross-board reflow preview. Pushes the target board's *other* widgets\n * aside to make room for the incoming item, without ever adding the dragged\n * item's host to the target (it stays visualized as a placeholder + overlay\n * clone, and its gesture host remains mounted in the source board).\n *\n * Continuity: the working layout (including the incoming item) is carried\n * across frames via `previewRef`, so a small pointer movement moves the item\n * one step and reflows the neighbours incrementally - identical to an in-board\n * drag. Recomputing from the clean snapshot every frame instead lets\n * `moveElement`/compaction sink the item to the bottom of an occupied column\n * (the \"pushed too far below\" bug). On (re-)entry the working layout is seeded\n * from a *clone* of the snapshot so the stored snapshot is never mutated.\n */\n const previewOnTarget = useCallback(\n (target: BoardEntry, item: LayoutItem, x: number, y: number) => {\n const pp = target.getPositionParams();\n const compactor = target.getCompactor();\n\n const carried =\n previewRef.current?.boardId === target.id\n ? previewRef.current.working\n : null;\n const base = (\n carried ??\n cloneLayout(\n targetSnapshotsRef.current.get(target.id) ?? target.getLayout(),\n )\n ).filter((l) => l.i !== item.i);\n\n // Reuse the item's carried position as the move origin (continuity). On\n // first entry there is none, so seed it just above (or left of) its target\n // cell: that makes the first `moveElement` an *active* placement (never a\n // no-op) that pushes colliding widgets aside instead of the item sinking.\n const prevItem = carried ? getLayoutItem(carried, item.i) : undefined;\n const dragged: LayoutItem = prevItem\n ? { ...prevItem }\n : compactor.type === 'horizontal'\n ? { ...item, x: Math.max(0, x) - 1, y }\n : { ...item, x, y: Math.max(0, y) - 1 };\n const working = [...base, dragged];\n\n const moved = moveElement(\n working,\n dragged,\n x,\n y,\n true,\n compactor.preventCollision,\n compactor.type,\n pp.cols,\n compactor.allowOverlap,\n );\n const compacted = [...compactor.compact(moved, pp.cols)];\n previewRef.current = { boardId: target.id, working: compacted };\n\n const landed = getLayoutItem(compacted, item.i) ?? { ...item, x, y };\n // Apply only the other widgets so the dragged item is never rendered as a\n // host on the target board.\n target.applyLayout(\n compacted.filter((l) => l.i !== item.i),\n false,\n );\n target.setPlaceholder({ ...landed });\n },\n [],\n );\n\n const onDragMove = useEvent(\n (deltaX: number, deltaY: number, _pointerType: string) => {\n const ds = dragStateRef.current;\n if (!ds) return;\n\n const newRect: ViewportRect = {\n ...ds.rect,\n left: ds.rect.left + deltaX,\n top: ds.rect.top + deltaY,\n };\n\n const source = boardsRef.current.get(ds.sourceBoardId);\n // Hit-test with the widget's center so a board opens as soon as the center\n // enters it (see `rectCenter`). The landing still resolves from the grabbed\n // top-left, which is this center offset by the widget's own size, so the\n // placeholder keeps tracking the floating overlay. Fall back to the source\n // board so a pointer outside every board keeps the widget anchored to where\n // it came from. Frozen rects make this deterministic (no preview-induced\n // flip-flop).\n const anchor = rectCenter(newRect);\n let target = hitTest(anchor) ?? source ?? null;\n\n // Keep the drag on a nested source board while the cursor is still within\n // the widget that hosts it, instead of handing off to an ancestor board.\n // Hit-testing anchors on the dragged widget's top-left corner, which sits\n // above the cursor by the grab offset, so nudging a widget up inside a\n // nested board (e.g. toward a Tabs header above it) pushes that anchor into\n // the ancestor's area while the pointer is still over the container. Gating\n // on the real cursor (not the anchor) means the ancestor only reflows once\n // the pointer truly leaves the container widget - no transient shift.\n // Cross-tab / sibling boards are unaffected: they are not ancestors of the\n // source, so a real move out still hands off normally.\n if (\n target &&\n source &&\n target.id !== source.id &&\n isAncestorBoard(target, source)\n ) {\n const containerRect = getBoardContainerRect(source);\n const gatePoint = pointerPosRef.current ?? anchor;\n if (containerRect && pointInRect(gatePoint, containerRect)) {\n target = source;\n }\n }\n\n if (!target) {\n setDragState({ ...ds, rect: newRect });\n return;\n }\n\n const { x, y } = computeLanding(target, ds.item, newRect);\n lastLandingRef.current = { x, y };\n\n // Same board: run the live in-board preview (item stays owned by the\n // source, so its gesture host is never unmounted).\n if (target.id === ds.sourceBoardId) {\n if (ds.currentBoardId !== ds.sourceBoardId) {\n // Returning from another board: restore that board's pushed widgets\n // to their pre-hover arrangement and clear its placeholder.\n const prev = boardsRef.current.get(ds.currentBoardId);\n const snap = targetSnapshotsRef.current.get(ds.currentBoardId);\n if (snap) prev?.applyLayout(cloneLayout(snap), false);\n prev?.setPlaceholder(null);\n previewRef.current = null;\n }\n moveWithinBoard(target, ds.item, x, y);\n setDragState({\n ...ds,\n currentBoardId: ds.sourceBoardId,\n rect: newRect,\n });\n return;\n }\n\n // Cross-board: preview the transfer live by pushing the target board's\n // other widgets aside (see `previewOnTarget`). The dragged item's host\n // stays mounted in the source board for the entire drag; the actual\n // transfer is committed on drop.\n if (ds.currentBoardId !== target.id) {\n const prev = boardsRef.current.get(ds.currentBoardId);\n if (ds.currentBoardId === ds.sourceBoardId) {\n // Leaving the source: restore it to its pre-drag arrangement.\n prev?.applyLayout(cloneLayout(sourceSnapshotRef.current), false);\n } else {\n // Leaving another target board: restore its pushed widgets.\n const snap = targetSnapshotsRef.current.get(ds.currentBoardId);\n if (snap) prev?.applyLayout(cloneLayout(snap), false);\n }\n prev?.setPlaceholder(null);\n // Drop the carried working layout so the newly entered target seeds a\n // fresh preview from its own clean snapshot.\n previewRef.current = null;\n\n // Snapshot the newly entered target once, as the stable base for its\n // reflow preview.\n if (!targetSnapshotsRef.current.has(target.id)) {\n targetSnapshotsRef.current.set(\n target.id,\n cloneLayout(target.getLayout()),\n );\n }\n }\n\n previewOnTarget(target, ds.item, x, y);\n affectedRef.current.add(target.id);\n setDragState({ ...ds, currentBoardId: target.id, rect: newRect });\n },\n );\n\n const onDragEnd = useEvent(() => {\n window.removeEventListener('pointermove', trackPointer, true);\n pointerPosRef.current = null;\n const ds = dragStateRef.current;\n if (!ds) return;\n\n const source = boardsRef.current.get(ds.sourceBoardId);\n const target = boardsRef.current.get(ds.currentBoardId);\n const droppedInSource = !target || target.id === ds.sourceBoardId;\n\n if (droppedInSource) {\n // Commit a freshly compacted source so the result never depends on the\n // last preview frame (which may have been mid-reflow).\n if (source) {\n const sp = source.getPositionParams();\n const sc = source.getCompactor();\n source.applyLayout([...sc.compact(source.getLayout(), sp.cols)], true);\n }\n } else {\n const landing = lastLandingRef.current ?? { x: ds.item.x, y: ds.item.y };\n\n // Remove the item from the source board and compact.\n if (source) {\n const sp = source.getPositionParams();\n const sc = source.getCompactor();\n const remaining = source.getLayout().filter((l) => l.i !== ds.itemId);\n source.applyLayout([...sc.compact(remaining, sp.cols)], true);\n }\n\n const tp = target!.getPositionParams();\n const tc = target!.getCompactor();\n\n // Prefer committing the exact arrangement the user was previewing (item\n // already placed with the neighbours reflowed around it via continuity).\n const carried =\n previewRef.current?.boardId === target!.id &&\n getLayoutItem(previewRef.current.working, ds.itemId)\n ? previewRef.current.working\n : null;\n\n let finalLayout: LayoutItem[];\n if (carried) {\n finalLayout = [...tc.compact(cloneLayout(carried), tp.cols)];\n } else {\n // No preview frame ran (e.g. a teleport drop). Seed the item just above\n // (or left of) its landing cell so `moveElement` actively places it\n // rather than no-opping and letting compaction sink it to the bottom.\n const newItem: LayoutItem =\n tc.type === 'horizontal'\n ? { ...ds.item, x: Math.max(0, landing.x) - 1, y: landing.y }\n : { ...ds.item, x: landing.x, y: Math.max(0, landing.y) - 1 };\n const base = [\n ...cloneLayout(\n (\n targetSnapshotsRef.current.get(target!.id) ?? target!.getLayout()\n ).filter((l) => l.i !== ds.itemId),\n ),\n newItem,\n ];\n const moved = moveElement(\n base,\n newItem,\n landing.x,\n landing.y,\n true,\n tc.preventCollision,\n tc.type,\n tp.cols,\n tc.allowOverlap,\n );\n finalLayout = [...tc.compact(moved, tp.cols)];\n }\n target!.applyLayout(finalLayout, true);\n\n // Signal the transfer so a controlled app can move the widget's\n // declaration into the destination container (positions are already\n // reported via each board's onLayoutChange).\n onTransferRef.current?.({\n widgetId: ds.itemId,\n fromBoardId: ds.sourceBoardId,\n toBoardId: target!.id,\n item: getLayoutItem(finalLayout, ds.itemId) ?? {\n ...ds.item,\n x: landing.x,\n y: landing.y,\n },\n });\n }\n\n const ids = new Set(affectedRef.current);\n ids.add(ds.sourceBoardId);\n ids.add(ds.currentBoardId);\n ids.forEach((id) => boardsRef.current.get(id)?.setPlaceholder(null));\n\n affectedRef.current.clear();\n sourceSnapshotRef.current = [];\n targetSnapshotsRef.current.clear();\n frozenRectsRef.current.clear();\n nestedInDraggedRef.current = new Set();\n previewRef.current = null;\n lastLandingRef.current = null;\n setDragState(null);\n });\n\n return useMemo(\n () => ({\n store,\n overlayRef,\n registerBoard,\n onDragStart,\n onDragMove,\n onDragEnd,\n dragState,\n }),\n [store, registerBoard, onDragStart, onDragMove, onDragEnd, dragState],\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { BASE_STYLES, BLOCK_STYLES, COLOR_STYLES, DIMENSION_STYLES, OUTER_STYLES, tasty } from "@tenphi/tasty";
|
|
3
3
|
import { forwardRef, useMemo } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
|
|
4
4
|
import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../utils/react/mergeProps.js";
|
|
3
3
|
import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useEvent } from "../../_internal/hooks/use-event.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
|
|
4
4
|
import { forwardRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { CONTAINER_STYLES, filterBaseProps, parseStyle, tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { ItemActionProvider } from "../../actions/ItemActionContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { DropIndicatorElement } from "./styled.js";
|
|
3
3
|
import { useTabsContext } from "./TabsContext.js";
|
|
4
4
|
import { useEffect, useRef, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { TabPanelElement } from "./styled.js";
|
|
3
3
|
import { useEffect, useMemo, useRef } from "react";
|
|
4
4
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
|
|
3
3
|
import { CloseIcon } from "../../../icons/CloseIcon.js";
|
|
4
4
|
import { MoreIcon } from "../../../icons/MoreIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
|
|
3
3
|
import { useOptionalTabsContext } from "./TabsContext.js";
|
|
4
4
|
import { tasty } from "@tenphi/tasty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
//#region src/components/navigation/Tabs/popover-placement.ts
|
|
3
3
|
/**
|
|
4
4
|
* Maps the parent Tabs `placement` to the popover placement for menus and
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { Block } from "../../Block.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _Text } from "../../content/Text.js";
|
|
3
3
|
import { _Title } from "../../content/Title.js";
|
|
4
4
|
import { Card } from "../../content/Card/Card.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { Space } from "../../layout/Space.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { chain } from "../../../utils/react/chain.js";
|
|
3
3
|
import { Paragraph } from "../../content/Paragraph.js";
|
|
4
4
|
import { _Title } from "../../content/Title.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { AlertDialogZone } from "./AlertDialogZone.js";
|
|
3
3
|
import { createContext, useContext, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { Portal } from "../../portal/Portal.js";
|
|
3
3
|
import { DialogContainer } from "../Dialog/DialogContainer.js";
|
|
4
4
|
import { _AlertDialog } from "./AlertDialog.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { SlotProvider } from "../../../utils/react/Slots.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _Modal } from "../Modal/Modal.js";
|
|
3
3
|
import { DialogContext } from "./context.js";
|
|
4
4
|
import { Children, isValidElement, useRef } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { _Title } from "../../content/Title.js";
|
|
3
3
|
import { ButtonGroup } from "../../actions/ButtonGroup/ButtonGroup.js";
|
|
4
4
|
import { Button } from "../../actions/index.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
4
4
|
import { DialogContainer } from "./DialogContainer.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { _Overlay } from "./Overlay.js";
|
|
4
4
|
import { _Underlay } from "./Underlay.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.145.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.145.2 | Cube Dev Team */
|
|
2
2
|
import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
|
|
3
3
|
import { Provider, useProviderProps } from "../../../provider.js";
|
|
4
4
|
import { OpenTransitionContext } from "./OpenTransitionContext.js";
|