@vuu-ui/vuu-ui-controls 0.0.26
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/LICENSE +201 -0
- package/README.md +0 -0
- package/cjs/calendar/Calendar.css.js +6 -0
- package/cjs/calendar/Calendar.css.js.map +1 -0
- package/cjs/calendar/Calendar.js +74 -0
- package/cjs/calendar/Calendar.js.map +1 -0
- package/cjs/calendar/internal/CalendarCarousel.css.js +6 -0
- package/cjs/calendar/internal/CalendarCarousel.css.js.map +1 -0
- package/cjs/calendar/internal/CalendarCarousel.js +97 -0
- package/cjs/calendar/internal/CalendarCarousel.js.map +1 -0
- package/cjs/calendar/internal/CalendarContext.js +19 -0
- package/cjs/calendar/internal/CalendarContext.js.map +1 -0
- package/cjs/calendar/internal/CalendarDay.css.js +6 -0
- package/cjs/calendar/internal/CalendarDay.css.js.map +1 -0
- package/cjs/calendar/internal/CalendarDay.js +83 -0
- package/cjs/calendar/internal/CalendarDay.js.map +1 -0
- package/cjs/calendar/internal/CalendarMonth.css.js +6 -0
- package/cjs/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/cjs/calendar/internal/CalendarMonth.js +73 -0
- package/cjs/calendar/internal/CalendarMonth.js.map +1 -0
- package/cjs/calendar/internal/CalendarNavigation.css.js +6 -0
- package/cjs/calendar/internal/CalendarNavigation.css.js.map +1 -0
- package/cjs/calendar/internal/CalendarNavigation.js +250 -0
- package/cjs/calendar/internal/CalendarNavigation.js.map +1 -0
- package/cjs/calendar/internal/CalendarWeekHeader.css.js +6 -0
- package/cjs/calendar/internal/CalendarWeekHeader.css.js.map +1 -0
- package/cjs/calendar/internal/CalendarWeekHeader.js +43 -0
- package/cjs/calendar/internal/CalendarWeekHeader.js.map +1 -0
- package/cjs/calendar/internal/useFocusManagement.js +63 -0
- package/cjs/calendar/internal/useFocusManagement.js.map +1 -0
- package/cjs/calendar/internal/utils.js +63 -0
- package/cjs/calendar/internal/utils.js.map +1 -0
- package/cjs/calendar/useCalendar.js +131 -0
- package/cjs/calendar/useCalendar.js.map +1 -0
- package/cjs/calendar/useCalendarDay.js +70 -0
- package/cjs/calendar/useCalendarDay.js.map +1 -0
- package/cjs/calendar/useSelection.js +242 -0
- package/cjs/calendar/useSelection.js.map +1 -0
- package/cjs/combo-box/ComboBox.js +191 -0
- package/cjs/combo-box/ComboBox.js.map +1 -0
- package/cjs/combo-box/useCombobox.js +358 -0
- package/cjs/combo-box/useCombobox.js.map +1 -0
- package/cjs/common-hooks/collectionProvider.js +24 -0
- package/cjs/common-hooks/collectionProvider.js.map +1 -0
- package/cjs/common-hooks/isPlainObject.js +6 -0
- package/cjs/common-hooks/isPlainObject.js.map +1 -0
- package/cjs/common-hooks/itemToString.js +24 -0
- package/cjs/common-hooks/itemToString.js.map +1 -0
- package/cjs/common-hooks/selectionTypes.js +18 -0
- package/cjs/common-hooks/selectionTypes.js.map +1 -0
- package/cjs/common-hooks/use-resize-observer.js +123 -0
- package/cjs/common-hooks/use-resize-observer.js.map +1 -0
- package/cjs/common-hooks/useCollectionItems.js +309 -0
- package/cjs/common-hooks/useCollectionItems.js.map +1 -0
- package/cjs/common-hooks/useControlled.js +58 -0
- package/cjs/common-hooks/useControlled.js.map +1 -0
- package/cjs/common-hooks/useSelection.js +212 -0
- package/cjs/common-hooks/useSelection.js.map +1 -0
- package/cjs/common-hooks/useStateRef.js +23 -0
- package/cjs/common-hooks/useStateRef.js.map +1 -0
- package/cjs/cycle-state-button/CycleStateButton.js +54 -0
- package/cjs/cycle-state-button/CycleStateButton.js.map +1 -0
- package/cjs/date-input/DateInput.css.js +6 -0
- package/cjs/date-input/DateInput.css.js.map +1 -0
- package/cjs/date-input/DateInput.js +90 -0
- package/cjs/date-input/DateInput.js.map +1 -0
- package/cjs/date-input/DateRangeInput.js +77 -0
- package/cjs/date-input/DateRangeInput.js.map +1 -0
- package/cjs/date-input/useDatePicker.js +20 -0
- package/cjs/date-input/useDatePicker.js.map +1 -0
- package/cjs/date-popup/DatePopup.js +90 -0
- package/cjs/date-popup/DatePopup.js.map +1 -0
- package/cjs/date-popup/useDatePopup.js +77 -0
- package/cjs/date-popup/useDatePopup.js.map +1 -0
- package/cjs/drag-drop/DragDropProvider.js +145 -0
- package/cjs/drag-drop/DragDropProvider.js.map +1 -0
- package/cjs/drag-drop/DragDropState.js +29 -0
- package/cjs/drag-drop/DragDropState.js.map +1 -0
- package/cjs/drag-drop/Draggable.css.js +6 -0
- package/cjs/drag-drop/Draggable.css.js.map +1 -0
- package/cjs/drag-drop/Draggable.js +95 -0
- package/cjs/drag-drop/Draggable.js.map +1 -0
- package/cjs/drag-drop/dragDropTypes.js +8 -0
- package/cjs/drag-drop/dragDropTypes.js.map +1 -0
- package/cjs/drag-drop/drop-target-utils.js +245 -0
- package/cjs/drag-drop/drop-target-utils.js.map +1 -0
- package/cjs/drag-drop/useAutoScroll.js +71 -0
- package/cjs/drag-drop/useAutoScroll.js.map +1 -0
- package/cjs/drag-drop/useDragDisplacers.js +160 -0
- package/cjs/drag-drop/useDragDisplacers.js.map +1 -0
- package/cjs/drag-drop/useDragDrop.js +499 -0
- package/cjs/drag-drop/useDragDrop.js.map +1 -0
- package/cjs/drag-drop/useDragDropCopy.js +34 -0
- package/cjs/drag-drop/useDragDropCopy.js.map +1 -0
- package/cjs/drag-drop/useDragDropIndicator.js +251 -0
- package/cjs/drag-drop/useDragDropIndicator.js.map +1 -0
- package/cjs/drag-drop/useDragDropNaturalMovement.js +264 -0
- package/cjs/drag-drop/useDragDropNaturalMovement.js.map +1 -0
- package/cjs/drag-drop/useDropIndicator.js +27 -0
- package/cjs/drag-drop/useDropIndicator.js.map +1 -0
- package/cjs/drag-drop/useGlobalDragDrop.js +89 -0
- package/cjs/drag-drop/useGlobalDragDrop.js.map +1 -0
- package/cjs/dropdown/Dropdown.css.js +6 -0
- package/cjs/dropdown/Dropdown.css.js.map +1 -0
- package/cjs/dropdown/Dropdown.js +150 -0
- package/cjs/dropdown/Dropdown.js.map +1 -0
- package/cjs/dropdown/DropdownBase.js +121 -0
- package/cjs/dropdown/DropdownBase.js.map +1 -0
- package/cjs/dropdown/DropdownButton.css.js +6 -0
- package/cjs/dropdown/DropdownButton.css.js.map +1 -0
- package/cjs/dropdown/DropdownButton.js +72 -0
- package/cjs/dropdown/DropdownButton.js.map +1 -0
- package/cjs/dropdown/useClickAway.js +67 -0
- package/cjs/dropdown/useClickAway.js.map +1 -0
- package/cjs/dropdown/useDropdown.js +115 -0
- package/cjs/dropdown/useDropdown.js.map +1 -0
- package/cjs/dropdown/useDropdownBase.js +169 -0
- package/cjs/dropdown/useDropdownBase.js.map +1 -0
- package/cjs/editable/editable-utils.js +37 -0
- package/cjs/editable/editable-utils.js.map +1 -0
- package/cjs/editable/useEditableText.js +106 -0
- package/cjs/editable/useEditableText.js.map +1 -0
- package/cjs/editable-label/EditableLabel.css.js +6 -0
- package/cjs/editable-label/EditableLabel.css.js.map +1 -0
- package/cjs/editable-label/EditableLabel.js +138 -0
- package/cjs/editable-label/EditableLabel.js.map +1 -0
- package/cjs/expando-input/ExpandoInput.css.js +6 -0
- package/cjs/expando-input/ExpandoInput.css.js.map +1 -0
- package/cjs/expando-input/ExpandoInput.js +53 -0
- package/cjs/expando-input/ExpandoInput.js.map +1 -0
- package/cjs/icon-button/Icon.css.js +6 -0
- package/cjs/icon-button/Icon.css.js.map +1 -0
- package/cjs/icon-button/Icon.js +37 -0
- package/cjs/icon-button/Icon.js.map +1 -0
- package/cjs/icon-button/IconButton.css.js +6 -0
- package/cjs/icon-button/IconButton.css.js.map +1 -0
- package/cjs/icon-button/IconButton.js +26 -0
- package/cjs/icon-button/IconButton.js.map +1 -0
- package/cjs/index.js +231 -0
- package/cjs/index.js.map +1 -0
- package/cjs/inputs/Checkbox.css.js +6 -0
- package/cjs/inputs/Checkbox.css.js.map +1 -0
- package/cjs/inputs/Checkbox.js +32 -0
- package/cjs/inputs/Checkbox.js.map +1 -0
- package/cjs/inputs/RadioButton.css.js +6 -0
- package/cjs/inputs/RadioButton.css.js.map +1 -0
- package/cjs/inputs/RadioButton.js +39 -0
- package/cjs/inputs/RadioButton.js.map +1 -0
- package/cjs/instrument-picker/InstrumentPicker.css.js +6 -0
- package/cjs/instrument-picker/InstrumentPicker.css.js.map +1 -0
- package/cjs/instrument-picker/InstrumentPicker.js +113 -0
- package/cjs/instrument-picker/InstrumentPicker.js.map +1 -0
- package/cjs/instrument-picker/SearchCell.css.js +6 -0
- package/cjs/instrument-picker/SearchCell.css.js.map +1 -0
- package/cjs/instrument-picker/SearchCell.js +33 -0
- package/cjs/instrument-picker/SearchCell.js.map +1 -0
- package/cjs/instrument-picker/useInstrumentPicker.js +87 -0
- package/cjs/instrument-picker/useInstrumentPicker.js.map +1 -0
- package/cjs/instrument-search/InstrumentSearch.css.js +6 -0
- package/cjs/instrument-search/InstrumentSearch.css.js.map +1 -0
- package/cjs/instrument-search/InstrumentSearch.js +96 -0
- package/cjs/instrument-search/InstrumentSearch.js.map +1 -0
- package/cjs/instrument-search/SearchCell.css.js +6 -0
- package/cjs/instrument-search/SearchCell.css.js.map +1 -0
- package/cjs/instrument-search/SearchCell.js +33 -0
- package/cjs/instrument-search/SearchCell.js.map +1 -0
- package/cjs/instrument-search/useInstrumentSearch.js +39 -0
- package/cjs/instrument-search/useInstrumentSearch.js.map +1 -0
- package/cjs/list/CheckboxIcon.css.js +6 -0
- package/cjs/list/CheckboxIcon.css.js.map +1 -0
- package/cjs/list/CheckboxIcon.js +33 -0
- package/cjs/list/CheckboxIcon.js.map +1 -0
- package/cjs/list/ChevronIcon.css.js +6 -0
- package/cjs/list/ChevronIcon.css.js.map +1 -0
- package/cjs/list/ChevronIcon.js +22 -0
- package/cjs/list/ChevronIcon.js.map +1 -0
- package/cjs/list/Highlighter.css.js +6 -0
- package/cjs/list/Highlighter.css.js.map +1 -0
- package/cjs/list/Highlighter.js +36 -0
- package/cjs/list/Highlighter.js.map +1 -0
- package/cjs/list/List.css.js +6 -0
- package/cjs/list/List.css.js.map +1 -0
- package/cjs/list/List.js +317 -0
- package/cjs/list/List.js.map +1 -0
- package/cjs/list/ListItem.css.js +6 -0
- package/cjs/list/ListItem.css.js.map +1 -0
- package/cjs/list/ListItem.js +84 -0
- package/cjs/list/ListItem.js.map +1 -0
- package/cjs/list/ListItemGroup.js +6 -0
- package/cjs/list/ListItemGroup.js.map +1 -0
- package/cjs/list/ListItemHeader.js +6 -0
- package/cjs/list/ListItemHeader.js.map +1 -0
- package/cjs/list/RadioIcon.css.js +6 -0
- package/cjs/list/RadioIcon.css.js.map +1 -0
- package/cjs/list/RadioIcon.js +27 -0
- package/cjs/list/RadioIcon.js.map +1 -0
- package/cjs/list/common-hooks/keyUtils.js +78 -0
- package/cjs/list/common-hooks/keyUtils.js.map +1 -0
- package/cjs/list/common-hooks/list-dom-utils.js +25 -0
- package/cjs/list/common-hooks/list-dom-utils.js.map +1 -0
- package/cjs/list/common-hooks/useCollapsibleGroups.js +82 -0
- package/cjs/list/common-hooks/useCollapsibleGroups.js.map +1 -0
- package/cjs/list/common-hooks/useImperativeScrollingAPI.js +52 -0
- package/cjs/list/common-hooks/useImperativeScrollingAPI.js.map +1 -0
- package/cjs/list/common-hooks/useKeyboardNavigation.js +289 -0
- package/cjs/list/common-hooks/useKeyboardNavigation.js.map +1 -0
- package/cjs/list/common-hooks/useTypeahead.js +74 -0
- package/cjs/list/common-hooks/useTypeahead.js.map +1 -0
- package/cjs/list/common-hooks/useViewportTracking.js +133 -0
- package/cjs/list/common-hooks/useViewportTracking.js.map +1 -0
- package/cjs/list/common-hooks/utils/collection-item-utils.js +181 -0
- package/cjs/list/common-hooks/utils/collection-item-utils.js.map +1 -0
- package/cjs/list/common-hooks/utils/filter-utils.js +11 -0
- package/cjs/list/common-hooks/utils/filter-utils.js.map +1 -0
- package/cjs/list/common-hooks/utils/isSelected.js +9 -0
- package/cjs/list/common-hooks/utils/isSelected.js.map +1 -0
- package/cjs/list/useList.js +278 -0
- package/cjs/list/useList.js.map +1 -0
- package/cjs/list/useListDrop.js +92 -0
- package/cjs/list/useListDrop.js.map +1 -0
- package/cjs/list/useListHeight.js +77 -0
- package/cjs/list/useListHeight.js.map +1 -0
- package/cjs/list/useScrollPosition.js +74 -0
- package/cjs/list/useScrollPosition.js.map +1 -0
- package/cjs/measured-container/MeasuredContainer.css.js +6 -0
- package/cjs/measured-container/MeasuredContainer.css.js.map +1 -0
- package/cjs/measured-container/MeasuredContainer.js +69 -0
- package/cjs/measured-container/MeasuredContainer.js.map +1 -0
- package/cjs/measured-container/useMeasuredContainer.js +127 -0
- package/cjs/measured-container/useMeasuredContainer.js.map +1 -0
- package/cjs/measured-container/useResizeObserver.js +130 -0
- package/cjs/measured-container/useResizeObserver.js.map +1 -0
- package/cjs/overflow-container/OverflowContainer.css.js +6 -0
- package/cjs/overflow-container/OverflowContainer.css.js.map +1 -0
- package/cjs/overflow-container/OverflowContainer.js +142 -0
- package/cjs/overflow-container/OverflowContainer.js.map +1 -0
- package/cjs/overflow-container/overflow-utils.js +286 -0
- package/cjs/overflow-container/overflow-utils.js.map +1 -0
- package/cjs/overflow-container/useOverflowContainer.js +143 -0
- package/cjs/overflow-container/useOverflowContainer.js.map +1 -0
- package/cjs/price-ticker/PriceTicker.css.js +6 -0
- package/cjs/price-ticker/PriceTicker.css.js.map +1 -0
- package/cjs/price-ticker/PriceTicker.js +50 -0
- package/cjs/price-ticker/PriceTicker.js.map +1 -0
- package/cjs/split-button/SplitButton.css.js +6 -0
- package/cjs/split-button/SplitButton.css.js.map +1 -0
- package/cjs/split-button/SplitButton.js +81 -0
- package/cjs/split-button/SplitButton.js.map +1 -0
- package/cjs/split-button/SplitStateButton.css.js +6 -0
- package/cjs/split-button/SplitStateButton.css.js.map +1 -0
- package/cjs/split-button/SplitStateButton.js +31 -0
- package/cjs/split-button/SplitStateButton.js.map +1 -0
- package/cjs/split-button/useSplitButton.js +84 -0
- package/cjs/split-button/useSplitButton.js.map +1 -0
- package/cjs/tabstrip/Tab.css.js +6 -0
- package/cjs/tabstrip/Tab.css.js.map +1 -0
- package/cjs/tabstrip/Tab.js +151 -0
- package/cjs/tabstrip/Tab.js.map +1 -0
- package/cjs/tabstrip/TabMenu.css.js +6 -0
- package/cjs/tabstrip/TabMenu.css.js.map +1 -0
- package/cjs/tabstrip/TabMenu.js +72 -0
- package/cjs/tabstrip/TabMenu.js.map +1 -0
- package/cjs/tabstrip/TabMenuOptions.js +20 -0
- package/cjs/tabstrip/TabMenuOptions.js.map +1 -0
- package/cjs/tabstrip/Tabstrip.css.js +6 -0
- package/cjs/tabstrip/Tabstrip.css.js.map +1 -0
- package/cjs/tabstrip/Tabstrip.js +156 -0
- package/cjs/tabstrip/Tabstrip.js.map +1 -0
- package/cjs/tabstrip/tabstrip-dom-utils.js +19 -0
- package/cjs/tabstrip/tabstrip-dom-utils.js.map +1 -0
- package/cjs/tabstrip/useAnimatedSelectionThumb.js +85 -0
- package/cjs/tabstrip/useAnimatedSelectionThumb.js.map +1 -0
- package/cjs/tabstrip/useKeyboardNavigation.js +243 -0
- package/cjs/tabstrip/useKeyboardNavigation.js.map +1 -0
- package/cjs/tabstrip/useSelection.js +60 -0
- package/cjs/tabstrip/useSelection.js.map +1 -0
- package/cjs/tabstrip/useTabstrip.js +261 -0
- package/cjs/tabstrip/useTabstrip.js.map +1 -0
- package/cjs/toolbar/Toolbar.css.js +6 -0
- package/cjs/toolbar/Toolbar.css.js.map +1 -0
- package/cjs/toolbar/Toolbar.js +90 -0
- package/cjs/toolbar/Toolbar.js.map +1 -0
- package/cjs/toolbar/toolbar-dom-utils.js +18 -0
- package/cjs/toolbar/toolbar-dom-utils.js.map +1 -0
- package/cjs/toolbar/useKeyboardNavigation.js +305 -0
- package/cjs/toolbar/useKeyboardNavigation.js.map +1 -0
- package/cjs/toolbar/useSelection.js +94 -0
- package/cjs/toolbar/useSelection.js.map +1 -0
- package/cjs/toolbar/useToolbar.js +100 -0
- package/cjs/toolbar/useToolbar.js.map +1 -0
- package/cjs/tree/Tree.css.js +6 -0
- package/cjs/tree/Tree.css.js.map +1 -0
- package/cjs/tree/Tree.js +179 -0
- package/cjs/tree/Tree.js.map +1 -0
- package/cjs/tree/hierarchical-data-utils.js +72 -0
- package/cjs/tree/hierarchical-data-utils.js.map +1 -0
- package/cjs/tree/key-code.js +62 -0
- package/cjs/tree/key-code.js.map +1 -0
- package/cjs/tree/list-dom-utils.js +19 -0
- package/cjs/tree/list-dom-utils.js.map +1 -0
- package/cjs/tree/treeTypeUtils.js +6 -0
- package/cjs/tree/treeTypeUtils.js.map +1 -0
- package/cjs/tree/use-collapsible-groups.js +85 -0
- package/cjs/tree/use-collapsible-groups.js.map +1 -0
- package/cjs/tree/use-hierarchical-data.js +51 -0
- package/cjs/tree/use-hierarchical-data.js.map +1 -0
- package/cjs/tree/use-items-with-ids.js +100 -0
- package/cjs/tree/use-items-with-ids.js.map +1 -0
- package/cjs/tree/use-keyboard-navigation.js +144 -0
- package/cjs/tree/use-keyboard-navigation.js.map +1 -0
- package/cjs/tree/use-selection.js +154 -0
- package/cjs/tree/use-selection.js.map +1 -0
- package/cjs/tree/use-tree-keyboard-navigation.js +41 -0
- package/cjs/tree/use-tree-keyboard-navigation.js.map +1 -0
- package/cjs/tree/use-viewport-tracking.js +76 -0
- package/cjs/tree/use-viewport-tracking.js.map +1 -0
- package/cjs/tree/useTree.js +106 -0
- package/cjs/tree/useTree.js.map +1 -0
- package/cjs/utils/escapeRegExp.js +9 -0
- package/cjs/utils/escapeRegExp.js.map +1 -0
- package/cjs/utils/forwardCallbackProps.js +22 -0
- package/cjs/utils/forwardCallbackProps.js.map +1 -0
- package/cjs/utils/isOverflowElement.js +8 -0
- package/cjs/utils/isOverflowElement.js.map +1 -0
- package/cjs/vuu-input/VuuInput.css.js +6 -0
- package/cjs/vuu-input/VuuInput.css.js.map +1 -0
- package/cjs/vuu-input/VuuInput.js +105 -0
- package/cjs/vuu-input/VuuInput.js.map +1 -0
- package/esm/calendar/Calendar.css.js +4 -0
- package/esm/calendar/Calendar.css.js.map +1 -0
- package/esm/calendar/Calendar.js +72 -0
- package/esm/calendar/Calendar.js.map +1 -0
- package/esm/calendar/internal/CalendarCarousel.css.js +4 -0
- package/esm/calendar/internal/CalendarCarousel.css.js.map +1 -0
- package/esm/calendar/internal/CalendarCarousel.js +95 -0
- package/esm/calendar/internal/CalendarCarousel.js.map +1 -0
- package/esm/calendar/internal/CalendarContext.js +16 -0
- package/esm/calendar/internal/CalendarContext.js.map +1 -0
- package/esm/calendar/internal/CalendarDay.css.js +4 -0
- package/esm/calendar/internal/CalendarDay.css.js.map +1 -0
- package/esm/calendar/internal/CalendarDay.js +81 -0
- package/esm/calendar/internal/CalendarDay.js.map +1 -0
- package/esm/calendar/internal/CalendarMonth.css.js +4 -0
- package/esm/calendar/internal/CalendarMonth.css.js.map +1 -0
- package/esm/calendar/internal/CalendarMonth.js +71 -0
- package/esm/calendar/internal/CalendarMonth.js.map +1 -0
- package/esm/calendar/internal/CalendarNavigation.css.js +4 -0
- package/esm/calendar/internal/CalendarNavigation.css.js.map +1 -0
- package/esm/calendar/internal/CalendarNavigation.js +248 -0
- package/esm/calendar/internal/CalendarNavigation.js.map +1 -0
- package/esm/calendar/internal/CalendarWeekHeader.css.js +4 -0
- package/esm/calendar/internal/CalendarWeekHeader.css.js.map +1 -0
- package/esm/calendar/internal/CalendarWeekHeader.js +41 -0
- package/esm/calendar/internal/CalendarWeekHeader.js.map +1 -0
- package/esm/calendar/internal/useFocusManagement.js +61 -0
- package/esm/calendar/internal/useFocusManagement.js.map +1 -0
- package/esm/calendar/internal/utils.js +55 -0
- package/esm/calendar/internal/utils.js.map +1 -0
- package/esm/calendar/useCalendar.js +129 -0
- package/esm/calendar/useCalendar.js.map +1 -0
- package/esm/calendar/useCalendarDay.js +68 -0
- package/esm/calendar/useCalendarDay.js.map +1 -0
- package/esm/calendar/useSelection.js +239 -0
- package/esm/calendar/useSelection.js.map +1 -0
- package/esm/combo-box/ComboBox.js +189 -0
- package/esm/combo-box/ComboBox.js.map +1 -0
- package/esm/combo-box/useCombobox.js +356 -0
- package/esm/combo-box/useCombobox.js.map +1 -0
- package/esm/common-hooks/collectionProvider.js +20 -0
- package/esm/common-hooks/collectionProvider.js.map +1 -0
- package/esm/common-hooks/isPlainObject.js +4 -0
- package/esm/common-hooks/isPlainObject.js.map +1 -0
- package/esm/common-hooks/itemToString.js +22 -0
- package/esm/common-hooks/itemToString.js.map +1 -0
- package/esm/common-hooks/selectionTypes.js +10 -0
- package/esm/common-hooks/selectionTypes.js.map +1 -0
- package/esm/common-hooks/use-resize-observer.js +118 -0
- package/esm/common-hooks/use-resize-observer.js.map +1 -0
- package/esm/common-hooks/useCollectionItems.js +307 -0
- package/esm/common-hooks/useCollectionItems.js.map +1 -0
- package/esm/common-hooks/useControlled.js +56 -0
- package/esm/common-hooks/useControlled.js.map +1 -0
- package/esm/common-hooks/useSelection.js +205 -0
- package/esm/common-hooks/useSelection.js.map +1 -0
- package/esm/common-hooks/useStateRef.js +21 -0
- package/esm/common-hooks/useStateRef.js.map +1 -0
- package/esm/cycle-state-button/CycleStateButton.js +52 -0
- package/esm/cycle-state-button/CycleStateButton.js.map +1 -0
- package/esm/date-input/DateInput.css.js +4 -0
- package/esm/date-input/DateInput.css.js.map +1 -0
- package/esm/date-input/DateInput.js +88 -0
- package/esm/date-input/DateInput.js.map +1 -0
- package/esm/date-input/DateRangeInput.js +75 -0
- package/esm/date-input/DateRangeInput.js.map +1 -0
- package/esm/date-input/useDatePicker.js +18 -0
- package/esm/date-input/useDatePicker.js.map +1 -0
- package/esm/date-popup/DatePopup.js +88 -0
- package/esm/date-popup/DatePopup.js.map +1 -0
- package/esm/date-popup/useDatePopup.js +75 -0
- package/esm/date-popup/useDatePopup.js.map +1 -0
- package/esm/drag-drop/DragDropProvider.js +142 -0
- package/esm/drag-drop/DragDropProvider.js.map +1 -0
- package/esm/drag-drop/DragDropState.js +27 -0
- package/esm/drag-drop/DragDropState.js.map +1 -0
- package/esm/drag-drop/Draggable.css.js +4 -0
- package/esm/drag-drop/Draggable.css.js.map +1 -0
- package/esm/drag-drop/Draggable.js +90 -0
- package/esm/drag-drop/Draggable.js.map +1 -0
- package/esm/drag-drop/dragDropTypes.js +5 -0
- package/esm/drag-drop/dragDropTypes.js.map +1 -0
- package/esm/drag-drop/drop-target-utils.js +228 -0
- package/esm/drag-drop/drop-target-utils.js.map +1 -0
- package/esm/drag-drop/useAutoScroll.js +69 -0
- package/esm/drag-drop/useAutoScroll.js.map +1 -0
- package/esm/drag-drop/useDragDisplacers.js +158 -0
- package/esm/drag-drop/useDragDisplacers.js.map +1 -0
- package/esm/drag-drop/useDragDrop.js +497 -0
- package/esm/drag-drop/useDragDrop.js.map +1 -0
- package/esm/drag-drop/useDragDropCopy.js +31 -0
- package/esm/drag-drop/useDragDropCopy.js.map +1 -0
- package/esm/drag-drop/useDragDropIndicator.js +249 -0
- package/esm/drag-drop/useDragDropIndicator.js.map +1 -0
- package/esm/drag-drop/useDragDropNaturalMovement.js +262 -0
- package/esm/drag-drop/useDragDropNaturalMovement.js.map +1 -0
- package/esm/drag-drop/useDropIndicator.js +25 -0
- package/esm/drag-drop/useDropIndicator.js.map +1 -0
- package/esm/drag-drop/useGlobalDragDrop.js +87 -0
- package/esm/drag-drop/useGlobalDragDrop.js.map +1 -0
- package/esm/dropdown/Dropdown.css.js +4 -0
- package/esm/dropdown/Dropdown.css.js.map +1 -0
- package/esm/dropdown/Dropdown.js +148 -0
- package/esm/dropdown/Dropdown.js.map +1 -0
- package/esm/dropdown/DropdownBase.js +119 -0
- package/esm/dropdown/DropdownBase.js.map +1 -0
- package/esm/dropdown/DropdownButton.css.js +4 -0
- package/esm/dropdown/DropdownButton.css.js.map +1 -0
- package/esm/dropdown/DropdownButton.js +70 -0
- package/esm/dropdown/DropdownButton.js.map +1 -0
- package/esm/dropdown/useClickAway.js +64 -0
- package/esm/dropdown/useClickAway.js.map +1 -0
- package/esm/dropdown/useDropdown.js +113 -0
- package/esm/dropdown/useDropdown.js.map +1 -0
- package/esm/dropdown/useDropdownBase.js +167 -0
- package/esm/dropdown/useDropdownBase.js.map +1 -0
- package/esm/editable/editable-utils.js +35 -0
- package/esm/editable/editable-utils.js.map +1 -0
- package/esm/editable/useEditableText.js +103 -0
- package/esm/editable/useEditableText.js.map +1 -0
- package/esm/editable-label/EditableLabel.css.js +4 -0
- package/esm/editable-label/EditableLabel.css.js.map +1 -0
- package/esm/editable-label/EditableLabel.js +135 -0
- package/esm/editable-label/EditableLabel.js.map +1 -0
- package/esm/expando-input/ExpandoInput.css.js +4 -0
- package/esm/expando-input/ExpandoInput.css.js.map +1 -0
- package/esm/expando-input/ExpandoInput.js +51 -0
- package/esm/expando-input/ExpandoInput.js.map +1 -0
- package/esm/icon-button/Icon.css.js +4 -0
- package/esm/icon-button/Icon.css.js.map +1 -0
- package/esm/icon-button/Icon.js +35 -0
- package/esm/icon-button/Icon.js.map +1 -0
- package/esm/icon-button/IconButton.css.js +4 -0
- package/esm/icon-button/IconButton.css.js.map +1 -0
- package/esm/icon-button/IconButton.js +24 -0
- package/esm/icon-button/IconButton.js.map +1 -0
- package/esm/index.js +73 -0
- package/esm/index.js.map +1 -0
- package/esm/inputs/Checkbox.css.js +4 -0
- package/esm/inputs/Checkbox.css.js.map +1 -0
- package/esm/inputs/Checkbox.js +30 -0
- package/esm/inputs/Checkbox.js.map +1 -0
- package/esm/inputs/RadioButton.css.js +4 -0
- package/esm/inputs/RadioButton.css.js.map +1 -0
- package/esm/inputs/RadioButton.js +37 -0
- package/esm/inputs/RadioButton.js.map +1 -0
- package/esm/instrument-picker/InstrumentPicker.css.js +4 -0
- package/esm/instrument-picker/InstrumentPicker.css.js.map +1 -0
- package/esm/instrument-picker/InstrumentPicker.js +111 -0
- package/esm/instrument-picker/InstrumentPicker.js.map +1 -0
- package/esm/instrument-picker/SearchCell.css.js +4 -0
- package/esm/instrument-picker/SearchCell.css.js.map +1 -0
- package/esm/instrument-picker/SearchCell.js +31 -0
- package/esm/instrument-picker/SearchCell.js.map +1 -0
- package/esm/instrument-picker/useInstrumentPicker.js +85 -0
- package/esm/instrument-picker/useInstrumentPicker.js.map +1 -0
- package/esm/instrument-search/InstrumentSearch.css.js +4 -0
- package/esm/instrument-search/InstrumentSearch.css.js.map +1 -0
- package/esm/instrument-search/InstrumentSearch.js +94 -0
- package/esm/instrument-search/InstrumentSearch.js.map +1 -0
- package/esm/instrument-search/SearchCell.css.js +4 -0
- package/esm/instrument-search/SearchCell.css.js.map +1 -0
- package/esm/instrument-search/SearchCell.js +31 -0
- package/esm/instrument-search/SearchCell.js.map +1 -0
- package/esm/instrument-search/useInstrumentSearch.js +37 -0
- package/esm/instrument-search/useInstrumentSearch.js.map +1 -0
- package/esm/list/CheckboxIcon.css.js +4 -0
- package/esm/list/CheckboxIcon.css.js.map +1 -0
- package/esm/list/CheckboxIcon.js +31 -0
- package/esm/list/CheckboxIcon.js.map +1 -0
- package/esm/list/ChevronIcon.css.js +4 -0
- package/esm/list/ChevronIcon.css.js.map +1 -0
- package/esm/list/ChevronIcon.js +20 -0
- package/esm/list/ChevronIcon.js.map +1 -0
- package/esm/list/Highlighter.css.js +4 -0
- package/esm/list/Highlighter.css.js.map +1 -0
- package/esm/list/Highlighter.js +34 -0
- package/esm/list/Highlighter.js.map +1 -0
- package/esm/list/List.css.js +4 -0
- package/esm/list/List.css.js.map +1 -0
- package/esm/list/List.js +315 -0
- package/esm/list/List.js.map +1 -0
- package/esm/list/ListItem.css.js +4 -0
- package/esm/list/ListItem.css.js.map +1 -0
- package/esm/list/ListItem.js +81 -0
- package/esm/list/ListItem.js.map +1 -0
- package/esm/list/ListItemGroup.js +4 -0
- package/esm/list/ListItemGroup.js.map +1 -0
- package/esm/list/ListItemHeader.js +4 -0
- package/esm/list/ListItemHeader.js.map +1 -0
- package/esm/list/RadioIcon.css.js +4 -0
- package/esm/list/RadioIcon.css.js.map +1 -0
- package/esm/list/RadioIcon.js +25 -0
- package/esm/list/RadioIcon.js.map +1 -0
- package/esm/list/common-hooks/keyUtils.js +64 -0
- package/esm/list/common-hooks/keyUtils.js.map +1 -0
- package/esm/list/common-hooks/list-dom-utils.js +19 -0
- package/esm/list/common-hooks/list-dom-utils.js.map +1 -0
- package/esm/list/common-hooks/useCollapsibleGroups.js +80 -0
- package/esm/list/common-hooks/useCollapsibleGroups.js.map +1 -0
- package/esm/list/common-hooks/useImperativeScrollingAPI.js +50 -0
- package/esm/list/common-hooks/useImperativeScrollingAPI.js.map +1 -0
- package/esm/list/common-hooks/useKeyboardNavigation.js +286 -0
- package/esm/list/common-hooks/useKeyboardNavigation.js.map +1 -0
- package/esm/list/common-hooks/useTypeahead.js +72 -0
- package/esm/list/common-hooks/useTypeahead.js.map +1 -0
- package/esm/list/common-hooks/useViewportTracking.js +131 -0
- package/esm/list/common-hooks/useViewportTracking.js.map +1 -0
- package/esm/list/common-hooks/utils/collection-item-utils.js +167 -0
- package/esm/list/common-hooks/utils/collection-item-utils.js.map +1 -0
- package/esm/list/common-hooks/utils/filter-utils.js +8 -0
- package/esm/list/common-hooks/utils/filter-utils.js.map +1 -0
- package/esm/list/common-hooks/utils/isSelected.js +7 -0
- package/esm/list/common-hooks/utils/isSelected.js.map +1 -0
- package/esm/list/useList.js +276 -0
- package/esm/list/useList.js.map +1 -0
- package/esm/list/useListDrop.js +90 -0
- package/esm/list/useListDrop.js.map +1 -0
- package/esm/list/useListHeight.js +75 -0
- package/esm/list/useListHeight.js.map +1 -0
- package/esm/list/useScrollPosition.js +72 -0
- package/esm/list/useScrollPosition.js.map +1 -0
- package/esm/measured-container/MeasuredContainer.css.js +4 -0
- package/esm/measured-container/MeasuredContainer.css.js.map +1 -0
- package/esm/measured-container/MeasuredContainer.js +67 -0
- package/esm/measured-container/MeasuredContainer.js.map +1 -0
- package/esm/measured-container/useMeasuredContainer.js +125 -0
- package/esm/measured-container/useMeasuredContainer.js.map +1 -0
- package/esm/measured-container/useResizeObserver.js +128 -0
- package/esm/measured-container/useResizeObserver.js.map +1 -0
- package/esm/overflow-container/OverflowContainer.css.js +4 -0
- package/esm/overflow-container/OverflowContainer.css.js.map +1 -0
- package/esm/overflow-container/OverflowContainer.js +140 -0
- package/esm/overflow-container/OverflowContainer.js.map +1 -0
- package/esm/overflow-container/overflow-utils.js +272 -0
- package/esm/overflow-container/overflow-utils.js.map +1 -0
- package/esm/overflow-container/useOverflowContainer.js +141 -0
- package/esm/overflow-container/useOverflowContainer.js.map +1 -0
- package/esm/price-ticker/PriceTicker.css.js +4 -0
- package/esm/price-ticker/PriceTicker.css.js.map +1 -0
- package/esm/price-ticker/PriceTicker.js +48 -0
- package/esm/price-ticker/PriceTicker.js.map +1 -0
- package/esm/split-button/SplitButton.css.js +4 -0
- package/esm/split-button/SplitButton.css.js.map +1 -0
- package/esm/split-button/SplitButton.js +79 -0
- package/esm/split-button/SplitButton.js.map +1 -0
- package/esm/split-button/SplitStateButton.css.js +4 -0
- package/esm/split-button/SplitStateButton.css.js.map +1 -0
- package/esm/split-button/SplitStateButton.js +29 -0
- package/esm/split-button/SplitStateButton.js.map +1 -0
- package/esm/split-button/useSplitButton.js +82 -0
- package/esm/split-button/useSplitButton.js.map +1 -0
- package/esm/tabstrip/Tab.css.js +4 -0
- package/esm/tabstrip/Tab.css.js.map +1 -0
- package/esm/tabstrip/Tab.js +149 -0
- package/esm/tabstrip/Tab.js.map +1 -0
- package/esm/tabstrip/TabMenu.css.js +4 -0
- package/esm/tabstrip/TabMenu.css.js.map +1 -0
- package/esm/tabstrip/TabMenu.js +70 -0
- package/esm/tabstrip/TabMenu.js.map +1 -0
- package/esm/tabstrip/TabMenuOptions.js +16 -0
- package/esm/tabstrip/TabMenuOptions.js.map +1 -0
- package/esm/tabstrip/Tabstrip.css.js +4 -0
- package/esm/tabstrip/Tabstrip.css.js.map +1 -0
- package/esm/tabstrip/Tabstrip.js +154 -0
- package/esm/tabstrip/Tabstrip.js.map +1 -0
- package/esm/tabstrip/tabstrip-dom-utils.js +16 -0
- package/esm/tabstrip/tabstrip-dom-utils.js.map +1 -0
- package/esm/tabstrip/useAnimatedSelectionThumb.js +83 -0
- package/esm/tabstrip/useAnimatedSelectionThumb.js.map +1 -0
- package/esm/tabstrip/useKeyboardNavigation.js +241 -0
- package/esm/tabstrip/useKeyboardNavigation.js.map +1 -0
- package/esm/tabstrip/useSelection.js +58 -0
- package/esm/tabstrip/useSelection.js.map +1 -0
- package/esm/tabstrip/useTabstrip.js +259 -0
- package/esm/tabstrip/useTabstrip.js.map +1 -0
- package/esm/toolbar/Toolbar.css.js +4 -0
- package/esm/toolbar/Toolbar.css.js.map +1 -0
- package/esm/toolbar/Toolbar.js +88 -0
- package/esm/toolbar/Toolbar.js.map +1 -0
- package/esm/toolbar/toolbar-dom-utils.js +15 -0
- package/esm/toolbar/toolbar-dom-utils.js.map +1 -0
- package/esm/toolbar/useKeyboardNavigation.js +303 -0
- package/esm/toolbar/useKeyboardNavigation.js.map +1 -0
- package/esm/toolbar/useSelection.js +92 -0
- package/esm/toolbar/useSelection.js.map +1 -0
- package/esm/toolbar/useToolbar.js +98 -0
- package/esm/toolbar/useToolbar.js.map +1 -0
- package/esm/tree/Tree.css.js +4 -0
- package/esm/tree/Tree.css.js.map +1 -0
- package/esm/tree/Tree.js +176 -0
- package/esm/tree/Tree.js.map +1 -0
- package/esm/tree/hierarchical-data-utils.js +65 -0
- package/esm/tree/hierarchical-data-utils.js.map +1 -0
- package/esm/tree/key-code.js +54 -0
- package/esm/tree/key-code.js.map +1 -0
- package/esm/tree/list-dom-utils.js +15 -0
- package/esm/tree/list-dom-utils.js.map +1 -0
- package/esm/tree/treeTypeUtils.js +4 -0
- package/esm/tree/treeTypeUtils.js.map +1 -0
- package/esm/tree/use-collapsible-groups.js +83 -0
- package/esm/tree/use-collapsible-groups.js.map +1 -0
- package/esm/tree/use-hierarchical-data.js +49 -0
- package/esm/tree/use-hierarchical-data.js.map +1 -0
- package/esm/tree/use-items-with-ids.js +98 -0
- package/esm/tree/use-items-with-ids.js.map +1 -0
- package/esm/tree/use-keyboard-navigation.js +142 -0
- package/esm/tree/use-keyboard-navigation.js.map +1 -0
- package/esm/tree/use-selection.js +147 -0
- package/esm/tree/use-selection.js.map +1 -0
- package/esm/tree/use-tree-keyboard-navigation.js +39 -0
- package/esm/tree/use-tree-keyboard-navigation.js.map +1 -0
- package/esm/tree/use-viewport-tracking.js +74 -0
- package/esm/tree/use-viewport-tracking.js.map +1 -0
- package/esm/tree/useTree.js +104 -0
- package/esm/tree/useTree.js.map +1 -0
- package/esm/utils/escapeRegExp.js +7 -0
- package/esm/utils/escapeRegExp.js.map +1 -0
- package/esm/utils/forwardCallbackProps.js +20 -0
- package/esm/utils/forwardCallbackProps.js.map +1 -0
- package/esm/utils/isOverflowElement.js +6 -0
- package/esm/utils/isOverflowElement.js.map +1 -0
- package/esm/vuu-input/VuuInput.css.js +4 -0
- package/esm/vuu-input/VuuInput.css.js.map +1 -0
- package/esm/vuu-input/VuuInput.js +103 -0
- package/esm/vuu-input/VuuInput.js.map +1 -0
- package/package.json +45 -0
- package/types/calendar/Calendar.d.ts +12 -0
- package/types/calendar/index.d.ts +4 -0
- package/types/calendar/internal/CalendarCarousel.d.ts +4 -0
- package/types/calendar/internal/CalendarContext.d.ts +9 -0
- package/types/calendar/internal/CalendarDay.d.ts +14 -0
- package/types/calendar/internal/CalendarMonth.d.ts +11 -0
- package/types/calendar/internal/CalendarNavigation.d.ts +20 -0
- package/types/calendar/internal/CalendarWeekHeader.d.ts +5 -0
- package/types/calendar/internal/useFocusManagement.d.ts +9 -0
- package/types/calendar/internal/utils.d.ts +14 -0
- package/types/calendar/useCalendar.d.ts +57 -0
- package/types/calendar/useCalendarDay.d.ts +19 -0
- package/types/calendar/useSelection.d.ts +75 -0
- package/types/combo-box/ComboBox.d.ts +24 -0
- package/types/combo-box/index.d.ts +1 -0
- package/types/combo-box/useCombobox.d.ts +20 -0
- package/types/common-hooks/collectionProvider.d.ts +13 -0
- package/types/common-hooks/collectionTypes.d.ts +58 -0
- package/types/common-hooks/index.d.ts +9 -0
- package/types/common-hooks/isPlainObject.d.ts +1 -0
- package/types/common-hooks/itemToString.d.ts +2 -0
- package/types/common-hooks/navigationTypes.d.ts +36 -0
- package/types/common-hooks/selectionTypes.d.ts +70 -0
- package/types/common-hooks/use-resize-observer.d.ts +16 -0
- package/types/common-hooks/useCollectionItems.d.ts +2 -0
- package/types/common-hooks/useControlled.d.ts +24 -0
- package/types/common-hooks/useSelection.d.ts +8 -0
- package/types/common-hooks/useStateRef.d.ts +2 -0
- package/types/cycle-state-button/CycleStateButton.d.ts +12 -0
- package/types/cycle-state-button/index.d.ts +1 -0
- package/types/date-input/DateInput.d.ts +12 -0
- package/types/date-input/DateRangeInput.d.ts +11 -0
- package/types/date-input/index.d.ts +2 -0
- package/types/date-input/types.d.ts +16 -0
- package/types/date-input/useBaseDatePickerDropdown.d.ts +15 -0
- package/types/date-input/useDatePicker.d.ts +7 -0
- package/types/date-popup/DatePopup.d.ts +12 -0
- package/types/date-popup/index.d.ts +1 -0
- package/types/date-popup/useDatePopup.d.ts +20 -0
- package/types/drag-drop/DragDropProvider.d.ts +38 -0
- package/types/drag-drop/DragDropState.d.ts +15 -0
- package/types/drag-drop/Draggable.d.ts +13 -0
- package/types/drag-drop/DropIndicator.d.ts +6 -0
- package/types/drag-drop/dragDropTypes.d.ts +100 -0
- package/types/drag-drop/drop-target-utils.d.ts +78 -0
- package/types/drag-drop/index.d.ts +6 -0
- package/types/drag-drop/useAutoScroll.d.ts +11 -0
- package/types/drag-drop/useDragDisplacers.d.ts +17 -0
- package/types/drag-drop/useDragDrop.d.ts +2 -0
- package/types/drag-drop/useDragDropCopy.d.ts +6 -0
- package/types/drag-drop/useDragDropIndicator.d.ts +2 -0
- package/types/drag-drop/useDragDropNaturalMovement.d.ts +2 -0
- package/types/drag-drop/useDropIndicator.d.ts +8 -0
- package/types/drag-drop/useGlobalDragDrop.d.ts +12 -0
- package/types/drag-drop/useTransition.d.ts +3 -0
- package/types/dropdown/Dropdown.d.ts +10 -0
- package/types/dropdown/DropdownBase.d.ts +9 -0
- package/types/dropdown/DropdownButton.d.ts +41 -0
- package/types/dropdown/dropdownTypes.d.ts +51 -0
- package/types/dropdown/index.d.ts +5 -0
- package/types/dropdown/useClickAway.d.ts +10 -0
- package/types/dropdown/useDropdown.d.ts +13 -0
- package/types/dropdown/useDropdownBase.d.ts +2 -0
- package/types/editable/editable-utils.d.ts +2 -0
- package/types/editable/index.d.ts +2 -0
- package/types/editable/useEditableText.d.ts +19 -0
- package/types/editable-label/EditableLabel.d.ts +19 -0
- package/types/editable-label/index.d.ts +1 -0
- package/types/expando-input/ExpandoInput.d.ts +6 -0
- package/types/expando-input/index.d.ts +1 -0
- package/types/icon-button/Icon.d.ts +6 -0
- package/types/icon-button/IconButton.d.ts +7 -0
- package/types/icon-button/index.d.ts +2 -0
- package/types/index.d.ts +27 -0
- package/types/inputs/Checkbox.d.ts +9 -0
- package/types/inputs/RadioButton.d.ts +9 -0
- package/types/inputs/index.d.ts +2 -0
- package/types/instrument-picker/InstrumentPicker.d.ts +24 -0
- package/types/instrument-picker/SearchCell.d.ts +3 -0
- package/types/instrument-picker/index.d.ts +1 -0
- package/types/instrument-picker/moving-window.d.ts +14 -0
- package/types/instrument-picker/useDataSource.d.ts +6 -0
- package/types/instrument-picker/useInstrumentPicker.d.ts +28 -0
- package/types/instrument-search/InstrumentSearch.d.ts +11 -0
- package/types/instrument-search/SearchCell.d.ts +3 -0
- package/types/instrument-search/index.d.ts +1 -0
- package/types/instrument-search/moving-window.d.ts +14 -0
- package/types/instrument-search/useDataSource.d.ts +6 -0
- package/types/instrument-search/useInstrumentSearch.d.ts +13 -0
- package/types/list/CheckboxIcon.d.ts +6 -0
- package/types/list/ChevronIcon.d.ts +7 -0
- package/types/list/Highlighter.d.ts +6 -0
- package/types/list/List.d.ts +6 -0
- package/types/list/ListItem.d.ts +6 -0
- package/types/list/ListItemGroup.d.ts +6 -0
- package/types/list/ListItemHeader.d.ts +5 -0
- package/types/list/RadioIcon.d.ts +5 -0
- package/types/list/common-hooks/index.d.ts +10 -0
- package/types/list/common-hooks/keyUtils.d.ts +14 -0
- package/types/list/common-hooks/list-dom-utils.d.ts +5 -0
- package/types/list/common-hooks/useCollapsibleGroups.d.ts +14 -0
- package/types/list/common-hooks/useImperativeScrollingAPI.d.ts +14 -0
- package/types/list/common-hooks/useKeyboardNavigation.d.ts +3 -0
- package/types/list/common-hooks/useTypeahead.d.ts +15 -0
- package/types/list/common-hooks/useViewportTracking.d.ts +14 -0
- package/types/list/common-hooks/utils/collection-item-utils.d.ts +21 -0
- package/types/list/common-hooks/utils/filter-utils.d.ts +4 -0
- package/types/list/common-hooks/utils/index.d.ts +4 -0
- package/types/list/common-hooks/utils/isSelected.d.ts +2 -0
- package/types/list/index.d.ts +10 -0
- package/types/list/keyset.d.ts +9 -0
- package/types/list/listTypes.d.ts +200 -0
- package/types/list/useList.d.ts +3 -0
- package/types/list/useListDrop.d.ts +15 -0
- package/types/list/useListHeight.d.ts +19 -0
- package/types/list/useScrollPosition.d.ts +19 -0
- package/types/measured-container/MeasuredContainer.d.ts +14 -0
- package/types/measured-container/index.d.ts +2 -0
- package/types/measured-container/useMeasuredContainer.d.ts +22 -0
- package/types/measured-container/useResizeObserver.d.ts +15 -0
- package/types/overflow-container/OverflowContainer.d.ts +15 -0
- package/types/overflow-container/index.d.ts +2 -0
- package/types/overflow-container/overflow-utils.d.ts +48 -0
- package/types/overflow-container/useOverflowContainer.d.ts +20 -0
- package/types/price-ticker/PriceTicker.d.ts +7 -0
- package/types/price-ticker/index.d.ts +1 -0
- package/types/split-button/SplitButton.d.ts +11 -0
- package/types/split-button/SplitStateButton.d.ts +6 -0
- package/types/split-button/index.d.ts +2 -0
- package/types/split-button/useSplitButton.d.ts +288 -0
- package/types/tabstrip/Tab.d.ts +26 -0
- package/types/tabstrip/TabMenu.d.ts +19 -0
- package/types/tabstrip/TabMenuOptions.d.ts +10 -0
- package/types/tabstrip/TabsTypes.d.ts +127 -0
- package/types/tabstrip/Tabstrip.d.ts +3 -0
- package/types/tabstrip/index.d.ts +4 -0
- package/types/tabstrip/tabstrip-dom-utils.d.ts +2 -0
- package/types/tabstrip/useAnimatedSelectionThumb.d.ts +7 -0
- package/types/tabstrip/useKeyboardNavigation.d.ts +29 -0
- package/types/tabstrip/useSelection.d.ts +13 -0
- package/types/tabstrip/useTabstrip.d.ts +49 -0
- package/types/toolbar/Toolbar.d.ts +20 -0
- package/types/toolbar/index.d.ts +1 -0
- package/types/toolbar/toolbar-dom-utils.d.ts +3 -0
- package/types/toolbar/useKeyboardNavigation.d.ts +32 -0
- package/types/toolbar/useSelection.d.ts +22 -0
- package/types/toolbar/useToolbar.d.ts +28 -0
- package/types/tree/Tree.d.ts +19 -0
- package/types/tree/hierarchical-data-utils.d.ts +8 -0
- package/types/tree/index.d.ts +4 -0
- package/types/tree/key-code.d.ts +11 -0
- package/types/tree/list-dom-utils.d.ts +6 -0
- package/types/tree/treeTypeUtils.d.ts +2 -0
- package/types/tree/treeTypes.d.ts +17 -0
- package/types/tree/use-collapsible-groups.d.ts +18 -0
- package/types/tree/use-hierarchical-data.d.ts +6 -0
- package/types/tree/use-items-with-ids.d.ts +8 -0
- package/types/tree/use-keyboard-navigation.d.ts +26 -0
- package/types/tree/use-selection.d.ts +31 -0
- package/types/tree/use-tree-keyboard-navigation.d.ts +12 -0
- package/types/tree/use-viewport-tracking.d.ts +2 -0
- package/types/tree/useTree.d.ts +30 -0
- package/types/utils/escapeRegExp.d.ts +1 -0
- package/types/utils/forwardCallbackProps.d.ts +3 -0
- package/types/utils/index.d.ts +3 -0
- package/types/utils/isOverflowElement.d.ts +1 -0
- package/types/vuu-input/VuuInput.d.ts +16 -0
- package/types/vuu-input/index.d.ts +1 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useCallback } from 'react';
|
|
3
|
+
import { useDropIndicator } from './useDropIndicator.js';
|
|
4
|
+
import { measureDropTargets, getNextDropTarget, getItemById, removeDraggedItem, dimensions } from './drop-target-utils.js';
|
|
5
|
+
import { Draggable, createDropIndicator } from './Draggable.js';
|
|
6
|
+
|
|
7
|
+
const NOT_OVERFLOWED = ':not([data-overflowed="true"])';
|
|
8
|
+
const NOT_HIDDEN = ':not([aria-hidden="true"])';
|
|
9
|
+
const useDragDropIndicator = ({
|
|
10
|
+
orientation = "horizontal",
|
|
11
|
+
containerRef,
|
|
12
|
+
itemQuery = "*",
|
|
13
|
+
selected,
|
|
14
|
+
viewportRange
|
|
15
|
+
}) => {
|
|
16
|
+
const dragDirectionRef = useRef();
|
|
17
|
+
const dropIndicatorRef = useRef(null);
|
|
18
|
+
const dropTargetRef = useRef(null);
|
|
19
|
+
const dropZoneRef = useRef("");
|
|
20
|
+
const isScrollable = useRef(false);
|
|
21
|
+
const dragPosRef = useRef(-1);
|
|
22
|
+
const measuredDropTargets = useRef([]);
|
|
23
|
+
const overflowMenuShowingRef = useRef(false);
|
|
24
|
+
const [showOverflow, setShowOverflow] = useState(false);
|
|
25
|
+
const [dropIndicator, setDropIndicator] = useState();
|
|
26
|
+
const { clearSpacer, positionDropIndicator } = useDropIndicator();
|
|
27
|
+
const draggedItemRef = useRef();
|
|
28
|
+
const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},[data-overflow-indicator])`;
|
|
29
|
+
const indexOf = (dropTarget) => measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);
|
|
30
|
+
const reposition = (dropTarget, distance, indexShift) => {
|
|
31
|
+
dropTarget.start += distance;
|
|
32
|
+
dropTarget.mid += distance;
|
|
33
|
+
dropTarget.end += distance;
|
|
34
|
+
if (typeof indexShift === "number") {
|
|
35
|
+
dropTarget.currentIndex += indexShift;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const rangeRef = useRef();
|
|
39
|
+
rangeRef.current = viewportRange;
|
|
40
|
+
const handleScrollStart = useCallback(() => {
|
|
41
|
+
clearSpacer();
|
|
42
|
+
}, [clearSpacer]);
|
|
43
|
+
const handleScrollStop = useCallback(
|
|
44
|
+
(scrollDirection, _scrollPos, atEnd) => {
|
|
45
|
+
const { current: container } = containerRef;
|
|
46
|
+
const { current: draggedItem } = draggedItemRef;
|
|
47
|
+
if (container && draggedItem) {
|
|
48
|
+
measuredDropTargets.current = measureDropTargets(
|
|
49
|
+
container,
|
|
50
|
+
orientation,
|
|
51
|
+
fullItemQuery,
|
|
52
|
+
rangeRef.current
|
|
53
|
+
);
|
|
54
|
+
const { size } = draggedItem;
|
|
55
|
+
const dragPos = dragPosRef.current;
|
|
56
|
+
const midPos = dragPos + size / 2;
|
|
57
|
+
const { current: dropTargets } = measuredDropTargets;
|
|
58
|
+
const nextDropTarget = getNextDropTarget(
|
|
59
|
+
dropTargets,
|
|
60
|
+
midPos,
|
|
61
|
+
size,
|
|
62
|
+
"fwd"
|
|
63
|
+
);
|
|
64
|
+
if (nextDropTarget) {
|
|
65
|
+
if (atEnd && scrollDirection === "fwd") {
|
|
66
|
+
positionDropIndicator(dropTargets[dropTargets.length - 1], "start");
|
|
67
|
+
} else {
|
|
68
|
+
positionDropIndicator(nextDropTarget, "start");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
[
|
|
74
|
+
containerRef,
|
|
75
|
+
positionDropIndicator,
|
|
76
|
+
fullItemQuery,
|
|
77
|
+
orientation
|
|
78
|
+
// setVizData,
|
|
79
|
+
]
|
|
80
|
+
);
|
|
81
|
+
const beginDrag = useCallback(
|
|
82
|
+
(dragElement) => {
|
|
83
|
+
if (dragElement.ariaSelected && Array.isArray(selected) && selected.length > 1) {
|
|
84
|
+
console.log("its a selected element, and we have a multi select");
|
|
85
|
+
}
|
|
86
|
+
const { current: container } = containerRef;
|
|
87
|
+
if (container && dragElement) {
|
|
88
|
+
const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);
|
|
89
|
+
const { id: draggedItemId } = dragElement;
|
|
90
|
+
const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } = container;
|
|
91
|
+
isScrollable.current = scrollSize > clientSize;
|
|
92
|
+
const dropTargets = measuredDropTargets.current = measureDropTargets(
|
|
93
|
+
container,
|
|
94
|
+
orientation,
|
|
95
|
+
fullItemQuery,
|
|
96
|
+
viewportRange
|
|
97
|
+
);
|
|
98
|
+
const draggedItem = getItemById(dropTargets, draggedItemId);
|
|
99
|
+
if (draggedItem && container) {
|
|
100
|
+
const targetIndex = indexOf(draggedItem);
|
|
101
|
+
removeDraggedItem(dropTargets, targetIndex);
|
|
102
|
+
draggedItemRef.current = draggedItem;
|
|
103
|
+
const { current: range } = rangeRef;
|
|
104
|
+
if (range?.atEnd) {
|
|
105
|
+
for (let i = 0; i < dropTargets.length; i++) {
|
|
106
|
+
reposition(dropTargets[i], draggedItem.size);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
for (let i = targetIndex; i < dropTargets.length; i++) {
|
|
110
|
+
reposition(dropTargets[i], -draggedItem.size, -1);
|
|
111
|
+
}
|
|
112
|
+
const [dropTarget, dropZone2] = draggedItem.isLast ? [dropTargets[dropTargets.length - 1], "end"] : [dropTargets[targetIndex], "start"];
|
|
113
|
+
dropTargetRef.current = dropTarget;
|
|
114
|
+
dropZoneRef.current = dropZone2;
|
|
115
|
+
const dropIndicatorPosition = positionDropIndicator(
|
|
116
|
+
dropTarget,
|
|
117
|
+
dropZone2
|
|
118
|
+
);
|
|
119
|
+
const { top, left, width } = dropIndicatorPosition.getBoundingClientRect();
|
|
120
|
+
const dropIndicatorRect = {
|
|
121
|
+
top: draggedItem.isLast ? range?.atEnd && !range.atStart ? top + draggedItem.size - 2 : top - 2 : top - draggedItem.size - 2,
|
|
122
|
+
left,
|
|
123
|
+
width,
|
|
124
|
+
height: 2
|
|
125
|
+
};
|
|
126
|
+
setDropIndicator(
|
|
127
|
+
/* @__PURE__ */ jsx(
|
|
128
|
+
Draggable,
|
|
129
|
+
{
|
|
130
|
+
wrapperClassName: "dropIndicatorContainer",
|
|
131
|
+
style: dropIndicatorRect,
|
|
132
|
+
ref: dropIndicatorRef,
|
|
133
|
+
element: createDropIndicator()
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
[
|
|
141
|
+
selected,
|
|
142
|
+
containerRef,
|
|
143
|
+
orientation,
|
|
144
|
+
fullItemQuery,
|
|
145
|
+
viewportRange,
|
|
146
|
+
positionDropIndicator
|
|
147
|
+
]
|
|
148
|
+
);
|
|
149
|
+
const drag = useCallback(
|
|
150
|
+
(dragPos, mouseMoveDirection) => {
|
|
151
|
+
const { current: currentDropTarget } = dropTargetRef;
|
|
152
|
+
const { current: draggedItem } = draggedItemRef;
|
|
153
|
+
if (draggedItem) {
|
|
154
|
+
if (containerRef.current) {
|
|
155
|
+
const START = orientation === "horizontal" ? "left" : "top";
|
|
156
|
+
dragPosRef.current = dragPos;
|
|
157
|
+
const { current: dropTargets } = measuredDropTargets;
|
|
158
|
+
const nextDropTarget = getNextDropTarget(
|
|
159
|
+
dropTargets,
|
|
160
|
+
dragPos,
|
|
161
|
+
draggedItem.size,
|
|
162
|
+
mouseMoveDirection
|
|
163
|
+
);
|
|
164
|
+
if (nextDropTarget && nextDropTarget.index !== currentDropTarget?.index) {
|
|
165
|
+
if (nextDropTarget.isOverflowIndicator) {
|
|
166
|
+
setShowOverflow(overflowMenuShowingRef.current = true);
|
|
167
|
+
} else if (dropIndicatorRef.current) {
|
|
168
|
+
const targetIndex = indexOf(nextDropTarget);
|
|
169
|
+
if (targetIndex === dropTargets.length - 1) {
|
|
170
|
+
const dropTarget = dropTargets[dropTargets.length - 1];
|
|
171
|
+
const dropIndicatorPosition = positionDropIndicator(
|
|
172
|
+
dropTarget,
|
|
173
|
+
"start"
|
|
174
|
+
);
|
|
175
|
+
const dropIndicatorRect = dropIndicatorPosition.getBoundingClientRect();
|
|
176
|
+
dropIndicatorRef.current.style[START] = `${dropIndicatorRect.top}px`;
|
|
177
|
+
} else {
|
|
178
|
+
const dropIndicatorPosition = positionDropIndicator(
|
|
179
|
+
nextDropTarget,
|
|
180
|
+
"start"
|
|
181
|
+
);
|
|
182
|
+
const dropIndicatorRect = dropIndicatorPosition.getBoundingClientRect();
|
|
183
|
+
dropIndicatorRef.current.style[START] = `${dropIndicatorRect.top}px`;
|
|
184
|
+
}
|
|
185
|
+
setShowOverflow(overflowMenuShowingRef.current = false);
|
|
186
|
+
}
|
|
187
|
+
dropTargetRef.current = nextDropTarget;
|
|
188
|
+
dragDirectionRef.current = mouseMoveDirection;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
[containerRef, orientation, positionDropIndicator]
|
|
194
|
+
);
|
|
195
|
+
const drop = useCallback(() => {
|
|
196
|
+
clearSpacer();
|
|
197
|
+
const { current: draggedItem } = draggedItemRef;
|
|
198
|
+
const { current: dropTarget } = dropTargetRef;
|
|
199
|
+
const { current: dropZone2 } = dropZoneRef;
|
|
200
|
+
const { current: range } = rangeRef;
|
|
201
|
+
if (draggedItem && range && dropTarget) {
|
|
202
|
+
const { index: fromIndex } = draggedItem;
|
|
203
|
+
const dropBefore = dropZone2 === "start";
|
|
204
|
+
const {
|
|
205
|
+
index: originalDropTargetIndex,
|
|
206
|
+
currentIndex: currentDropTargetIndex
|
|
207
|
+
} = dropTarget;
|
|
208
|
+
dropTargetRef.current = null;
|
|
209
|
+
dragDirectionRef.current = void 0;
|
|
210
|
+
setDropIndicator(void 0);
|
|
211
|
+
setShowOverflow(false);
|
|
212
|
+
if (overflowMenuShowingRef.current) {
|
|
213
|
+
return {
|
|
214
|
+
fromIndex,
|
|
215
|
+
toIndex: -1
|
|
216
|
+
};
|
|
217
|
+
} else {
|
|
218
|
+
if (fromIndex < originalDropTargetIndex) {
|
|
219
|
+
return {
|
|
220
|
+
fromIndex,
|
|
221
|
+
toIndex: dropBefore ? currentDropTargetIndex : currentDropTargetIndex + 1
|
|
222
|
+
};
|
|
223
|
+
} else {
|
|
224
|
+
return {
|
|
225
|
+
fromIndex,
|
|
226
|
+
toIndex: dropBefore ? originalDropTargetIndex : originalDropTargetIndex + 1
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
} else {
|
|
231
|
+
throw Error(`useDragDropIndicator drop error`);
|
|
232
|
+
}
|
|
233
|
+
}, [clearSpacer]);
|
|
234
|
+
const releaseDrag = useCallback(() => {
|
|
235
|
+
}, []);
|
|
236
|
+
return {
|
|
237
|
+
beginDrag,
|
|
238
|
+
drag,
|
|
239
|
+
drop,
|
|
240
|
+
dropIndicator,
|
|
241
|
+
handleScrollStart,
|
|
242
|
+
handleScrollStop,
|
|
243
|
+
releaseDrag,
|
|
244
|
+
revealOverflowedItems: showOverflow
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
|
|
248
|
+
export { useDragDropIndicator };
|
|
249
|
+
//# sourceMappingURL=useDragDropIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDragDropIndicator.js","sources":["../../src/drag-drop/useDragDropIndicator.tsx"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nimport {\n InternalDragDropProps,\n InternalDragHookResult,\n Direction,\n ViewportRange,\n DropOptions,\n} from \"./dragDropTypes\";\nimport { useDropIndicator } from \"./useDropIndicator\";\n\nimport {\n dimensions,\n getItemById,\n MeasuredDropTarget,\n measureDropTargets,\n getNextDropTarget,\n dropZone,\n removeDraggedItem,\n} from \"./drop-target-utils\";\n\nimport { createDropIndicator, Draggable } from \"./Draggable\";\n\nconst NOT_OVERFLOWED = ':not([data-overflowed=\"true\"])';\nconst NOT_HIDDEN = ':not([aria-hidden=\"true\"])';\n\nexport const useDragDropIndicator = ({\n orientation = \"horizontal\",\n containerRef,\n itemQuery = \"*\",\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const dragDirectionRef = useRef<Direction | undefined>();\n const dropIndicatorRef = useRef<HTMLDivElement>(null);\n const dropTargetRef = useRef<MeasuredDropTarget | null>(null);\n const dropZoneRef = useRef<dropZone | \"\">(\"\");\n const isScrollable = useRef(false);\n /** current position of dragged element */\n const dragPosRef = useRef<number>(-1);\n const measuredDropTargets = useRef<MeasuredDropTarget[]>([]);\n const overflowMenuShowingRef = useRef(false);\n\n const [showOverflow, setShowOverflow] = useState(false);\n const [dropIndicator, setDropIndicator] = useState<JSX.Element | undefined>();\n\n const { clearSpacer, positionDropIndicator } = useDropIndicator();\n\n const draggedItemRef = useRef<MeasuredDropTarget>();\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},[data-overflow-indicator])`;\n\n // const { setMeasurements: setVizData } = useListViz();\n\n const indexOf = (dropTarget: MeasuredDropTarget) =>\n measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);\n\n const reposition = (\n dropTarget: MeasuredDropTarget,\n distance: number,\n indexShift?: number\n ) => {\n dropTarget.start += distance;\n dropTarget.mid += distance;\n dropTarget.end += distance;\n if (typeof indexShift === \"number\") {\n dropTarget.currentIndex += indexShift;\n }\n };\n\n // Shouldn't need this - but viewportRange is always stale in stopScrolling. Checked all dependencies\n // look ok. Something to do with setTimeout / scrollHandler ?\n const rangeRef = useRef<ViewportRange>();\n rangeRef.current = viewportRange;\n\n const handleScrollStart = useCallback(() => {\n clearSpacer();\n }, [clearSpacer]);\n\n const handleScrollStop = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\", _scrollPos: number, atEnd: boolean) => {\n const { current: container } = containerRef;\n const { current: draggedItem } = draggedItemRef;\n if (container && draggedItem) {\n measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n rangeRef.current\n );\n // setVizData(measuredDropTargets.current);\n\n const { size } = draggedItem;\n const dragPos = dragPosRef.current;\n const midPos = dragPos + size / 2;\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(\n dropTargets,\n midPos,\n size,\n \"fwd\"\n );\n if (nextDropTarget) {\n if (atEnd && scrollDirection === \"fwd\") {\n positionDropIndicator(dropTargets[dropTargets.length - 1], \"start\");\n } else {\n positionDropIndicator(nextDropTarget, \"start\");\n }\n }\n\n // setVizData(measuredDropTargets.current, nextDropTarget);\n }\n },\n [\n containerRef,\n positionDropIndicator,\n fullItemQuery,\n orientation,\n // setVizData,\n ]\n );\n\n const beginDrag = useCallback(\n (dragElement: HTMLElement) => {\n if (\n dragElement.ariaSelected &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n console.log(\"its a selected element, and we have a multi select\");\n }\n const { current: container } = containerRef;\n if (container && dragElement) {\n const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);\n const { id: draggedItemId } = dragElement;\n\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n container;\n isScrollable.current = scrollSize > clientSize;\n\n const dropTargets = (measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n viewportRange\n ));\n\n const draggedItem = getItemById(dropTargets, draggedItemId);\n\n if (draggedItem && container) {\n const targetIndex = indexOf(draggedItem);\n removeDraggedItem(dropTargets, targetIndex);\n draggedItemRef.current = draggedItem;\n\n // This begins to deviate from NaturalMovement here -----------\n const { current: range } = rangeRef;\n //TODO when our viewport is the last 'page' of a scrolling viewport\n // the viewport will scoll up by one row when we remove an item, so\n // the position of each item will move down.\n if (range?.atEnd) {\n for (let i = 0; i < dropTargets.length; i++) {\n reposition(dropTargets[i], draggedItem.size);\n }\n }\n for (let i = targetIndex; i < dropTargets.length; i++) {\n reposition(dropTargets[i], -draggedItem.size, -1);\n }\n\n const [dropTarget, dropZone] = draggedItem.isLast\n ? [dropTargets[dropTargets.length - 1], \"end\"]\n : [dropTargets[targetIndex], \"start\"];\n\n dropTargetRef.current = dropTarget;\n dropZoneRef.current = dropZone as dropZone;\n\n // setVizData(dropTargets, dropTarget, dropZone);\n\n const dropIndicatorPosition = positionDropIndicator(\n dropTarget,\n dropZone as dropZone\n );\n\n const { top, left, width } =\n dropIndicatorPosition.getBoundingClientRect();\n // Next render will remove the dragged item, that will offset our initial\n // dropIndicatorPosition\n const dropIndicatorRect = {\n top: draggedItem.isLast\n ? range?.atEnd && !range.atStart\n ? top + draggedItem.size - 2\n : top - 2\n : top - draggedItem.size - 2,\n left,\n width,\n height: 2,\n };\n\n setDropIndicator(\n <Draggable\n wrapperClassName=\"dropIndicatorContainer\"\n style={dropIndicatorRect}\n ref={dropIndicatorRef}\n element={createDropIndicator()}\n />\n );\n }\n }\n },\n [\n selected,\n containerRef,\n orientation,\n fullItemQuery,\n viewportRange,\n positionDropIndicator,\n ]\n );\n\n const drag = useCallback(\n (dragPos: number, mouseMoveDirection: \"fwd\" | \"bwd\") => {\n const { current: currentDropTarget } = dropTargetRef;\n const { current: draggedItem } = draggedItemRef;\n\n if (draggedItem) {\n if (containerRef.current) {\n const START = orientation === \"horizontal\" ? \"left\" : \"top\";\n dragPosRef.current = dragPos;\n\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(\n dropTargets,\n dragPos,\n draggedItem.size,\n mouseMoveDirection\n );\n\n if (\n nextDropTarget &&\n nextDropTarget.index !== currentDropTarget?.index\n // mouseMoveDirection !== dragDirectionRef.current\n ) {\n if (nextDropTarget.isOverflowIndicator) {\n // Does this belong in here or can we abstract it out\n setShowOverflow((overflowMenuShowingRef.current = true));\n } else if (dropIndicatorRef.current) {\n const targetIndex = indexOf(nextDropTarget);\n if (targetIndex === dropTargets.length - 1) {\n // because we maintain at least one out-of-viewport row in\n // the dropTargets, this means we are at the very last item.\n const dropTarget = dropTargets[dropTargets.length - 1];\n const dropIndicatorPosition = positionDropIndicator(\n dropTarget,\n \"start\"\n );\n const dropIndicatorRect =\n dropIndicatorPosition.getBoundingClientRect();\n dropIndicatorRef.current.style[\n START\n ] = `${dropIndicatorRect.top}px`;\n } else {\n const dropIndicatorPosition = positionDropIndicator(\n nextDropTarget,\n \"start\"\n ) as unknown as HTMLElement;\n const dropIndicatorRect =\n dropIndicatorPosition.getBoundingClientRect();\n dropIndicatorRef.current.style[\n START\n ] = `${dropIndicatorRect.top}px`;\n }\n // setVizData(dropTargets, nextDropTarget, nextDropZone);\n\n setShowOverflow((overflowMenuShowingRef.current = false));\n }\n\n dropTargetRef.current = nextDropTarget;\n dragDirectionRef.current = mouseMoveDirection;\n }\n }\n }\n },\n [containerRef, orientation, positionDropIndicator]\n );\n\n const drop = useCallback((): DropOptions => {\n clearSpacer();\n const { current: draggedItem } = draggedItemRef;\n const { current: dropTarget } = dropTargetRef;\n const { current: dropZone } = dropZoneRef;\n const { current: range } = rangeRef;\n\n if (draggedItem && range && dropTarget) {\n const { index: fromIndex } = draggedItem;\n\n const dropBefore = dropZone === \"start\";\n const {\n index: originalDropTargetIndex,\n currentIndex: currentDropTargetIndex,\n } = dropTarget;\n\n dropTargetRef.current = null;\n dragDirectionRef.current = undefined;\n\n setDropIndicator(undefined);\n setShowOverflow(false);\n\n //TODO why is this different from Natural Movement ?\n if (overflowMenuShowingRef.current) {\n return {\n fromIndex,\n toIndex: -1,\n };\n } else {\n if (fromIndex < originalDropTargetIndex) {\n return {\n fromIndex,\n toIndex: dropBefore\n ? currentDropTargetIndex\n : currentDropTargetIndex + 1,\n };\n } else {\n return {\n fromIndex,\n toIndex: dropBefore\n ? originalDropTargetIndex\n : originalDropTargetIndex + 1,\n };\n }\n }\n } else {\n throw Error(`useDragDropIndicator drop error`);\n }\n }, [clearSpacer]);\n\n const releaseDrag = useCallback(() => {\n // TODO\n }, []);\n\n return {\n beginDrag,\n drag,\n drop,\n dropIndicator,\n handleScrollStart,\n handleScrollStop,\n releaseDrag,\n revealOverflowedItems: showOverflow,\n };\n};\n"],"names":["dropZone"],"mappings":"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"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { useRef, useState, useCallback, useMemo } from 'react';
|
|
2
|
+
import { useDragDisplacers } from './useDragDisplacers.js';
|
|
3
|
+
import { dispatchMouseEvent } from '@vuu-ui/vuu-utils';
|
|
4
|
+
import { getItemParentContainer, measureDropTargets, getIndexOfDraggedItem, getNextDropTarget, NOT_OVERFLOWED, NOT_HIDDEN, dimensions } from './drop-target-utils.js';
|
|
5
|
+
|
|
6
|
+
const useDragDropNaturalMovement = ({
|
|
7
|
+
containerRef,
|
|
8
|
+
orientation = "horizontal",
|
|
9
|
+
itemQuery = "*",
|
|
10
|
+
selected,
|
|
11
|
+
viewportRange
|
|
12
|
+
}) => {
|
|
13
|
+
const dragPositionRef = useRef({
|
|
14
|
+
direction: void 0,
|
|
15
|
+
insertionPosition: -1
|
|
16
|
+
});
|
|
17
|
+
const isScrollable = useRef(false);
|
|
18
|
+
const dragPosRef = useRef(-1);
|
|
19
|
+
const measuredDropTargets = useRef([]);
|
|
20
|
+
const overflowMenuShowingRef = useRef(false);
|
|
21
|
+
const [showOverflow, setShowOverflow] = useState(false);
|
|
22
|
+
const { clearSpacers, displaceItem, displaceLastItem, setTerminalSpacer } = useDragDisplacers(orientation);
|
|
23
|
+
const draggedItemRef = useRef();
|
|
24
|
+
const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},.vuuOverflowContainer-OverflowIndicator)`;
|
|
25
|
+
const indexOf = (dropTarget) => measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);
|
|
26
|
+
const rangeRef = useRef();
|
|
27
|
+
rangeRef.current = viewportRange;
|
|
28
|
+
const handleScrollStart = useCallback(
|
|
29
|
+
(scrollDirection) => {
|
|
30
|
+
const itemContainer = getItemParentContainer(
|
|
31
|
+
containerRef.current,
|
|
32
|
+
itemQuery
|
|
33
|
+
);
|
|
34
|
+
const { current: draggedItem } = draggedItemRef;
|
|
35
|
+
if (itemContainer && draggedItem) {
|
|
36
|
+
setTerminalSpacer(
|
|
37
|
+
itemContainer,
|
|
38
|
+
scrollDirection === "fwd" ? "end" : "start",
|
|
39
|
+
draggedItem.size
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
[containerRef, itemQuery, setTerminalSpacer]
|
|
44
|
+
);
|
|
45
|
+
const handleScrollStop = useCallback(
|
|
46
|
+
(scrollDirection) => {
|
|
47
|
+
const { current: container } = containerRef;
|
|
48
|
+
const { current: draggedItem } = draggedItemRef;
|
|
49
|
+
const { current: dragPosition } = dragPositionRef;
|
|
50
|
+
if (container && draggedItem) {
|
|
51
|
+
const dropTargets = measuredDropTargets.current = measureDropTargets(
|
|
52
|
+
container,
|
|
53
|
+
orientation,
|
|
54
|
+
fullItemQuery,
|
|
55
|
+
rangeRef.current
|
|
56
|
+
);
|
|
57
|
+
const dropTargetAtBoundary = scrollDirection === "fwd" ? dropTargets.at(-1) : dropTargets.at(0);
|
|
58
|
+
if (dropTargetAtBoundary) {
|
|
59
|
+
const { mid, end, size, start } = dropTargetAtBoundary;
|
|
60
|
+
if (scrollDirection === "fwd") {
|
|
61
|
+
const draggedDropTarget = {
|
|
62
|
+
...draggedItem,
|
|
63
|
+
start: Math.round(start + size),
|
|
64
|
+
mid: Math.round(mid + size),
|
|
65
|
+
end: Math.round(end + size)
|
|
66
|
+
};
|
|
67
|
+
dropTargets.push(draggedDropTarget);
|
|
68
|
+
dragPosition.insertionPosition = dropTargetAtBoundary.index + 1;
|
|
69
|
+
} else {
|
|
70
|
+
const draggedDropTarget = {
|
|
71
|
+
...draggedItem,
|
|
72
|
+
start: Math.round(start - size),
|
|
73
|
+
mid: Math.round(mid - size),
|
|
74
|
+
end: Math.round(end - size)
|
|
75
|
+
};
|
|
76
|
+
dropTargets.unshift(draggedDropTarget);
|
|
77
|
+
dragPosition.insertionPosition = 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
[containerRef, fullItemQuery, orientation]
|
|
83
|
+
);
|
|
84
|
+
const beginDrag = useCallback(
|
|
85
|
+
(dragElement) => {
|
|
86
|
+
if (
|
|
87
|
+
//TODO need a different check for selected
|
|
88
|
+
dragElement.ariaSelected && Array.isArray(selected) && selected.length > 1
|
|
89
|
+
) {
|
|
90
|
+
console.log("its a selected element, and we have a multi select");
|
|
91
|
+
}
|
|
92
|
+
const { current: container } = containerRef;
|
|
93
|
+
const { current: dragPosition } = dragPositionRef;
|
|
94
|
+
if (container && dragElement) {
|
|
95
|
+
const internalDrag = container.contains(dragElement);
|
|
96
|
+
const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);
|
|
97
|
+
const { id: draggedItemId } = dragElement;
|
|
98
|
+
const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } = container;
|
|
99
|
+
isScrollable.current = scrollSize > clientSize;
|
|
100
|
+
const dropTargets = measuredDropTargets.current = measureDropTargets(
|
|
101
|
+
container,
|
|
102
|
+
orientation,
|
|
103
|
+
fullItemQuery,
|
|
104
|
+
viewportRange,
|
|
105
|
+
draggedItemId
|
|
106
|
+
);
|
|
107
|
+
if (internalDrag) {
|
|
108
|
+
const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);
|
|
109
|
+
const draggedItem = dropTargets[indexOfDraggedItem];
|
|
110
|
+
if (draggedItem && container) {
|
|
111
|
+
draggedItemRef.current = draggedItem;
|
|
112
|
+
const displaceFunction = draggedItem.isLast ? displaceLastItem : displaceItem;
|
|
113
|
+
dragPosition.insertionPosition = displaceFunction(
|
|
114
|
+
dropTargets,
|
|
115
|
+
draggedItem,
|
|
116
|
+
draggedItem.size,
|
|
117
|
+
false,
|
|
118
|
+
"static"
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
const { top: dragPos, height: size } = dragElement.getBoundingClientRect();
|
|
123
|
+
const dropTarget = getNextDropTarget(dropTargets, dragPos, size, "fwd");
|
|
124
|
+
const index = dropTargets.indexOf(dropTarget);
|
|
125
|
+
const { start, end, mid } = dropTarget;
|
|
126
|
+
const draggedItem = draggedItemRef.current = {
|
|
127
|
+
end,
|
|
128
|
+
mid,
|
|
129
|
+
start,
|
|
130
|
+
isDraggedItem: true,
|
|
131
|
+
isExternal: true,
|
|
132
|
+
size
|
|
133
|
+
};
|
|
134
|
+
const indexOfDropTarget = dropTargets.indexOf(dropTarget);
|
|
135
|
+
dropTargets.splice(indexOfDropTarget, 0, draggedItem);
|
|
136
|
+
for (let i = index + 1; i < dropTargets.length; i++) {
|
|
137
|
+
const target = dropTargets[i];
|
|
138
|
+
target.mid += size;
|
|
139
|
+
target.end += size;
|
|
140
|
+
target.start += size;
|
|
141
|
+
}
|
|
142
|
+
const displaceFunction = dropTarget.isLast ? displaceLastItem : displaceItem;
|
|
143
|
+
displaceFunction(
|
|
144
|
+
dropTargets,
|
|
145
|
+
dropTarget,
|
|
146
|
+
dropTarget.size,
|
|
147
|
+
true,
|
|
148
|
+
"static"
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
[
|
|
154
|
+
containerRef,
|
|
155
|
+
displaceItem,
|
|
156
|
+
displaceLastItem,
|
|
157
|
+
fullItemQuery,
|
|
158
|
+
orientation,
|
|
159
|
+
selected,
|
|
160
|
+
viewportRange
|
|
161
|
+
]
|
|
162
|
+
);
|
|
163
|
+
const [showPopup, hidePopup] = useMemo(() => {
|
|
164
|
+
let popupShowing = false;
|
|
165
|
+
const show = (dropTarget) => {
|
|
166
|
+
if (!popupShowing) {
|
|
167
|
+
popupShowing = true;
|
|
168
|
+
const button = dropTarget.element.querySelector(
|
|
169
|
+
".vuuPopupMenu"
|
|
170
|
+
);
|
|
171
|
+
if (button) {
|
|
172
|
+
dispatchMouseEvent(button, "click");
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const hide = (dropTarget) => {
|
|
177
|
+
if (popupShowing) {
|
|
178
|
+
popupShowing = false;
|
|
179
|
+
const button = dropTarget.element.querySelector(
|
|
180
|
+
".vuuPopupMenu"
|
|
181
|
+
);
|
|
182
|
+
if (button) {
|
|
183
|
+
dispatchMouseEvent(button, "click");
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
return [show, hide];
|
|
188
|
+
}, []);
|
|
189
|
+
const drag = useCallback(
|
|
190
|
+
(dragPos, mouseMoveDirection) => {
|
|
191
|
+
const { current: draggedItem } = draggedItemRef;
|
|
192
|
+
const { current: dragPosition } = dragPositionRef;
|
|
193
|
+
if (draggedItem) {
|
|
194
|
+
if (containerRef.current) {
|
|
195
|
+
dragPosRef.current = dragPos;
|
|
196
|
+
const { current: dropTargets } = measuredDropTargets;
|
|
197
|
+
const nextDropTarget = getNextDropTarget(
|
|
198
|
+
dropTargets,
|
|
199
|
+
dragPos,
|
|
200
|
+
draggedItem.size,
|
|
201
|
+
mouseMoveDirection
|
|
202
|
+
);
|
|
203
|
+
if (nextDropTarget && !nextDropTarget.isDraggedItem) {
|
|
204
|
+
if (nextDropTarget.isOverflowIndicator) {
|
|
205
|
+
setShowOverflow(overflowMenuShowingRef.current = true);
|
|
206
|
+
showPopup(nextDropTarget);
|
|
207
|
+
} else {
|
|
208
|
+
const { size } = draggedItem;
|
|
209
|
+
const targetIndex = indexOf(nextDropTarget);
|
|
210
|
+
const displaceFunc = targetIndex === dropTargets.length - 1 ? displaceLastItem : displaceItem;
|
|
211
|
+
dragPosition.insertionPosition = displaceFunc(
|
|
212
|
+
dropTargets,
|
|
213
|
+
nextDropTarget,
|
|
214
|
+
size,
|
|
215
|
+
true,
|
|
216
|
+
mouseMoveDirection
|
|
217
|
+
);
|
|
218
|
+
const overflowIndicator = dropTargets.at(
|
|
219
|
+
-1
|
|
220
|
+
);
|
|
221
|
+
hidePopup(overflowIndicator);
|
|
222
|
+
setShowOverflow(overflowMenuShowingRef.current = false);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
dragPosition.direction = mouseMoveDirection;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
[containerRef, displaceItem, displaceLastItem, hidePopup, showPopup]
|
|
230
|
+
);
|
|
231
|
+
const drop = useCallback(() => {
|
|
232
|
+
clearSpacers();
|
|
233
|
+
const { current: dropTargets } = measuredDropTargets;
|
|
234
|
+
const { current: dragPosition } = dragPositionRef;
|
|
235
|
+
const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);
|
|
236
|
+
const draggedItem = dropTargets[indexOfDraggedItem];
|
|
237
|
+
const { insertionPosition } = dragPosition;
|
|
238
|
+
const { index: fromIndex, isExternal } = draggedItem;
|
|
239
|
+
if (overflowMenuShowingRef.current) {
|
|
240
|
+
setShowOverflow(false);
|
|
241
|
+
}
|
|
242
|
+
dragPosition.direction = void 0;
|
|
243
|
+
dragPosition.insertionPosition = -1;
|
|
244
|
+
const toIndex = overflowMenuShowingRef.current ? -1 : fromIndex < insertionPosition ? insertionPosition - 1 : insertionPosition;
|
|
245
|
+
return { fromIndex, toIndex, isExternal };
|
|
246
|
+
}, [clearSpacers]);
|
|
247
|
+
const releaseDrag = useCallback(() => {
|
|
248
|
+
clearSpacers(true);
|
|
249
|
+
}, [clearSpacers]);
|
|
250
|
+
return {
|
|
251
|
+
beginDrag,
|
|
252
|
+
drag,
|
|
253
|
+
drop,
|
|
254
|
+
handleScrollStart,
|
|
255
|
+
handleScrollStop,
|
|
256
|
+
releaseDrag,
|
|
257
|
+
revealOverflowedItems: showOverflow
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
export { useDragDropNaturalMovement };
|
|
262
|
+
//# sourceMappingURL=useDragDropNaturalMovement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDragDropNaturalMovement.js","sources":["../../src/drag-drop/useDragDropNaturalMovement.tsx"],"sourcesContent":["import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n Direction,\n DropOptions,\n InternalDragDropProps,\n InternalDragHookResult,\n ViewportRange,\n} from \"./dragDropTypes\";\nimport { useDragDisplacers } from \"./useDragDisplacers\";\nimport { dispatchMouseEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n dimensions,\n getIndexOfDraggedItem,\n getItemParentContainer,\n getNextDropTarget,\n MeasuredDropTarget,\n measureDropTargets,\n NOT_HIDDEN,\n NOT_OVERFLOWED,\n} from \"./drop-target-utils\";\n\ntype DragPosition = {\n direction?: Direction;\n insertionPosition: number;\n};\n\nexport const useDragDropNaturalMovement = ({\n containerRef,\n orientation = \"horizontal\",\n itemQuery = \"*\",\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const dragPositionRef = useRef<DragPosition>({\n direction: undefined,\n insertionPosition: -1,\n });\n const isScrollable = useRef(false);\n /** current position of dragged element */\n const dragPosRef = useRef<number>(-1);\n const measuredDropTargets = useRef<MeasuredDropTarget[]>([]);\n const overflowMenuShowingRef = useRef(false);\n\n const [showOverflow, setShowOverflow] = useState(false);\n\n const { clearSpacers, displaceItem, displaceLastItem, setTerminalSpacer } =\n useDragDisplacers(orientation);\n\n const draggedItemRef = useRef<MeasuredDropTarget>();\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED}${NOT_HIDDEN},.vuuOverflowContainer-OverflowIndicator)`;\n\n const indexOf = (dropTarget: MeasuredDropTarget) =>\n measuredDropTargets.current.findIndex((d) => d.id === dropTarget.id);\n\n // Shouldn't need this - but viewportRange is always stale in stopScrolling. Checked all dependencies\n // look ok. Something to do with setTimeout / scrollHandler ?\n const rangeRef = useRef<ViewportRange>();\n rangeRef.current = viewportRange;\n\n const handleScrollStart = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\") => {\n const itemContainer = getItemParentContainer(\n containerRef.current,\n itemQuery\n );\n const { current: draggedItem } = draggedItemRef;\n\n // When we start scrolling, insert a spacer at the start of end of the collection.\n // This is what we will need if user scrolls right to end and it will give the correct\n // scrollHeight. Ig user stops scrolling before start/end we will reposition the\n // spacer(s) appropriately\n if (itemContainer && draggedItem) {\n setTerminalSpacer(\n itemContainer,\n scrollDirection === \"fwd\" ? \"end\" : \"start\",\n draggedItem.size\n );\n }\n },\n [containerRef, itemQuery, setTerminalSpacer]\n );\n\n const handleScrollStop = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\") => {\n const { current: container } = containerRef;\n const { current: draggedItem } = draggedItemRef;\n const { current: dragPosition } = dragPositionRef;\n if (container && draggedItem) {\n const dropTargets = (measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n rangeRef.current\n ));\n\n const dropTargetAtBoundary =\n scrollDirection === \"fwd\" ? dropTargets.at(-1) : dropTargets.at(0);\n\n if (dropTargetAtBoundary) {\n const { mid, end, size, start } = dropTargetAtBoundary;\n if (scrollDirection === \"fwd\") {\n const draggedDropTarget = {\n ...draggedItem,\n start: Math.round(start + size),\n mid: Math.round(mid + size),\n end: Math.round(end + size),\n };\n dropTargets.push(draggedDropTarget);\n dragPosition.insertionPosition = dropTargetAtBoundary.index + 1;\n } else {\n const draggedDropTarget = {\n ...draggedItem,\n start: Math.round(start - size),\n mid: Math.round(mid - size),\n end: Math.round(end - size),\n };\n dropTargets.unshift(draggedDropTarget);\n dragPosition.insertionPosition = 0;\n }\n }\n }\n },\n [containerRef, fullItemQuery, orientation]\n );\n\n const beginDrag = useCallback(\n (dragElement: HTMLElement) => {\n if (\n //TODO need a different check for selected\n dragElement.ariaSelected &&\n Array.isArray(selected) &&\n selected.length > 1\n ) {\n console.log(\"its a selected element, and we have a multi select\");\n }\n const { current: container } = containerRef;\n const { current: dragPosition } = dragPositionRef;\n\n if (container && dragElement) {\n const internalDrag = container.contains(dragElement);\n const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);\n const { id: draggedItemId } = dragElement;\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n container;\n isScrollable.current = scrollSize > clientSize;\n const dropTargets = (measuredDropTargets.current = measureDropTargets(\n container,\n orientation,\n fullItemQuery,\n viewportRange,\n draggedItemId\n ));\n\n if (internalDrag) {\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n if (draggedItem && container) {\n draggedItemRef.current = draggedItem;\n const displaceFunction = draggedItem.isLast\n ? displaceLastItem\n : displaceItem;\n\n // This should return the insertion position of dragged item\n // which depends on both dro[Target and direction]\n dragPosition.insertionPosition = displaceFunction(\n dropTargets,\n draggedItem,\n draggedItem.size,\n false,\n \"static\"\n );\n }\n } else {\n // prettier-ignore\n const { top: dragPos, height: size } = dragElement.getBoundingClientRect();\n // prettier-ignore\n const dropTarget = getNextDropTarget( dropTargets, dragPos, size, \"fwd\");\n const index = dropTargets.indexOf(dropTarget);\n const { start, end, mid } = dropTarget;\n\n // need to compute the correct position of this\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const draggedItem = (draggedItemRef.current = {\n end,\n mid,\n start,\n isDraggedItem: true,\n isExternal: true,\n size,\n });\n\n const indexOfDropTarget = dropTargets.indexOf(dropTarget);\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dropTargets.splice(indexOfDropTarget, 0, draggedItem);\n for (let i = index + 1; i < dropTargets.length; i++) {\n const target = dropTargets[i];\n target.mid += size;\n target.end += size;\n target.start += size;\n }\n\n const displaceFunction = dropTarget.isLast\n ? displaceLastItem\n : displaceItem;\n\n displaceFunction(\n dropTargets,\n dropTarget,\n dropTarget.size,\n true,\n \"static\"\n );\n }\n }\n },\n [\n containerRef,\n displaceItem,\n displaceLastItem,\n fullItemQuery,\n orientation,\n selected,\n viewportRange,\n ]\n );\n\n const [showPopup, hidePopup] = useMemo(() => {\n let popupShowing = false;\n const show = (dropTarget: MeasuredDropTarget) => {\n if (!popupShowing) {\n popupShowing = true;\n const button = dropTarget.element.querySelector(\n \".vuuPopupMenu\"\n ) as HTMLElement;\n if (button) {\n dispatchMouseEvent(button, \"click\");\n }\n }\n };\n\n const hide = (dropTarget: MeasuredDropTarget) => {\n if (popupShowing) {\n popupShowing = false;\n const button = dropTarget.element.querySelector(\n \".vuuPopupMenu\"\n ) as HTMLElement;\n if (button) {\n dispatchMouseEvent(button, \"click\");\n }\n }\n };\n\n return [show, hide];\n }, []);\n\n const drag = useCallback(\n (dragPos: number, mouseMoveDirection: \"fwd\" | \"bwd\") => {\n const { current: draggedItem } = draggedItemRef;\n const { current: dragPosition } = dragPositionRef;\n\n if (draggedItem) {\n if (containerRef.current) {\n dragPosRef.current = dragPos;\n\n const { current: dropTargets } = measuredDropTargets;\n const nextDropTarget = getNextDropTarget(\n dropTargets,\n dragPos,\n draggedItem.size,\n mouseMoveDirection\n );\n\n if (nextDropTarget && !nextDropTarget.isDraggedItem) {\n if (nextDropTarget.isOverflowIndicator) {\n // Does this belong in here or can we abstract it out\n setShowOverflow((overflowMenuShowingRef.current = true));\n showPopup(nextDropTarget);\n } else {\n const { size } = draggedItem;\n const targetIndex = indexOf(nextDropTarget);\n\n const displaceFunc =\n targetIndex === dropTargets.length - 1\n ? displaceLastItem\n : displaceItem;\n\n dragPosition.insertionPosition = displaceFunc(\n dropTargets,\n nextDropTarget,\n size,\n true,\n mouseMoveDirection\n );\n\n const overflowIndicator = dropTargets.at(\n -1\n ) as MeasuredDropTarget;\n hidePopup(overflowIndicator);\n setShowOverflow((overflowMenuShowingRef.current = false));\n }\n }\n dragPosition.direction = mouseMoveDirection;\n }\n }\n },\n [containerRef, displaceItem, displaceLastItem, hidePopup, showPopup]\n );\n\n const drop = useCallback((): DropOptions => {\n clearSpacers();\n const { current: dropTargets } = measuredDropTargets;\n const { current: dragPosition } = dragPositionRef;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n const { insertionPosition } = dragPosition;\n const { index: fromIndex, isExternal } = draggedItem;\n\n if (overflowMenuShowingRef.current) {\n setShowOverflow(false);\n }\n\n dragPosition.direction = undefined;\n dragPosition.insertionPosition = -1;\n\n const toIndex = overflowMenuShowingRef.current\n ? -1\n : fromIndex < insertionPosition\n ? insertionPosition - 1\n : insertionPosition;\n\n return { fromIndex, toIndex, isExternal };\n }, [clearSpacers]);\n\n const releaseDrag = useCallback(() => {\n clearSpacers(true);\n }, [clearSpacers]);\n\n return {\n beginDrag,\n drag,\n drop,\n handleScrollStart,\n handleScrollStop,\n releaseDrag,\n revealOverflowedItems: showOverflow,\n };\n};\n"],"names":[],"mappings":";;;;;AA2BO,MAAM,6BAA6B,CAAC;AAAA,EACzC,YAAA;AAAA,EACA,WAAc,GAAA,YAAA;AAAA,EACd,SAAY,GAAA,GAAA;AAAA,EACZ,QAAA;AAAA,EACA,aAAA;AACF,CAAqD,KAAA;AACnD,EAAA,MAAM,kBAAkB,MAAqB,CAAA;AAAA,IAC3C,SAAW,EAAA,KAAA,CAAA;AAAA,IACX,iBAAmB,EAAA,CAAA,CAAA;AAAA,GACpB,CAAA,CAAA;AACD,EAAM,MAAA,YAAA,GAAe,OAAO,KAAK,CAAA,CAAA;AAEjC,EAAM,MAAA,UAAA,GAAa,OAAe,CAAE,CAAA,CAAA,CAAA;AACpC,EAAM,MAAA,mBAAA,GAAsB,MAA6B,CAAA,EAAE,CAAA,CAAA;AAC3D,EAAM,MAAA,sBAAA,GAAyB,OAAO,KAAK,CAAA,CAAA;AAE3C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAEtD,EAAA,MAAM,EAAE,YAAc,EAAA,YAAA,EAAc,kBAAkB,iBAAkB,EAAA,GACtE,kBAAkB,WAAW,CAAA,CAAA;AAE/B,EAAA,MAAM,iBAAiB,MAA2B,EAAA,CAAA;AAClD,EAAA,MAAM,gBAAgB,CAAO,IAAA,EAAA,SAAS,CAAG,EAAA,cAAc,GAAG,UAAU,CAAA,yCAAA,CAAA,CAAA;AAEpE,EAAM,MAAA,OAAA,GAAU,CAAC,UAAA,KACf,mBAAoB,CAAA,OAAA,CAAQ,SAAU,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,EAAO,KAAA,UAAA,CAAW,EAAE,CAAA,CAAA;AAIrE,EAAA,MAAM,WAAW,MAAsB,EAAA,CAAA;AACvC,EAAA,QAAA,CAAS,OAAU,GAAA,aAAA,CAAA;AAEnB,EAAA,MAAM,iBAAoB,GAAA,WAAA;AAAA,IACxB,CAAC,eAAmC,KAAA;AAClC,MAAA,MAAM,aAAgB,GAAA,sBAAA;AAAA,QACpB,YAAa,CAAA,OAAA;AAAA,QACb,SAAA;AAAA,OACF,CAAA;AACA,MAAM,MAAA,EAAE,OAAS,EAAA,WAAA,EAAgB,GAAA,cAAA,CAAA;AAMjC,MAAA,IAAI,iBAAiB,WAAa,EAAA;AAChC,QAAA,iBAAA;AAAA,UACE,aAAA;AAAA,UACA,eAAA,KAAoB,QAAQ,KAAQ,GAAA,OAAA;AAAA,UACpC,WAAY,CAAA,IAAA;AAAA,SACd,CAAA;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,YAAc,EAAA,SAAA,EAAW,iBAAiB,CAAA;AAAA,GAC7C,CAAA;AAEA,EAAA,MAAM,gBAAmB,GAAA,WAAA;AAAA,IACvB,CAAC,eAAmC,KAAA;AAClC,MAAM,MAAA,EAAE,OAAS,EAAA,SAAA,EAAc,GAAA,YAAA,CAAA;AAC/B,MAAM,MAAA,EAAE,OAAS,EAAA,WAAA,EAAgB,GAAA,cAAA,CAAA;AACjC,MAAM,MAAA,EAAE,OAAS,EAAA,YAAA,EAAiB,GAAA,eAAA,CAAA;AAClC,MAAA,IAAI,aAAa,WAAa,EAAA;AAC5B,QAAM,MAAA,WAAA,GAAe,oBAAoB,OAAU,GAAA,kBAAA;AAAA,UACjD,SAAA;AAAA,UACA,WAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAS,CAAA,OAAA;AAAA,SACX,CAAA;AAEA,QAAM,MAAA,oBAAA,GACJ,oBAAoB,KAAQ,GAAA,WAAA,CAAY,GAAG,CAAE,CAAA,CAAA,GAAI,WAAY,CAAA,EAAA,CAAG,CAAC,CAAA,CAAA;AAEnE,QAAA,IAAI,oBAAsB,EAAA;AACxB,UAAA,MAAM,EAAE,GAAA,EAAK,GAAK,EAAA,IAAA,EAAM,OAAU,GAAA,oBAAA,CAAA;AAClC,UAAA,IAAI,oBAAoB,KAAO,EAAA;AAC7B,YAAA,MAAM,iBAAoB,GAAA;AAAA,cACxB,GAAG,WAAA;AAAA,cACH,KAAO,EAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,IAAI,CAAA;AAAA,cAC9B,GAAK,EAAA,IAAA,CAAK,KAAM,CAAA,GAAA,GAAM,IAAI,CAAA;AAAA,cAC1B,GAAK,EAAA,IAAA,CAAK,KAAM,CAAA,GAAA,GAAM,IAAI,CAAA;AAAA,aAC5B,CAAA;AACA,YAAA,WAAA,CAAY,KAAK,iBAAiB,CAAA,CAAA;AAClC,YAAa,YAAA,CAAA,iBAAA,GAAoB,qBAAqB,KAAQ,GAAA,CAAA,CAAA;AAAA,WACzD,MAAA;AACL,YAAA,MAAM,iBAAoB,GAAA;AAAA,cACxB,GAAG,WAAA;AAAA,cACH,KAAO,EAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,IAAI,CAAA;AAAA,cAC9B,GAAK,EAAA,IAAA,CAAK,KAAM,CAAA,GAAA,GAAM,IAAI,CAAA;AAAA,cAC1B,GAAK,EAAA,IAAA,CAAK,KAAM,CAAA,GAAA,GAAM,IAAI,CAAA;AAAA,aAC5B,CAAA;AACA,YAAA,WAAA,CAAY,QAAQ,iBAAiB,CAAA,CAAA;AACrC,YAAA,YAAA,CAAa,iBAAoB,GAAA,CAAA,CAAA;AAAA,WACnC;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,YAAc,EAAA,aAAA,EAAe,WAAW,CAAA;AAAA,GAC3C,CAAA;AAEA,EAAA,MAAM,SAAY,GAAA,WAAA;AAAA,IAChB,CAAC,WAA6B,KAAA;AAC5B,MAAA;AAAA;AAAA,QAEE,YAAY,YACZ,IAAA,KAAA,CAAM,QAAQ,QAAQ,CAAA,IACtB,SAAS,MAAS,GAAA,CAAA;AAAA,QAClB;AACA,QAAA,OAAA,CAAQ,IAAI,oDAAoD,CAAA,CAAA;AAAA,OAClE;AACA,MAAM,MAAA,EAAE,OAAS,EAAA,SAAA,EAAc,GAAA,YAAA,CAAA;AAC/B,MAAM,MAAA,EAAE,OAAS,EAAA,YAAA,EAAiB,GAAA,eAAA,CAAA;AAElC,MAAA,IAAI,aAAa,WAAa,EAAA;AAC5B,QAAM,MAAA,YAAA,GAAe,SAAU,CAAA,QAAA,CAAS,WAAW,CAAA,CAAA;AACnD,QAAA,MAAM,EAAE,WAAA,EAAa,WAAY,EAAA,GAAI,WAAW,WAAW,CAAA,CAAA;AAC3D,QAAM,MAAA,EAAE,EAAI,EAAA,aAAA,EAAkB,GAAA,WAAA,CAAA;AAC9B,QAAM,MAAA,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,GAAG,UAAA,EAChD,GAAA,SAAA,CAAA;AACF,QAAA,YAAA,CAAa,UAAU,UAAa,GAAA,UAAA,CAAA;AACpC,QAAM,MAAA,WAAA,GAAe,oBAAoB,OAAU,GAAA,kBAAA;AAAA,UACjD,SAAA;AAAA,UACA,WAAA;AAAA,UACA,aAAA;AAAA,UACA,aAAA;AAAA,UACA,aAAA;AAAA,SACF,CAAA;AAEA,QAAA,IAAI,YAAc,EAAA;AAChB,UAAM,MAAA,kBAAA,GAAqB,sBAAsB,WAAW,CAAA,CAAA;AAC5D,UAAM,MAAA,WAAA,GAAc,YAAY,kBAAkB,CAAA,CAAA;AAClD,UAAA,IAAI,eAAe,SAAW,EAAA;AAC5B,YAAA,cAAA,CAAe,OAAU,GAAA,WAAA,CAAA;AACzB,YAAM,MAAA,gBAAA,GAAmB,WAAY,CAAA,MAAA,GACjC,gBACA,GAAA,YAAA,CAAA;AAIJ,YAAA,YAAA,CAAa,iBAAoB,GAAA,gBAAA;AAAA,cAC/B,WAAA;AAAA,cACA,WAAA;AAAA,cACA,WAAY,CAAA,IAAA;AAAA,cACZ,KAAA;AAAA,cACA,QAAA;AAAA,aACF,CAAA;AAAA,WACF;AAAA,SACK,MAAA;AAEL,UAAA,MAAM,EAAE,GAAK,EAAA,OAAA,EAAS,QAAQ,IAAK,EAAA,GAAI,YAAY,qBAAsB,EAAA,CAAA;AAEzE,UAAA,MAAM,UAAa,GAAA,iBAAA,CAAmB,WAAa,EAAA,OAAA,EAAS,MAAM,KAAK,CAAA,CAAA;AACvE,UAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,OAAA,CAAQ,UAAU,CAAA,CAAA;AAC5C,UAAA,MAAM,EAAE,KAAA,EAAO,GAAK,EAAA,GAAA,EAAQ,GAAA,UAAA,CAAA;AAK5B,UAAM,MAAA,WAAA,GAAe,eAAe,OAAU,GAAA;AAAA,YAC5C,GAAA;AAAA,YACA,GAAA;AAAA,YACA,KAAA;AAAA,YACA,aAAe,EAAA,IAAA;AAAA,YACf,UAAY,EAAA,IAAA;AAAA,YACZ,IAAA;AAAA,WACF,CAAA;AAEA,UAAM,MAAA,iBAAA,GAAoB,WAAY,CAAA,OAAA,CAAQ,UAAU,CAAA,CAAA;AAGxD,UAAY,WAAA,CAAA,MAAA,CAAO,iBAAmB,EAAA,CAAA,EAAG,WAAW,CAAA,CAAA;AACpD,UAAA,KAAA,IAAS,IAAI,KAAQ,GAAA,CAAA,EAAG,CAAI,GAAA,WAAA,CAAY,QAAQ,CAAK,EAAA,EAAA;AACnD,YAAM,MAAA,MAAA,GAAS,YAAY,CAAC,CAAA,CAAA;AAC5B,YAAA,MAAA,CAAO,GAAO,IAAA,IAAA,CAAA;AACd,YAAA,MAAA,CAAO,GAAO,IAAA,IAAA,CAAA;AACd,YAAA,MAAA,CAAO,KAAS,IAAA,IAAA,CAAA;AAAA,WAClB;AAEA,UAAM,MAAA,gBAAA,GAAmB,UAAW,CAAA,MAAA,GAChC,gBACA,GAAA,YAAA,CAAA;AAEJ,UAAA,gBAAA;AAAA,YACE,WAAA;AAAA,YACA,UAAA;AAAA,YACA,UAAW,CAAA,IAAA;AAAA,YACX,IAAA;AAAA,YACA,QAAA;AAAA,WACF,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA;AAAA,MACE,YAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,SAAS,CAAA,GAAI,QAAQ,MAAM;AAC3C,IAAA,IAAI,YAAe,GAAA,KAAA,CAAA;AACnB,IAAM,MAAA,IAAA,GAAO,CAAC,UAAmC,KAAA;AAC/C,MAAA,IAAI,CAAC,YAAc,EAAA;AACjB,QAAe,YAAA,GAAA,IAAA,CAAA;AACf,QAAM,MAAA,MAAA,GAAS,WAAW,OAAQ,CAAA,aAAA;AAAA,UAChC,eAAA;AAAA,SACF,CAAA;AACA,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,kBAAA,CAAmB,QAAQ,OAAO,CAAA,CAAA;AAAA,SACpC;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,IAAA,GAAO,CAAC,UAAmC,KAAA;AAC/C,MAAA,IAAI,YAAc,EAAA;AAChB,QAAe,YAAA,GAAA,KAAA,CAAA;AACf,QAAM,MAAA,MAAA,GAAS,WAAW,OAAQ,CAAA,aAAA;AAAA,UAChC,eAAA;AAAA,SACF,CAAA;AACA,QAAA,IAAI,MAAQ,EAAA;AACV,UAAA,kBAAA,CAAmB,QAAQ,OAAO,CAAA,CAAA;AAAA,SACpC;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAO,OAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAAA,GACpB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,MAAM,IAAO,GAAA,WAAA;AAAA,IACX,CAAC,SAAiB,kBAAsC,KAAA;AACtD,MAAM,MAAA,EAAE,OAAS,EAAA,WAAA,EAAgB,GAAA,cAAA,CAAA;AACjC,MAAM,MAAA,EAAE,OAAS,EAAA,YAAA,EAAiB,GAAA,eAAA,CAAA;AAElC,MAAA,IAAI,WAAa,EAAA;AACf,QAAA,IAAI,aAAa,OAAS,EAAA;AACxB,UAAA,UAAA,CAAW,OAAU,GAAA,OAAA,CAAA;AAErB,UAAM,MAAA,EAAE,OAAS,EAAA,WAAA,EAAgB,GAAA,mBAAA,CAAA;AACjC,UAAA,MAAM,cAAiB,GAAA,iBAAA;AAAA,YACrB,WAAA;AAAA,YACA,OAAA;AAAA,YACA,WAAY,CAAA,IAAA;AAAA,YACZ,kBAAA;AAAA,WACF,CAAA;AAEA,UAAI,IAAA,cAAA,IAAkB,CAAC,cAAA,CAAe,aAAe,EAAA;AACnD,YAAA,IAAI,eAAe,mBAAqB,EAAA;AAEtC,cAAiB,eAAA,CAAA,sBAAA,CAAuB,UAAU,IAAK,CAAA,CAAA;AACvD,cAAA,SAAA,CAAU,cAAc,CAAA,CAAA;AAAA,aACnB,MAAA;AACL,cAAM,MAAA,EAAE,MAAS,GAAA,WAAA,CAAA;AACjB,cAAM,MAAA,WAAA,GAAc,QAAQ,cAAc,CAAA,CAAA;AAE1C,cAAA,MAAM,YACJ,GAAA,WAAA,KAAgB,WAAY,CAAA,MAAA,GAAS,IACjC,gBACA,GAAA,YAAA,CAAA;AAEN,cAAA,YAAA,CAAa,iBAAoB,GAAA,YAAA;AAAA,gBAC/B,WAAA;AAAA,gBACA,cAAA;AAAA,gBACA,IAAA;AAAA,gBACA,IAAA;AAAA,gBACA,kBAAA;AAAA,eACF,CAAA;AAEA,cAAA,MAAM,oBAAoB,WAAY,CAAA,EAAA;AAAA,gBACpC,CAAA,CAAA;AAAA,eACF,CAAA;AACA,cAAA,SAAA,CAAU,iBAAiB,CAAA,CAAA;AAC3B,cAAiB,eAAA,CAAA,sBAAA,CAAuB,UAAU,KAAM,CAAA,CAAA;AAAA,aAC1D;AAAA,WACF;AACA,UAAA,YAAA,CAAa,SAAY,GAAA,kBAAA,CAAA;AAAA,SAC3B;AAAA,OACF;AAAA,KACF;AAAA,IACA,CAAC,YAAA,EAAc,YAAc,EAAA,gBAAA,EAAkB,WAAW,SAAS,CAAA;AAAA,GACrE,CAAA;AAEA,EAAM,MAAA,IAAA,GAAO,YAAY,MAAmB;AAC1C,IAAa,YAAA,EAAA,CAAA;AACb,IAAM,MAAA,EAAE,OAAS,EAAA,WAAA,EAAgB,GAAA,mBAAA,CAAA;AACjC,IAAM,MAAA,EAAE,OAAS,EAAA,YAAA,EAAiB,GAAA,eAAA,CAAA;AAClC,IAAM,MAAA,kBAAA,GAAqB,sBAAsB,WAAW,CAAA,CAAA;AAC5D,IAAM,MAAA,WAAA,GAAc,YAAY,kBAAkB,CAAA,CAAA;AAClD,IAAM,MAAA,EAAE,mBAAsB,GAAA,YAAA,CAAA;AAC9B,IAAA,MAAM,EAAE,KAAA,EAAO,SAAW,EAAA,UAAA,EAAe,GAAA,WAAA,CAAA;AAEzC,IAAA,IAAI,uBAAuB,OAAS,EAAA;AAClC,MAAA,eAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,KACvB;AAEA,IAAA,YAAA,CAAa,SAAY,GAAA,KAAA,CAAA,CAAA;AACzB,IAAA,YAAA,CAAa,iBAAoB,GAAA,CAAA,CAAA,CAAA;AAEjC,IAAA,MAAM,UAAU,sBAAuB,CAAA,OAAA,GACnC,KACA,SAAY,GAAA,iBAAA,GACZ,oBAAoB,CACpB,GAAA,iBAAA,CAAA;AAEJ,IAAO,OAAA,EAAE,SAAW,EAAA,OAAA,EAAS,UAAW,EAAA,CAAA;AAAA,GAC1C,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,GACnB,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,WAAA;AAAA,IACA,qBAAuB,EAAA,YAAA;AAAA,GACzB,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useMemo, useCallback } from 'react';
|
|
2
|
+
import { createDropIndicatorPosition } from './Draggable.js';
|
|
3
|
+
|
|
4
|
+
const useDropIndicator = () => {
|
|
5
|
+
const spacer = useMemo(() => createDropIndicatorPosition(), []);
|
|
6
|
+
const clearSpacer = useCallback(() => spacer.remove(), [spacer]);
|
|
7
|
+
const positionDropIndicator = useCallback(
|
|
8
|
+
(dropTarget, dropZone2 = "end") => {
|
|
9
|
+
if (dropZone2 === "end") {
|
|
10
|
+
dropTarget.element.after(spacer);
|
|
11
|
+
} else {
|
|
12
|
+
dropTarget.element.before(spacer);
|
|
13
|
+
}
|
|
14
|
+
return spacer;
|
|
15
|
+
},
|
|
16
|
+
[spacer]
|
|
17
|
+
);
|
|
18
|
+
return {
|
|
19
|
+
positionDropIndicator,
|
|
20
|
+
clearSpacer
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export { useDropIndicator };
|
|
25
|
+
//# sourceMappingURL=useDropIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDropIndicator.js","sources":["../../src/drag-drop/useDropIndicator.ts"],"sourcesContent":["import { useCallback, useMemo } from \"react\";\nimport { dropZone, MeasuredDropTarget } from \"./drop-target-utils\";\nimport { createDropIndicatorPosition } from \"./Draggable\";\n\nexport const SPACER_SIZE = 0;\n\nexport type DropIndicatorHookResult = {\n positionDropIndicator: (\n dropTarget: MeasuredDropTarget,\n dropZone: dropZone\n ) => HTMLElement;\n clearSpacer: () => void;\n};\n\nexport type DropIndicatorHook = () => DropIndicatorHookResult;\n\nexport const useDropIndicator: DropIndicatorHook = () => {\n const spacer = useMemo(() => createDropIndicatorPosition(), []);\n const clearSpacer = useCallback(() => spacer.remove(), [spacer]);\n const positionDropIndicator = useCallback(\n (dropTarget: MeasuredDropTarget, dropZone: \"start\" | \"end\" = \"end\") => {\n if (dropZone === \"end\") {\n dropTarget.element.after(spacer);\n } else {\n dropTarget.element.before(spacer);\n }\n return spacer;\n },\n [spacer]\n );\n\n return {\n positionDropIndicator,\n clearSpacer,\n };\n};\n"],"names":["dropZone"],"mappings":";;;AAgBO,MAAM,mBAAsC,MAAM;AACvD,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAM,2BAA4B,EAAA,EAAG,EAAE,CAAA,CAAA;AAC9D,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM,MAAA,CAAO,QAAU,EAAA,CAAC,MAAM,CAAC,CAAA,CAAA;AAC/D,EAAA,MAAM,qBAAwB,GAAA,WAAA;AAAA,IAC5B,CAAC,UAAgCA,EAAAA,SAAAA,GAA4B,KAAU,KAAA;AACrE,MAAA,IAAIA,cAAa,KAAO,EAAA;AACtB,QAAW,UAAA,CAAA,OAAA,CAAQ,MAAM,MAAM,CAAA,CAAA;AAAA,OAC1B,MAAA;AACL,QAAW,UAAA,CAAA,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAA;AAAA,OAClC;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACT;AAAA,IACA,CAAC,MAAM,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,qBAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
|