@vuu-ui/vuu-ui-controls 0.8.19 → 0.8.20-debug

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/esm/index.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/vuu-ui-controls/src/combo-box/ComboBox.tsx", "../../../packages/vuu-ui-controls/src/common-hooks/collectionProvider.tsx", "../../../packages/vuu-ui-controls/src/common-hooks/itemToString.ts", "../../../packages/vuu-ui-controls/src/common-hooks/useCollectionItems.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/collection-item-utils.ts", "../../../packages/vuu-ui-controls/src/list/ListItemGroup.ts", "../../../packages/vuu-ui-controls/src/list/ListItemHeader.ts", "../../../packages/vuu-ui-controls/src/utils/escapeRegExp.ts", "../../../packages/vuu-ui-controls/src/utils/forwardCallbackProps.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/filter-utils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/utils/isSelected.ts", "../../../packages/vuu-ui-controls/src/common-hooks/useControlled.ts", "../../../packages/vuu-ui-controls/src/common-hooks/use-resize-observer.ts", "../../../packages/vuu-ui-controls/src/common-hooks/selectionTypes.ts", "../../../packages/vuu-ui-controls/src/common-hooks/useStateRef.ts", "../../../packages/vuu-ui-controls/src/dropdown/DropdownBase.tsx", "../../../packages/vuu-ui-controls/src/dropdown/useDropdownBase.ts", "../../../packages/vuu-ui-controls/src/dropdown/useClickAway.ts", "../../../packages/vuu-ui-controls/src/dropdown/DropdownButton.tsx", "../../../packages/vuu-ui-controls/src/dropdown/Dropdown.tsx", "../../../packages/vuu-ui-controls/src/list/common-hooks/keyUtils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useCollapsibleGroups.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/list-dom-utils.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useImperativeScrollingAPI.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useKeyboardNavigation.ts", "../../../packages/vuu-ui-controls/src/common-hooks/useSelection.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useTypeahead.ts", "../../../packages/vuu-ui-controls/src/list/common-hooks/useViewportTracking.ts", "../../../packages/vuu-ui-controls/src/list/Highlighter.tsx", "../../../packages/vuu-ui-controls/src/list/ListItem.tsx", "../../../packages/vuu-ui-controls/src/list/CheckboxIcon.tsx", "../../../packages/vuu-ui-controls/src/list/List.tsx", "../../../packages/vuu-ui-controls/src/list/useList.ts", "../../../packages/vuu-ui-controls/src/drag-drop/dragDropTypesNext.ts", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropProvider.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useGlobalDragDrop.ts", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropState.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropNext.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/Draggable.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/drop-target-utils.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useAutoScroll.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropCopy.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropIndicator.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDropIndicator.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropNaturalMovementNext.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDisplacers.ts", "../../../packages/vuu-ui-controls/src/list/useListDrop.ts", "../../../packages/vuu-ui-controls/src/list/useListHeight.ts", "../../../packages/vuu-ui-controls/src/list/useScrollPosition.ts", "../../../packages/vuu-ui-controls/src/list/VirtualizedList.tsx", "../../../packages/vuu-ui-controls/src/list/useVirtualization.ts", "../../../packages/vuu-ui-controls/src/list/keyset.ts", "../../../packages/vuu-ui-controls/src/list/RadioIcon.tsx", "../../../packages/vuu-ui-controls/src/dropdown/useDropdown.ts", "../../../packages/vuu-ui-controls/src/list/ChevronIcon.tsx", "../../../packages/vuu-ui-controls/src/combo-box/useCombobox.ts", "../../../packages/vuu-ui-controls/src/cycle-state-button/CycleStateButton.tsx", "../../../packages/vuu-ui-controls/src/editable/editable-utils.ts", "../../../packages/vuu-ui-controls/src/editable/useEditableText.ts", "../../../packages/vuu-ui-controls/src/editable-label/EditableLabel.tsx", "../../../packages/vuu-ui-controls/src/expando-input/ExpandoInput.tsx", "../../../packages/vuu-ui-controls/src/vuu-input/VuuInput.tsx", "../../../packages/vuu-ui-controls/src/inputs/Checkbox.tsx", "../../../packages/vuu-ui-controls/src/inputs/RadioButton.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/InstrumentPicker.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/SearchCell.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/useInstrumentPicker.ts", "../../../packages/vuu-ui-controls/src/instrument-search/InstrumentSearch.tsx", "../../../packages/vuu-ui-controls/src/instrument-search/SearchCell.tsx", "../../../packages/vuu-ui-controls/src/instrument-search/useInstrumentSearch.ts", "../../../packages/vuu-ui-controls/src/price-ticker/PriceTicker.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/Tabstrip.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/useTabstrip.ts", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenuOptions.ts", "../../../packages/vuu-ui-controls/src/tabstrip/tabstrip-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useAnimatedSelectionThumb.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useKeyboardNavigation.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useSelection.ts", "../../../packages/vuu-ui-controls/src/tabstrip/Tab.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenu.tsx", "../../../packages/vuu-ui-controls/src/tree/Tree.tsx", "../../../packages/vuu-ui-controls/src/tree/list-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tree/use-items-with-ids.ts", "../../../packages/vuu-ui-controls/src/tree/use-selection.ts", "../../../packages/vuu-ui-controls/src/tree/use-viewport-tracking.ts", "../../../packages/vuu-ui-controls/src/tree/useTree.ts", "../../../packages/vuu-ui-controls/src/tree/use-keyboard-navigation.ts", "../../../packages/vuu-ui-controls/src/tree/hierarchical-data-utils.ts", "../../../packages/vuu-ui-controls/src/tree/key-code.ts", "../../../packages/vuu-ui-controls/src/tree/use-hierarchical-data.ts", "../../../packages/vuu-ui-controls/src/tree/use-collapsible-groups.ts", "../../../packages/vuu-ui-controls/src/tree/use-tree-keyboard-navigation.ts"],
4
4
  "sourcesContent": ["import { useId } from \"@vuu-ui/vuu-utils\";\nimport { Input, InputProps } from \"@salt-ds/core\";\nimport {\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\nimport {\n CollectionProvider,\n ComponentSelectionProps,\n itemToString as defaultItemToString,\n SelectionStrategy,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { DropdownBase, DropdownBaseProps } from \"../dropdown\";\nimport { List, ListProps } from \"../list\";\nimport { ChevronIcon } from \"../list/ChevronIcon\";\nimport { useCombobox } from \"./useCombobox\";\n\n//TODO why do we need onSelect from input ?\nexport interface ComboBoxProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends Omit<\n DropdownBaseProps,\n \"triggerComponent\" | \"onBlur\" | \"onChange\" | \"onFocus\"\n >,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Omit<ComponentSelectionProps<Item, S>, \"onSelect\">,\n Pick<ListProps<Item, S>, \"ListItem\" | \"itemToString\" | \"source\" | \"width\"> {\n InputProps?: InputProps;\n ListProps?: Omit<ListProps<Item>, \"ListItem\" | \"itemToString\" | \"source\">;\n allowBackspaceClearsSelection?: boolean;\n allowFreeText?: boolean;\n defaultValue?: string;\n getFilterRegex?: (inputValue: string) => RegExp;\n initialHighlightedIndex?: number;\n itemsToString?: (items: Item[]) => string;\n onDeselect?: () => void;\n onSetSelectedText?: (text: string) => void;\n disableFilter?: boolean;\n value?: string;\n}\n\n//TODO does not cutrrently support controlled vallue\n\nexport const ComboBox = forwardRef(function Combobox<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n InputProps,\n ListProps,\n PopupProps,\n ListItem,\n \"aria-label\": ariaLabel,\n allowBackspaceClearsSelection,\n allowFreeText,\n children,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n disabled,\n disableFilter,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onSetSelectedText,\n getFilterRegex,\n id: idProp,\n initialHighlightedIndex = -1,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n itemsToString,\n onDeselect,\n onOpenChange: onOpenChangeProp,\n onSelectionChange,\n selected: selectedProp,\n selectionKeys,\n selectionStrategy,\n source,\n value: valueProp,\n width = 180,\n ...props\n }: ComboBoxProps<Item, S>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const listRef = useRef<HTMLDivElement>(null);\n\n const valueFromSelected = (item: Item | null | Item[]) => {\n return Array.isArray(item) && item.length > 0 ? item[0] : undefined;\n };\n\n const getInitialValue = (\n items1?: ComboBoxProps<Item, S>[\"selected\"],\n items2?: ComboBoxProps<Item, S>[\"defaultSelected\"]\n ) => {\n const item = items1\n ? valueFromSelected(items1)\n : items2\n ? valueFromSelected(items2)\n : undefined;\n\n return item ? itemToString(item) : \"\";\n };\n\n const initialValue = getInitialValue(selectedProp, defaultSelected);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n disableFilter,\n filterPattern: initialValue,\n getFilterRegex,\n itemToString,\n },\n });\n\n const {\n focusVisible,\n highlightedIndex,\n inputProps: { endAdornment: endAdornmentProp, ...inputProps },\n isOpen,\n listHandlers,\n listControlProps: controlProps,\n onOpenChange,\n selected,\n } = useCombobox<Item, S>({\n InputProps,\n allowBackspaceClearsSelection,\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n disabled,\n initialHighlightedIndex,\n itemCount: collectionHook.data.length,\n label: props.title,\n listRef,\n onBlur,\n onDeselect,\n onFocus,\n onChange,\n onSelect,\n id,\n isOpen: isOpenProp,\n itemToString,\n itemsToString,\n onOpenChange: onOpenChangeProp,\n onSelectionChange,\n onSetSelectedText,\n selected: selectedProp,\n selectionKeys,\n selectionStrategy,\n value: initialValue,\n });\n\n const handleDropdownIconClick = useCallback(() => {\n if (isOpen) {\n onOpenChange(false, \"toggle\");\n } else {\n onOpenChange(true);\n }\n }, [isOpen, onOpenChange]);\n\n const endAdornment =\n endAdornmentProp === null ? null : (\n <ChevronIcon\n direction={isOpen ? \"up\" : \"down\"}\n onClick={handleDropdownIconClick}\n />\n );\n\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n PopupProps={PopupProps}\n id={id}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n openOnFocus\n ref={forwardedRef}\n width={width}\n >\n <Input\n {...inputProps}\n disabled={disabled}\n // ref={useForkRef(setInputRef, setHookInputRef)}\n {...controlProps}\n endAdornment={endAdornment}\n />\n\n <List<Item, S>\n {...ListProps}\n ListItem={ListItem}\n defaultSelected={undefined}\n focusVisible={focusVisible}\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={String(inputProps.value) || undefined}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n ref={listRef}\n selected={selected}\n selectionStrategy={selectionStrategy}\n tabIndex={-1}\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, S extends SelectionStrategy = \"default\">(\n props: ComboBoxProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ComboBoxProps<Item>>;\n", "import { cloneElement, createContext, ReactElement, useContext } from \"react\";\nimport { CollectionHookResult } from \"./collectionTypes\";\n\nexport interface collectionContext<T> {\n collection: CollectionHookResult<T>;\n}\n\nexport const CollectionContext = createContext<\n CollectionHookResult<any> | undefined\n>(undefined);\n\ninterface ContextProviderProps<Item> {\n children: ReactElement;\n collectionHook: CollectionHookResult<Item>;\n}\n\nexport function CollectionProvider<Item>({\n children,\n collectionHook,\n ...props\n}: ContextProviderProps<Item>) {\n return (\n <CollectionContext.Provider value={collectionHook}>\n {Object.keys(props).length > 0 ? cloneElement(children, props) : children}\n </CollectionContext.Provider>\n );\n}\n\nexport function useCollection<Item>(): CollectionHookResult<Item> | undefined {\n const collection = useContext(CollectionContext);\n if (collection) {\n return collection as CollectionHookResult<Item>;\n }\n}\n", "// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nconst isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n", "import { useCallback, useMemo, useRef, useState, isValidElement } from \"react\";\nimport {\n CollectionItem,\n CollectionIndexer,\n CollectionHookProps,\n CollectionHookResult,\n} from \"./collectionTypes\";\nimport {\n isHeader,\n isGroupNode,\n childItems,\n countChildItems,\n FilterPredicate,\n getDefaultFilter,\n getDefaultFilterRegex,\n isDisabled,\n isFocusable,\n isParentPath,\n replaceCollectionItem,\n sourceItems,\n} from \"../list/common-hooks/utils\";\nimport { itemToString as defaultItemToString } from \"./itemToString\";\n\nimport { useCollection } from \"./collectionProvider\";\n\nconst defaultCollectionOptions = {};\n\nexport const useCollectionItems = <Item>({\n children,\n id: idRoot,\n options = defaultCollectionOptions,\n // revealSelected = false,\n source,\n}: CollectionHookProps<Item>): CollectionHookResult<Item> => {\n const { getItemId } = options;\n const [, forceUpdate] = useState<unknown>(null);\n const inheritedCollectionHook = useCollection<Item>();\n const dataRef = useRef<CollectionItem<Item>[]>([]);\n const flattenedDataRef = useRef<CollectionItem<Item>[]>([]);\n const EMPTY_COLLECTION: CollectionItem<Item>[] = useMemo(() => [], []);\n const filterPattern = useRef<string>(options.filterPattern ?? \"\");\n const disableFilter = options.disableFilter ?? false;\n\n // destructure individual option values so we can safely reference them in dependency arrays\n const {\n getFilterRegex = getDefaultFilterRegex,\n noChildrenLabel,\n itemToString = defaultItemToString,\n } = options;\n\n const isExpanded = useCallback(() => {\n // We can't do this here because itemToId won't work until we complete this phase\n // if (Array.isArray(revealSelected)) {\n // const selectedIds = revealSelected.map(itemToId);\n // return selectedIds.some((id) => isParentPath(path, id));\n // }\n return options.defaultExpanded || false;\n }, [options.defaultExpanded]);\n\n const addMetadataToItems = useCallback(\n <Item>(\n items: CollectionItem<Item>[],\n indexer: CollectionIndexer,\n level = 1,\n path = \"\",\n results: CollectionItem<Item>[] = [],\n flattenedCollection: CollectionItem<Item>[] = [],\n flattenedSource: (Item | null)[] = []\n ): [CollectionItem<Item>[], (Item | null)[], CollectionItem<Item>[]] => {\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && options.collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && options.collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `item-${i}`;\n // getItemId is backward compatible with earlier List implementation.\n // It is not appropriate for a nested source structure, where index\n // will not always be an absolute offset.\n const id =\n item.id ?? (getItemId ? getItemId(i) : `${idRoot}-${childPath}`);\n\n const expanded = nonCollapsible\n ? undefined\n : item.expanded ?? isExpanded();\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: CollectionItem<Item> = {\n ...item,\n childNodes: undefined,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n description: item.description,\n disabled: isDisabled(item.value),\n focusable: isFocusable(item.value) ? undefined : false,\n id,\n index: indexer.value,\n expanded,\n level,\n };\n results.push(normalisedItem);\n flattenedCollection.push(normalisedItem);\n flattenedSource.push(items[i].value);\n\n indexer.value += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [children] = addMetadataToItems<Item>(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedCollection,\n flattenedSource\n );\n normalisedItem.childNodes = children;\n }\n });\n return [results, flattenedSource, flattenedCollection];\n },\n [options.collapsibleHeaders, getItemId, idRoot, isExpanded]\n );\n\n const getFilter = useCallback(() => {\n if (filterPattern.current && !disableFilter) {\n return getDefaultFilter(filterPattern.current, getFilterRegex);\n } else {\n return null;\n }\n }, [disableFilter, getFilterRegex]);\n\n const collectVisibleItems = useCallback(\n (\n items: CollectionItem<Item>[],\n filter: null | FilterPredicate = getFilter(),\n results: CollectionItem<Item>[] = [],\n idx: { value: number } = { value: 0 }\n ): CollectionItem<Item>[] => {\n let skipToNextHeader = false;\n for (const item of items) {\n if (!(skipToNextHeader && !isHeader(item))) {\n if (\n item.value !== null &&\n (filter === null || filter(itemToString(item.value)))\n ) {\n results[idx.value] = item;\n idx.value += 1;\n }\n skipToNextHeader = false;\n if (isHeader(item) && item.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(item)) {\n if (item.expanded !== false && item.childNodes) {\n collectVisibleItems(item.childNodes, filter, results, idx);\n }\n }\n }\n }\n return results;\n },\n [getFilter, itemToString]\n );\n\n // Stage 1 - convert source or children to CollectionItems.\n const partialCollectionItems = useMemo(() => {\n return inheritedCollectionHook\n ? EMPTY_COLLECTION\n : sourceItems<Item>(source, { itemToString, noChildrenLabel }) ||\n childItems(children) ||\n [];\n }, [\n inheritedCollectionHook,\n EMPTY_COLLECTION,\n source,\n itemToString,\n noChildrenLabel,\n children,\n ]);\n\n // Stage 2 - extend the collectionItems with additional metadata\n const [collectionItems, flattenedSource, flattenedCollection] = useMemo(\n () =>\n inheritedCollectionHook\n ? [EMPTY_COLLECTION, EMPTY_COLLECTION, EMPTY_COLLECTION]\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n addMetadataToItems<Item>(partialCollectionItems, { value: 0 }),\n [\n EMPTY_COLLECTION,\n addMetadataToItems,\n inheritedCollectionHook,\n partialCollectionItems,\n ]\n );\n flattenedDataRef.current = flattenedCollection;\n\n // Stage 3 prepare the list of visible items, this is what will be rendered\n useMemo(\n () =>\n inheritedCollectionHook\n ? EMPTY_COLLECTION\n : (dataRef.current = collectVisibleItems(collectionItems)),\n [\n EMPTY_COLLECTION,\n collectVisibleItems,\n collectionItems,\n inheritedCollectionHook,\n ]\n );\n\n const collectionItemsRef = useRef(collectionItems);\n\n const setFilterPattern = useCallback(\n (pattern = \"\") => {\n if (typeof pattern === \"string\") {\n filterPattern.current = pattern;\n dataRef.current = collectVisibleItems(collectionItems);\n forceUpdate({});\n }\n },\n [collectionItems, collectVisibleItems]\n );\n\n const itemById = useCallback(\n (\n id: string,\n target: CollectionItem<Item>[] = collectionItems\n ): Item | never => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n //TODO do we need the flattered source at all ?\n return flattenedSource?.[sourceWithId.index!] as Item;\n } else if (sourceWithId) {\n return itemById(id, sourceWithId.childNodes);\n }\n throw Error(`useCollectionData itemById, id ${id} not found `);\n },\n [flattenedSource, collectionItems]\n );\n\n const indexOfItemById = useCallback(\n (\n id: string,\n target: CollectionItem<Item>[] = collectionItems\n ): number | never => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n const idx = sourceWithId ? dataRef.current.indexOf(sourceWithId) : -1;\n if (idx !== -1) {\n return idx;\n }\n throw Error(`useCollectionData indexOfItemById, id ${id} not found `);\n },\n [collectionItems]\n );\n\n const toCollectionItem = useCallback(\n (item: Item): CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n isValidElement(i.value) ? i.label === item : i.value === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n throw Error(`useCollectionData toCollectionItem, item not found `);\n },\n []\n );\n\n // TODO types need more work, these are correct but we\n // don't really want references to Selection in here\n const itemToCollectionItem = useCallback(\n (sel: Item) => {\n if (sel === null) {\n return null;\n } else if (Array.isArray(sel)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of sel) {\n const collectionItem = toCollectionItem(item);\n result.push(collectionItem);\n }\n return result;\n } else if (sel !== undefined) {\n return toCollectionItem(sel as Item);\n }\n\n return undefined;\n },\n [toCollectionItem]\n );\n\n const itemToCollectionItemId = useCallback(\n (sel) => {\n if (sel === undefined) {\n return undefined;\n }\n\n const selectedCollectionItem = itemToCollectionItem(sel);\n if (Array.isArray(selectedCollectionItem)) {\n return selectedCollectionItem.map((i) => i.id);\n } else if (selectedCollectionItem) {\n return [selectedCollectionItem.id];\n } else {\n return [];\n }\n },\n [itemToCollectionItem]\n );\n\n const stringToCollectionItem = useCallback(\n (value: string | null | undefined) => {\n const toCollectionItem = (\n item: string\n ): undefined | CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n // const collectionItem = collectionItemsRef.current.find((i) =>\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n isValidElement(i.value)\n ? i.label === item\n : i.value !== null && itemToString(i.value) === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n };\n\n if (value === null) {\n return null;\n } else if (Array.isArray(value)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of value) {\n const collectionItem = toCollectionItem(item);\n if (collectionItem) {\n result.push(collectionItem);\n }\n }\n return result;\n } else if (value !== undefined) {\n return toCollectionItem(value);\n }\n\n return undefined;\n },\n [itemToString]\n );\n\n const itemToId = useCallback((item: Item): string => {\n for (const collectionItem of collectionItemsRef.current) {\n if (item === collectionItem.value) {\n return collectionItem.id;\n }\n }\n throw Error(\"useCollectionData itemToId, item not found\");\n }, []);\n\n const collapseGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem(\n collectionItemsRef.current,\n item.id,\n {\n expanded: false,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n const expandGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem<Item>(\n collectionItemsRef.current,\n item.id,\n {\n expanded: true,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return (\n inheritedCollectionHook || {\n collapseGroupItem,\n data: dataRef.current,\n expandGroupItem, // why not toggle, or just rely on setdata ?\n setFilterPattern,\n indexOfItemById,\n itemById,\n itemToId,\n toCollectionItem,\n itemToCollectionItem,\n itemToCollectionItemId,\n stringToCollectionItem,\n }\n );\n};\n", "import { isValidElement, Children, ReactElement, ReactNode } from \"react\";\n\nimport {\n CollectionItem,\n CollectionOptions,\n SourceGroup,\n} from \"../../../common-hooks/collectionTypes\";\n// TODO how do we configure these\nimport { ListItemGroup } from \"../../ListItemGroup\";\nimport { ListItemHeader } from \"../../ListItemHeader\";\nimport { itemToString as defaultItemToString } from \"../../../common-hooks/itemToString\";\n\ntype NonFocusableElement = ReactElement<{ focusable: false }>;\ntype DisablableElement = ReactElement<{ disabled: boolean }>;\ntype SelectableElement = ReactElement<{ selectable: boolean }>;\n\nexport const sourceItemHasProp = (\n item: unknown,\n propertyName: string\n): boolean => {\n return (\n item !== null && Object.prototype.hasOwnProperty.call(item, propertyName)\n );\n};\n\nexport const isHeader = (item: unknown): boolean =>\n sourceItemHasProp(item, \"header\");\n\nexport const isGroupNode = (item: unknown): boolean =>\n sourceItemHasProp(item, \"childNodes\");\n\nconst childItemHasProp = (item: ReactElement, propertyName: string) => {\n return item && Object.prototype.hasOwnProperty.call(item.props, propertyName);\n};\n\nexport const isDisabled = (item: unknown): boolean => {\n if (isValidElement(item as DisablableElement)) {\n if (childItemHasProp(item as DisablableElement, \"disabled\")) {\n return (item as DisablableElement).props.disabled === true;\n }\n } else if (sourceItemHasProp(item, \"disabled\")) {\n return (item as { disabled: boolean }).disabled === true;\n }\n\n return false;\n};\n\nexport const isFocusable = (item: unknown): boolean => {\n if (isValidElement(item as NonFocusableElement)) {\n if (childItemHasProp(item as NonFocusableElement, \"focusable\")) {\n return (item as NonFocusableElement).props.focusable;\n }\n }\n return true;\n};\n\nexport const countChildItems = <Item>(\n item: CollectionItem<Item>,\n items: CollectionItem<Item>[],\n idx: number\n): number => {\n if (item.childNodes) {\n return item.childNodes.length;\n } else if (item.header) {\n let i = idx + 1;\n let count = 0;\n while (i < items.length && !items[i].header) {\n count++;\n i++;\n }\n return count;\n } else {\n return 0;\n }\n};\n\nexport const getChildLabel = (\n element: ReactElement<{\n children?: ReactNode;\n label?: string;\n title?: string;\n }>\n): string | undefined => {\n if (typeof element.props.children === \"string\") {\n return element.props.children;\n } else if (element.props.title) {\n return element.props.title;\n } else if (element.props.label) {\n return element.props.label;\n }\n};\n\nconst childIsHeader = (child: ReactElement) =>\n child.type === ListItemHeader || childItemHasProp(child, \"data-header\");\n\nexport const childIsGroup = (child: ReactElement): boolean =>\n child.type === ListItemGroup || childItemHasProp(child, \"data-group\");\n\nconst childIsSelectable = (child: ReactElement) => {\n if (childItemHasProp(child, \"selectable\")) {\n return (child as SelectableElement).props.selectable === true;\n } else {\n return !childIsGroup(child) && !childIsHeader(child);\n }\n};\n\nexport const getChildNodes = (\n element: ReactElement\n): CollectionItem<ReactElement>[] | undefined => {\n if (childIsGroup(element)) {\n const {\n props: { children },\n } = element as ReactElement<{ children?: ReactNode }>;\n if (typeof children !== \"string\") {\n return childItems(children);\n }\n }\n};\n\nconst mapReactElementChildren = (\n children: ReactNode,\n fn: (el: ReactElement) => CollectionItem<ReactElement>\n): CollectionItem<ReactElement>[] => {\n const childElements: CollectionItem<ReactElement>[] = [];\n Children.forEach(children, (child) => {\n if (isValidElement(child)) {\n childElements.push(fn(child));\n }\n });\n return childElements;\n};\n\ntype ListItemElementProps = {\n \"data-id\"?: string;\n disabled?: boolean;\n id?: string;\n \"data-expanded\"?: boolean;\n expanded?: boolean;\n};\n\ntype CollectionItemWithoutId<T> = Omit<CollectionItem<T>, \"id\">;\n\nexport const sourceItems = <T>(\n source?: ReadonlyArray<T>,\n options?: CollectionOptions<T>\n): CollectionItemWithoutId<T>[] | undefined => {\n if (Array.isArray(source)) {\n if (source.length === 0 && options?.noChildrenLabel) {\n return [\n {\n label: options.noChildrenLabel,\n value: null,\n },\n ];\n } else {\n return source.map(\n (item: { description?: string; expanded?: boolean }) =>\n ({\n childNodes: sourceItems(\n (item as unknown as SourceGroup<T>).childNodes,\n options\n ),\n description: item.description,\n expanded: item.expanded,\n value: item,\n label:\n options?.itemToString?.(item as T) ?? defaultItemToString(item),\n } as CollectionItemWithoutId<T>)\n );\n }\n } else if (source) {\n throw Error(\"list-child-items expects source to be an array\");\n }\n};\n\nexport const childItems = (\n children: ReactNode\n): CollectionItem<ReactElement>[] | undefined => {\n if (children) {\n return mapReactElementChildren(children, (child) => {\n const {\n \"data-id\": dataId,\n disabled,\n id = dataId,\n \"data-expanded\": dataExpanded,\n expanded = dataExpanded,\n } = (child as ReactElement<ListItemElementProps>).props;\n return {\n childNodes: getChildNodes(child),\n disabled,\n expanded,\n header: childIsHeader(child),\n id,\n label: getChildLabel(child),\n selectable: childIsSelectable(child),\n value: child,\n } as CollectionItem<ReactElement>;\n });\n }\n};\n\nconst PathSeparators = new Set<string>([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nexport const isParentPath = (parentPath: string, childPath: string): boolean =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nfunction isDescendantOf(basePath: string, targetPath: string) {\n if (!targetPath.startsWith(basePath)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(basePath.length));\n }\n}\n\nexport function replaceCollectionItem<Item>(\n nodes: CollectionItem<Item>[],\n id: string,\n props: Partial<CollectionItem<Item>>\n): CollectionItem<Item>[] {\n let childNodes: CollectionItem<Item>[];\n const newNodes: CollectionItem<Item>[] = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node.id, id) && node.childNodes) {\n childNodes = replaceCollectionItem<Item>(node.childNodes, id, props);\n return {\n ...node,\n childNodes,\n };\n } else {\n return node;\n }\n });\n\n return newNodes;\n}\n", "import { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemGroupProps extends HTMLAttributes<HTMLDivElement> {\n // children?: ListItemType | ListItemType[];\n children?: JSX.Element | JSX.Element[];\n label?: string;\n}\nexport const ListItemGroup = (_: ListItemGroupProps) => null;\n", "import { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemHeaderProps extends HTMLAttributes<HTMLDivElement> {\n label?: string;\n}\nexport const ListItemHeader = (_: ListItemHeaderProps) => null;\n", "const regExp = /[.*+?^${}()|[\\]\\\\]/g;\n\nexport function escapeRegExp(string: string): string {\n return string.replace(regExp, \"\\\\$&\");\n}\n", "/*\n When we clone a React element and inject props, if any of these are\n callback props, make sure original callback props are also invoked.\n\n React.cloneElement(\n element,\n forwardCallbackProps(element.props, overrideProps)\n )\n */\n\ntype Props = Record<string, unknown>;\n\nexport const forwardCallbackProps = <P1 extends Props, P2 extends Props>(\n ownProps: P1,\n overrideProps: P2\n): P1 & P2 => {\n const props = Object.keys(ownProps).reduce<Props>(\n (map, name) => {\n const ownProp = ownProps[name];\n const overrideProp = overrideProps[name];\n if (typeof ownProp === \"function\" && typeof overrideProp === \"function\") {\n map[name] = (...args: unknown[]) => {\n ownProp(...args);\n overrideProp(...args);\n };\n }\n return map;\n },\n { ...overrideProps }\n );\n\n return props as P1 & P2;\n};\n", "import { escapeRegExp } from \"../../../utils\";\n\nexport type GetFilterRegex = (inputValue: string) => RegExp;\n\nexport type FilterPredicate = (item: string) => boolean;\n\nconst leftTrim = (value: string) =>\n value ? value.replace(/^\\s+/g, \"\") : value;\n\nexport const getDefaultFilterRegex: GetFilterRegex = (value) =>\n new RegExp(`(${escapeRegExp(leftTrim(value))})`, \"gi\");\n\nexport const getDefaultFilter =\n (inputValue = \"\", getFilterRegex: GetFilterRegex = getDefaultFilterRegex) =>\n (itemValue = \"\"): boolean =>\n Boolean(itemValue.length) &&\n Boolean(inputValue.length) &&\n itemValue.match(getFilterRegex(inputValue)) !== null;\n", "import { CollectionItem } from \"../../../common-hooks/collectionTypes\";\n\nexport function isSelected<Item>(\n selectedId: string | string[] | null,\n item: CollectionItem<Item>\n): boolean {\n const isSelected = Array.isArray(selectedId)\n ? selectedId.includes(item.id)\n : selectedId === item.id;\n return isSelected;\n}\n", "import {\n Dispatch,\n isValidElement,\n SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport interface UseControlledProps<T> {\n /**\n * Holds the component value when it's controlled.\n */\n controlled?: T;\n /**\n * The default value when uncontrolled.\n */\n default: T;\n /**\n * The component name displayed in warnings.\n */\n name: string;\n /**\n * The name of the state variable displayed in warnings.\n */\n state?: string;\n}\n\n/**\n * Copied from MUI (v5) useControlled hook with one additional returned value\n * @see https://github.com/mui-org/material-ui/blob/0979e6a54ba47c278d1f535953c0520a86349811/packages/material-ui-utils/src/useControlled.js\n */\nexport function useControlled<S>({\n controlled,\n default: defaultProp,\n name,\n state = \"value\",\n}: UseControlledProps<S>): [S, Dispatch<SetStateAction<S>>, boolean] {\n const { current: isControlled } = useRef(controlled !== undefined);\n const [valueState, setValue] = useState<S>(defaultProp);\n const value = controlled !== undefined ? controlled : valueState;\n const { current: defaultValue } = useRef(defaultProp);\n\n // console.log(\n // `%cuseControlled ${name} ${state}`,\n // `color: ${isControlled ? \"blue\" : \"black\"};font-weight: bold;`,\n // {\n // controlled,\n // defaultProp,\n // }\n // );\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (isControlled !== (controlled !== undefined)) {\n console.error(\n [\n `Salt: A component is changing the ${\n isControlled ? \"\" : \"un\"\n }controlled ${state} state of ${name} to be ${\n isControlled ? \"un\" : \"\"\n }controlled.`,\n \"Elements should not switch from uncontrolled to controlled (or vice versa).\",\n `Decide between using a controlled or uncontrolled ${name} ` +\n \"element for the lifetime of the component.\",\n \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\",\n \"More info: https://fb.me/react-controlled-components\",\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [state, name, controlled]);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error(\n [\n `Salt: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` +\n `To suppress this warning opt to use a controlled ${name}.`,\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [JSON.stringify(defaultProp, ignoreReactElements)]);\n\n const setValueIfUncontrolled: Dispatch<SetStateAction<S>> = useCallback(\n (newValue) => {\n if (!isControlled) {\n setValue(newValue);\n }\n },\n [isControlled]\n );\n\n return [value, setValueIfUncontrolled, isControlled];\n}\n\n// Ignore ReactElements in JSON, they contain circular refs\nfunction ignoreReactElements<T>(key: string, value: T): T | null {\n return isValidElement(value) ? null : value;\n}\n", "import {\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\n\nexport const WidthHeight = [\"height\", \"width\"];\nexport const WidthOnly = [\"width\"];\nexport const HeightOnly = [\"height\"];\n\nexport type measurements<T = string | number> = {\n height?: T;\n clientHeight?: number;\n clientWidth?: number;\n contentHeight?: number;\n contentWidth?: number;\n scrollHeight?: number;\n scrollWidth?: number;\n width?: T;\n};\ntype measuredDimension = keyof measurements<number>;\n\nexport type ResizeHandler = (measurements: measurements<number>) => void;\n\ntype observedDetails = {\n onResize?: ResizeHandler;\n measurements: measurements<number>;\n};\nconst observedMap = new Map<HTMLElement, observedDetails>();\n\nconst getTargetSize = (\n element: HTMLElement,\n size: {\n height: number;\n width: number;\n contentHeight: number;\n contentWidth: number;\n },\n dimension: measuredDimension\n): number => {\n switch (dimension) {\n case \"height\":\n return size.height;\n case \"clientHeight\":\n return element.clientHeight;\n case \"clientWidth\":\n return element.clientWidth;\n case \"contentHeight\":\n return size.contentHeight;\n case \"contentWidth\":\n return size.contentWidth;\n case \"scrollHeight\":\n return Math.ceil(element.scrollHeight);\n case \"scrollWidth\":\n return Math.ceil(element.scrollWidth);\n case \"width\":\n return size.width;\n default:\n return 0;\n }\n};\n\n// TODO should we make this create-on-demand\nconst resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { target, borderBoxSize, contentBoxSize } = entry;\n const observedTarget = observedMap.get(target as HTMLElement);\n if (observedTarget) {\n const [{ blockSize: height, inlineSize: width }] = borderBoxSize;\n const [{ blockSize: contentHeight, inlineSize: contentWidth }] =\n contentBoxSize;\n const { onResize, measurements } = observedTarget;\n let sizeChanged = false;\n for (const [dimension, size] of Object.entries(measurements)) {\n const newSize = getTargetSize(\n target as HTMLElement,\n { height, width, contentHeight, contentWidth },\n dimension as measuredDimension\n );\n\n if (newSize !== size) {\n sizeChanged = true;\n measurements[dimension as measuredDimension] = newSize;\n }\n }\n if (sizeChanged) {\n // TODO only return measured sizes\n onResize && onResize(measurements);\n }\n }\n }\n});\n\n// TODO use an optional lag (default to false) to ask to fire onResize\n// with initial size\nexport function useResizeObserver(\n ref: RefObject<Element | HTMLElement | null>,\n dimensions: string[],\n onResize: ResizeHandler,\n reportInitialSize = false\n) {\n const dimensionsRef = useRef(dimensions);\n const target = ref.current as HTMLElement;\n\n const measure = useCallback((target: HTMLElement): measurements<number> => {\n const { width, height } = target.getBoundingClientRect();\n const { clientWidth: contentWidth, clientHeight: contentHeight } = target;\n return dimensionsRef.current.reduce(\n (map: { [key: string]: number }, dim) => {\n map[dim] = getTargetSize(\n target,\n { width, height, contentHeight, contentWidth },\n dim as measuredDimension\n );\n return map;\n },\n {}\n );\n }, []);\n\n // TODO use ref to store resizeHandler here\n // resize handler registered with REsizeObserver will never change\n // use ref to store user onResize callback here\n // resizeHandler will call user callback.current\n\n // Keep this effect separate in case user inadvertently passes different\n // dimensions or callback instance each time - we only ever want to\n // initiate new observation when ref changes.\n useLayoutEffect(() => {\n // const target = ref.current as HTMLElement;\n async function registerObserver() {\n // Create the map entry immediately. useEffect may fire below\n // before fonts are ready and attempt to update entry\n observedMap.set(target, { measurements: {} as measurements<number> });\n await document.fonts.ready;\n const observedTarget = observedMap.get(target);\n if (observedTarget) {\n const measurements = measure(target);\n observedTarget.measurements = measurements;\n resizeObserver.observe(target);\n if (reportInitialSize) {\n onResize(measurements);\n }\n } else {\n console.log(\n `%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation`,\n \"font-weight:bold; color:red;\"\n );\n }\n }\n\n if (target) {\n // TODO might we want multiple callers to attach a listener to the same element ?\n if (observedMap.has(target)) {\n console.log(\n \"useResizeObserver attemping to observe same element twice\",\n { target }\n );\n // throw Error(\n // \"useResizeObserver attemping to observe same element twice\"\n // );\n }\n // TODO set a pending entry on map\n registerObserver();\n }\n return () => {\n if (target && observedMap.has(target)) {\n resizeObserver.unobserve(target);\n observedMap.delete(target);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [measure, target]);\n\n useEffect(() => {\n const target = ref.current as HTMLElement;\n const record = observedMap.get(target);\n if (record) {\n if (dimensionsRef.current !== dimensions) {\n dimensionsRef.current = dimensions;\n const measurements = measure(target);\n record.measurements = measurements;\n }\n // Might not have changed, but no harm ...\n record.onResize = onResize;\n }\n }, [dimensions, measure, ref, onResize]);\n}\n", "import { MouseEventHandler, RefObject, SyntheticEvent } from \"react\";\n\nexport type SelectionDisallowed = \"none\";\nexport type SingleSelectionStrategy = \"default\" | \"deselectable\";\nexport type MultiSelectionStrategy =\n | \"multiple\"\n | \"extended\"\n | \"extended-multi-range\";\n\n/**\n * SpecialKeyMultiple works as deselectable unless a special key\n * (default SHIFT) is also pressed, then it allows multiple selection.\n * Useful for column sorting, filters etc\n */\nexport type SpecialKeyMultipleSelection = \"multiple-special-key\";\n\nexport type SelectionStrategy =\n | SelectionDisallowed\n | SingleSelectionStrategy\n | MultiSelectionStrategy;\n\nexport const isSingleSelection = (\n s?: SelectionStrategy\n): s is SingleSelectionStrategy =>\n s === undefined || s === \"default\" || s === \"deselectable\";\n\nexport const isMultiSelection = (\n s?: SelectionStrategy\n): s is MultiSelectionStrategy =>\n s === \"multiple\" || s?.startsWith(\"extended\") === true;\n\nexport type SelectHandler<Item = string> = (\n event: SyntheticEvent,\n selectedItem: Item\n) => void;\n\nexport const selectionIsDisallowed = (\n selection?: SelectionStrategy | SpecialKeyMultipleSelection\n): selection is SelectionDisallowed => selection === \"none\";\n\nexport const allowMultipleSelection = (\n selectionStrategy: SelectionStrategy | SpecialKeyMultipleSelection,\n specialKey = false\n) =>\n selectionStrategy === \"multiple\" ||\n (selectionStrategy === \"multiple-special-key\" && specialKey);\n\nexport const deselectionIsAllowed = (\n selection?: SelectionStrategy | SpecialKeyMultipleSelection\n): selection is \"deselectable\" | MultiSelectionStrategy =>\n selection !== \"none\" && selection !== \"default\";\n\nexport const hasSelection = <Item = unknown>(selected?: Item[]) =>\n selected !== undefined && selected.length > 0;\n\nexport const getFirstSelectedItem = <Item = unknown>(selected: Item[]) =>\n selected[0];\n\ninterface SelectionProps {\n defaultSelected?: string[];\n onSelect?: SelectHandler;\n onSelectionChange?: MultiSelectionHandler;\n selected?: string[];\n selectionStrategy?: SelectionStrategy;\n}\n\nexport interface ListHandlers {\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n onKeyboardNavigation?: (\n event: React.KeyboardEvent,\n currentIndex: number\n ) => void;\n onMouseMove?: (event: React.MouseEvent) => void;\n}\nexport interface SelectionHookProps extends SelectionProps {\n containerRef: RefObject<HTMLElement>;\n disableSelection?: boolean;\n highlightedIndex: number;\n itemQuery: string;\n label?: string;\n onClick?: MouseEventHandler;\n selectionKeys?: string[];\n tabToSelect?: boolean;\n}\n\nexport interface SelectionHookResult {\n listHandlers: ListHandlers;\n selected: string[];\n setSelected: (selected: string[]) => void;\n}\n\n/**\n * evt is only null in the special case of a selection fired from a multi-select\n * host on tab or selection based on freeform text in combobox\n */\nexport type MultiSelectionHandler<Item = string> = (\n event: SyntheticEvent | null,\n selected: Item[]\n) => void;\n/**\n * evt is only null in the special case of freeform text in combobox\n */\nexport type SingleSelectionHandler<Item = string> = (\n event: SyntheticEvent | null,\n selected: Item\n) => void;\n\nexport type SelectionType<\n I,\n S extends SelectionStrategy\n> = S extends MultiSelectionStrategy ? I[] : I | null;\n\nexport interface ComponentSelectionProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> {\n defaultSelected?: S extends MultiSelectionStrategy ? Item[] : Item;\n onSelect?: SelectHandler<Item>;\n onSelectionChange?: S extends MultiSelectionStrategy\n ? MultiSelectionHandler<Item>\n : SingleSelectionHandler<Item>;\n selected?: SelectionType<Item, S>;\n selectionStrategy?: S;\n /**\n * The keyboard keys used to effect selection, defaults to SPACE and ENTER\n * TODO maybe this belongs on the SelectionProps interface ?\n */\n selectionKeys?: string[];\n}\n", "import {\n Dispatch,\n MutableRefObject,\n SetStateAction,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\nconst isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n\n// Keeps a ref value in sync with a state value\nexport const useStateRef = <T = string>(\n initialValue: T\n): [MutableRefObject<T>, Dispatch<SetStateAction<T>>] => {\n const [value, _setValue] = useState<T>(initialValue);\n const ref = useRef<T>(value);\n\n const setValue = useCallback<Dispatch<SetStateAction<T>>>((arg) => {\n if (isSimpleStateValue(arg)) {\n ref.current = arg;\n _setValue(arg);\n } else {\n const { current: prev } = ref;\n ref.current = arg(prev);\n _setValue(ref.current);\n }\n }, []);\n return [ref, setValue];\n};\n", "import { PopupComponent as Popup, Portal } from \"@vuu-ui/vuu-popups\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { Children, cloneElement, forwardRef, useRef } from \"react\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdownBase } from \"./useDropdownBase\";\n\nimport \"./Dropdown.css\";\n\n// Any component may be passed as our trigger or popup component.\n// Define the common props that we will act on, if present,\n// so we can type them.\nexport type MaybeChildProps = {\n className?: string;\n id?: string;\n role?: string;\n width: number | string;\n};\n\nconst classBase = \"vuuDropdown\";\n\nexport const DropdownBase = forwardRef<HTMLDivElement, DropdownBaseProps>(\n function Dropdown(\n {\n PopupProps,\n \"aria-labelledby\": ariaLabelledByProp,\n children,\n className: classNameProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id: idProp,\n isOpen: isOpenProp,\n onKeyDown,\n onOpenChange,\n openKeys,\n openOnFocus,\n placement = \"below-full-width\",\n popupWidth,\n width,\n ...htmlAttributes\n },\n forwardedRef\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const className = cx(classBase, classNameProp, {\n [`${classBase}-fullWidth`]: fullWidth,\n [`${classBase}-disabled`]: disabled,\n });\n const [trigger, popupComponent] = Children.toArray(\n children\n ) as JSX.Element[];\n const id = useId(idProp);\n\n const { componentProps, isOpen, popupComponentRef, triggerProps } =\n useDropdownBase({\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown,\n openKeys,\n openOnFocus,\n popupComponent,\n popupWidth,\n rootRef,\n width,\n });\n\n const getTriggerComponent = () => {\n const {\n id: defaultId,\n role: defaultRole,\n ...restTriggerProps\n } = triggerProps;\n\n const {\n id = defaultId,\n role = defaultRole,\n ...ownProps\n } = trigger.props as MaybeChildProps;\n\n return cloneElement(\n trigger,\n forwardCallbackProps(ownProps, {\n ...restTriggerProps,\n id,\n role,\n })\n );\n };\n\n const getPopupComponent = () => {\n const { id: defaultId, width, ...restComponentProps } = componentProps;\n const {\n className,\n id = defaultId,\n width: ownWidth,\n ...ownProps\n } = popupComponent.props as MaybeChildProps;\n\n return cloneElement(popupComponent, {\n ...ownProps,\n ...restComponentProps,\n className: cx(className, `${classBase}-popup-component`),\n id,\n ref: popupComponentRef,\n width: placement.endsWith(\"full-width\") ? \"auto\" : ownWidth ?? width,\n });\n };\n\n const ref = useForkRef(rootRef, forwardedRef);\n\n return (\n <div {...htmlAttributes} className={className} id={idProp} ref={ref}>\n {getTriggerComponent()}\n {isOpen && (\n <Portal>\n <Popup\n {...PopupProps}\n anchorElement={rootRef}\n placement={placement}\n >\n {getPopupComponent()}\n </Popup>\n </Portal>\n )}\n </div>\n );\n }\n);\n", "import { useControlled, useForkRef } from \"@salt-ds/core\";\nimport {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { measurements, useResizeObserver, WidthOnly } from \"../common-hooks\";\nimport {\n CloseReason,\n DropdownHookProps,\n DropdownHookResult,\n DropdownOpenKey,\n} from \"./dropdownTypes\";\nimport { useClickAway } from \"./useClickAway\";\n\nconst NO_OBSERVER: string[] = [];\n\nexport const useDropdownBase = ({\n defaultIsOpen,\n disabled,\n // TODO check how we're using fullWidth, do we need a separate value for the popup component\n fullWidth: fullWidthProp,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown: onKeyDownProp,\n openKeys = [\"Enter\", \"ArrowDown\", \" \"],\n openOnFocus,\n popupComponent,\n popupWidth: popupWidthProp,\n rootRef,\n width,\n}: DropdownHookProps): DropdownHookResult => {\n const justFocused = useRef<number | null>(null);\n const popperRef = useRef<HTMLElement | null>(null);\n const popperCallbackRef = useCallback((element: HTMLElement | null) => {\n popperRef.current = element;\n }, []);\n const [isOpen, setIsOpen] = useControlled({\n controlled: isOpenProp,\n default: Boolean(defaultIsOpen),\n name: \"useDropdown\",\n state: \"isOpen\",\n });\n const [popup, setPopup] = useState<measurements>({\n width: popupWidthProp ?? width ?? 0,\n });\n\n const showDropdown = useCallback(() => {\n setIsOpen(true);\n onOpenChange?.(true);\n }, [onOpenChange, setIsOpen]);\n\n const hideDropdown = useCallback(\n (reason: CloseReason) => {\n setIsOpen(false);\n onOpenChange?.(false, reason);\n },\n [onOpenChange, setIsOpen]\n );\n\n useClickAway({\n popperRef,\n rootRef,\n isOpen,\n onClose: hideDropdown,\n });\n\n const handleTriggerFocus = useCallback(() => {\n if (!disabled) {\n if (openOnFocus) {\n setIsOpen(true);\n onOpenChange?.(true);\n // Suppress response to click if click was the cause of focus\n justFocused.current = window.setTimeout(() => {\n justFocused.current = null;\n }, 1000);\n }\n }\n }, [disabled, onOpenChange, openOnFocus, setIsOpen]);\n\n const handleTriggerToggle = useCallback(\n (e: MouseEvent) => {\n // Do not trigger menu open for 'Enter' and 'SPACE' key as they're handled in `handleKeyDown`\n if (\n [\"Enter\", \" \"].indexOf(\n (e as unknown as KeyboardEvent<HTMLDivElement>).key\n ) === -1\n ) {\n const newIsOpen = !isOpen;\n setIsOpen(newIsOpen);\n onOpenChange?.(newIsOpen);\n }\n },\n [isOpen, setIsOpen, onOpenChange]\n );\n\n const handleKeydown = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => {\n if (/* evt.key === \"Tab\" || */ evt.key === \"Escape\" && isOpen) {\n // No preventDefault for Tab, but if we've handled Escape, we should own it\n if (evt.key === \"Escape\") {\n evt.stopPropagation();\n evt.preventDefault();\n }\n hideDropdown(evt.key);\n } else if (openKeys.includes(evt.key as DropdownOpenKey) && !isOpen) {\n evt.preventDefault();\n showDropdown();\n } else {\n onKeyDownProp?.(evt);\n }\n },\n [hideDropdown, isOpen, onKeyDownProp, openKeys, showDropdown]\n );\n\n const handleBlur = useCallback(\n (evt: FocusEvent<HTMLElement>) => {\n if (isOpen) {\n if (popperRef.current?.contains(evt.relatedTarget)) {\n // ignore\n } else {\n hideDropdown(\"blur\");\n }\n }\n },\n [hideDropdown, isOpen]\n );\n\n const fullWidth = fullWidthProp ?? false;\n const measurements = fullWidth ? WidthOnly : NO_OBSERVER;\n useResizeObserver(rootRef, measurements, setPopup, fullWidth);\n\n const componentId = `${id}-dropdown`;\n\n // TODO do we use aria-popup - valid values are menu, disloag, grid, tree, listbox\n const triggerProps = {\n \"aria-expanded\": isOpen,\n \"aria-owns\": isOpen ? componentId : undefined,\n id: `${id}-control`,\n onClick: disabled || openOnFocus ? undefined : handleTriggerToggle,\n onFocus: handleTriggerFocus,\n role: \"listbox\",\n onBlur: handleBlur,\n onKeyDown: disabled ? undefined : handleKeydown,\n style: { width: fullWidth ? undefined : width },\n };\n\n const dropdownComponentProps = {\n id: componentId,\n width: popup.width,\n };\n\n const popupComponentRef = useForkRef(popperCallbackRef, popupComponent.ref);\n\n return {\n componentProps: dropdownComponentProps,\n popupComponentRef,\n isOpen,\n label: \"Dropdown Button\",\n triggerProps,\n };\n};\n", "import { RefObject, useEffect, useRef } from \"react\";\nimport { CloseReason } from \"./dropdownTypes\";\n\nexport type ClickawayHook = (props: {\n popperRef: RefObject<HTMLElement>;\n rootRef: RefObject<HTMLElement>;\n isOpen: boolean;\n onClose: (reason: CloseReason) => void;\n}) => void;\n\ntype MouseEventHandler = (e: MouseEvent) => void;\ntype KeyboardEventHandler = (e: KeyboardEvent) => void;\n\nconst NO_HANDLERS: [MouseEventHandler?, KeyboardEventHandler?] = [];\n\nexport const useClickAway: ClickawayHook = ({\n popperRef,\n rootRef,\n isOpen,\n onClose,\n}) => {\n //TODO usePropBackedRef\n const openRef = useRef(isOpen);\n useEffect(() => {\n openRef.current = isOpen;\n }, [isOpen]);\n\n useEffect(() => {\n const [clickHandler, escapeKeyHandler] = isOpen\n ? [\n (evt: MouseEvent) => {\n const targetElement = evt.target as HTMLElement;\n if (\n !popperRef.current?.contains(targetElement) &&\n !rootRef.current?.contains(targetElement)\n ) {\n onClose(\"click-away\");\n }\n },\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n if (openRef.current) {\n onClose(\"Escape\");\n e.stopPropagation();\n }\n }\n },\n ]\n : NO_HANDLERS;\n\n if (clickHandler && escapeKeyHandler) {\n document.body.addEventListener(\"mousedown\", clickHandler, true);\n document.body.addEventListener(\"keydown\", escapeKeyHandler, true);\n }\n\n return () => {\n if (clickHandler && escapeKeyHandler) {\n document.body.removeEventListener(\"mousedown\", clickHandler, true);\n document.body.removeEventListener(\"keydown\", escapeKeyHandler, true);\n }\n };\n }, [isOpen, onClose, popperRef, rootRef]);\n};\n", "import { Button, ButtonProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { AriaAttributes, ForwardedRef, forwardRef } from \"react\";\n\nimport \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n icon?: string;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst classBase = \"vuuDropdownButton\";\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n ariaHideOptionRole,\n className,\n disabled,\n icon = \"chevron-down\",\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={cx(\n classBase,\n {\n [`${classBase}-fullWidth`]: fullWidth,\n },\n className\n )}\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={`${classBase}-content`}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={`${classBase}-buttonLabel`}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <span\n className={`${classBase}-buttonIcon`}\n data-icon={icon}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n", "import { useForkRef } from \"@salt-ds/core\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\n\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport {\n CollectionProvider,\n itemToString as defaultItemToString,\n SelectionStrategy,\n SelectionType,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { List, ListProps } from \"../list\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBase, MaybeChildProps } from \"./DropdownBase\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdown } from \"./useDropdown\";\n\nexport interface DropdownProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends DropdownBaseProps,\n Pick<\n ListProps<Item, S>,\n | \"ListItem\"\n | \"defaultSelected\"\n | \"itemToString\"\n | \"onSelect\"\n | \"onSelectionChange\"\n | \"selected\"\n | \"selectionStrategy\"\n | \"source\"\n | \"width\"\n > {\n // TODO There is overlap here between ListProps and top level List props\n ListProps?: Omit<ListProps<Item, S>, \"ListItem\" | \"itemToString\" | \"source\">;\n}\n\nexport const Dropdown = forwardRef(function Dropdown<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n \"aria-label\": ariaLabel,\n children,\n defaultIsOpen,\n defaultSelected,\n id: idProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: selectedProp,\n selectionStrategy,\n source,\n triggerComponent,\n ListItem,\n ListProps,\n width = 180,\n ...props\n }: DropdownProps<Item, S>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef<HTMLDivElement>(rootRef, forwardedRef);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n itemToString,\n },\n });\n\n const {\n highlightedIndex,\n triggerLabel,\n listHandlers,\n listControlProps,\n selected,\n ...dropdownListHook\n } = useDropdown<Item, S>({\n collectionHook,\n defaultHighlightedIndex: ListProps?.defaultHighlightedIndex,\n defaultIsOpen,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n highlightedIndex: ListProps?.highlightedIndex,\n isOpen: isOpenProp,\n itemToString,\n listRef,\n onHighlight: ListProps?.onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n });\n\n const itemIdToItem = useCallback(\n (itemId: string | string[]) => {\n if (Array.isArray(itemId)) {\n const items = itemId.map((id) => collectionHook.itemById(id));\n return items as SelectionType<Item, S>;\n } else {\n return collectionHook.itemById(itemId) as SelectionType<Item, S>;\n }\n },\n [collectionHook]\n );\n\n const getTriggerComponent = () => {\n const ariaProps = {\n \"aria-activedescendant\": dropdownListHook.isOpen\n ? listControlProps?.[\"aria-activedescendant\"]\n : undefined,\n \"aria-label\": ariaLabel,\n };\n if (triggerComponent) {\n const ownProps = triggerComponent.props as MaybeChildProps;\n return cloneElement(\n triggerComponent,\n forwardCallbackProps(ownProps, {\n ...(dropdownListHook.isOpen ? listControlProps : {}),\n ...ariaProps,\n })\n );\n } else {\n return (\n <DropdownButton\n label={triggerLabel}\n {...(dropdownListHook.isOpen ? listControlProps : {})}\n {...ariaProps}\n />\n );\n }\n };\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n id={id}\n isOpen={dropdownListHook.isOpen}\n onOpenChange={dropdownListHook.onOpenChange}\n placement={\n ListProps?.width === undefined ? \"below-full-width\" : \"below\"\n }\n ref={forkedRef}\n width={width}\n >\n {getTriggerComponent()}\n <List<Item, S>\n ListItem={ListItem}\n itemToString={itemToString}\n {...ListProps}\n highlightedIndex={highlightedIndex}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n onSelect={onSelect}\n ref={listRef}\n selected={selected === undefined ? undefined : itemIdToItem(selected)}\n selectionStrategy={selectionStrategy}\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, S extends SelectionStrategy = \"default\">(\n props: DropdownProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<DropdownProps<Item>>;\n", "import React from \"react\";\n\nfunction union<T>(set1: Set<T>, ...sets: Set<T>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\n\nconst actionKeys = new Set([\"Enter\", \"Delete\", \" \"]);\nconst focusKeys = new Set([\"Tab\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst navigationKeys = new Set([\n Home,\n End,\n PageUp,\n PageDown,\n ArrowDown,\n ArrowUp,\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n navigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: React.KeyboardEvent): boolean => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n return evt.key.length === 1 && !evt.ctrlKey && !evt.metaKey && !evt.altKey;\n};\n\nexport const isNavigationKey = ({ key }: React.KeyboardEvent): boolean => {\n return navigationKeys.has(key);\n};\n", "import { MouseEvent, useCallback } from \"react\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./keyUtils\";\nimport { ListHandlers } from \"../../common-hooks\";\nimport {\n CollectionHookResult,\n CollectionItem,\n} from \"../../common-hooks/collectionTypes\";\n\nconst NO_HANDLERS = {};\nconst canToggleItem = (item: CollectionItem<unknown>) =>\n Array.isArray(item.childNodes);\n// TODO how do we determine this and where does this function belong = in the collectionHook ?\nconst canSelectItem = (_: CollectionItem<unknown>) => true;\n\nconst toggleIconClicked = (el: HTMLElement) => {\n const closestToggle = el.closest(\n \"[data-toggle],[aria-expanded]\"\n ) as HTMLElement;\n return closestToggle.dataset.toggle === \"true\";\n};\n\ninterface CollapsibleHookProps<Item> {\n collapsibleHeaders?: boolean;\n collectionHook: CollectionHookResult<Item>;\n highlightedIdx: number;\n onToggle?: (node: Item) => void;\n}\n\ninterface CollapsibleHookResult<Item> {\n onClick?: ListHandlers[\"onClick\"];\n onKeyDown?: ListHandlers[\"onKeyDown\"];\n}\n\nexport const useCollapsibleGroups = <Item>({\n collapsibleHeaders,\n collectionHook,\n highlightedIdx,\n onToggle,\n}: CollapsibleHookProps<Item>): CollapsibleHookResult<Item> => {\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded === false && item.value) {\n e.preventDefault();\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded && item.value) {\n e.preventDefault();\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n console.log(`useCollapsibleGroups idx=${highlightedIdx}`);\n const item = collectionHook.data[highlightedIdx];\n console.log(evt.target, evt.currentTarget);\n if (\n item &&\n canToggleItem(item) &&\n (!canSelectItem(item) || toggleIconClicked(evt.target as HTMLElement))\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n if (item.expanded === false && item.value) {\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n } else if (item.expanded === true && item.value) {\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\n );\n\n /**\n * These are List handlers, so we will not have reference to the actual node\n * element. We must rely on highlightedIdx to tell us which node is interactive.\n */\n const listHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n };\n\n return collapsibleHeaders ? listHandlers : NO_HANDLERS;\n};\n", "export const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl?: HTMLElement) {\n if (listItemEl) {\n let idx: string | null | undefined = listItemEl.dataset.index;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if ((idx = listItemEl.ariaPosInSet)) {\n return parseInt(idx, 10) - 1;\n }\n }\n return -1;\n}\n\nexport const listItemId = (el: HTMLElement | null) => el?.id;\n\nconst closestListItem = (el: HTMLElement) =>\n el.closest(\"[data-index],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import {\n ForwardedRef,\n MutableRefObject,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport {\n CollectionHookResult,\n CollectionItem,\n} from \"../../common-hooks/collectionTypes\";\n\nexport interface ScrollingAPI<Item> {\n scrollToIndex: (itemIndex: number) => void;\n scrollToItem: (item: Item) => void;\n scrollTo: (scrollOffset: number) => void;\n}\n\nexport interface ScrollingAPIHook<Item> {\n collectionHook: CollectionHookResult<Item>;\n forwardedRef?: ForwardedRef<ScrollingAPI<Item>>;\n scrollableRef: MutableRefObject<HTMLElement | null>;\n scrollIntoView?: (item: CollectionItem<Item>) => void;\n}\n\nconst noScrolling: ScrollingAPI<unknown> = {\n scrollToIndex: () => undefined,\n scrollToItem: () => undefined,\n scrollTo: () => undefined,\n};\n\nexport const useImperativeScrollingAPI = <Item>({\n collectionHook,\n forwardedRef,\n scrollableRef,\n scrollIntoView,\n}: ScrollingAPIHook<Item>) => {\n const scrollHandles: ScrollingAPI<Item> = useMemo(\n () => ({\n scrollToIndex: (itemIndex: number) => {\n const collectionItem = collectionHook.data[itemIndex];\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollToItem: (item: Item) => {\n const collectionItem = collectionHook.toCollectionItem(item);\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollTo: (scrollOffset: number) => {\n if (scrollableRef?.current) {\n scrollableRef.current.scrollTop = scrollOffset;\n }\n },\n }),\n [collectionHook, scrollIntoView, scrollableRef]\n );\n\n useImperativeHandle(\n forwardedRef,\n () => {\n if (scrollableRef.current) {\n return scrollHandles;\n } else {\n return noScrolling;\n }\n },\n [scrollHandles, scrollableRef]\n );\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n End,\n Home,\n isCharacterKey,\n isNavigationKey,\n PageDown,\n PageUp,\n} from \"./keyUtils\";\nimport {\n NavigationHookProps,\n NavigationHookResult,\n getFirstSelectedItem,\n hasSelection,\n} from \"../../common-hooks\";\nimport { getElementByDataIndex, isValidNumber } from \"@vuu-ui/vuu-utils\";\n\nexport const LIST_FOCUS_VISIBLE = -2;\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === End) {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst getIndexOfSelectedItem = (selected?: string[]) => {\n const selectedItemId = Array.isArray(selected)\n ? getFirstSelectedItem(selected)\n : undefined;\n if (selectedItemId) {\n const el = document.getElementById(selectedItemId) as HTMLElement;\n if (el) {\n const index = parseInt(el.dataset.index ?? \"-1\");\n if (isValidNumber(index)) {\n return index;\n }\n }\n }\n return -1;\n};\n\nconst getStartIdx = (\n key: string,\n idx: number,\n selectedIdx: number,\n length: number\n) => {\n if (key === End) {\n return length;\n } else if (key === Home) {\n return -1;\n } else if (idx !== -1) {\n return idx;\n } else {\n return selectedIdx;\n }\n};\n\nconst pageDown = (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n itemCount: number,\n index: number\n): number | undefined => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight, scrollHeight } = containerEl;\n const lastIndexPosition = itemCount - 1;\n const newScrollTop = Math.min(\n scrollTop + clientHeight,\n scrollHeight - clientHeight\n );\n if (newScrollTop !== scrollTop && index < lastIndexPosition) {\n containerEl.scrollTo(0, newScrollTop);\n // Might need to do this in a timeout, in case virtualized content has rendered\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx += 1;\n nextRect = getElementByDataIndex(\n containerEl,\n nextIdx,\n true\n ).getBoundingClientRect();\n } while (nextRect.top < itemTop && nextIdx < lastIndexPosition);\n return nextIdx;\n }\n};\n\nconst pageUp = async (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n index: number\n): Promise<number | undefined> => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight } = containerEl;\n const newScrollTop = Math.max(scrollTop - clientHeight, 0);\n if (newScrollTop !== scrollTop && index > 0) {\n containerEl.scrollTo(0, newScrollTop);\n return new Promise((resolve) => {\n // We must defer this operation until after render. If Items are virtualized.\n // we need to allow them to be rendered.\n requestAnimationFrame(() => {\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx -= 1;\n nextRect = getElementByDataIndex(\n containerEl,\n nextIdx,\n true\n ).getBoundingClientRect();\n } while (nextRect.top > itemTop && nextIdx > 0);\n resolve(nextIdx);\n });\n });\n }\n};\n\n// const isLeaf = <Item>(item: CollectionItem<Item>): boolean =>\n// !item.header && !item.childNodes;\nconst isLeaf = (element?: HTMLElement) => element !== undefined;\n// const isFocusable = <Item>(item: CollectionItem<Item>) =>\n// isLeaf(item) || item.expanded !== undefined;\n// TODO read dom element and check for leaf item or toggleable group\nconst isFocusable = (container: HTMLElement, index: number) => {\n const targetEl = getElementByDataIndex(container, index);\n return isLeaf(targetEl);\n};\n\nexport const useKeyboardNavigation = ({\n containerRef,\n defaultHighlightedIndex = -1,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n itemCount,\n onHighlight,\n onKeyboardNavigation,\n restoreLastFocus,\n selected,\n // TODO\n viewportItemCount,\n}: NavigationHookProps): NavigationHookResult => {\n const lastFocus = useRef(-1);\n const [, forceRender] = useState({});\n const [highlightedIndex, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIndexProp,\n default: defaultHighlightedIndex,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx: number, fromKeyboard = false) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n if (fromKeyboard) {\n lastFocus.current = idx;\n }\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextPageItemIdx = useCallback(\n async (\n key: \"PageDown\" | \"PageUp\" | \"Home\" | \"End\",\n index: number\n ): Promise<number> => {\n const itemEl = getElementByDataIndex(containerRef.current, index, true);\n let result: number | undefined;\n if (itemEl) {\n const { current: containerEl } = containerRef;\n if (itemEl && containerEl) {\n result =\n key === PageDown\n ? pageDown(containerEl, itemEl, itemCount, index)\n : await pageUp(containerEl, itemEl, index);\n }\n }\n return result ?? index;\n },\n [containerRef, itemCount]\n );\n\n const nextFocusableItemIdx = useCallback(\n (key = ArrowDown, idx: number = key === ArrowDown ? -1 : itemCount) => {\n //TODO we don't seem to have selectedhere first time after selection\n if (itemCount === 0) {\n return -1;\n } else {\n const isEnd = key === \"End\";\n const isHome = key === \"Home\";\n // The start index is generally the highlightedIdx (passed in as idx).\n // We don't need it for Home and End navigation.\n // Special case where we have selection, but no highlighting - begin\n // navigation from selected item.\n const indexOfSelectedItem =\n isEnd || isHome || idx === -1 ? -1 : getIndexOfSelectedItem(selected);\n const startIdx = getStartIdx(key, idx, indexOfSelectedItem, itemCount);\n let nextIdx = nextItemIdx(itemCount, key, startIdx);\n\n const { current: container } = containerRef;\n // Guard against returning zero, when first item is a header or group\n if (\n nextIdx === 0 &&\n key === ArrowUp &&\n container &&\n !isFocusable(container, 0)\n ) {\n return idx;\n }\n // TODO this is causing an infinite loop in some scenarios\n while (\n (((key === ArrowDown || isHome) && nextIdx < itemCount) ||\n ((key === ArrowUp || isEnd) && nextIdx > 0)) &&\n container &&\n !isFocusable(container, nextIdx)\n ) {\n nextIdx = nextItemIdx(itemCount, key, nextIdx);\n }\n return nextIdx;\n }\n },\n [containerRef, itemCount, selected]\n );\n\n // does this belong here or should it be a method passed in?\n const keyboardNavigation = useRef(false);\n const ignoreFocus = useRef<boolean>(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(() => {\n // Ignore focus if mouse has been used\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else {\n // If mouse wan't used, then keyboard must have been\n keyboardNavigation.current = true;\n if (itemCount === 0) {\n setHighlightedIndex(LIST_FOCUS_VISIBLE);\n } else if (highlightedIndex !== -1) {\n // We need to force a render here. We're not changing the highlightedIdx, but we want to\n // make sure we render with the correct focusVisible value. We don't store focusVisible\n // in state, as there are places where we would double render, as highlightedIdx also changes.\n forceRender({});\n } else if (restoreLastFocus) {\n if (lastFocus.current !== -1) {\n setHighlightedIndex(lastFocus.current);\n } else {\n const selectedItemIdx = getIndexOfSelectedItem(selected);\n if (selectedItemIdx !== -1) {\n setHighlightedIndex(selectedItemIdx);\n } else {\n setHighlightedIndex(0);\n }\n }\n } else if (hasSelection(selected)) {\n const selectedItemIdx = getIndexOfSelectedItem(selected);\n setHighlightedIndex(selectedItemIdx);\n } else if (disableHighlightOnFocus !== true) {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }\n }, [\n disableHighlightOnFocus,\n highlightedIndex,\n itemCount,\n nextFocusableItemIdx,\n restoreLastFocus,\n selected,\n setHighlightedIndex,\n ]);\n\n const navigateChildItems = useCallback(\n async (e: KeyboardEvent) => {\n const nextIdx =\n e.key === PageDown || e.key === PageUp\n ? await nextPageItemIdx(e.key, highlightedIndex)\n : nextFocusableItemIdx(e.key, highlightedIndex);\n\n if (nextIdx !== highlightedIndex) {\n setHighlightedIndex(nextIdx, true);\n }\n // Users may need to know that a Keyboard navigation event has been handled\n // even if no actual navigation was effected. e.g. fine-grained control\n // over aria-activedescendant requires this.\n onKeyboardNavigation?.(e, nextIdx);\n },\n [\n highlightedIndex,\n nextFocusableItemIdx,\n nextPageItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (itemCount > 0 && isNavigationKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n keyboardNavigation.current = true;\n void navigateChildItems(e);\n } else if (isCharacterKey(e)) {\n keyboardNavigation.current = true;\n }\n },\n [itemCount, navigateChildItems]\n );\n\n const containerProps = useMemo(() => {\n return {\n onBlur: (e: FocusEvent) => {\n //TODO no direct ref to List\n const sourceTarget = (e.target as HTMLElement).closest(\".vuuList\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n keyboardNavigation.current = false;\n setHighlightedIdx(-1);\n if (!restoreLastFocus) {\n lastFocus.current = -1;\n }\n }\n },\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyboardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n onMouseMove: () => {\n if (keyboardNavigation.current) {\n keyboardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyboardNavigation.current = false;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n };\n }, [\n handleFocus,\n handleKeyDown,\n restoreLastFocus,\n setHighlightedIdx,\n setHighlightedIndex,\n ]);\n\n return {\n focusVisible: keyboardNavigation.current ? highlightedIndex : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIndex,\n setHighlightedIndex,\n keyboardNavigation,\n containerProps,\n setIgnoreFocus,\n };\n};\n", "import {\n getElementByDataIndex,\n getElementDataIndex,\n isSelectableElement,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport {\n SelectionHookProps,\n SelectionHookResult,\n selectionIsDisallowed,\n} from \"./selectionTypes\";\nimport { useControlled } from \"./useControlled\";\n\nexport const CHECKBOX = \"checkbox\";\n\nexport const GROUP_SELECTION_NONE = \"none\";\nexport const GROUP_SELECTION_SINGLE = \"single\";\nexport const GROUP_SELECTION_CASCADE = \"cascade\";\n\nexport type GroupSelectionMode = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport const groupSelectionEnabled = (\n groupSelection: GroupSelectionMode\n): boolean => groupSelection && groupSelection !== GROUP_SELECTION_NONE;\n\nexport const useSelection = ({\n containerRef,\n defaultSelected,\n disableSelection = false,\n // groupSelection = GROUP_SELECTION_NONE,\n highlightedIndex,\n itemQuery,\n onClick,\n // label,\n onSelect,\n onSelectionChange,\n selected: selectedProp,\n selectionStrategy,\n selectionKeys = defaultSelectionKeys,\n tabToSelect,\n}: SelectionHookProps): SelectionHookResult => {\n const isDeselectable = selectionStrategy === \"deselectable\";\n const isMultipleSelect = selectionStrategy === \"multiple\";\n const isExtendedSelect = selectionStrategy === \"extended\";\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const [selected, setSelected] = useControlled<string[]>({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"UseSelection\",\n state: \"selected\",\n });\n\n // console.log(\n // `useSelection\n // defaultSelected ${JSON.stringify(defaultSelected)}\n // selectedProp ${JSON.stringify(selectedProp)}\n // selected ${JSON.stringify(selected)}`\n // );\n\n const isItemSelected = useCallback(\n (itemId: string) => selected.includes(itemId),\n [selected]\n );\n\n const selectDeselectable = useCallback(\n (itemId: string) => (isItemSelected(itemId) ? [] : [itemId]),\n [isItemSelected]\n );\n const selectMultiple = useCallback(\n (itemId: string) => {\n const nextItems = isItemSelected(itemId)\n ? (selected as string[]).filter((i) => i !== itemId)\n : (selected as string[]).concat(itemId);\n nextItems.sort();\n return nextItems;\n },\n [isItemSelected, selected]\n );\n const selectRange = useCallback(\n (idx: number, preserveExistingSelection?: boolean) => {\n const currentSelection = preserveExistingSelection\n ? (selected as string[])\n : ([] as string[]);\n\n const [lastSelectedItemId] = (selected as string[]).slice(-1);\n const lastSelectedItemIndex = lastSelectedItemId\n ? getElementDataIndex(document.getElementById(lastSelectedItemId))\n : 0;\n\n const startRegion = Math.min(idx, lastSelectedItemIndex);\n const endRegion = Math.max(idx, lastSelectedItemIndex);\n\n const container = containerRef.current as HTMLElement;\n const allItems = Array.from(\n container.querySelectorAll(itemQuery)\n ) as HTMLElement[];\n const rangeSelection = allItems\n .slice(startRegion, endRegion + 1)\n .map((el) => el.id);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [...new Set([...currentSelection, ...rangeSelection])];\n nextItems.sort();\n return nextItems;\n },\n [containerRef, itemQuery, selected]\n );\n\n const selectItemAtIndex = useCallback(\n (\n evt: SyntheticEvent,\n idx: number,\n rangeSelect: boolean,\n preserveExistingSelection?: boolean\n ) => {\n const { current: container } = containerRef;\n const { id } = getElementByDataIndex(container, idx, true);\n\n let newSelected;\n if (isMultipleSelect) {\n newSelected = selectMultiple(id);\n } else if (isExtendedSelect) {\n if (preserveExistingSelection && !rangeSelect) {\n newSelected = selectMultiple(id);\n } else if (rangeSelect) {\n newSelected = selectRange(idx, preserveExistingSelection);\n } else {\n newSelected = [id];\n }\n } else if (isDeselectable) {\n newSelected = selectDeselectable(id);\n } else {\n newSelected = [id];\n }\n\n if (newSelected !== selected) {\n setSelected(newSelected);\n }\n\n // We fire onSelect irrespective of whether selection changes\n onSelect?.(evt, id);\n\n if (newSelected !== selected) {\n if (onSelectionChange) {\n onSelectionChange(evt, newSelected);\n }\n }\n },\n [\n containerRef,\n isMultipleSelect,\n isExtendedSelect,\n isDeselectable,\n selected,\n onSelect,\n selectMultiple,\n selectRange,\n selectDeselectable,\n setSelected,\n onSelectionChange,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, highlightedIndex);\n if (isSelectableElement(element)) {\n if (isSelectionEvent(evt) || (tabToSelect && evt.key === \"Tab\")) {\n // We do not inhibit Tab behaviour, if we are selecting on Tab then we apply\n // selection as a side effect of the Tab, not as a replacement for Tabbing.\n if (evt.key !== \"Tab\") {\n evt.preventDefault();\n }\n selectItemAtIndex(\n evt,\n highlightedIndex,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIndex;\n }\n }\n }\n },\n [\n highlightedIndex,\n containerRef,\n isSelectionEvent,\n tabToSelect,\n selectItemAtIndex,\n isExtendedSelect,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (isExtendedSelect && evt.shiftKey) {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, currentIndex);\n if (isSelectableElement(element)) {\n selectItemAtIndex(evt, currentIndex, true);\n }\n }\n },\n [isExtendedSelect, containerRef, selectItemAtIndex]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, highlightedIndex);\n if (!disableSelection && isSelectableElement(element)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIndex,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIndex;\n }\n }\n onClick?.(evt);\n },\n [\n containerRef,\n highlightedIndex,\n disableSelection,\n onClick,\n selectItemAtIndex,\n isExtendedSelect,\n ]\n );\n\n const listHandlers = selectionIsDisallowed(selectionStrategy)\n ? {\n onClick,\n }\n : {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n return {\n listHandlers,\n selected,\n setSelected,\n };\n};\n", "import { useCallback, useRef } from \"react\";\nimport { isCharacterKey, Space } from \"./keyUtils\";\nimport { CollectionItem } from \"../../common-hooks/collectionTypes\";\n\ninterface TypeaheadHookProps<Item> {\n disableTypeToSelect?: boolean;\n highlightedIdx: number;\n highlightItemAtIndex: (idx: number) => void;\n applyIncrementalSearch?: boolean;\n typeToNavigate: boolean;\n items: CollectionItem<Item>[];\n}\n\ninterface TypeaheadHookResult {\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nexport const useTypeahead = <Item>({\n disableTypeToSelect,\n highlightedIdx,\n highlightItemAtIndex,\n typeToNavigate,\n items,\n applyIncrementalSearch = true,\n}: TypeaheadHookProps<Item>): TypeaheadHookResult => {\n const keyDownTimer = useRef<number | null>(null);\n const searchChars = useRef(\"\");\n const startIdx = useRef(-1);\n\n const applySearch = useCallback(\n (intermediateSearch?: true | undefined) => {\n if (intermediateSearch || !applyIncrementalSearch) {\n const regex = new RegExp(`^${searchChars.current}`, \"i\");\n let idx = items.findIndex(\n ({ label }, i) => i > startIdx.current && regex.test(label!)\n );\n if (idx === -1) {\n idx = items.findIndex(\n ({ label }, i) => i <= startIdx.current && regex.test(label!)\n );\n }\n if (idx !== -1) {\n highlightItemAtIndex(idx);\n }\n } else {\n searchChars.current = \"\";\n keyDownTimer.current = null;\n startIdx.current = -1;\n }\n },\n [applyIncrementalSearch, highlightItemAtIndex, items]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const searchInProgress = startIdx.current !== -1;\n if (isCharacterKey(e) || (searchInProgress && e.key === Space)) {\n if (typeToNavigate) {\n e.preventDefault();\n e.stopPropagation();\n // If we type the same key repeatedly, we cycle through the matches\n if (startIdx.current === -1 || e.key === searchChars.current) {\n startIdx.current = highlightedIdx;\n }\n if (keyDownTimer.current !== null) {\n clearTimeout(keyDownTimer.current);\n keyDownTimer.current = null;\n }\n if (e.key !== searchChars.current) {\n searchChars.current += e.key;\n }\n if (applyIncrementalSearch) {\n applySearch(true);\n }\n // keyDownTimer.current = window.setTimeout(applySearch, 100);\n keyDownTimer.current = window.setTimeout(() => {\n applySearch();\n }, 100);\n }\n }\n },\n [typeToNavigate, applyIncrementalSearch, highlightedIdx, applySearch]\n );\n\n return {\n onKeyDown: disableTypeToSelect ? undefined : handleKeyDown,\n };\n};\n", "import { MutableRefObject, RefObject, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"../../common-hooks/collectionTypes\";\nimport { ResizeHandler, useResizeObserver } from \"../../common-hooks\";\nimport { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n\nconst HeightOnly = [\"height\"];\nconst HeightWithScroll = [\"height\", \"scrollHeight\"];\nconst EMPTY_ARRAY: any[] = [];\n\nconst ObservedDimensions = {\n containerOnly: [HeightWithScroll, EMPTY_ARRAY],\n withContent: [HeightOnly, HeightOnly],\n};\nconst getObservedDimensions = (containerOnly: boolean) =>\n containerOnly\n ? ObservedDimensions.containerOnly\n : ObservedDimensions.withContent;\n\nconst NULL_REF = { current: null };\n\nconst getItemTop = (\n element: HTMLElement,\n offsetContainer: HTMLElement | null\n) => {\n const { transform = \"none\" } = getComputedStyle(element);\n if (transform.startsWith(\"matrix\")) {\n const pos = transform.lastIndexOf(\",\");\n return parseInt(transform.slice(pos + 1));\n } else {\n let offsetParent = element.offsetParent as HTMLElement;\n if (offsetParent === offsetContainer || offsetContainer === null) {\n return element.offsetTop;\n } else {\n let top = element.offsetTop;\n while (offsetParent !== null && offsetParent !== offsetContainer) {\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n return top;\n }\n }\n};\n\nexport interface ViewportTrackingProps<Item> {\n containerRef: RefObject<HTMLElement>;\n contentRef?: RefObject<HTMLElement>;\n highlightedIdx?: number;\n indexPositions: CollectionItem<Item>[];\n stickyHeaders?: boolean;\n}\n\nexport interface ViewportTrackingResult<Item> {\n isScrolling: MutableRefObject<boolean>;\n scrollIntoView: (item: CollectionItem<Item>) => void;\n}\n\nexport const useViewportTracking = <Item>({\n containerRef,\n contentRef = NULL_REF,\n highlightedIdx = -1,\n indexPositions,\n stickyHeaders = false,\n}: ViewportTrackingProps<Item>): ViewportTrackingResult<Item> => {\n const scrolling = useRef<boolean>(false);\n const viewport = useRef({\n height: 0,\n contentHeight: 0,\n });\n\n const scrollTo = useCallback((scrollPos: number) => {\n scrolling.current = true;\n if (containerRef.current) {\n containerRef.current.scrollTop = scrollPos;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }, []);\n\n const scrollToStart = useCallback(() => scrollTo(0), [scrollTo]);\n\n const scrollToEnd = useCallback(() => {\n scrollTo(viewport.current.contentHeight - viewport.current.height);\n }, [scrollTo]);\n\n const scrollIntoViewIfNeeded = useCallback(\n (item: CollectionItem<Item>) => {\n const offsetContainer = contentRef.current || containerRef.current;\n if (item.id) {\n const el = document.getElementById(item.id);\n if (el && containerRef.current) {\n const { height: viewportHeight } = viewport.current;\n const targetEl =\n el.ariaExpanded && el.firstChild\n ? (el.firstChild as HTMLElement)\n : el;\n const headerHeight = stickyHeaders ? 36 : 0;\n const itemTop = getItemTop(targetEl, offsetContainer);\n const itemHeight = targetEl.offsetHeight;\n const { scrollTop } = containerRef.current;\n const viewportStart = scrollTop + headerHeight;\n const viewportEnd = viewportStart + viewportHeight - headerHeight;\n\n if (itemTop + itemHeight > viewportEnd || itemTop < viewportStart) {\n const newScrollTop =\n itemTop + itemHeight > viewportEnd\n ? scrollTop + (itemTop + itemHeight) - viewportEnd\n : itemTop - headerHeight;\n\n scrollTo(newScrollTop);\n }\n }\n }\n },\n [containerRef, contentRef, scrollTo, stickyHeaders]\n );\n\n useIsomorphicLayoutEffect(() => {\n const { height, contentHeight } = viewport.current;\n const item = indexPositions[highlightedIdx];\n if (contentHeight > height && item) {\n const [firstItem] = indexPositions;\n const [lastItem] = indexPositions.slice(-1);\n if (item === firstItem) {\n scrollToStart();\n } else if (item === lastItem) {\n scrollToEnd();\n } else {\n scrollIntoViewIfNeeded(indexPositions[highlightedIdx]);\n }\n }\n }, [\n highlightedIdx,\n indexPositions,\n scrollIntoViewIfNeeded,\n scrollToEnd,\n scrollToStart,\n ]);\n\n const onContainerResize: ResizeHandler = useCallback(\n ({ height, scrollHeight }) => {\n if (typeof height === \"number\") {\n viewport.current.height = height;\n }\n if (typeof scrollHeight === \"number\") {\n viewport.current.contentHeight = scrollHeight;\n }\n },\n []\n );\n\n const onContentResize: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n viewport.current.contentHeight = height;\n }\n }, []);\n\n // If we only have a container, then we will observe its height and scrollHeight,\n // contentRef will be null, so second call to observer will observe nothing.\n // If we have both container and content, then we observe the height of each.\n const [containerDimensions, contentDimensions] = getObservedDimensions(\n contentRef === NULL_REF\n );\n useResizeObserver(containerRef, containerDimensions, onContainerResize, true);\n useResizeObserver(contentRef, contentDimensions, onContentResize, true);\n\n return {\n isScrolling: scrolling,\n scrollIntoView: scrollIntoViewIfNeeded,\n };\n};\n", "import { makePrefixer } from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { escapeRegExp } from \"../utils\";\n\nimport \"./Highlighter.css\";\n\nconst withBaseName = makePrefixer(\"saltHighlighter\");\n\nexport interface HighlighterProps {\n matchPattern?: RegExp | string;\n text?: string;\n}\n\nexport const Highlighter = (\n props: HighlighterProps\n): ReactElement<HighlighterProps> => {\n const { matchPattern, text = \"\" } = props;\n\n const matchRegex =\n typeof matchPattern === \"string\"\n ? new RegExp(`(${escapeRegExp(matchPattern)})`, \"gi\")\n : matchPattern;\n\n if (matchRegex === undefined) {\n return <>{text}</>;\n }\n return (\n <span>\n {text.split(matchRegex).map((part, index) =>\n part.match(matchRegex) ? (\n <strong\n className={withBaseName(\"highlight\")}\n key={`${index}-${part}`}\n >\n {part}\n </strong>\n ) : (\n part\n )\n )}\n </span>\n );\n};\n", "import { ForwardedRef, forwardRef, HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\nimport { ListItemProps, ListItemType } from \"./listTypes\";\nimport { Highlighter } from \"./Highlighter\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\n\nimport \"./ListItem.css\";\n\nconst classBase = \"vuuListItem\";\n\n// A dummy ListItem rendered once and not visible. We measure this to\n// determine height of ListItem and monitor it for size changes (in\n// case of runtime density switch). This allows ListItem height to\n// be controlled purely through CSS.\nexport const ListItemProxy = forwardRef(function ListItemNextProxy(\n {\n height,\n ...htmlAttributes\n }: HTMLAttributes<HTMLDivElement> & {\n height?: number;\n },\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n {...htmlAttributes}\n aria-hidden\n className={cx(classBase, `${classBase}-proxy`)}\n ref={forwardedRef}\n style={{ height }}\n />\n );\n});\n\n// Note: the memo is effective if List label is passed as simple string\n// If children are used, it is the responsibility of caller to memoise\n// these if performance on highlight is perceived to be an issue.\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n function ListItem(\n {\n children,\n className: classNameProp,\n disabled,\n tabIndex,\n item,\n itemHeight,\n itemTextHighlightPattern,\n label,\n selectable: _notUsed,\n selected,\n showCheckbox,\n style: styleProp,\n ...props\n },\n forwardedRef\n ) {\n const className = cx(classBase, classNameProp, {\n vuuDisabled: disabled,\n [`${classBase}-checkbox`]: showCheckbox,\n });\n const style =\n itemHeight !== undefined\n ? {\n ...styleProp,\n height: itemHeight,\n }\n : styleProp;\n\n return (\n <div\n className={className}\n {...props}\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n ref={forwardedRef}\n style={style}\n >\n {showCheckbox && <CheckboxIcon aria-hidden checked={selected} />}\n {children && typeof children !== \"string\" ? (\n children\n ) : itemTextHighlightPattern == null ? (\n <span className={`${classBase}-textWrapper`}>\n {label || children}\n </span>\n ) : (\n <Highlighter\n matchPattern={itemTextHighlightPattern}\n text={label || (children as string)}\n />\n )}\n </div>\n );\n }\n) as ListItemType;\n", "// TODO why do we need explicit React import - its not needed anywhere else\n// but we see a 'React is not defined' issue in showcase without it\nimport React, { HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\n\nimport \"./CheckboxIcon.css\";\n\nconst classBase = \"vuuCheckboxIcon\";\n\nexport interface CheckboxIconProps extends HTMLAttributes<HTMLSpanElement> {\n checked?: boolean;\n disabled?: boolean;\n}\nexport const CheckboxIcon = ({\n checked = false,\n disabled = false,\n ...htmlAttributes\n}: CheckboxIconProps) => (\n <span\n {...htmlAttributes}\n className={cx(classBase, {\n [`${classBase}-checked-${disabled ? \"disabled\" : \"enabled\"}`]: checked,\n })}\n />\n);\n", "import { MeasuredContainer, MeasuredSize } from \"@vuu-ui/vuu-layout\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactElement,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n CollectionIndexer,\n CollectionItem,\n itemToString as defaultItemToString,\n SelectionStrategy,\n} from \"../common-hooks\";\nimport {\n isSelected,\n LIST_FOCUS_VISIBLE,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListItemProps, ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { useListHeight } from \"./useListHeight\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst classBase = \"vuuList\";\n\nexport const List = forwardRef(function List<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n ListItem = DefaultListItem,\n ListPlaceholder,\n allowDragDrop,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n focusVisible: focusVisibleProp,\n getItemHeight: getItemHeightProp,\n getItemId,\n height,\n highlightedIndex: highlightedIndexProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString = defaultItemToString,\n listHandlers: listHandlersProp,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n checkable = selectionStrategy === \"multiple\",\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabIndex = 0,\n tabToSelect,\n ...htmlAttributes\n }: ListProps<Item, S>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const contentContainerRef = useRef<HTMLDivElement>(null);\n const [size, setSize] = useState<MeasuredSize | undefined>();\n const handleResize = useCallback((size: MeasuredSize) => {\n setSize(size);\n }, []);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n // Add Group ChildTypes to options\n getItemId,\n itemToString,\n },\n });\n\n const {\n listClientHeight,\n computedListHeight,\n listItemHeight,\n rowHeightProxyRef,\n } = useListHeight({\n displayedItemCount,\n getItemHeight: getItemHeightProp,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef: containerRef,\n size,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize:\n // TODO whats the right way to handle string values - ie percentages\n listClientHeight ?? computedListHeight ?? size?.height ?? 0,\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n const {\n draggable,\n draggedItemIndex,\n dropIndicator,\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n listItemHeaderHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, S>({\n allowDragDrop,\n collapsibleHeaders,\n collectionHook,\n containerRef,\n contentRef: contentContainerRef,\n defaultHighlightedIndex,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label: \"List\",\n listHandlers: listHandlersProp, // should this be in context ?\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n scrollContainerRef,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: containerRef,\n scrollIntoView,\n });\n\n // focusVisible passes as a prop takes precedence\n const appliedFocusVisible = focusVisibleProp ?? focusVisible;\n\n const createHeader: (\n idx: { value: number },\n headerId: string,\n title: string,\n expanded?: boolean\n ) => ReactElement = function createHeader(idx, headerId, title, expanded) {\n const header = (\n <ListItem\n {...listItemHeaderHandlers}\n className={cx(`${classBase}Header`, {\n focusVisible: collapsibleHeaders && appliedFocusVisible === idx.value,\n })}\n aria-expanded={expanded}\n data-index={collapsibleHeaders ? idx.value : undefined}\n data-highlighted={idx.value === highlightedIndex || undefined}\n data-sticky={stickyHeaders}\n data-selectable={false}\n id={headerId}\n itemHeight={getItemHeight(idx.value)}\n key={`header-${idx.value}`}\n label={title}\n // role=\"presentation\"\n />\n );\n idx.value += 1;\n return header;\n };\n\n const getItemHeight =\n getItemHeightProp === undefined ? () => itemHeightProp : getItemHeightProp;\n\n function renderCollectionItem(\n list: ReactElement[],\n item: CollectionItem<Item>,\n idx: { value: number }\n ) {\n // Note, a number of these props are specific to ListItem. What if user\n // implements a custom ListItem but neglects to handle all these props.\n // Is that on them ?\n const { disabled, value, id: itemId, label } = item;\n const isChildItem = isValidElement(value);\n const listItemProps: ListItemProps<Item> & {\n key: string;\n \"data-index\": number;\n } = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore until we refactor this whole section\n className: cx(value?.props?.className, {\n vuuHighlighted: idx.value === highlightedIndex,\n vuuFocusVisible: appliedFocusVisible === idx.value,\n [`vuuDraggable-dragAway`]: draggedItemIndex === idx.value,\n }),\n disabled: disabled || listDisabled,\n id: itemId,\n item: isChildItem ? undefined : item?.value ?? undefined,\n itemHeight: getItemHeight(idx.value),\n itemTextHighlightPattern,\n key: itemId,\n \"data-index\": idx.value,\n label,\n role: \"option\",\n selected: isSelected<Item>(selected, item),\n showCheckbox: checkable,\n };\n list.push(\n isChildItem ? (\n cloneElement(value, listItemProps)\n ) : (\n <ListItem {...listItemProps} />\n )\n );\n\n idx.value += 1;\n }\n\n const addGroup: (\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) => void = function addGroup(\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) {\n const { count = 0, id, expanded, label = \"\" } = items[idx.value];\n const header = createHeader(idx, id, label, expanded);\n const childItems: ReactElement | ReactElement[] =\n expanded !== false\n ? [header].concat(\n renderCollectionItems(items, idx, idx.value + count) || []\n )\n : header;\n\n list.push(\n <div key={id} role=\"group\">\n {childItems}\n </div>\n );\n };\n\n const renderCollectionItems = (\n items: CollectionItem<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = items.length\n ): ReactElement[] | undefined => {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = items[idx.value];\n if (item.header) {\n listItems.push(\n createHeader(idx, item.id, item.label!, item.expanded === false)\n );\n } else if (item.childNodes) {\n addGroup(listItems, items, idx);\n } else {\n renderCollectionItem(listItems, item, idx);\n }\n }\n return listItems;\n };\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={`${classBase}-empty-message`}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const isEmpty = collectionHook.data.length === 0;\n\n const renderContent = () => {\n if (!isEmpty) {\n // const itemsToRender =\n // typeof draggedItemIndex === \"number\" && draggedItemIndex >= 0\n // ? collectionHook.data.filter((d) => d.index !== draggedItemIndex)\n // : collectionHook.data;\n const itemsToRender = collectionHook.data;\n\n return renderCollectionItems(itemsToRender);\n } else {\n renderEmpty();\n }\n };\n const contentHeight = \"auto\";\n const sizeStyles = {\n \"--list-borderWidth\":\n \"var(--vuuList-borderWidth, var(--salt-size-border, 0))\",\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n \"--computed-list-height\":\n computedListHeight === undefined ? undefined : `${computedListHeight}px`,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n };\n return (\n <MeasuredContainer\n aria-multiselectable={\n selectionStrategy === \"multiple\" ||\n selectionStrategy === \"extended\" ||\n selectionStrategy === \"extended-multi-range\" ||\n undefined\n }\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={cx(classBase, className, {\n [`${classBase}-collapsible`]: collapsibleHeaders,\n [`${classBase}-contentSized`]: computedListHeight !== undefined,\n [`${classBase}-empty`]: isEmpty,\n vuuFocusVisible: highlightedIndex === LIST_FOCUS_VISIBLE,\n })}\n height={computedListHeight ?? height}\n id={`${id}`}\n onResize={handleResize}\n ref={useForkRef<HTMLDivElement>(containerRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : tabIndex}\n >\n <ListItemProxy ref={rowHeightProxyRef} height={itemHeightProp} />\n {collectionHook.data.length === 0 && ListPlaceholder !== undefined ? (\n <>\n <ListPlaceholder />\n </>\n ) : (\n <div className={`${classBase}-viewport`} ref={scrollContainerRef}>\n <div\n className={`${classBase}-scrollingContentContainer`}\n ref={contentContainerRef}\n style={{ height: contentHeight }}\n >\n {renderContent()}\n {dropIndicator}\n {draggable}\n </div>\n </div>\n )}\n </MeasuredContainer>\n );\n}) as <Item = string, S extends SelectionStrategy = \"default\">(\n props: ListProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ListProps<Item>>;\n", "import { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport {\n hasSelection,\n isMultiSelection,\n isSingleSelection,\n ListHandlers,\n MultiSelectionHandler,\n SelectHandler,\n SelectionStrategy,\n SingleSelectionHandler,\n} from \"../common-hooks\";\nimport { DragStartHandler, useDragDropNext as useDragDrop } from \"../drag-drop\";\nimport {\n closestListItemIndex,\n useCollapsibleGroups,\n useKeyboardNavigation,\n useSelection,\n useTypeahead,\n useViewportTracking,\n} from \"./common-hooks\";\n\nimport { ListControlProps, ListHookProps, ListHookResult } from \"./listTypes\";\nimport { useListDrop } from \"./useListDrop\";\n\nexport const useList = <Item, S extends SelectionStrategy>({\n allowDragDrop = false,\n collapsibleHeaders,\n collectionHook: dataHook,\n containerRef,\n contentRef,\n defaultHighlightedIndex,\n defaultSelected,\n disabled,\n disableAriaActiveDescendant,\n disableHighlightOnFocus,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label = \"\",\n listHandlers: listHandlersProp,\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onHighlight,\n onKeyboardNavigation,\n onKeyDown,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n restoreLastFocus,\n scrollContainerRef,\n selected,\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n}: ListHookProps<Item, S>): ListHookResult<Item> => {\n const lastSelection = useRef<string[] | undefined>(\n selected || defaultSelected\n );\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIndex: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIndex);\n onKeyboardNavigation?.(evt, nextIndex);\n };\n\n // console.log(\n // `useList ${label}\n // defaultSelected ${JSON.stringify(defaultSelected)}\n // selectedProp ${JSON.stringify(selected)} `\n // );\n\n // TODO where do these belong ?\n const handleSelect = useCallback<SelectHandler>(\n (evt, selectedId) => {\n if (onSelect) {\n if (selectedId !== null) {\n onSelect(evt, dataHook.itemById(selectedId));\n }\n }\n },\n [dataHook, onSelect]\n );\n\n const scrollContainer = useMemo<RefObject<HTMLElement>>(() => {\n if (scrollContainerRef) {\n return scrollContainerRef;\n } else {\n return {\n current:\n containerRef.current?.querySelector(\".vuuList-scrollContainer\") ??\n null,\n };\n }\n }, [containerRef, scrollContainerRef]);\n\n const handleSelectionChange = useCallback<MultiSelectionHandler>(\n (evt, selected) => {\n // TODO what about empty selection\n if (onSelectionChange) {\n if (isSingleSelection(selectionStrategy)) {\n const [selectedItem] = selected;\n (onSelectionChange as SingleSelectionHandler<Item>)(\n evt,\n dataHook.itemById(selectedItem)\n );\n } else if (isMultiSelection(selectionStrategy)) {\n const selectedItems = selected.map((id) => dataHook.itemById(id));\n (onSelectionChange as MultiSelectionHandler<Item>)(\n evt,\n selectedItems\n );\n }\n }\n },\n [dataHook, onSelectionChange, selectionStrategy]\n );\n\n const {\n highlightedIndex,\n containerProps: {\n onKeyDown: navigationKeyDown,\n onMouseMove: navigationMouseMove,\n ...navigationControlProps\n },\n setHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation({\n containerRef: scrollContainer,\n defaultHighlightedIndex,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n itemCount: dataHook.data.length,\n label,\n onHighlight,\n onKeyboardNavigation: handleKeyboardNavigation,\n restoreLastFocus,\n selected: lastSelection.current,\n viewportItemCount: 10,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders,\n highlightedIdx: highlightedIndex,\n collectionHook: dataHook,\n });\n\n const handleDragStart = useCallback<DragStartHandler>(\n (dragDropState) => {\n setHighlightedIndex(-1);\n onDragStart?.(dragDropState);\n },\n [onDragStart, setHighlightedIndex]\n );\n\n const selectionHook = useSelection({\n containerRef,\n defaultSelected,\n highlightedIndex: highlightedIndex,\n itemQuery: \".vuuListItem\",\n label: `${label}:useList`,\n onClick: onClickProp,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n selected,\n selectionStrategy,\n selectionKeys,\n tabToSelect,\n });\n\n const { handleDrop, onDropSettle } = useListDrop<Item>({\n dataHook,\n onDrop,\n onMoveListItem,\n selected: selectionHook.selected,\n setHighlightedIndex,\n setSelected: selectionHook.setSelected,\n });\n\n const { setSelected } = selectionHook;\n useLayoutEffectSkipFirst(() => {\n if (hasSelection(lastSelection.current)) {\n setSelected([]);\n }\n }, [selected, dataHook.data, setSelected]);\n\n const {\n onMouseDown,\n isDragging,\n isScrolling: isDragDropScrolling,\n ...dragDropHook\n } = useDragDrop({\n allowDragDrop,\n draggableClassName: \"list-item\",\n orientation: \"vertical\",\n containerRef,\n id,\n itemQuery: \".vuuListItem\",\n onDragStart: handleDragStart,\n onDrop: handleDrop,\n onDropSettle,\n viewportRange,\n });\n\n const { onKeyDown: typeaheadOnKeyDown } = useTypeahead<Item>({\n disableTypeToSelect,\n highlightedIdx: highlightedIndex,\n highlightItemAtIndex: setHighlightedIndex,\n typeToNavigate: true,\n items: dataHook.data,\n });\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (!evt.defaultPrevented) {\n typeaheadOnKeyDown?.(evt);\n }\n // We still let the keyboard navigation hook process the event even\n // if it has been handled by the typeahead hook. That is so it can\n // correctly manage the focusVisible state.\n navigationKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook?.onKeyDown?.(evt);\n }\n\n if (!evt.defaultPrevented) {\n onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook,\n navigationKeyDown,\n onKeyDown,\n selectionHook.listHandlers,\n typeaheadOnKeyDown,\n ]\n );\n\n // This is only appropriate when we are directly controlling a List,\n // not when a control is manipulating the list\n const { isScrolling: isViewportScrolling, scrollIntoView } =\n useViewportTracking({\n containerRef: scrollContainer,\n contentRef,\n highlightedIdx: highlightedIndex,\n indexPositions: dataHook.data,\n stickyHeaders,\n });\n\n const isScrolling =\n isViewportScrolling.current || isDragDropScrolling.current;\n\n const handleMouseMove = useCallback(\n (evt: MouseEvent) => {\n if (!isScrolling && !disabled && !isDragging) {\n navigationMouseMove();\n const idx = closestListItemIndex(evt.target as HTMLElement);\n if (idx !== -1 && idx !== highlightedIndex) {\n const item = dataHook.data[idx];\n if (!item || item.disabled) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex(idx);\n }\n }\n }\n },\n [\n isDragging,\n isScrolling,\n disabled,\n setHighlightedIndex,\n navigationMouseMove,\n highlightedIndex,\n dataHook.data,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIndex === undefined ||\n highlightedIndex === -1 ||\n disableAriaActiveDescendant\n ? undefined\n : dataHook.data[highlightedIndex]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n // controlProps ?\n const listControlProps: ListControlProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: navigationControlProps.onBlur,\n onFocus: navigationControlProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: onMouseDown,\n onMouseDownCapture: navigationControlProps.onMouseDownCapture,\n onMouseLeave: navigationControlProps.onMouseLeave,\n };\n\n const listHandlers: ListHandlers = listHandlersProp || {\n onClick: selectionHook.listHandlers.onClick,\n // MouseEnter would be much better for this. There is a bug in Cypress\n // wheby it emits spurious MouseEnter (and MouseOver) events around\n // keypress events, which break many tests.\n onMouseMove: handleMouseMove,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n controlledHighlighting: keyboardHook.controlledHighlighting,\n highlightedIndex,\n keyboardNavigation: keyboardHook.keyboardNavigation,\n listHandlers,\n listItemHeaderHandlers: collapsibleHook,\n listControlProps,\n scrollIntoView,\n //TODO given that we firs onSelect and onSelectionCHange with Item(s), should we return Item(s) here ?\n selected: selectionHook.selected,\n setHighlightedIndex,\n setIgnoreFocus: keyboardHook.setIgnoreFocus,\n setSelected: selectionHook.setSelected,\n ...dragDropHook,\n };\n};\n", "import { MouseEventHandler, RefObject } from \"react\";\nimport { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { DragDropState } from \"./DragDropState\";\n\n//-----------------------------------\n// From useScrollPosition in List\nexport type ViewportRange = {\n atEnd: boolean;\n atStart: boolean;\n from: number;\n to: number;\n};\n\n// From overflow types - probably don't need\ntype dimension = \"width\" | \"height\" | \"scrollWidth\" | \"scrollHeight\";\n\ntype dimensions = {\n size: dimension;\n depth: dimension;\n scrollDepth: dimension;\n};\n\nexport type dimensionsType = {\n horizontal: dimensions;\n vertical: dimensions;\n};\n\n//-----------------------------------\n\nexport type dragStrategy =\n | \"drop-indicator\"\n | \"natural-movement\"\n | \"drag-copy\"\n | \"drop-only\";\n\nexport type Direction = \"fwd\" | \"bwd\";\nexport const FWD: Direction = \"fwd\";\nexport const BWD: Direction = \"bwd\";\n\nexport interface MouseOffset {\n x: number;\n y: number;\n}\n\nexport type Rect = {\n height: number;\n left: number;\n top: number;\n width: number;\n};\n\nexport interface DragHookResult {\n draggable?: JSX.Element;\n dropIndicator?: JSX.Element;\n draggedItemIndex?: number;\n isDragging: boolean;\n isScrolling: RefObject<boolean>;\n onMouseDown?: MouseEventHandler;\n revealOverflowedItems?: boolean;\n}\n\nexport interface InternalDragHookResult\n extends Omit<DragHookResult, \"isDragging\" | \"isScrolling\"> {\n beginDrag: (dragElement: HTMLElement) => void;\n drag: (dragPos: number, mouseMoveDirection: \"fwd\" | \"bwd\") => void;\n drop: () => void;\n handleScrollStart?: () => void;\n handleScrollStop?: (\n scrollDirection: \"fwd\" | \"bwd\",\n _scrollPos: number,\n atEnd: boolean\n ) => void;\n /**\n * Draggable item has been dragged out of container. Remove any local drop\n * indicators. Dragged element itself should not yet be removed from DOM.\n */\n releaseDrag?: () => void;\n}\n\nexport interface DropOptions {\n fromIndex?: number;\n toIndex: number;\n isExternal?: boolean;\n payload?: unknown;\n}\n\nexport type DragStartHandler = (dragDropState: DragDropState) => void;\n\nexport type DropHandler = (\n fromIndex: number,\n toIndex: number,\n options: DropOptions\n) => void;\n\nexport interface DragDropProps {\n allowDragDrop?: boolean | dragStrategy;\n /** this is the className that will be assigned during drag to the dragged element */\n draggableClassName: string;\n extendedDropZone?: boolean;\n getDragPayload?: (dragElement: HTMLElement) => unknown;\n id?: string;\n isDragSource?: boolean;\n isDropTarget?: boolean;\n onDragStart?: DragStartHandler;\n onDrop: DropHandler;\n onDropSettle?: (toIndex: number) => void;\n orientation: orientationType;\n containerRef: RefObject<HTMLElement>;\n itemQuery?: string;\n // selected?: CollectionItem<unknown> | CollectionItem<unknown>[] | null;\n viewportRange?: ViewportRange;\n}\n\nexport type DragDropHook = (props: DragDropProps) => DragHookResult;\n\nexport interface InternalDragDropProps\n extends Omit<DragDropProps, \"draggableClassName\" | \"id\"> {\n isDragSource?: boolean;\n isDropTarget?: boolean;\n selected?: unknown;\n}\n\nexport type DragDropContext = {\n dragElement: HTMLElement;\n dragPayload: unknown;\n mouseOffset: MouseOffset;\n};\n", "import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from \"react\";\nimport { DragDropState } from \"./DragDropState\";\nimport {\n GlobalDropHandler,\n ResumeDragHandler,\n useGlobalDragDrop,\n} from \"./useGlobalDragDrop\";\n\nconst NO_DRAG_CONTEXT = {\n isDragSource: undefined,\n isDropTarget: undefined,\n register: () => undefined,\n};\n\nconst unconfiguredRegistrationCall = () =>\n console.log(`have you forgotten to provide a DragDrop Provider ?`);\n\nexport type DragOutHandler = (\n id: string,\n dragDropState: DragDropState\n) => boolean;\n\nexport type DragDropRegistrationFn = (\n id: string,\n resumeDrag: ResumeDragHandler | false,\n onDrop?: GlobalDropHandler\n) => void;\n\nexport type EndOfDragOperationHandler = (id: string) => void;\n\nexport interface DragDropContextProps {\n dragSources?: Map<string, string[]>;\n dropTargets?: Map<string, string[]>;\n onDragOut?: DragOutHandler;\n onEndOfDragOperation?: EndOfDragOperationHandler;\n registerDragDropParty: DragDropRegistrationFn;\n}\n\nconst DragDropContext = createContext<DragDropContextProps>({\n registerDragDropParty: unconfiguredRegistrationCall,\n});\n\nexport type DragSources = {\n [key: string]: { dropTargets: string | string[]; payloadType?: string };\n};\nexport interface DragDropProviderProps {\n children: ReactNode;\n dragSources: DragSources;\n}\n\nexport type MeasuredTarget = {\n bottom: number;\n left: number;\n right: number;\n top: number;\n};\n\nconst measureDropTargets = (dropTargetIds: string[] = []) => {\n return dropTargetIds.reduce<Record<string, MeasuredTarget>>((map, id) => {\n const el = document.getElementById(id);\n if (el) {\n const { top, right, bottom, left } = el.getBoundingClientRect();\n map[id] = { top, right, bottom, left };\n }\n return map;\n }, {});\n};\n\nexport const DragDropProvider = ({\n children,\n dragSources: dragSourcesProp,\n}: DragDropProviderProps) => {\n const resumeDragHandlers = useMemo(\n () => new Map<string, ResumeDragHandler>(),\n []\n );\n const dropHandlers = useMemo(() => new Map<string, GlobalDropHandler>(), []);\n const handleDragOverDropTarget = useCallback(\n (dropTargetId: string, dragDropState: DragDropState) => {\n const resumeDrag = resumeDragHandlers.get(dropTargetId);\n if (resumeDrag) {\n return resumeDrag(dragDropState);\n } else {\n return false;\n }\n },\n [resumeDragHandlers]\n );\n\n const handleDrop = useCallback(\n (dropTargetId: string, dragDropState: DragDropState) => {\n const handleDrop = dropHandlers.get(dropTargetId);\n if (handleDrop) {\n handleDrop(dragDropState);\n }\n },\n [dropHandlers]\n );\n\n const { measuredDropTargetsRef, resumeDrag } = useGlobalDragDrop({\n onDragOverDropTarget: handleDragOverDropTarget,\n onDrop: handleDrop,\n });\n const [dragSources, dropTargets] = useMemo(() => {\n const sources = new Map<string, string[]>();\n // TODO do we need the targets ?\n const targets = new Map<string, string[]>();\n\n for (const [sourceId, { dropTargets }] of Object.entries(dragSourcesProp)) {\n const sourceEntry = sources.get(sourceId);\n const targetIds = Array.isArray(dropTargets)\n ? dropTargets\n : [dropTargets];\n if (sourceEntry) {\n sourceEntry.push(...targetIds);\n } else {\n sources.set(sourceId, targetIds);\n }\n for (const targetId of targetIds) {\n const targetEntry = targets.get(targetId);\n if (targetEntry) {\n targetEntry.push(sourceId);\n } else {\n targets.set(targetId, [sourceId]);\n }\n }\n }\n return [sources, targets];\n }, [dragSourcesProp]);\n\n const onDragOut = useCallback<DragOutHandler>(\n (id, dragDropState) => {\n // we call releaseItem if and when the dragged item is dropped onto a remote dropTarget\n measuredDropTargetsRef.current = measureDropTargets(dragSources.get(id));\n resumeDrag(dragDropState);\n return true;\n },\n [dragSources, measuredDropTargetsRef, resumeDrag]\n );\n\n const onEndOfDragOperation = useCallback<EndOfDragOperationHandler>((id) => {\n console.log(`end of drag operation, id= ${id}`);\n }, []);\n\n const registerDragDropParty = useCallback<DragDropRegistrationFn>(\n (id, resumeDrag, onDrop) => {\n if (resumeDrag) {\n resumeDragHandlers.set(id, resumeDrag);\n } else if (onDrop) {\n dropHandlers.set(id, onDrop);\n }\n },\n [dropHandlers, resumeDragHandlers]\n );\n\n const contextValue: DragDropContextProps = useMemo(\n () => ({\n dragSources,\n dropTargets,\n onDragOut,\n onEndOfDragOperation,\n registerDragDropParty,\n }),\n [\n dragSources,\n dropTargets,\n onDragOut,\n onEndOfDragOperation,\n registerDragDropParty,\n ]\n );\n\n return (\n <DragDropContext.Provider value={contextValue}>\n {children}\n </DragDropContext.Provider>\n );\n};\n\nexport interface DragDropProviderResult {\n isDragSource?: boolean;\n isDropTarget?: boolean;\n onDragOut?: DragOutHandler;\n onEndOfDragOperation?: (id: string) => void;\n register: DragDropRegistrationFn;\n}\n\nexport const useDragDropProvider = (id?: string): DragDropProviderResult => {\n const {\n dragSources,\n dropTargets,\n onDragOut,\n onEndOfDragOperation,\n registerDragDropParty,\n } = useContext(DragDropContext);\n if (id && (dragSources || dropTargets)) {\n const isDragSource = dragSources?.has(id) ?? false;\n const isDropTarget = dropTargets?.has(id) ?? false;\n\n return {\n isDragSource,\n isDropTarget,\n onDragOut,\n onEndOfDragOperation,\n register: registerDragDropParty,\n };\n } else {\n return NO_DRAG_CONTEXT;\n }\n};\n", "import { boxContainsPoint, dispatchCustomEvent } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useRef } from \"react\";\nimport { MeasuredTarget } from \"./DragDropProvider\";\nimport { DragDropState } from \"./DragDropState\";\nimport { MouseOffset } from \"./dragDropTypesNext\";\n\nexport type ResumeDragHandler = (dragDropState: DragDropState) => boolean;\nexport type GlobalDropHandler = (dragDropState: DragDropState) => void;\n\nexport const useGlobalDragDrop = ({\n onDragOverDropTarget,\n onDrop,\n}: {\n onDragOverDropTarget: (\n dropTargetId: string,\n dragDropState: DragDropState\n ) => boolean;\n onDrop: (dropTargetId: string, dragDropState: DragDropState) => void;\n}) => {\n const dropTargetRef = useRef<string>();\n const measuredDropTargetsRef = useRef<Record<string, MeasuredTarget>>();\n\n const dragDropStateRef = useRef<DragDropState | null>(null);\n /** current mouse position */\n const mousePosRef = useRef<MouseOffset>({ x: 0, y: 0 });\n\n const overDropTarget = useCallback((x: number, y: number) => {\n const { current: dropTargets } = measuredDropTargetsRef;\n if (dropTargets) {\n for (const [id, measuredTarget] of Object.entries(dropTargets)) {\n if (boxContainsPoint(measuredTarget, x, y)) {\n return id;\n }\n }\n }\n return undefined;\n }, []);\n\n const dragMouseMoveHandler = useCallback(\n (evt: MouseEvent) => {\n const { clientX, clientY } = evt;\n const { current: dragDropState } = dragDropStateRef;\n\n mousePosRef.current.x = clientX;\n mousePosRef.current.y = clientY;\n\n if (dragDropState?.draggableElement) {\n const { draggableElement, mouseOffset } = dragDropState;\n\n const dragPosX = mousePosRef.current.x - mouseOffset.x;\n const dragPosY = mousePosRef.current.y - mouseOffset.y;\n draggableElement.style.top = `${dragPosY}px`;\n draggableElement.style.left = `${dragPosX}px`;\n\n const dropTargetId = overDropTarget(dragPosX, dragPosY);\n if (dropTargetId) {\n const dropTargetWillResumeDrag = onDragOverDropTarget(\n dropTargetId,\n dragDropState\n );\n if (dropTargetWillResumeDrag) {\n // prettier-ignore\n document.removeEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.removeEventListener(\"mouseup\", dragMouseUpHandler, false);\n dragDropStateRef.current = null;\n dropTargetRef.current = undefined;\n } else {\n dropTargetRef.current = dropTargetId;\n }\n } else {\n dropTargetRef.current = undefined;\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const dragMouseUpHandler = useCallback(() => {\n document.removeEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.removeEventListener(\"mouseup\", dragMouseUpHandler, false);\n const { current: dragDropState } = dragDropStateRef;\n if (dragDropState) {\n dragDropStateRef.current = null;\n if (dropTargetRef.current) {\n onDrop(dropTargetRef.current, dragDropState);\n }\n if (dragDropState.draggableElement) {\n dispatchCustomEvent(dragDropState.draggableElement, \"vuu-dropped\");\n }\n }\n }, [dragMouseMoveHandler, onDrop]);\n\n const resumeDrag = useCallback<ResumeDragHandler>(\n (dragDropState) => {\n console.log(`resume drag of `, {\n el: dragDropState.draggableElement,\n });\n dragDropStateRef.current = dragDropState;\n document.addEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.addEventListener(\"mouseup\", dragMouseUpHandler, false);\n\n return true;\n },\n [dragMouseMoveHandler, dragMouseUpHandler]\n );\n\n return {\n measuredDropTargetsRef,\n resumeDrag,\n };\n};\n", "import { MouseOffset } from \"./dragDropTypesNext\";\n\nexport class DragDropState {\n /** Distance between start (top | left) of dragged element and point where user pressed to drag */\n readonly mouseOffset: MouseOffset;\n /** Element where the initial mousedown triggered the drag operation */\n readonly initialDragElement: HTMLElement;\n /** Element being dragged, (initial element cloned and rendered in portal). */\n draggableElement: HTMLElement | null = null;\n\n payload: unknown = null;\n\n constructor(evt: MouseEvent, dragElement: HTMLElement) {\n this.initialDragElement = dragElement;\n this.mouseOffset = this.getMouseOffset(evt, dragElement);\n }\n\n /** Used to capture a ref to the Draggable JSX.Element */\n setDraggable = (el: HTMLElement | null) => {\n this.draggableElement = el;\n };\n\n setPayload(payload: unknown) {\n this.payload = payload;\n }\n\n private getMouseOffset(evt: MouseEvent, dragElement: HTMLElement) {\n const { clientX, clientY } = evt;\n const draggableRect = dragElement.getBoundingClientRect();\n\n return {\n x: clientX - draggableRect.left,\n y: clientY - draggableRect.top,\n };\n }\n}\n", "import { isOverflowElement } from \"@vuu-ui/vuu-layout\";\nimport { dispatchCustomEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEventHandler,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useDragDropProvider } from \"./DragDropProvider\";\nimport { DragDropState } from \"./DragDropState\";\nimport {\n DragDropHook,\n DropHandler,\n InternalDragDropProps,\n InternalDragHookResult,\n MouseOffset,\n} from \"./dragDropTypesNext\";\nimport { Draggable } from \"./Draggable\";\nimport {\n cloneElement,\n constrainRect,\n dimensions,\n getScrollableContainer,\n isContainerScrollable,\n NOT_OVERFLOWED,\n} from \"./drop-target-utils\";\nimport { ScrollStopHandler, useAutoScroll } from \"./useAutoScroll\";\nimport { useDragDropCopy } from \"./useDragDropCopy\";\nimport { useDragDropIndicator } from \"./useDragDropIndicator\";\nimport { useDragDropNaturalMovement } from \"./useDragDropNaturalMovementNext\";\nimport { ResumeDragHandler } from \"./useGlobalDragDrop\";\n\nconst NULL_DRAG_DROP_RESULT = {\n beginDrag: () => undefined,\n drag: () => undefined,\n draggableRef: { current: null },\n drop: () => undefined,\n isDragging: false,\n isScrolling: false,\n handleScrollStart: () => undefined,\n handleScrollStop: () => undefined,\n revealOverflowedItems: false,\n};\n\ntype DraggableStatus = {\n draggable?: JSX.Element;\n draggedItemIndex: number;\n isDragging: boolean;\n};\n\ntype DragBoundary = {\n start: number;\n end: number;\n contraStart: number;\n contraEnd: number;\n};\n\nconst UNBOUNDED: DragBoundary = {\n start: 0,\n end: 1000,\n contraStart: 0,\n contraEnd: 1000,\n};\n\ntype InternalHook = (props: InternalDragDropProps) => InternalDragHookResult;\nconst noDragDrop: InternalHook = () => NULL_DRAG_DROP_RESULT;\nconst dragThreshold = 3;\n\nconst getDraggableElement = (\n el: EventTarget | null,\n query: string\n): HTMLElement => (el as HTMLElement).closest(query) as HTMLElement;\n\nconst getLastElement = (\n container: HTMLElement,\n itemQuery: string\n): [HTMLElement, boolean] => {\n const fullItemQuery = `:is(${itemQuery}${NOT_OVERFLOWED},.vuuOverflowContainer-OverflowIndicator)`;\n const childElements = Array.from(container.querySelectorAll(fullItemQuery));\n const lastElement = childElements.pop() as HTMLElement;\n return [lastElement, isOverflowElement(lastElement)];\n};\n\nexport const useDragDropNext: DragDropHook = ({\n allowDragDrop,\n containerRef,\n draggableClassName,\n getDragPayload,\n id,\n itemQuery = \"*\",\n onDragStart,\n onDrop,\n onDropSettle,\n orientation,\n ...dragDropProps\n}) => {\n const dragBoundaries = useRef<DragBoundary>({\n start: 0,\n end: 0,\n contraStart: 0,\n contraEnd: 0,\n });\n const [draggableStatus, setDraggableStatus] = useState<DraggableStatus>({\n draggable: undefined,\n draggedItemIndex: -1,\n isDragging: false,\n });\n\n const dragDropStateRef = useRef<DragDropState | null>(null);\n const mouseDownTimer = useRef<number | null>(null);\n /** do we actually have scrollable content */\n const isScrollableRef = useRef(false);\n /** current mouse position */\n const mousePosRef = useRef<MouseOffset>({ x: 0, y: 0 });\n /** mouse position when mousedown initiated drag */\n const startPosRef = useRef<MouseOffset>({ x: 0, y: 0 });\n /** references the dragged Item during its final 'settling' phase post drop */\n const settlingItemRef = useRef<HTMLElement | null>(null);\n /** the container which will scroll if content overflows */\n const scrollableContainerRef = useRef<HTMLElement | null>(null);\n const dropPosRef = useRef(-1);\n const dropIndexRef = useRef(-1);\n\n const handleScrollStopRef = useRef<ScrollStopHandler>();\n\n const {\n isDragSource,\n isDropTarget,\n onDragOut,\n onEndOfDragOperation,\n register,\n } = useDragDropProvider(id);\n\n type NativeMouseHandler = (evt: MouseEvent) => void;\n /** refs for drag handlers to avoid circular dependency issues */\n const dragMouseMoveHandlerRef = useRef<NativeMouseHandler>();\n const dragMouseUpHandlerRef = useRef<NativeMouseHandler>();\n\n const attachDragHandlers = useCallback(() => {\n const { current: dragMove } = dragMouseMoveHandlerRef;\n const { current: dragUp } = dragMouseUpHandlerRef;\n if (dragMove && dragUp) {\n // prettier-ignore\n document.addEventListener(\"mousemove\", dragMove, false);\n document.addEventListener(\"mouseup\", dragUp, false);\n }\n }, []);\n const removeDragHandlers = useCallback(() => {\n const { current: dragMove } = dragMouseMoveHandlerRef;\n const { current: dragUp } = dragMouseUpHandlerRef;\n if (dragMove && dragUp) {\n // prettier-ignore\n document.removeEventListener(\"mousemove\", dragMove, false);\n document.removeEventListener(\"mouseup\", dragUp, false);\n }\n }, []);\n\n /**\n * Establish the boundaries for the current drag operation. When dragging along\n * a single axis (eg list items within a list, tabs within a tabstrip), constrain\n * valid drag positions to the confines of the container. A sharp drag away from\n * the primary drag axis is interpreted as a request to drag an item out of the\n * container. This will be allowed if configured appropriately.\n */\n const setDragBoundaries = useCallback(\n (containerRect: DOMRect, draggableRect: DOMRect) => {\n const { current: container } = containerRef;\n if (container) {\n const [lastElement, lastItemIsOverflowIndicator] = getLastElement(\n container,\n itemQuery\n );\n const { CONTRA, CONTRA_END, DIMENSION, END, START } =\n dimensions(orientation);\n\n const draggableSize = draggableRect[DIMENSION];\n const { [START]: lastItemStart, [END]: lastItemEnd } =\n lastElement.getBoundingClientRect();\n\n dragBoundaries.current.start = containerRect[START];\n dragBoundaries.current.end = lastItemIsOverflowIndicator\n ? Math.max(lastItemStart, containerRect.right - draggableSize)\n : isScrollableRef.current\n ? containerRect[START] + containerRect[DIMENSION] - draggableSize\n : lastItemEnd - draggableSize;\n dragBoundaries.current.contraStart = containerRect[CONTRA];\n dragBoundaries.current.contraEnd = containerRect[CONTRA_END];\n }\n },\n [containerRef, itemQuery, orientation]\n );\n\n const terminateDrag = useCallback(() => {\n const { current: settlingItem } = settlingItemRef;\n settlingItemRef.current = null;\n\n const { current: toIndex } = dropIndexRef;\n const droppedItem = containerRef.current?.querySelector(\n `${itemQuery}[data-index=\"${toIndex}\"]`\n );\n if (droppedItem) {\n droppedItem.classList.remove(\"vuuDropTarget-settling\");\n }\n dropIndexRef.current = -1;\n onDropSettle?.(toIndex);\n setDraggableStatus((status) => ({\n ...status,\n draggable: undefined,\n }));\n\n if (settlingItem) {\n dispatchCustomEvent(settlingItem, \"vuu-dropped\");\n }\n }, [containerRef, itemQuery, onDropSettle]);\n\n const getScrollDirection = useCallback(\n (mousePos: number) => {\n if (scrollableContainerRef.current && dragDropStateRef.current) {\n const { mouseOffset } = dragDropStateRef.current;\n\n const { POS, SCROLL_POS, SCROLL_SIZE, CLIENT_SIZE } =\n dimensions(orientation);\n const {\n [SCROLL_POS]: scrollPos,\n [SCROLL_SIZE]: scrollSize,\n [CLIENT_SIZE]: clientSize,\n } = scrollableContainerRef.current;\n\n const maxScroll = scrollSize - clientSize;\n const canScrollFwd = scrollPos < maxScroll;\n const viewportEnd = dragBoundaries.current.end;\n const bwd =\n scrollPos > 0 &&\n mousePos - mouseOffset[POS] <= dragBoundaries.current.start;\n const fwd = canScrollFwd && mousePos - mouseOffset[POS] >= viewportEnd;\n return bwd ? \"bwd\" : fwd ? \"fwd\" : \"\";\n }\n },\n [scrollableContainerRef, orientation]\n );\n\n const useDragDropHook: InternalHook =\n allowDragDrop === true || allowDragDrop === \"natural-movement\"\n ? useDragDropNaturalMovement\n : allowDragDrop === \"drop-indicator\"\n ? useDragDropIndicator\n : allowDragDrop === \"drag-copy\"\n ? useDragDropCopy\n : noDragDrop;\n\n const onScrollingStopped = useCallback(\n (scrollDirection: \"fwd\" | \"bwd\", scrollPos: number, atEnd: boolean) => {\n handleScrollStopRef.current?.(scrollDirection, scrollPos, atEnd);\n },\n []\n );\n\n const { isScrolling, startScrolling, stopScrolling } = useAutoScroll({\n containerRef: scrollableContainerRef,\n onScrollingStopped,\n orientation,\n });\n\n const handleDrop = useCallback<DropHandler>(\n (fromIndex, toIndex, options) => {\n //TODO why do we need both this and dropIndexRef ?\n dropPosRef.current = toIndex;\n if (options.isExternal) {\n onDrop?.(fromIndex, toIndex, {\n ...options,\n payload: dragDropStateRef.current?.payload,\n });\n } else {\n onDrop?.(fromIndex, toIndex, options);\n }\n dropIndexRef.current = toIndex;\n if (id) {\n onEndOfDragOperation?.(id);\n }\n dragDropStateRef.current = null;\n },\n [id, onDrop, onEndOfDragOperation]\n );\n\n const {\n beginDrag,\n drag,\n drop,\n handleScrollStart,\n handleScrollStop,\n releaseDrag,\n ...dragResult\n } = useDragDropHook({\n ...dragDropProps,\n containerRef,\n // draggableRef,\n isDragSource,\n isDropTarget,\n itemQuery,\n onDrop: handleDrop,\n orientation,\n });\n // To avoid circular ref between hooks\n handleScrollStopRef.current = handleScrollStop;\n\n const dragHandedOvertoProvider = useCallback(\n (dragDistance: number, clientContraPos: number) => {\n const { CONTRA_POS } = dimensions(orientation);\n const lastClientContraPos = mousePosRef.current[CONTRA_POS];\n\n const dragOutDistance = isDragSource\n ? Math.abs(lastClientContraPos - clientContraPos)\n : 0;\n\n if (allowDragDrop === true && !isDragSource && !isDropTarget) {\n //This is a simple internal drag\n return false;\n }\n\n // If isDropTarget is false, there are configured dropTargets in context\n // but this is not one, so drag will be handed straight over to DragProvider\n // (global drag). If isDropTarget is undefined, we have no DragProvider\n // so we are dealing with a simple local drag drop operation.\n const handoverToProvider =\n isDropTarget === false || dragOutDistance - dragDistance > 5;\n\n if (dragDropStateRef.current && handoverToProvider) {\n if (onDragOut?.(id as string, dragDropStateRef.current)) {\n // TODO create a cleanup function\n removeDragHandlers();\n releaseDrag?.();\n dragDropStateRef.current = null;\n }\n // remove the drag boundaries\n dragBoundaries.current = UNBOUNDED;\n return true;\n }\n },\n [\n allowDragDrop,\n id,\n isDragSource,\n isDropTarget,\n onDragOut,\n orientation,\n releaseDrag,\n removeDragHandlers,\n ]\n );\n\n const dragMouseMoveHandler = useCallback(\n (evt: MouseEvent) => {\n const { CLIENT_POS, CONTRA_CLIENT_POS, POS } = dimensions(orientation);\n const { clientX, clientY } = evt;\n const { [CLIENT_POS]: clientPos, [CONTRA_CLIENT_POS]: clientContraPos } =\n evt;\n const lastClientPos = mousePosRef.current[POS];\n const dragDistance = Math.abs(lastClientPos - clientPos);\n const { current: dragDropState } = dragDropStateRef;\n\n if (dragHandedOvertoProvider(dragDistance, clientContraPos)) {\n return;\n }\n\n mousePosRef.current.x = clientX;\n mousePosRef.current.y = clientY;\n\n if (dragDropState) {\n const { draggableElement, mouseOffset } = dragDropState;\n\n if (dragBoundaries.current === UNBOUNDED && draggableElement) {\n const dragPosX = mousePosRef.current.x - mouseOffset.x;\n const dragPosY = mousePosRef.current.y - mouseOffset.y;\n draggableElement.style.top = `${dragPosY}px`;\n draggableElement.style.left = `${dragPosX}px`;\n } else if (dragDistance > 0 && draggableElement) {\n const mouseMoveDirection = lastClientPos < clientPos ? \"fwd\" : \"bwd\";\n const scrollDirection = getScrollDirection(clientPos);\n const dragPos = mousePosRef.current[POS] - mouseOffset[POS];\n\n if (\n scrollDirection &&\n isScrollableRef.current &&\n !isScrolling.current\n ) {\n handleScrollStart?.();\n startScrolling(scrollDirection, 1);\n } else if (!scrollDirection && isScrolling.current) {\n stopScrolling();\n }\n\n if (!isScrolling.current) {\n const renderDragPos = Math.round(\n Math.max(\n dragBoundaries.current.start,\n Math.min(dragBoundaries.current.end, dragPos)\n )\n );\n const START = orientation === \"horizontal\" ? \"left\" : \"top\";\n draggableElement.style[START] = `${renderDragPos}px`;\n drag(renderDragPos, mouseMoveDirection);\n }\n }\n }\n },\n [\n drag,\n dragHandedOvertoProvider,\n getScrollDirection,\n handleScrollStart,\n isScrolling,\n orientation,\n startScrolling,\n stopScrolling,\n ]\n );\n const dragMouseUpHandler = useCallback(() => {\n removeDragHandlers();\n if (dragDropStateRef.current) {\n settlingItemRef.current = dragDropStateRef.current.draggableElement;\n }\n // The implementation hook is currently invoking the onDrop callback, we should move it into here\n drop();\n setDraggableStatus((status) => ({\n ...status,\n draggedItemIndex: -1,\n isDragging: false,\n }));\n // TODO clear the dragDropState\n }, [drop, removeDragHandlers]);\n\n dragMouseMoveHandlerRef.current = dragMouseMoveHandler;\n dragMouseUpHandlerRef.current = dragMouseUpHandler;\n\n const resumeDrag = useCallback<ResumeDragHandler>(\n (dragDropState: DragDropState) => {\n dragDropStateRef.current = dragDropState;\n // Note this is using the draggable element rather than the original draggedElement\n const { draggableElement, mouseOffset } = dragDropState;\n const { current: container } = containerRef;\n\n if (container && draggableElement) {\n const containerRect = container.getBoundingClientRect();\n const draggableRect = draggableElement.getBoundingClientRect();\n setDragBoundaries(containerRect, draggableRect);\n\n mousePosRef.current.x = draggableRect.left + mouseOffset.x;\n mousePosRef.current.y = draggableRect.top + mouseOffset.y;\n\n // why doesn't this work if we use the initialDragEement\n beginDrag(draggableElement);\n\n attachDragHandlers();\n\n return true;\n } else {\n return false;\n }\n },\n [attachDragHandlers, beginDrag, containerRef, setDragBoundaries]\n );\n\n const dragStart = useCallback(\n (evt: MouseEvent) => {\n const { target } = evt;\n const dragElement = getDraggableElement(target, itemQuery);\n const { current: container } = containerRef;\n if (container && dragElement) {\n const scrollableContainer = getScrollableContainer(\n container,\n itemQuery\n );\n\n isScrollableRef.current = isContainerScrollable(\n scrollableContainer,\n orientation\n );\n scrollableContainerRef.current = scrollableContainer;\n\n const containerRect = container.getBoundingClientRect();\n const draggableRect = dragElement.getBoundingClientRect();\n\n const dragDropState = (dragDropStateRef.current = new DragDropState(\n evt,\n dragElement\n ));\n\n setDragBoundaries(containerRect, draggableRect);\n\n beginDrag(dragElement);\n\n const {\n dataset: { index = \"-1\" },\n } = dragElement;\n\n setDraggableStatus({\n isDragging: true,\n draggable: (\n <Draggable\n element={cloneElement(dragElement)}\n onDropped={terminateDrag}\n onTransitionEnd={terminateDrag}\n ref={dragDropState.setDraggable}\n style={constrainRect(draggableRect, containerRect)}\n wrapperClassName={draggableClassName}\n />\n ),\n draggedItemIndex: parseInt(index),\n });\n\n onDragStart?.(dragDropState);\n attachDragHandlers();\n }\n },\n [\n attachDragHandlers,\n beginDrag,\n containerRef,\n draggableClassName,\n itemQuery,\n onDragStart,\n orientation,\n setDragBoundaries,\n terminateDrag,\n ]\n );\n\n const preDragMouseMoveHandler = useCallback(\n (evt: MouseEvent) => {\n const { CLIENT_POS, POS } = dimensions(orientation);\n const { [CLIENT_POS]: clientPos } = evt;\n const mouseMoveDistance = Math.abs(clientPos - startPosRef.current[POS]);\n if (mouseMoveDistance > dragThreshold && containerRef.current) {\n if (mouseDownTimer.current) {\n window.clearTimeout(mouseDownTimer.current);\n mouseDownTimer.current = null;\n }\n document.removeEventListener(\"mousemove\", preDragMouseMoveHandler);\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n\n dragStart(evt);\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [containerRef, beginDrag, orientation]\n );\n\n const preDragMouseUpHandler = useCallback(() => {\n if (mouseDownTimer.current) {\n window.clearTimeout(mouseDownTimer.current);\n mouseDownTimer.current = null;\n }\n document.removeEventListener(\"mousemove\", preDragMouseMoveHandler, false);\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n }, [preDragMouseMoveHandler]);\n\n const mouseDownHandler: MouseEventHandler = useCallback(\n (evt) => {\n // TODO runtime check here for valid drop targets ?\n\n const { current: container } = containerRef;\n // We don't want to prevent other handlers on this element from working\n // but we do want to stop a drag drop being initiated on a bubbled event.\n evt.stopPropagation();\n if (container && !evt.defaultPrevented) {\n const { clientX, clientY } = evt;\n mousePosRef.current.x = startPosRef.current.x = clientX;\n mousePosRef.current.y = startPosRef.current.y = clientY;\n\n document.addEventListener(\"mousemove\", preDragMouseMoveHandler, false);\n document.addEventListener(\"mouseup\", preDragMouseUpHandler, false);\n\n evt.persist();\n\n mouseDownTimer.current = window.setTimeout(() => {\n document.removeEventListener(\n \"mousemove\",\n preDragMouseMoveHandler,\n false\n );\n document.removeEventListener(\"mouseup\", preDragMouseUpHandler, false);\n dragStart(evt.nativeEvent);\n }, 500);\n }\n },\n [containerRef, dragStart, preDragMouseMoveHandler, preDragMouseUpHandler]\n );\n\n const { current: settlingItem } = settlingItemRef;\n useLayoutEffect(() => {\n if (settlingItem && containerRef.current) {\n const dropPos = dropPosRef.current;\n const droppedItem = containerRef.current.querySelector(\n `${itemQuery}[data-index=\"${dropPos}\"]`\n );\n if (droppedItem) {\n droppedItem.classList.add(\"vuuDropTarget-settling\");\n requestAnimationFrame(() => {\n const { top: targetTop, left: targetLeft } =\n droppedItem.getBoundingClientRect();\n // If the droppedItem is already exactly in the drop position, we can just\n // terminate the drag here and now. Most likely, though, it is out by a few\n // pixels. We animate the dragged item into the final resting place before\n // terminating the drag.\n const style = getComputedStyle(settlingItem);\n const currentLeft = parseInt(style.getPropertyValue(\"left\"));\n const currentTop = parseInt(style.getPropertyValue(\"top\"));\n if (currentLeft !== targetLeft || currentTop !== targetTop) {\n settlingItem.classList.add(\"vuuDraggable-settling\");\n settlingItem.style.top = `${targetTop}px`;\n settlingItem.style.left = `${targetLeft}px`;\n } else {\n terminateDrag();\n }\n });\n }\n // settlingItemRef.current = null;\n }\n }, [containerRef, itemQuery, settlingItem, terminateDrag]);\n\n useEffect(() => {\n if (id && (isDragSource || isDropTarget)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore TODO drah drop WIP\n register(id, allowDragDrop === \"drop-only\" ? false : resumeDrag, onDrop);\n }\n }, [\n allowDragDrop,\n id,\n isDragSource,\n isDropTarget,\n onDrop,\n register,\n resumeDrag,\n ]);\n\n return {\n ...dragResult,\n ...draggableStatus,\n isScrolling,\n onMouseDown:\n allowDragDrop && allowDragDrop !== \"drop-only\"\n ? mouseDownHandler\n : undefined,\n };\n};\n", "import { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n MutableRefObject,\n RefCallback,\n TransitionEventHandler,\n useCallback,\n useMemo,\n} from \"react\";\nimport { PopupComponent as Popup, Portal } from \"@vuu-ui/vuu-popups\";\n\nimport \"./Draggable.css\";\n\nconst makeClassNames = (classNames: string) =>\n classNames.split(\" \").map((className) => `vuuDraggable-${className}`);\n\nexport interface DraggableProps extends HTMLAttributes<HTMLDivElement> {\n wrapperClassName: string;\n element: HTMLElement;\n onDropped?: () => void;\n onTransitionEnd?: TransitionEventHandler;\n scale?: number;\n style: CSSProperties;\n}\n\nexport const Draggable = forwardRef<HTMLDivElement, DraggableProps>(\n function Draggable(\n { wrapperClassName, element, onDropped, onTransitionEnd, style, scale = 1 },\n forwardedRef\n ) {\n const handleVuuDrop = useCallback(() => {\n onDropped?.();\n }, [onDropped]);\n\n const callbackRef = useCallback<RefCallback<HTMLDivElement>>(\n (el: HTMLDivElement) => {\n if (el) {\n el.innerHTML = \"\";\n el.appendChild(element);\n if (scale !== 1) {\n el.style.transform = `scale(${scale},${scale})`;\n }\n el.addEventListener(\"vuu-dropped\", handleVuuDrop);\n }\n },\n [element, handleVuuDrop, scale]\n );\n const forkedRef = useForkRef<HTMLDivElement>(forwardedRef, callbackRef);\n\n const position = useMemo(\n () => ({\n left: 0,\n top: 0,\n }),\n []\n );\n\n return (\n <Portal>\n <Popup\n anchorElement={{ current: document.body }}\n placement=\"absolute\"\n position={position}\n >\n <div\n className={cx(\"vuuDraggable\", ...makeClassNames(wrapperClassName))}\n ref={forkedRef}\n onTransitionEnd={onTransitionEnd}\n style={style}\n />\n </Popup>\n </Portal>\n );\n }\n);\n\n// const colors = [\"black\", \"red\", \"green\", \"yellow\"];\n// let color_idx = 0;\nexport const createDragSpacer = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-spacer\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n\nexport const createDropIndicatorPosition = (): HTMLElement => {\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicatorPosition\";\n return spacer;\n};\n\nexport const createDropIndicator = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicator\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n", "import { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { ViewportRange } from \"./dragDropTypesNext\";\nimport { Direction, Rect } from \"./dragDropTypesNext\";\n\nconst LEFT_RIGHT = [\"left\", \"right\"];\nconst TOP_BOTTOM = [\"top\", \"bottom\"];\n// duplicated in repsonsive\n\nexport const NOT_OVERFLOWED = \":not(.wrapped)\";\nexport const NOT_HIDDEN = ':not([aria-hidden=\"true\"])';\n\n// TODO figure out which of these attributes we no longer need\nexport type MeasuredDropTarget = {\n /** \n The index position currently occupied by this item. If draggable \n is dropped here, this will be the destination drop position.\n */\n currentIndex: number;\n element: HTMLElement;\n id: string;\n index: number;\n isDraggedItem: boolean;\n isExternal?: boolean;\n isLast?: boolean;\n isOverflowIndicator?: boolean;\n start: number;\n end: number;\n mid: number;\n size: number;\n};\n\nexport type targetType = {\n element: HTMLElement | null;\n index: number;\n isLast?: boolean;\n};\n\n/** clones and removes id */\nexport const cloneElement = <T extends HTMLElement>(element: T): T => {\n const dolly = element.cloneNode(true) as T;\n // TOSO should we care about nested id values - perhaps an additional param, defaulting to false ?\n dolly.removeAttribute(\"id\");\n // Set index to -1 in case a moueMove event as we wait for drop to take effect might set highlighted\n // index to wrong value (see useList) -1 will be ignored;\n dolly.dataset.index = \"-1\";\n return dolly;\n};\n\ntype MousePosKey = keyof Pick<MouseEvent, \"clientX\" | \"clientY\">;\ntype DOMRectKey = keyof Omit<DOMRect, \"toJSON\">;\ntype DOMRectDimensionKey = keyof Pick<DOMRect, \"width\" | \"height\">;\ntype Dimension = keyof Pick<DOMRect, \"width\" | \"height\">;\ntype ElementDimension = keyof Pick<\n HTMLElement,\n | \"scrollHeight\"\n | \"scrollWidth\"\n | \"clientHeight\"\n | \"clientWidth\"\n | \"scrollTop\"\n | \"scrollLeft\"\n>;\n\ntype ElementPosition = \"x\" | \"y\";\n\nexport const measureElementSizeAndPosition = (\n element: HTMLElement,\n dimension: Dimension = \"width\",\n includeAutoMargin = false\n) => {\n const pos = dimension === \"width\" ? \"left\" : \"top\";\n const { [dimension]: size, [pos]: position } =\n element.getBoundingClientRect();\n const { padEnd = false, padStart = false } = element.dataset;\n const style = getComputedStyle(element);\n const [start, end] = dimension === \"width\" ? LEFT_RIGHT : TOP_BOTTOM;\n const marginStart =\n padStart && !includeAutoMargin\n ? 0\n : parseInt(style.getPropertyValue(`margin-${start}`), 10);\n const marginEnd =\n padEnd && !includeAutoMargin\n ? 0\n : parseInt(style.getPropertyValue(`margin-${end}`), 10);\n\n let minWidth = size;\n const flexShrink = parseInt(style.getPropertyValue(\"flex-shrink\"), 10);\n if (flexShrink > 0) {\n const flexBasis = parseInt(style.getPropertyValue(\"flex-basis\"), 10);\n if (!isNaN(flexBasis) && flexBasis > 0) {\n minWidth = flexBasis;\n }\n }\n return [position, marginStart + minWidth + marginEnd];\n};\n\nconst DIMENSIONS = {\n horizontal: {\n CLIENT_POS: \"clientX\" as MousePosKey,\n CLIENT_SIZE: \"clientWidth\" as ElementDimension,\n CONTRA: \"top\" as DOMRectKey,\n CONTRA_CLIENT_POS: \"clientY\" as MousePosKey,\n CONTRA_END: \"bottom\" as DOMRectDimensionKey,\n CONTRA_POS: \"y\" as ElementPosition,\n DIMENSION: \"width\" as DOMRectDimensionKey,\n END: \"right\" as DOMRectKey,\n POS: \"x\" as ElementPosition,\n SCROLL_POS: \"scrollLeft\" as ElementDimension,\n SCROLL_SIZE: \"scrollWidth\" as ElementDimension,\n START: \"left\" as DOMRectKey,\n },\n vertical: {\n CLIENT_POS: \"clientY\" as MousePosKey,\n CLIENT_SIZE: \"clientHeight\" as ElementDimension,\n CONTRA: \"left\" as DOMRectKey,\n CONTRA_CLIENT_POS: \"clientX\" as MousePosKey,\n CONTRA_END: \"right\" as DOMRectDimensionKey,\n CONTRA_POS: \"x\" as ElementPosition,\n DIMENSION: \"height\" as DOMRectDimensionKey,\n END: \"bottom\" as DOMRectKey,\n POS: \"y\" as ElementPosition,\n SCROLL_POS: \"scrollTop\" as ElementDimension,\n SCROLL_SIZE: \"scrollHeight\" as ElementDimension,\n START: \"top\" as DOMRectKey,\n },\n};\nexport const dimensions = (orientation: orientationType) =>\n DIMENSIONS[orientation];\n\nexport const getItemById = (\n measuredItems: MeasuredDropTarget[],\n id: string\n) => {\n const result = measuredItems.find((item) => item.id === id);\n if (result) {\n return result;\n }\n // else {\n // throw Error(`measuredItems do not contain an item with id #${id}`);\n // }\n};\n\nexport const removeDraggedItem = (\n measuredItems: MeasuredDropTarget[],\n index: number\n) => {\n measuredItems.splice(index, 1);\n for (let i = index; i < measuredItems.length; i++) {\n measuredItems[i].currentIndex -= 1;\n }\n};\n\nexport type dropZone = \"start\" | \"end\";\n\nexport const measureDropTargets = (\n container: HTMLElement,\n orientation: orientationType,\n itemQuery?: string,\n viewportRange?: ViewportRange,\n draggedItemId?: string\n) => {\n const dragThresholds: MeasuredDropTarget[] = [];\n const { DIMENSION } = dimensions(orientation);\n const children = Array.from(\n itemQuery ? container.querySelectorAll(itemQuery) : container.children\n );\n\n const itemCount = children.length;\n const start =\n typeof viewportRange?.from === \"number\"\n ? viewportRange.atEnd\n ? Math.max(0, viewportRange.from - 1)\n : viewportRange.from\n : 0;\n const end =\n typeof viewportRange?.to === \"number\"\n ? Math.min(viewportRange.to + 2, itemCount - 1)\n : itemCount - 1;\n for (let index = start; index <= end; index++) {\n const element = children[index] as HTMLElement;\n const [start, size] = measureElementSizeAndPosition(element, DIMENSION);\n const isLast = index === itemCount - 1;\n const id = element.id;\n\n dragThresholds.push({\n currentIndex: index,\n id,\n index,\n isDraggedItem: draggedItemId === id,\n isLast,\n isOverflowIndicator: element.dataset.index === \"overflow\",\n element: element as HTMLElement,\n start,\n end: start + size,\n size,\n mid: start + size / 2,\n });\n }\n return dragThresholds;\n};\n\n/**\n The index of the dropped item is its array offset within the\n dropTargets. If there is no scrolling involved, this will be\n the same as the 'absolute' index position. If the dropTargets have\n been scrolled, though, we will only have a window of the full\n dataset, corresponding to the current scroll viewport. In that case\n we need to determine the offset and factor that into the 'absolute'\n index.\n */\nexport const getIndexOfDraggedItem = (\n dropTargets: MeasuredDropTarget[],\n absoluteIndex = false\n) => {\n const indexOfDraggedItem = dropTargets.findIndex((d) => d.isDraggedItem);\n if (absoluteIndex) {\n const { index: draggedItemOriginalIndex } = dropTargets[indexOfDraggedItem];\n const minIndex = dropTargets\n .filter((d) => !d.isDraggedItem)\n .reduce((min, d) => Math.min(min, d.index), Number.MAX_SAFE_INTEGER);\n const scrolled =\n minIndex > 0 && !(draggedItemOriginalIndex === 0 && minIndex === 1);\n if (scrolled) {\n return minIndex + indexOfDraggedItem;\n }\n }\n return indexOfDraggedItem;\n};\n\n// As the draggedItem is moved, displacing existing items, mirror\n// the movements within the dropTargets collection\nexport const mutateDropTargetsSwitchDropTargetPosition = (\n dropTargets: MeasuredDropTarget[],\n direction: Direction\n) => {\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const indexOfTarget =\n direction === \"fwd\" ? indexOfDraggedItem + 1 : indexOfDraggedItem - 1;\n\n if (indexOfTarget < 0 || indexOfTarget >= dropTargets.length) {\n throw Error(\"switchDropTargetPosition index out of range\");\n }\n\n const draggedItem = dropTargets.at(indexOfDraggedItem) as MeasuredDropTarget;\n const targetItem = dropTargets.at(indexOfTarget) as MeasuredDropTarget;\n\n const diff = targetItem.size - draggedItem.size;\n\n if (direction === \"fwd\") {\n const draggedStart = targetItem.start + diff;\n const draggedEnd = targetItem.end;\n\n const newDraggedItem = {\n ...draggedItem,\n start: draggedStart,\n mid: Math.floor(draggedStart + (draggedEnd - draggedStart) / 2),\n end: draggedEnd,\n } as MeasuredDropTarget;\n\n const targetStart = draggedItem.start;\n const targetEnd = draggedItem.end + diff;\n\n const newTargetItem = {\n ...targetItem,\n start: targetStart,\n mid: Math.floor(targetStart + (targetEnd - targetStart) / 2),\n end: targetEnd,\n } as MeasuredDropTarget;\n dropTargets.splice(indexOfDraggedItem, 2, newTargetItem, newDraggedItem);\n } else {\n const draggedStart = targetItem.start;\n const draggedEnd = targetItem.end - diff;\n\n const newDraggedItem = {\n ...draggedItem,\n start: draggedStart,\n mid: Math.floor(draggedStart + (draggedEnd - draggedStart) / 2),\n end: draggedEnd,\n } as MeasuredDropTarget;\n\n const targetStart = draggedItem.start - diff;\n const targetEnd = draggedItem.end;\n\n const newTargetItem = {\n ...targetItem,\n start: targetStart,\n mid: Math.floor(targetStart + (targetEnd - targetStart) / 2),\n end: targetEnd,\n } as MeasuredDropTarget;\n dropTargets.splice(indexOfTarget, 2, newDraggedItem, newTargetItem);\n }\n};\n\nexport const getNextDropTarget = (\n dropTargets: MeasuredDropTarget[],\n pos: number,\n draggedItemSize: number,\n mouseMoveDirection: Direction\n): MeasuredDropTarget => {\n const len = dropTargets.length;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n // draggedItem will be undefined if we are handling an external drag\n const draggedItem = dropTargets[indexOfDraggedItem];\n if (mouseMoveDirection === \"fwd\") {\n const leadingEdge = Math.round(pos + draggedItemSize);\n for (let index = len - 1; index >= 0; index--) {\n const dropTarget = dropTargets[index];\n if (leadingEdge > dropTarget.mid) {\n if (draggedItem && index < indexOfDraggedItem) {\n return draggedItem;\n } else {\n return dropTarget;\n }\n }\n }\n } else {\n const leadingEdge = Math.round(pos);\n for (let index = 0; index < len; index++) {\n const dropTarget = dropTargets[index];\n if (leadingEdge < dropTarget.mid) {\n if (index > indexOfDraggedItem) {\n return draggedItem;\n } else {\n return dropTarget;\n }\n }\n }\n }\n throw Error(\"no dropTraget identified\");\n};\n\n/**\n * An item within a scrollable container might have a width or height greater than that of\n * the container. If we drag such an item, we don't want the draggable to be larger than\n * the container.\n */\nexport function constrainRect(targetRect: Rect, constraintRect: Rect): Rect {\n const { height, left, top, width } = targetRect;\n const { height: constrainedHeight, width: constrainedWidth } = constraintRect;\n return {\n height: Math.min(height, constrainedHeight),\n left,\n top,\n width: Math.min(width, constrainedWidth),\n };\n}\n\nexport const dropTargetsDebugString = (dropTargets: MeasuredDropTarget[]) =>\n dropTargets\n .map(\n (d, i) =>\n `\\n${d.isDraggedItem ? \"*\" : \" \"}[${i}] width : ${Math.floor(\n d.size\n )} ${Math.floor(d.start)} - ${Math.floor(d.end)} (mid ${Math.floor(\n d.mid\n )}) ${d.element?.textContent} `\n )\n .join(\"\");\n\nexport const getScrollableContainer = (\n container: HTMLElement,\n itemQuery: string\n) => {\n // TODO if this is too fragile a way to identify scrollable container, we\n // can add a prop to pass it 'scrollableContainerQuery'\n const firstItem = container.querySelector(\n `${itemQuery}:not([aria-hidden=\"true\"])`\n );\n // generally, we expect the immediateParent to be a contentContainer, the\n // parent of that will be the scrollable container. This may or may not be\n // the outer container (likely not)\n const immediateParent = firstItem?.parentElement;\n if (immediateParent === container) {\n return container;\n } else {\n return immediateParent?.parentElement as HTMLElement;\n }\n};\n\nexport const isContainerScrollable = (\n scrollableContainer: HTMLElement,\n orientation: orientationType\n) => {\n const { SCROLL_SIZE, CLIENT_SIZE } = dimensions(orientation);\n const { [SCROLL_SIZE]: scrollSize, [CLIENT_SIZE]: clientSize } =\n scrollableContainer;\n return scrollSize > clientSize;\n};\n", "import { RefObject, useCallback, useRef } from \"react\";\nimport { dimensions } from \"./drop-target-utils\";\n\nexport type ScrollStopHandler = (\n scrollDirection: \"fwd\" | \"bwd\",\n scrollPos: number,\n atEnd: boolean\n) => void;\n\nexport const useAutoScroll = ({\n containerRef,\n onScrollingStopped,\n orientation = \"vertical\",\n}: {\n containerRef: RefObject<HTMLElement>;\n onScrollingStopped?: ScrollStopHandler;\n orientation?: \"horizontal\" | \"vertical\";\n}) => {\n const scrollTimer = useRef<number | null>(null);\n const isScrolling = useRef(false);\n const scrollPosRef = useRef(0);\n const lastScrollDirectionRef = useRef<\"fwd\" | \"bwd\">(\"fwd\");\n\n const stopScrolling = useCallback(\n (atEnd = false) => {\n console.log(\"[useAutoScroll] stopScrolling\");\n if (scrollTimer.current !== null) {\n clearTimeout(scrollTimer.current);\n scrollTimer.current = null;\n }\n isScrolling.current = false;\n onScrollingStopped?.(\n lastScrollDirectionRef.current,\n scrollPosRef.current,\n atEnd\n );\n },\n [onScrollingStopped]\n );\n\n const startScrolling = useCallback(\n (direction: \"fwd\" | \"bwd\", scrollRate: number, scrollUnit = 30) => {\n const { current: container } = containerRef;\n if (container) {\n const { SCROLL_POS, SCROLL_SIZE, CLIENT_SIZE } =\n dimensions(orientation);\n const {\n [SCROLL_POS]: scrollPos,\n [SCROLL_SIZE]: scrollSize,\n [CLIENT_SIZE]: clientSize,\n } = container;\n const maxScroll =\n direction === \"fwd\" ? scrollSize - clientSize - scrollPos : scrollPos;\n const nextScroll = Math.min(maxScroll, scrollUnit);\n\n if (direction === \"fwd\") {\n lastScrollDirectionRef.current = \"fwd\";\n container[SCROLL_POS as \"scrollTop\" | \"scrollLeft\"] =\n scrollPosRef.current = scrollPos + nextScroll;\n } else {\n lastScrollDirectionRef.current = \"bwd\";\n container[SCROLL_POS as \"scrollTop\" | \"scrollLeft\"] =\n scrollPosRef.current = scrollPos - nextScroll;\n }\n\n if (nextScroll === maxScroll) {\n stopScrolling(true);\n } else {\n isScrolling.current = true;\n scrollTimer.current = window.setTimeout(() => {\n startScrolling(direction, scrollRate, scrollUnit);\n }, 100);\n }\n }\n },\n [containerRef, orientation, stopScrolling]\n );\n\n return {\n isScrolling,\n startScrolling,\n stopScrolling,\n };\n};\n", "import { useCallback, useRef } from \"react\";\n\nimport {\n InternalDragDropProps,\n InternalDragHookResult,\n ViewportRange,\n} from \"./dragDropTypesNext\";\n\nexport const useDragDropCopy = ({\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const rangeRef = useRef<ViewportRange>();\n rangeRef.current = viewportRange;\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 },\n [selected]\n );\n\n const drag = useCallback(() => undefined, []);\n const drop = useCallback(() => undefined, []);\n\n return {\n beginDrag,\n drag,\n drop,\n };\n};\n", "import { useCallback, useRef, useState } from \"react\";\n\nimport {\n InternalDragDropProps,\n InternalDragHookResult,\n Direction,\n ViewportRange,\n} from \"./dragDropTypesNext\";\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 onDrop,\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(() => {\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 //TODO why is this different from Natural Movement ?\n if (overflowMenuShowingRef.current) {\n onDrop(fromIndex, -1, {\n fromIndex,\n toIndex: -1,\n });\n } else {\n if (fromIndex < originalDropTargetIndex) {\n onDrop(\n fromIndex,\n dropBefore ? currentDropTargetIndex : currentDropTargetIndex + 1,\n {\n fromIndex,\n toIndex: dropBefore\n ? currentDropTargetIndex\n : currentDropTargetIndex + 1,\n }\n );\n } else {\n onDrop(\n fromIndex,\n dropBefore ? originalDropTargetIndex : originalDropTargetIndex + 1,\n {\n fromIndex,\n toIndex: dropBefore\n ? originalDropTargetIndex\n : originalDropTargetIndex + 1,\n }\n );\n }\n }\n setDropIndicator(undefined);\n }\n setShowOverflow(false);\n }, [clearSpacer, onDrop]);\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", "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", "import { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n Direction,\n InternalDragDropProps,\n InternalDragHookResult,\n ViewportRange,\n} from \"./dragDropTypesNext\";\nimport { useDragDisplacers } from \"./useDragDisplacers\";\nimport { dispatchMouseEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n dimensions,\n // dropTargetsDebugString,\n getIndexOfDraggedItem,\n getNextDropTarget,\n MeasuredDropTarget,\n measureDropTargets,\n NOT_HIDDEN,\n NOT_OVERFLOWED,\n} from \"./drop-target-utils\";\n\nexport const useDragDropNaturalMovement = ({\n onDrop,\n orientation = \"horizontal\",\n containerRef,\n itemQuery = \"*\",\n selected,\n viewportRange,\n}: InternalDragDropProps): InternalDragHookResult => {\n const dragDirectionRef = useRef<Direction | undefined>();\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 } =\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 clearSpacers();\n }, [clearSpacers]);\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 if (scrollDirection === \"fwd\") {\n measuredDropTargets.current.push(draggedItem);\n } else {\n measuredDropTargets.current.unshift(draggedItem);\n }\n\n const { size } = draggedItem;\n const dragPos = dragPosRef.current;\n const midPos = dragPos + size / 2;\n const { current: dropTargets } = measuredDropTargets;\n const dropTarget = getNextDropTarget(dropTargets, midPos, size, \"fwd\");\n\n if (dropTarget) {\n const targetIndex = indexOf(dropTarget);\n const nextInsertPos = targetIndex;\n const nextDropTarget = dropTargets[nextInsertPos];\n\n if (atEnd && scrollDirection === \"fwd\") {\n displaceLastItem(\n dropTargets,\n dropTargets[dropTargets.length - 1],\n size,\n false,\n \"static\"\n );\n } else {\n displaceItem(dropTargets, nextDropTarget, size, true, \"static\");\n }\n }\n }\n },\n [containerRef, displaceItem, displaceLastItem, 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 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 console.log({ dropTargets });\n\n if (internalDrag) {\n // console.log(dropTargetsDebugString(dropTargets));\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 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 // console.log(`nextDropTarget ${dropTarget.element.textContent}`);\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 // console.log(dropTargetsDebugString(dropTargets));\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\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 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\n dragDirectionRef.current = mouseMoveDirection;\n }\n }\n },\n [containerRef, displaceItem, displaceLastItem, hidePopup, showPopup]\n );\n\n const drop = useCallback(() => {\n clearSpacers();\n const { current: dropTargets } = measuredDropTargets;\n const indexOfDraggedItem = getIndexOfDraggedItem(dropTargets);\n const draggedItem = dropTargets[indexOfDraggedItem];\n if (draggedItem) {\n dragDirectionRef.current = undefined;\n\n if (overflowMenuShowingRef.current) {\n onDrop(draggedItem.index, -1, {\n fromIndex: draggedItem.index,\n toIndex: -1,\n isExternal: draggedItem.isExternal,\n });\n } else {\n const absoluteIndexDraggedItem = getIndexOfDraggedItem(\n dropTargets,\n true\n );\n onDrop(draggedItem.index, absoluteIndexDraggedItem, {\n fromIndex: draggedItem.index,\n toIndex: absoluteIndexDraggedItem,\n isExternal: draggedItem.isExternal,\n });\n }\n }\n setShowOverflow(false);\n\n if (containerRef.current) {\n // TODO we're not catching every scenario where we need to control\n // the final scroll position here.\n const scrollTop = containerRef.current?.scrollTop;\n if (indexOfDraggedItem < dropTargets.length) {\n containerRef.current.scrollTop = scrollTop;\n }\n }\n }, [clearSpacers, containerRef, onDrop]);\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", "import type { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { Direction } from \"./dragDropTypesNext\";\nimport { createDragSpacer as createDragDisplacer } from \"./Draggable\";\nimport {\n MeasuredDropTarget,\n mutateDropTargetsSwitchDropTargetPosition,\n} from \"./drop-target-utils\";\n\nexport type DragDisplacersHookResult = {\n displaceItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n displaceLastItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n clearSpacers: (useAnimation?: boolean) => void;\n};\n\nexport type DragDisplacersHook = (\n orientation: orientationType\n) => DragDisplacersHookResult;\n/**\n * Manage a pair of displacer elements to smoothly display a moving gap between\n * list items of any kind. Designed to be used in a drag drop operation. The 'static'\n * direction option should be used at drag start or following scroll.\n */\nexport const useDragDisplacers: DragDisplacersHook = (\n orientation = \"horizontal\"\n) => {\n const animationFrame = useRef(0);\n const transitioning = useRef(false);\n\n const spacers = useMemo(\n // We only need to listen for transition end on one of the spacers\n () => [createDragDisplacer(transitioning), createDragDisplacer()],\n []\n );\n\n const animateTransition = useCallback(\n (size: number, propertyName = \"width\") => {\n const [spacer1, spacer2] = spacers;\n animationFrame.current = requestAnimationFrame(() => {\n transitioning.current = true;\n spacer1.style.cssText = `${propertyName}: 0px`;\n spacer2.style.cssText = `${propertyName}: ${size}px`;\n spacers[0] = spacer2;\n spacers[1] = spacer1;\n });\n },\n [spacers]\n );\n\n const clearSpacers = useCallback(\n (useTransition = false) => {\n if (useTransition === true) {\n const [spacer] = spacers;\n const cleanup = () => {\n spacer.removeEventListener(\"transitionend\", cleanup);\n clearSpacers();\n };\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n spacer.addEventListener(\"transitionend\", cleanup);\n animateTransition(0, propertyName);\n } else {\n spacers.forEach((spacer) => spacer.remove());\n }\n },\n [animateTransition, orientation, spacers]\n );\n\n const cancelAnyPendingAnimation = useCallback(() => {\n if (animationFrame.current) {\n cancelAnimationFrame(animationFrame.current);\n animationFrame.current = 0;\n }\n }, []);\n\n const displaceItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\"\n ) => {\n if (dropTarget) {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n cancelAnyPendingAnimation();\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n if (direction === \"fwd\") {\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.after(spacer1);\n dropTarget.element.before(spacer2);\n }\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else if (direction === \"static\") {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.before(spacer1);\n } else {\n throw Error(\n \"useDragDisplacers currently only supports noTransition for static displacement\"\n );\n }\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n }\n },\n [\n animateTransition,\n cancelAnyPendingAnimation,\n clearSpacers,\n orientation,\n spacers,\n ]\n );\n const displaceLastItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\"\n ) => {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n\n cancelAnyPendingAnimation();\n\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.after(spacer1);\n }\n\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n },\n [\n animateTransition,\n cancelAnyPendingAnimation,\n clearSpacers,\n orientation,\n spacers,\n ]\n );\n\n return {\n displaceItem,\n displaceLastItem,\n clearSpacers,\n };\n};\n", "import { useCallback, useEffect, useRef } from \"react\";\nimport { CollectionHookResult, hasSelection } from \"../common-hooks\";\nimport { DropHandler } from \"../drag-drop\";\nimport { MoveItemHandler } from \"./listTypes\";\n\nexport interface ListDropProps<Item = string> {\n dataHook: CollectionHookResult<Item>;\n onDrop?: DropHandler;\n onMoveListItem?: MoveItemHandler;\n selected: string[];\n setHighlightedIndex: (idx: number) => void;\n setSelected: (selected: string[]) => void;\n}\n\nexport const useListDrop = <Item>({\n dataHook,\n onDrop,\n onMoveListItem,\n selected,\n setHighlightedIndex,\n setSelected,\n}: ListDropProps<Item>) => {\n // Used to preserve selection across a drop event.\n const selectedByIndexRef = useRef<number[]>([]);\n\n /** prevent recreating reorderSelectedIndices when dataHook changes */\n const dataHookRef = useRef(dataHook);\n dataHookRef.current = dataHook;\n\n const adjustIndex = useCallback(\n (index: number, fromIndex: number, toIndex: number) => {\n if (index === fromIndex) {\n return toIndex;\n } else if (\n index < Math.min(fromIndex, toIndex) ||\n index > Math.max(fromIndex, toIndex)\n ) {\n return index;\n }\n if (fromIndex < index) {\n return index - 1;\n } else {\n return index + 1;\n }\n },\n []\n );\n\n // Used after a drop event, to calculate wht the new selected indices will be\n const reorderSelectedIndices = useCallback(\n (selected: string[], fromIndex: number, toIndex: number) => {\n const selectedIndices = selected.map((id) =>\n dataHookRef.current.indexOfItemById(id)\n );\n return selectedIndices.map((item) =>\n adjustIndex(item, fromIndex, toIndex)\n );\n },\n [adjustIndex]\n );\n\n const handleDrop = useCallback<DropHandler>(\n (fromIndex, toIndex, options) => {\n if (hasSelection(selected)) {\n selectedByIndexRef.current = reorderSelectedIndices(\n selected,\n fromIndex,\n toIndex\n );\n }\n\n if (options.isExternal) {\n onDrop?.(fromIndex, toIndex, options);\n } else {\n onMoveListItem?.(fromIndex, toIndex);\n }\n setHighlightedIndex(-1);\n },\n [\n selected,\n setHighlightedIndex,\n reorderSelectedIndices,\n onDrop,\n onMoveListItem,\n ]\n );\n\n const handleDropSettle = useCallback(\n (toIndex: number) => {\n setHighlightedIndex(toIndex);\n },\n [setHighlightedIndex]\n );\n\n useEffect(() => {\n const { current: selectedByIndex } = selectedByIndexRef;\n if (hasSelection(selectedByIndex)) {\n selectedByIndexRef.current = [];\n const postDropSelected = Array.isArray(selectedByIndex)\n ? selectedByIndex.map((i) => dataHook.data[i].id)\n : dataHook.data[selectedByIndex].id;\n\n selectedByIndexRef.current = [];\n // TODO gave up trying to figure out how to type this correctly\n setSelected(postDropSelected as any);\n }\n }, [dataHook.data, setSelected]);\n\n return {\n handleDrop,\n onDropSettle: handleDropSettle,\n };\n};\n", "import { MeasuredSize } from \"@vuu-ui/vuu-layout\";\nimport { RefObject, useCallback, useMemo, useRef, useState } from \"react\";\nimport { HeightOnly, ResizeHandler, useResizeObserver } from \"../common-hooks\";\n\nexport interface ListHeightHookProps {\n displayedItemCount: number;\n getItemHeight?: (index: number) => number;\n height?: number | string;\n itemCount: number;\n itemGapSize: number;\n itemHeight?: number;\n rootRef: RefObject<HTMLElement>;\n size: MeasuredSize | undefined;\n}\n\nexport interface HeightHookResult {\n computedListHeight: number | undefined;\n contentHeight: number;\n listClientHeight?: number;\n listItemHeight: number;\n rowHeightProxyRef: (el: HTMLDivElement | null) => void;\n}\n\nconst getContentHeight = (\n itemCount: number,\n itemHeight: number,\n itemGapSize = 0\n) => {\n if (itemCount === 0) {\n return 0;\n } else if (itemGapSize === 0) {\n return itemCount * itemHeight;\n } else {\n return itemCount - 1 * (itemHeight + itemGapSize) + itemHeight;\n }\n};\n\nexport const useListHeight = ({\n displayedItemCount,\n getItemHeight,\n // TODO no need to incur the cost of a resizeObserver if height is explicit\n height,\n itemCount,\n itemGapSize,\n itemHeight: itemHeightProp = 36,\n size,\n}: ListHeightHookProps): HeightHookResult => {\n // TODO default by density\n const [measuredItemHeight, setMeasuredItemHeight] =\n useState<number>(itemHeightProp);\n // Not 100% sure why we need this forceUpdate\n const [, forceUpdate] = useState({});\n // This is a ref to the 'item proxy' a hiden list item used to detect css driven\n // size changes (e.g. runtime density switch)\n const proxyItemRef = useRef<HTMLDivElement | null>(null);\n\n const [contentHeight, computedListHeight] = useMemo(() => {\n let result = 0;\n const itemHeight = measuredItemHeight ?? itemHeightProp;\n const contentHeight = getContentHeight(itemCount, itemHeight, itemGapSize);\n if (height !== undefined) {\n // TODO if this is a percentage, convert to number\n return [contentHeight, undefined];\n }\n\n // if there are 0 items we render with the preferred count\n const preferredItemCount =\n Math.min(displayedItemCount, itemCount) || displayedItemCount;\n\n if (typeof getItemHeight === \"function\") {\n result +=\n Array(preferredItemCount)\n .fill(0)\n .reduce<number>(\n (total, _, index) => total + getItemHeight(index) + itemGapSize,\n 0\n ) -\n // We don't want gap after the last item\n itemGapSize;\n } else {\n result +=\n preferredItemCount * Number(itemHeight) +\n (preferredItemCount - 1) * itemGapSize;\n }\n\n const listHeight = result;\n\n return [contentHeight, listHeight];\n }, [\n displayedItemCount,\n getItemHeight,\n height,\n itemCount,\n itemGapSize,\n itemHeightProp,\n measuredItemHeight,\n ]);\n\n const handleRowHeight: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n setMeasuredItemHeight(height);\n }\n }, []);\n\n const rowHeightProxyRef = useCallback((el: HTMLDivElement | null) => {\n proxyItemRef.current = el;\n forceUpdate({});\n }, []);\n\n useResizeObserver(proxyItemRef, HeightOnly, handleRowHeight, true);\n\n return {\n computedListHeight,\n contentHeight,\n listClientHeight: size?.height,\n listItemHeight: measuredItemHeight,\n rowHeightProxyRef,\n };\n};\n", "import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { UIEvent, useCallback, useMemo, useRef, useState } from \"react\";\n\nexport type ViewportRange = {\n atEnd: boolean;\n atStart: boolean;\n from: number;\n to: number;\n};\n\ninterface ScrollPositionHookProps {\n containerSize: number;\n itemCount: number;\n itemGapSize?: number;\n itemSize: number;\n onViewportScroll?: (\n firstVisibleItemIndex: number,\n lastVisibleitemIndex: number\n ) => void;\n}\n\nconst getRange = (\n scrollPos: number,\n height: number,\n itemCount: number,\n itemHeight: number\n): ViewportRange => {\n const viewportRowCount = Math.ceil(height / itemHeight);\n const from = Math.floor(scrollPos / itemHeight);\n const to = Math.ceil(from + viewportRowCount - 1);\n return {\n atStart: from === 0,\n atEnd: to === itemCount - 1,\n from,\n to,\n };\n};\n\nexport const useScrollPosition = ({\n containerSize: listHeight,\n itemCount: listItemCount,\n itemGapSize: listItemGapSize = 0,\n itemSize: listItemHeight,\n onViewportScroll,\n}: ScrollPositionHookProps) => {\n const firstVisibleRowRef = useRef(0);\n const lastVisibleRowRef = useRef(0);\n const scrollPosRef = useRef(0);\n\n const range = useMemo(() => {\n return getRange(\n scrollPosRef.current,\n listHeight,\n listItemCount,\n listItemHeight + listItemGapSize\n );\n }, [listHeight, listItemCount, listItemHeight, listItemGapSize]);\n\n const [viewportRange, setViewportRange] = useState<ViewportRange>(range);\n\n useIsomorphicLayoutEffect(() => {\n setViewportRange(range);\n }, [range]);\n\n const handleVerticalScroll = useCallback(\n (e: UIEvent<HTMLElement>) => {\n const scrollTop = (e.target as HTMLElement).scrollTop;\n if (scrollTop !== scrollPosRef.current) {\n scrollPosRef.current = scrollTop;\n const itemHeight = listItemHeight + listItemGapSize;\n const range = getRange(\n scrollTop,\n listHeight,\n listItemCount,\n itemHeight\n );\n if (\n range.from !== firstVisibleRowRef.current ||\n range.to !== lastVisibleRowRef.current\n ) {\n firstVisibleRowRef.current = range.from;\n lastVisibleRowRef.current = range.to;\n onViewportScroll?.(range.from, range.to);\n setViewportRange(range);\n }\n }\n },\n [\n listItemHeight,\n listItemGapSize,\n listHeight,\n listItemCount,\n onViewportScroll,\n ]\n );\n\n return {\n onVerticalScroll: handleVerticalScroll,\n viewportRange,\n };\n};\n", "import { makePrefixer, useForkRef, useIdMemo } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, memo, ReactElement, useRef } from \"react\";\nimport {\n isSelected,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\nimport { CollectionIndexer, SelectionStrategy } from \"../common-hooks\";\nimport { useListHeight } from \"./useListHeight\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { Row, useVirtualization } from \"./useVirtualization\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst withBaseName = makePrefixer(\"saltList\");\n\nconst ListItem = memo(DefaultListItem);\n\nexport const VirtualizedList = forwardRef(function List<\n Item,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n borderless,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n getItemHeight,\n getItemId,\n height,\n highlightedIndex: highlightedIdxProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onDragStart,\n onDrop,\n onSelect,\n onSelectionChange,\n onViewportScroll,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabToSelect,\n width,\n ...htmlAttributes\n }: ListProps<Item, Selection>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useIdMemo(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const rowHeightProxyRef = useRef<HTMLDivElement | null>(null);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n getItemId,\n itemToString,\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { contentHeight, listItemHeight, listHeight } = useListHeight({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n borderless,\n displayedItemCount,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef,\n rowHeightRef: rowHeightProxyRef,\n });\n\n const {\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, Selection>({\n collapsibleHeaders,\n collectionHook,\n containerRef: rootRef,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIdxProp,\n label: id,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize: typeof listHeight === \"number\" ? listHeight : 0,\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n console.log({ viewPortRange: viewportRange });\n\n // TODO move into useList\n const data = useVirtualization<Item>({\n data: collectionHook.data,\n listItemGapSize: itemGapSize,\n listItemHeight,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: rootRef,\n scrollIntoView,\n });\n\n function addItem(\n list: ReactElement[],\n row: Row<Item>,\n idx: { value: number }\n ) {\n const [key, offset, pos, item] = row;\n const index = pos - 1;\n list.push(\n <ListItem\n aria-setsize={collectionHook.data.length}\n aria-posinset={pos}\n className={clsx(className, {\n saltHighlighted: index === highlightedIndex,\n saltFocusVisible: focusVisible === index,\n })}\n data-idx={index}\n item={item}\n key={key}\n label={item.label}\n data-offset={offset}\n role=\"option\"\n selected={isSelected<Item>(selected, item)}\n id={item.id}\n translate3d={offset}\n // style={{\n // transform: `translate3d(0px, ${offset}px, 0px)`\n // }}\n />\n );\n idx.value += 1;\n }\n\n function renderItems(\n data: Row<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = data.length\n ) {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = data[idx.value];\n addItem(listItems, item, idx);\n }\n return listItems;\n }\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={withBaseName(\"empty-message\")}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const renderContent = () => {\n if (data.length) {\n return renderItems(data);\n } else {\n renderEmpty();\n }\n };\n\n const sizeStyles = {\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n minWidth,\n minHeight,\n width: width ?? \"100%\",\n height: height ?? \"100%\",\n maxWidth: maxWidth ?? width,\n maxHeight: maxHeight ?? listHeight,\n };\n\n return (\n <div\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={clsx(withBaseName(), className, withBaseName(\"virtualized\"))}\n id={`${id}`}\n ref={useForkRef<HTMLDivElement>(rootRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : 0}\n >\n <div\n className={withBaseName(\"scrollingContentContainer\")}\n style={{ height: contentHeight }}\n >\n <ListItemProxy ref={rowHeightProxyRef} />\n {renderContent()}\n </div>\n </div>\n );\n}) as <Item = string, Selection extends SelectionStrategy = \"default\">(\n props: ListProps<Item, Selection> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ListProps<Item, Selection>>;\n", "import { useMemo } from \"react\";\nimport { CollectionItem } from \"../common-hooks\";\nimport { KeySet } from \"./keyset\";\nimport { ViewportRange } from \"./useScrollPosition\";\n\n/**\n * [ item key, total height before the item, next row index, CollectionItem<Item>]\n * e.g. first item: [0, 0, 1, data[0]]\n */\nexport type Row<Item> = [number, number, number, CollectionItem<Item>];\n\nconst byKey = ([k1]: Row<unknown>, [k2]: Row<unknown>) => k1 - k2;\n\nconst renderBuffer = 5;\n\ninterface VirtualizationHookProps<Item> {\n data: CollectionItem<Item>[];\n listItemGapSize?: number;\n listItemHeight: number;\n viewportRange: ViewportRange;\n}\n\nexport const useVirtualization = <Item>({\n data,\n listItemGapSize = 0,\n listItemHeight,\n viewportRange,\n}: VirtualizationHookProps<Item>): Row<Item>[] => {\n const keys = useMemo(() => new KeySet(0, 1), []);\n const rowHeightWithGap = listItemHeight + listItemGapSize;\n const lo = Math.max(0, viewportRange.from - renderBuffer);\n const hi = Math.min(data.length, viewportRange.to + renderBuffer);\n keys.reset(lo, hi);\n const rows = data\n .slice(lo, hi)\n .map(\n (value, idx) =>\n [\n keys.keyFor(idx + lo),\n (idx + lo) * rowHeightWithGap,\n idx + lo + 1,\n value,\n ] as Row<Item>\n )\n .sort(byKey);\n\n return rows;\n};\n", "export class KeySet {\n private keys: Map<number, number>;\n private free: number[];\n private nextKeyValue: number;\n\n constructor(from = 0, to = 0) {\n this.keys = new Map<number, number>();\n this.free = [];\n this.nextKeyValue = 0;\n this.reset(from, to);\n }\n\n next(): number {\n if (this.free.length) {\n return this.free.pop()!;\n } else {\n return this.nextKeyValue++;\n }\n }\n\n reset(from: number, to: number) {\n this.keys.forEach((keyValue, rowIndex) => {\n if (rowIndex < from || rowIndex >= to) {\n this.free.push(keyValue);\n this.keys.delete(rowIndex);\n }\n });\n\n const size = to - from;\n if (this.keys.size + this.free.length > size) {\n this.free.length = size - this.keys.size;\n }\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n if (!this.keys.has(rowIndex)) {\n const nextKeyValue = this.next();\n this.keys.set(rowIndex, nextKeyValue);\n }\n }\n }\n\n keyFor(rowIndex: number) {\n return this.keys.get(rowIndex);\n }\n}\n", "import cx from \"clsx\";\n\nimport \"./RadioIcon.css\";\n\nconst classBase = \"vuuRadioIcon\";\n\nexport const RadioIcon = ({ checked = false, ...htmlAttributes }) => (\n <span\n {...htmlAttributes}\n className={cx(classBase, { [`${classBase}-checked`]: checked })}\n />\n);\n", "import { useControlled } from \"@salt-ds/core\";\nimport { RefObject, useCallback, useMemo } from \"react\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { DropdownHookResult, DropdownHookProps } from \"./dropdownTypes\";\nimport {\n itemToString as defaultItemToString,\n SelectHandler,\n SelectionStrategy,\n isMultiSelection,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../common-hooks\";\n\nexport interface DropdownListHookProps<\n Item,\n S extends SelectionStrategy = \"default\"\n> extends Partial<Omit<DropdownHookProps, \"onKeyDown\">>,\n Omit<ListHookProps<Item, S>, \"containerRef\"> {\n itemToString?: (item: Item) => string;\n listRef: RefObject<HTMLDivElement>;\n}\n\nexport interface DropdownListHookResult<Item>\n extends Partial<ListHookResult<Item>>,\n Partial<DropdownHookResult> {\n onOpenChange: any;\n triggerLabel?: string;\n}\n\nexport const useDropdown = <Item, S extends SelectionStrategy>({\n collectionHook,\n defaultHighlightedIndex: defaultHighlightedIndexProp,\n defaultIsOpen,\n defaultSelected,\n highlightedIndex: highlightedIndexProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n listRef,\n onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected,\n selectionStrategy,\n}: DropdownListHookProps<Item, S>): DropdownListHookResult<Item> => {\n const isMultiSelect = isMultiSelection(selectionStrategy);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const handleSelectionChange = useCallback(\n (evt, selected) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n onOpenChange?.(false);\n }\n if (Array.isArray(selected)) {\n (onSelectionChange as MultiSelectionHandler<Item>)?.(\n evt,\n selected as Item[]\n );\n } else if (selected) {\n (onSelectionChange as SingleSelectionHandler<Item>)?.(\n evt,\n selected as Item\n );\n }\n },\n [isMultiSelect, onOpenChange, onSelectionChange, setIsOpen]\n );\n\n const handleSelect = useCallback<SelectHandler<Item>>(\n (evt, selected) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n onOpenChange?.(false);\n }\n onSelect?.(evt, selected);\n },\n [isMultiSelect, onOpenChange, onSelect, setIsOpen]\n );\n\n const listHook = useList<Item, S>({\n collectionHook,\n defaultHighlightedIndex:\n defaultHighlightedIndexProp ?? highlightedIndexProp === undefined\n ? 0\n : undefined,\n defaultSelected,\n label: \"DropDown\",\n onSelectionChange: handleSelectionChange,\n onSelect: handleSelect,\n containerRef: listRef,\n highlightedIndex: highlightedIndexProp,\n onHighlight,\n selected,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n onOpenChange?.(open);\n },\n [onOpenChange, setIsOpen]\n );\n\n const triggerLabel = useMemo(() => {\n if (Array.isArray(listHook.selected)) {\n const selectedItems = listHook.selected.map((id) =>\n collectionHook.itemById(id)\n );\n if (selectedItems.length === 0) {\n return undefined;\n } else if (selectedItems.length === 1) {\n const [item] = selectedItems;\n return item === null ? undefined : itemToString(item);\n } else {\n return `${selectedItems.length} items selected`;\n }\n }\n }, [collectionHook, itemToString, listHook.selected]);\n\n return {\n isOpen,\n onOpenChange: handleOpenChange,\n triggerLabel,\n ...listHook,\n };\n};\n", "import cx from \"clsx\";\nimport { HTMLAttributes } from \"react\";\n\nimport \"./ChevronIcon.css\";\n\nconst classBase = \"vuuChevronIcon\";\n\ntype Direction = \"up\" | \"down\" | \"left\" | \"right\";\n\ninterface ChevronProps extends HTMLAttributes<HTMLSpanElement> {\n direction: Direction;\n}\n\nexport const ChevronIcon = (props: ChevronProps) => {\n const { direction, ...htmlAttributes } = props;\n return <span {...htmlAttributes} className={cx(classBase, direction)} />;\n};\n", "import { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport { InputProps, useControlled } from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEventHandler,\n MouseEvent,\n RefObject,\n SyntheticEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n ComponentSelectionProps,\n hasSelection,\n isMultiSelection,\n itemToString as defaultItemToString,\n MultiSelectionHandler,\n MultiSelectionStrategy,\n SelectionStrategy,\n SelectionType,\n SingleSelectionHandler,\n} from \"../common-hooks\";\nimport {\n DropdownHookProps,\n DropdownHookResult,\n OpenChangeHandler,\n} from \"../dropdown\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { ComboBoxProps } from \"./ComboBox\";\n\nconst EnterOnly = [\"Enter\"];\nexport interface ComboboxHookProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends Partial<Omit<DropdownHookProps, \"id\" | \"onKeyDown\">>,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Pick<\n ComboBoxProps<Item>,\n | \"allowBackspaceClearsSelection\"\n | \"allowFreeText\"\n | \"defaultValue\"\n | \"initialHighlightedIndex\"\n | \"itemsToString\"\n | \"onDeselect\"\n | \"onSetSelectedText\"\n | \"value\"\n >,\n Omit<ComponentSelectionProps<Item, S>, \"onSelect\">,\n Omit<\n ListHookProps<Item, S>,\n \"containerRef\" | \"defaultSelected\" | \"onSelect\" | \"selected\"\n > {\n InputProps?: InputProps;\n ariaLabel?: string;\n id: string;\n itemCount: number;\n itemToString?: (item: Item) => string;\n listRef: RefObject<HTMLDivElement>;\n}\n\nexport interface ComboboxHookResult<Item, S extends SelectionStrategy>\n extends Pick<\n ListHookResult<Item>,\n \"focusVisible\" | \"highlightedIndex\" | \"listControlProps\" | \"listHandlers\"\n >,\n Partial<DropdownHookResult> {\n inputProps: InputProps;\n onOpenChange: OpenChangeHandler;\n selected?: S extends MultiSelectionStrategy ? Item[] : Item | null;\n}\n\nexport const useCombobox = <Item, S extends SelectionStrategy>({\n allowBackspaceClearsSelection,\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n onBlur,\n onFocus,\n onChange,\n onDeselect,\n onSelect,\n id,\n initialHighlightedIndex = -1,\n isOpen: isOpenProp,\n itemCount,\n itemsToString,\n itemToString = defaultItemToString as (item: Item) => string,\n listRef,\n onOpenChange,\n onSelectionChange,\n onSetSelectedText,\n selected: selectedProp,\n selectionKeys = EnterOnly,\n selectionStrategy,\n value: valueProp,\n InputProps: inputProps = {\n onBlur,\n onFocus,\n onChange,\n onSelect,\n },\n}: ComboboxHookProps<Item, S>): ComboboxHookResult<Item, S> => {\n const isMultiSelect = isMultiSelection(selectionStrategy);\n\n const { setFilterPattern } = collectionHook;\n const setHighlightedIndexRef = useRef<null | ((i: number) => void)>(null);\n // used to track multi selection\n const selectedRef = useRef<Item | null | Item[]>(isMultiSelect ? [] : null);\n // Input select events are used to identify user navigation within the input text.\n // The initial select event fired on focus is an exception that we ignore.\n const ignoreSelectOnFocus = useRef(true);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const [value, setValue] = useControlled({\n controlled: undefined,\n default: defaultValue ?? valueProp,\n name: \"ComboBox\",\n state: \"value\",\n });\n\n const [disableAriaActiveDescendant, setDisableAriaActiveDescendant] =\n useState(true);\n\n const highlightSelectedItem = useCallback((selected) => {\n if (Array.isArray(selected)) {\n // TODO multi selection\n } else if (selected == null) {\n setHighlightedIndexRef.current?.(-1);\n }\n }, []);\n\n const setTextValue = useCallback(\n (value: string, applyFilter = true) => {\n setValue(value);\n if (applyFilter) {\n setFilterPattern(value === \"\" ? undefined : value);\n }\n },\n [setFilterPattern, setValue]\n );\n\n const reconcileInput = useCallback(\n (selected?: SelectionType<Item, S>) => {\n let newValue = allowFreeText ? value ?? \"\" : \"\";\n if (Array.isArray(selected)) {\n if (selected.length === 1) {\n newValue = itemToString(selected[0]);\n } else if (selected.length > 1) {\n newValue = itemsToString?.(selected) || \"\";\n }\n } else if (selected) {\n newValue = itemToString(selected as Item);\n }\n if (newValue !== value) {\n setTextValue(newValue, !isMultiSelect);\n onSetSelectedText?.(newValue);\n return true;\n } else {\n return false;\n }\n },\n [\n allowFreeText,\n isMultiSelect,\n itemToString,\n itemsToString,\n onSetSelectedText,\n setTextValue,\n value,\n ]\n );\n\n const applySelection = useCallback(() => {\n const { current: selected } = selectedRef;\n if (reconcileInput(selected as any)) {\n if (selected) {\n // selected ref will be undefined if user has changed nothing\n if (Array.isArray(selected)) {\n (onSelectionChange as MultiSelectionHandler<Item>)?.(\n null,\n selected as Item[]\n );\n } else if (selected) {\n (onSelectionChange as SingleSelectionHandler<Item>)?.(\n null,\n selected as Item\n );\n }\n }\n }\n }, [onSelectionChange, reconcileInput]);\n\n const selectFreeTextInputValue = useCallback(() => {\n if (allowFreeText) {\n const text = value?.trim();\n const { current: selected } = selectedRef;\n if (text) {\n if (itemCount === 0 && text) {\n // TODO should this be a different event ?\n if (isMultiSelect) {\n (onSelectionChange as MultiSelectionHandler<string>)?.(null, [\n text,\n ]);\n } else {\n (onSelectionChange as SingleSelectionHandler<string>)?.(null, text);\n }\n selectedRef.current = null;\n return true;\n } else if (selected && !isMultiSelect) {\n if (\n selected &&\n !Array.isArray(selected) &&\n itemToString(selected) === text\n ) {\n // it has already been selected, nothing to do\n }\n }\n }\n }\n return false;\n }, [\n allowFreeText,\n value,\n itemCount,\n isMultiSelect,\n onSelectionChange,\n itemToString,\n ]);\n\n const handleOpenChange = useCallback<OpenChangeHandler>(\n (open, closeReason) => {\n // console.log(`openChange<${open}> ${label} ${closeReason}`);\n if (open && isMultiSelect) {\n setTextValue(\"\", false);\n }\n setIsOpen(open);\n onOpenChange?.(open, closeReason);\n if (!open && closeReason !== \"Escape\") {\n if (!selectFreeTextInputValue()) {\n applySelection();\n }\n }\n },\n [\n applySelection,\n isMultiSelect,\n onOpenChange,\n selectFreeTextInputValue,\n setIsOpen,\n setTextValue,\n ]\n );\n\n const handleSelectionChange = useCallback(\n (evt, selected) => {\n selectedRef.current = selected;\n if (!isMultiSelect) {\n handleOpenChange(false, \"select\");\n }\n },\n [handleOpenChange, isMultiSelect]\n );\n\n const handleKeyboardNavigation = useCallback(() => {\n setDisableAriaActiveDescendant(false);\n }, []);\n\n const {\n focusVisible,\n setHighlightedIndex,\n highlightedIndex,\n listControlProps,\n listHandlers: listHookListHandlers,\n selected,\n } = useList<Item, S>({\n collectionHook,\n containerRef: listRef,\n defaultHighlightedIndex: initialHighlightedIndex,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disableAriaActiveDescendant,\n disableHighlightOnFocus: true,\n disableTypeToSelect: true,\n label: \"combobox\",\n onKeyboardNavigation: handleKeyboardNavigation,\n onSelectionChange: handleSelectionChange,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionKeys,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n setHighlightedIndexRef.current = setHighlightedIndex;\n\n const { onClick: listHandlersOnClick } = listHookListHandlers;\n const handleListClick = useCallback(\n (evt: MouseEvent) => {\n document.getElementById(`${id}-input`)?.focus();\n listHandlersOnClick?.(evt);\n },\n [id, listHandlersOnClick]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const newValue = evt.target.value;\n setValue(newValue);\n\n if (newValue && newValue.trim().length) {\n setFilterPattern(newValue);\n } else {\n setFilterPattern(undefined);\n // onSelectionChange?.(evt, []);\n }\n\n setIsOpen(true);\n },\n [setFilterPattern, setIsOpen, setValue]\n );\n\n const handleInputKeyDown = useCallback<KeyboardEventHandler>(\n (e) => {\n if (e.key === \"Backspace\" && allowBackspaceClearsSelection) {\n selectedRef.current = null;\n onDeselect?.();\n }\n },\n [allowBackspaceClearsSelection, onDeselect]\n );\n\n const { onFocus: inputOnFocus = onFocus } = inputProps;\n const { onFocus: listOnFocus } = listControlProps;\n const handleInputFocus = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n setDisableAriaActiveDescendant(false);\n listOnFocus?.(evt);\n inputOnFocus?.(evt);\n },\n [inputOnFocus, listOnFocus]\n );\n\n const listFocused = useCallback(\n (evt: FocusEvent) => {\n const element = evt.relatedTarget as HTMLElement;\n return element?.id === `${id}-list`;\n },\n [id]\n );\n\n const { onBlur: inputOnBlur = onBlur } = inputProps;\n const { onBlur: listOnBlur } = listControlProps;\n // TODO do we need this check at all, given that DropdownV=BAse will close dropdown\n const handleInputBlur = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n if (listFocused(evt)) {\n // nothing doing\n } else {\n listOnBlur?.(evt);\n inputOnBlur?.(evt);\n setDisableAriaActiveDescendant(true);\n ignoreSelectOnFocus.current = true;\n }\n },\n [listFocused, listOnBlur, inputOnBlur]\n );\n\n const { onSelect: inputOnSelect } = inputProps;\n const handleInputSelect = useCallback(\n (event: SyntheticEvent<HTMLDivElement>) => {\n if (ignoreSelectOnFocus.current) {\n ignoreSelectOnFocus.current = false;\n } else {\n setDisableAriaActiveDescendant(true);\n }\n inputOnSelect?.(event);\n },\n [inputOnSelect]\n );\n\n // If we have selected item(s) and we filter down the list by typing,\n // the position of selected items within the list may be changing.\n // Relocate highlighted index to the selection whenever this happens,\n // so if we resume keyboard navigation, navigation begins from the selected\n // item.\n useLayoutEffectSkipFirst(() => {\n if (hasSelection(selected)) {\n highlightSelectedItem(selected);\n } else {\n setHighlightedIndex(initialHighlightedIndex);\n }\n // TODO may need to scrollIntoView\n // if (itemCount === 0) {\n // setIsOpen(false);\n // }\n }, [\n highlightSelectedItem,\n itemCount,\n initialHighlightedIndex,\n selected,\n setHighlightedIndex,\n setIsOpen,\n ]);\n\n // const activeDescendant: string | undefined = selectionChanged\n // ? \"\"\n // : undefined;\n const mergedInputProps = {\n ...inputProps.inputProps,\n // \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n autoComplete: \"off\",\n onKeyDown: handleInputKeyDown,\n };\n\n return {\n focusVisible,\n highlightedIndex,\n isOpen,\n onOpenChange: handleOpenChange,\n inputProps: {\n ...inputProps,\n // \"aria-activedescendant\": activeDescendant,\n id: `${id}-input`,\n inputProps: mergedInputProps,\n onChange: handleInputChange,\n onSelect: handleInputSelect,\n role: \"combobox\",\n value,\n },\n listControlProps: {\n ...listControlProps,\n onBlur: handleInputBlur,\n onFocus: handleInputFocus,\n },\n listHandlers: {\n ...listHookListHandlers,\n onClick: handleListClick,\n },\n selected: selectedRef.current as SelectionType<Item, S>,\n };\n};\n", "import { Button, ButtonProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport type { CommitResponse } from \"@vuu-ui/vuu-table-types\";\nimport type {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ForwardedRef, forwardRef, SyntheticEvent, useCallback } from \"react\";\n\nconst classBase = \"vuuCycleStateButton\";\n\nexport interface CycleStateButtonProps extends ButtonProps {\n onCommit: (evt: SyntheticEvent, value: VuuRowDataItemType) => CommitResponse;\n values: string[];\n value: string;\n}\n\nconst getNextValue = (value: string, valueList: string[]) => {\n const index = valueList.indexOf(value.toUpperCase());\n if (index === valueList.length - 1) {\n return valueList[0];\n } else {\n return valueList[index + 1];\n }\n};\n\nexport const CycleStateButton = forwardRef(function CycleStateButton(\n {\n className,\n onCommit,\n value = \"\",\n values,\n ...buttonProps\n }: CycleStateButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const handleClick = useCallback(\n (evt: SyntheticEvent<HTMLButtonElement>) => {\n const nextValue = getNextValue(value, values);\n onCommit(evt, nextValue as VuuColumnDataType).then((response) => {\n if (response !== true) {\n console.error(response);\n }\n });\n },\n [onCommit, value, values]\n );\n\n return (\n <Button\n {...buttonProps}\n className={cx(\n classBase,\n className,\n `${classBase}-${value.toLowerCase()}`\n )}\n onClick={handleClick}\n ref={forwardedRef}\n >\n {value}\n </Button>\n );\n});\n", "import { EditValidationRule } from \"@vuu-ui/vuu-table-types\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getEditRuleValidator } from \"@vuu-ui/vuu-utils\";\n\nexport type ClientSideValidationChecker = (\n value?: VuuRowDataItemType\n) => string | false | undefined;\n\nexport const buildValidationChecker =\n (rules: EditValidationRule[]): ClientSideValidationChecker =>\n (value?: VuuRowDataItemType) =>\n applyRules(rules, value);\n\nfunction applyRules(\n rules: EditValidationRule[],\n value?: VuuRowDataItemType\n): string | false | undefined {\n let result: false | string | undefined = undefined;\n for (const rule of rules) {\n const editRuleValidator = getEditRuleValidator(rule.name);\n if (editRuleValidator) {\n const ruleResult = editRuleValidator(rule, value);\n switch (ruleResult) {\n case true:\n break;\n case false:\n if (result === undefined) {\n result = false;\n }\n break;\n default:\n if (result === undefined || result === false) {\n result = ruleResult;\n } else {\n result += `::${ruleResult}`;\n }\n }\n } else {\n throw Error(\n `editable-utils applyRules, no validator registered for rule '${rule.name}'`\n );\n }\n }\n\n return result;\n}\n", "import { DataItemCommitHandler } from \"@vuu-ui/vuu-table-types\";\nimport { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { dispatchCustomEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEventHandler,\n FormEventHandler,\n KeyboardEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { ClientSideValidationChecker } from \"./editable-utils\";\n\nexport const WarnCommit = (): Promise<true> => {\n console.warn(\n \"onCommit handler has not been provided to InputCell cell renderer\"\n );\n return Promise.resolve(true);\n};\n\nexport interface EditableTextHookProps<\n T extends VuuRowDataItemType = VuuRowDataItemType\n> {\n clientSideEditValidationCheck?: ClientSideValidationChecker;\n initialValue?: T;\n onCommit: DataItemCommitHandler<T>;\n type?: \"string\" | \"number\" | \"boolean\";\n}\n\nexport const useEditableText = <T extends string | number = string>({\n clientSideEditValidationCheck,\n initialValue,\n onCommit,\n type,\n}: EditableTextHookProps<T>) => {\n const [message, setMessage] = useState<string | undefined>();\n const [value, setValue] = useState<T | undefined>(initialValue);\n const initialValueRef = useRef<T | undefined>(initialValue);\n const isDirtyRef = useRef(false);\n const hasCommittedRef = useRef(false);\n\n useLayoutEffectSkipFirst(() => {\n //TODO this isn't right, review the state we're using\n setValue(initialValue);\n }, [initialValue]);\n\n const commit = useCallback(\n (target: HTMLElement) => {\n if (isDirtyRef.current) {\n hasCommittedRef.current = true;\n const warningMessage = clientSideEditValidationCheck?.(value);\n if (warningMessage) {\n setMessage(warningMessage);\n } else {\n setMessage(undefined);\n console.log(`commit value ${value}`);\n onCommit(value as T).then((response) => {\n if (response === true) {\n isDirtyRef.current = false;\n dispatchCustomEvent(target, \"vuu-commit\");\n } else {\n setMessage(response);\n }\n });\n }\n } else {\n // why, if not dirty ?\n dispatchCustomEvent(target, \"vuu-commit\");\n hasCommittedRef.current = false;\n }\n },\n [clientSideEditValidationCheck, onCommit, value]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => {\n if (evt.key === \"Enter\") {\n commit(evt.target as HTMLElement);\n } else if (\n evt.key === \"ArrowRight\" ||\n evt.key === \"ArrowLeft\" ||\n evt.key === \"ArrowUp\" ||\n evt.key === \"ArrowDown\"\n ) {\n evt.stopPropagation();\n } else if (evt.key === \"Escape\") {\n if (isDirtyRef.current) {\n isDirtyRef.current = false;\n setMessage(undefined);\n setValue(initialValueRef.current);\n }\n }\n },\n [commit]\n );\n\n const handleBlur = useCallback<FocusEventHandler<HTMLElement>>(\n (evt) => {\n if (isDirtyRef.current) {\n commit(evt.target as HTMLElement);\n }\n },\n [commit]\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n let typedValue: VuuRowDataItemType = (evt.target as HTMLInputElement)\n .value;\n if (type === \"number\" && !isNaN(parseFloat(typedValue))) {\n typedValue = parseFloat(typedValue);\n }\n isDirtyRef.current = value !== initialValueRef.current;\n setValue(typedValue as T);\n if (hasCommittedRef.current && value !== undefined) {\n const warningMessage = clientSideEditValidationCheck?.(value);\n if (warningMessage !== message && warningMessage !== false) {\n setMessage(warningMessage);\n }\n }\n },\n [clientSideEditValidationCheck, message, type, value]\n );\n\n return {\n inputProps: {\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n },\n onChange: handleChange,\n value: value ?? \"\",\n warningMessage: message,\n };\n};\n", "import cx from \"clsx\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useLayoutEffect,\n forwardRef,\n ForwardedRef,\n ReactElement,\n useRef,\n HTMLAttributes,\n} from \"react\";\nimport { Input, useControlled } from \"@salt-ds/core\";\n\nimport \"./EditableLabel.css\";\n\nconst classBase = \"vuuEditableLabel\";\n\nexport interface EditableLabelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n className?: string;\n defaultEditing?: boolean;\n defaultValue?: string;\n editing?: boolean;\n onEnterEditMode: () => void;\n onChange?: (value: string) => void;\n onExitEditMode: (\n originalLabel: string | undefined,\n editedLabel: string | undefined,\n allowDeactivation?: boolean,\n editCancelled?: boolean\n ) => void;\n defaultIsEditing?: boolean;\n value?: string;\n}\n\nexport const EditableLabel = forwardRef(function EditableLabel(\n {\n className: classNameProp,\n defaultEditing,\n defaultValue,\n editing: editingProp,\n onChange,\n onEnterEditMode,\n onExitEditMode,\n value: valueProp,\n ...restProps\n }: EditableLabelProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n): ReactElement<EditableLabelProps> {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const editingRef = useRef<boolean>(false);\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? \"\",\n name: \"EditableLabel\",\n state: \"value\",\n });\n\n const [editing, _setEditing] = useControlled({\n controlled: editingProp,\n default: defaultEditing ?? false,\n name: \"EditableLabel\",\n state: \"editing\",\n });\n\n const setEditing = useCallback(\n (value: boolean) => {\n _setEditing((editingRef.current = value));\n },\n [_setEditing]\n );\n\n const initialValue = useRef(value);\n\n useLayoutEffect(() => {\n if (editing) {\n if (inputRef.current !== null) {\n inputRef.current.select();\n inputRef.current.focus();\n }\n }\n }, [editing, inputRef]);\n\n const enterEditMode = useCallback(() => {\n setEditing(true);\n // ignoreBlur.current = false;\n onEnterEditMode && onEnterEditMode();\n }, [onEnterEditMode, setEditing]);\n\n const exitEditMode = ({\n cancelEdit = false,\n allowDeactivation = false,\n } = {}) => {\n setEditing(false);\n const originalValue = initialValue.current;\n if (originalValue !== value) {\n if (cancelEdit) {\n setValue(originalValue);\n } else {\n initialValue.current = value;\n }\n }\n onExitEditMode &&\n onExitEditMode(originalValue, value, allowDeactivation, cancelEdit);\n };\n\n const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n const { value } = evt.target;\n setValue(value);\n onChange && onChange(value);\n };\n\n const handleDoubleClick = () => {\n enterEditMode();\n };\n\n // We need the ref here as the blur fires before setEditing has taken effect,\n // so we get a double call to exitEditMode if edit is cancelled.\n const handleBlur = () => {\n if (editingRef.current) {\n exitEditMode({ allowDeactivation: true });\n }\n };\n\n const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n if (editing && evt.key === \"Enter\") {\n evt.stopPropagation();\n // we are likely to lose focus as a consequence of user response\n // to exitEdit transition, don't want it to trigger another\n //shouldn't we call setEditing here in case we are in uncontrolled mode ?\n exitEditMode();\n } else if (evt.key === \"ArrowRight\" || evt.key === \"ArrowLeft\") {\n evt.stopPropagation();\n } else if (evt.key === \"Escape\") {\n exitEditMode({ cancelEdit: true });\n }\n };\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-editing`]: editing,\n });\n return (\n <div\n {...restProps}\n className={className}\n onDoubleClick={handleDoubleClick}\n data-text={value}\n ref={forwardedRef}\n >\n {editing ? (\n <Input\n inputProps={{ className: `${classBase}-input`, spellCheck: false }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n inputRef={inputRef}\n style={{ padding: 0 }}\n textAlign=\"left\"\n variant=\"secondary\"\n />\n ) : (\n <span className={`${classBase}-label`}>{value}</span>\n )}\n </div>\n );\n});\n", "import cx from \"clsx\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport { VuuInput, VuuInputProps } from \"../vuu-input\";\n\nimport \"./ExpandoInput.css\";\n\nconst classBase = \"vuuExpandoInput\";\n\nconst noop = () => undefined;\n\nexport interface ExpandoInputProps extends Omit<VuuInputProps, \"onCommit\"> {\n onCommit?: VuuInputProps[\"onCommit\"];\n}\n\nexport const ExpandoInput = forwardRef(function ExpandoInput(\n {\n className: classNameProp,\n errorMessage,\n value,\n inputProps,\n onCommit = noop,\n ...props\n }: ExpandoInputProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n className={cx(classBase, classNameProp, {\n [`${classBase}-error`]: errorMessage,\n })}\n data-text={value}\n >\n <VuuInput\n {...props}\n errorMessage={errorMessage}\n inputProps={{ ...inputProps, className: `${classBase}-input` }}\n onCommit={onCommit}\n ref={forwardedRef}\n style={{ padding: 0 }}\n textAlign=\"left\"\n value={value}\n variant=\"secondary\"\n />\n </div>\n );\n});\n", "import { Tooltip, useTooltip } from \"@vuu-ui/vuu-popups\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { isValidNumber, useId } from \"@vuu-ui/vuu-utils\";\nimport { Input, InputProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n SyntheticEvent,\n useCallback,\n} from \"react\";\n\nimport \"./VuuInput.css\";\n\nconst classBase = \"vuuInput\";\n\nconst constantInputProps = {\n autoComplete: \"off\",\n};\n\nexport type Commithandler<T extends VuuRowDataItemType = string> = (\n evt: SyntheticEvent<HTMLInputElement>,\n value: T\n) => void;\nexport interface VuuInputProps<T extends VuuRowDataItemType = string>\n extends InputProps {\n errorMessage?: string;\n onCommit: Commithandler<T>;\n type?: T;\n}\n\n/**\n * A variant of Salt Input that provides a commit callback prop,\n * TODO along with cancel behaviour ?\n */\nexport const VuuInput = forwardRef(function VuuInput<\n T extends VuuRowDataItemType = string\n>(\n {\n className,\n errorMessage,\n id: idProp,\n onCommit,\n onKeyDown,\n type,\n ...props\n }: VuuInputProps<T>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const { anchorProps, tooltipProps } = useTooltip({\n id,\n tooltipContent: errorMessage,\n });\n\n const commitValue = useCallback<Commithandler<string>>(\n (evt, value) => {\n if (type === \"number\") {\n const numericValue = parseFloat(value);\n if (isValidNumber(numericValue)) {\n onCommit(evt, numericValue as T);\n } else {\n //TODO add validation logic\n throw Error(\"Invalid value\");\n }\n } else if (type === \"boolean\") {\n onCommit(evt, Boolean(value) as T);\n } else {\n onCommit(evt, value as T);\n }\n },\n [onCommit, type]\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (evt) => {\n if (evt.key === \"Enter\") {\n evt.preventDefault();\n evt.stopPropagation();\n const { value } = evt.target as HTMLInputElement;\n commitValue(evt, value);\n }\n onKeyDown?.(evt);\n },\n [commitValue, onKeyDown]\n );\n\n const handleBlur = useCallback<FocusEventHandler<HTMLInputElement>>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n commitValue(evt, value);\n },\n [commitValue]\n );\n\n const endAdornment = errorMessage ? (\n <span\n {...anchorProps}\n className={`${classBase}-errorIcon`}\n data-icon=\"error\"\n />\n ) : undefined;\n\n return (\n <>\n <Input\n {...props}\n endAdornment={endAdornment}\n id={id}\n inputProps={{\n ...constantInputProps,\n ...props.inputProps,\n }}\n className={cx(classBase, className, {\n [`${classBase}-errror`]: errorMessage,\n })}\n onBlur={handleBlur}\n ref={forwardedRef}\n onKeyDown={handleKeyDown}\n />\n {tooltipProps ? <Tooltip {...tooltipProps} status=\"error\" /> : null}\n </>\n );\n}) as <T extends VuuRowDataItemType = string>(\n props: VuuInputProps<T> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<VuuInputProps<T>>;\n", "import { CheckboxIcon } from \"../list/CheckboxIcon\";\n\nimport \"./Checkbox.css\";\n\ntype CheckboxProps = {\n onToggle: () => void;\n className?: string;\n checked: boolean;\n label: string;\n};\n\nexport const Checkbox = (props: CheckboxProps): JSX.Element => {\n const { onToggle, checked, label } = props;\n\n return (\n <div\n className=\"vuuCheckbox\"\n onClick={onToggle}\n onKeyUp={(e) => e.key === \" \" && onToggle()}\n >\n <CheckboxIcon tabIndex={0} checked={checked} />\n {label}\n </div>\n );\n};\n", "import { RadioIcon } from \"@vuu-ui/vuu-ui-controls\";\n\nimport \"./RadioButton.css\";\n\ntype RadioButtonProps = {\n onClick: () => void;\n checked: boolean;\n label: string;\n groupName: string;\n};\n\nexport const RadioButton = (props: RadioButtonProps): JSX.Element => {\n const { onClick, checked, label, groupName } = props;\n\n return (\n <div className=\"vuuRadioButton\" onClick={onClick}>\n <div className=\"radio\">\n <input type=\"radio\" name={groupName} />\n <RadioIcon checked={checked} />\n </div>\n {label}\n </div>\n );\n};\n", "import { DataSourceRow, TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { Table, TableProps, TableRowSelectHandler } from \"@vuu-ui/vuu-table\";\nimport { ColumnMap, useId } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, useMemo } from \"react\";\nimport { DropdownBase, OpenChangeHandler } from \"../dropdown\";\nimport { SearchCell } from \"./SearchCell\";\nimport { useInstrumentPicker } from \"./useInstrumentPicker\";\n\nimport \"./InstrumentPicker.css\";\n\nconst classBase = \"vuuInstrumentPicker\";\n\nif (typeof SearchCell !== \"function\") {\n console.warn(\"Instrument Picker: SearchCell module not loaded \");\n}\n\nexport interface InstrumentPickerProps\n extends Omit<HTMLAttributes<HTMLElement>, \"onSelect\"> {\n TableProps: Pick<TableProps, \"config\" | \"dataSource\">;\n columnMap: ColumnMap;\n disabled?: boolean;\n /**\n * Used to form the display value to render in input following selection. If\n * not provided, default will be the values from rendered columns.\n *\n * @param row DataSourceRow\n * @returns string\n */\n itemToString?: (row: DataSourceRow) => string;\n onClose?: () => void;\n onOpenChange?: OpenChangeHandler;\n onSelect: TableRowSelectHandler;\n schema: TableSchema;\n searchColumns: string[];\n width?: number;\n}\n\nexport const InstrumentPicker = forwardRef(function InstrumentPicker(\n {\n TableProps: { dataSource, ...TableProps },\n className,\n columnMap,\n disabled,\n id: idProp,\n itemToString,\n onOpenChange: onOpenChangeProp,\n onSelect,\n schema,\n searchColumns,\n width,\n ...htmlAttributes\n }: InstrumentPickerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n\n const {\n highlightedIndex,\n inputProps,\n isOpen,\n onOpenChange,\n tableHandlers,\n tableRef,\n value,\n } = useInstrumentPicker({\n columnMap,\n columns: TableProps.config.columns,\n dataSource,\n itemToString,\n onOpenChange: onOpenChangeProp,\n onSelect,\n searchColumns,\n });\n\n const endAdornment = useMemo(() => <span data-icon=\"chevron-down\" />, []);\n\n const tableProps = {\n ...TableProps,\n config: {\n ...TableProps.config,\n zebraStripes: false,\n },\n };\n\n return (\n <DropdownBase\n {...htmlAttributes}\n fullWidth\n id={id}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n openOnFocus\n placement=\"below-full-width\"\n ref={forwardedRef}\n width={width}\n >\n <Input\n {...inputProps}\n disabled={disabled}\n endAdornment={endAdornment}\n value={value}\n />\n\n <Table\n rowHeight={25}\n renderBufferSize={100}\n {...tableProps}\n {...tableHandlers}\n className={`${classBase}-list`}\n height={200}\n highlightedIndex={highlightedIndex}\n dataSource={dataSource}\n navigationStyle=\"row\"\n ref={tableRef}\n showColumnHeaders={false}\n />\n </DropdownBase>\n );\n});\n", "import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\n\nimport \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n", "import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n TableRowSelectHandler,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { ChangeEvent, useCallback, useMemo, useState } from \"react\";\nimport { useControlled } from \"../common-hooks\";\nimport { OpenChangeHandler } from \"../dropdown\";\nimport { InstrumentPickerProps } from \"./InstrumentPicker\";\n\nexport interface InstrumentPickerHookProps\n extends Pick<\n InstrumentPickerProps,\n \"columnMap\" | \"itemToString\" | \"onOpenChange\" | \"onSelect\" | \"searchColumns\"\n > {\n columns: ColumnDescriptor[];\n dataSource: DataSource;\n defaultIsOpen?: boolean;\n isOpen?: boolean;\n}\n\nconst defaultItemToString =\n (columns: ColumnDescriptor[], columnMap: ColumnMap) =>\n (row: DataSourceRow) => {\n return columns.map(({ name }) => row[columnMap[name]]).join(\" \");\n };\n\nexport const useInstrumentPicker = ({\n columnMap,\n columns,\n dataSource,\n defaultIsOpen,\n isOpen: isOpenProp,\n itemToString = defaultItemToString(columns, columnMap),\n onOpenChange,\n onSelect,\n searchColumns,\n}: InstrumentPickerHookProps) => {\n const [value, setValue] = useState(\"\");\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const { highlightedIndexRef, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource.size);\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns]\n );\n\n const handleOpenChange = useCallback<OpenChangeHandler>(\n (open, closeReason) => {\n setIsOpen(open);\n onOpenChange?.(open, closeReason);\n },\n [onOpenChange, setIsOpen]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { value } = evt.target;\n setValue(value);\n\n if (value && value.trim().length) {\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n dataSource.filter = {\n filter,\n };\n } else {\n dataSource.filter = {\n filter: \"\",\n };\n }\n\n setIsOpen(true);\n },\n [baseFilterPattern, dataSource, setIsOpen]\n );\n\n const handleSelectRow = useCallback<TableRowSelectHandler>(\n (row) => {\n const value = itemToString(row);\n setValue(value);\n onSelect(row);\n handleOpenChange?.(false, \"select\");\n },\n [handleOpenChange, itemToString, onSelect]\n );\n\n const inputProps = {\n inputProps: {\n autoComplete: \"off\",\n onKeyDown,\n },\n onChange: handleInputChange,\n };\n const tableHandlers = {\n onSelect: handleSelectRow,\n };\n\n return {\n highlightedIndex: highlightedIndexRef.current,\n inputProps,\n isOpen,\n onOpenChange: handleOpenChange,\n tableHandlers,\n tableRef,\n value,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-layout\";\n\nimport {\n Table,\n TableProps,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { Input } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, RefCallback, useCallback } from \"react\";\nimport { SearchCell } from \"./SearchCell\";\n\nimport \"./InstrumentSearch.css\";\nimport { useInstrumentSearch } from \"./useInstrumentSearch\";\n\nconst classBase = \"vuuInstrumentSearch\";\n\nif (typeof SearchCell !== \"function\") {\n console.warn(\"Instrument Search: SearchCell module not loaded \");\n}\n\nconst defaultTableConfig: TableConfig = {\n columns: [\n { name: \"bbg\", hidden: true },\n {\n name: \"description\",\n width: 200,\n type: {\n name: \"string\",\n renderer: {\n name: \"search-cell\",\n },\n },\n },\n ],\n rowSeparators: true,\n};\n\nexport interface InstrumentSearchProps extends HTMLAttributes<HTMLDivElement> {\n TableProps?: Partial<TableProps>;\n autoFocus?: boolean;\n dataSource: DataSource;\n placeHolder?: string;\n searchColumns?: string[];\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\nexport const InstrumentSearch = ({\n TableProps,\n autoFocus = false,\n className,\n dataSource: dataSourceProp,\n placeHolder,\n searchColumns,\n ...htmlAttributes\n}: InstrumentSearchProps) => {\n const { dataSource, onChange, searchState } = useInstrumentSearch({\n dataSource: dataSourceProp,\n searchColumns,\n });\n\n const { highlightedIndexRef, onHighlight, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource?.size ?? 0);\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-inputField`}>\n <Input\n inputProps={{ onKeyDown }}\n endAdornment={searchIcon}\n placeholder={placeHolder}\n ref={autoFocus ? searchCallbackRef : null}\n value={searchState.searchText}\n onChange={onChange}\n />\n </div>\n\n {dataSource ? (\n <Table\n disableFocus\n id=\"instrument-search\"\n rowHeight={25}\n config={defaultTableConfig}\n highlightedIndex={highlightedIndexRef.current}\n renderBufferSize={100}\n {...TableProps}\n className={`${classBase}-list`}\n dataSource={dataSource}\n navigationStyle=\"row\"\n onHighlight={onHighlight}\n ref={tableRef}\n showColumnHeaders={false}\n />\n ) : null}\n </div>\n );\n};\n\nregisterComponent?.(\"InstrumentSearch\", InstrumentSearch, \"view\");\n", "import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\n\nimport \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n", "import { FormEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { InstrumentSearchProps } from \"./InstrumentSearch\";\n\nexport interface InstrumentSearchHookProps\n extends Pick<InstrumentSearchProps, \"dataSource\" | \"searchColumns\"> {\n label?: string;\n}\n\nexport const useInstrumentSearch = ({\n dataSource,\n searchColumns = [\"description\"],\n}: InstrumentSearchHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n filter: string;\n }>({ searchText: \"\", filter: \"\" });\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns]\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n setSearchState({\n searchText: value,\n filter,\n });\n if (dataSource) {\n dataSource.filter = {\n filter,\n };\n }\n },\n [baseFilterPattern, dataSource]\n );\n\n return {\n dataSource,\n onChange: handleChange,\n searchState,\n };\n};\n", "import {\n getMovingValueDirection,\n isValidNumber,\n numericFormatter,\n valueChangeDirection,\n} from \"@vuu-ui/vuu-utils\";\nimport { HTMLAttributes, memo, useMemo, useRef } from \"react\";\nimport cx from \"clsx\";\n\nconst classBase = \"vuuPriceTicker\";\n\nimport \"./PriceTicker.css\";\n\nconst getValueFormatter = (decimals: number) =>\n numericFormatter({\n type: {\n name: \"number\",\n formatting: {\n decimals,\n zeroPad: true,\n },\n },\n });\n\ntype State = [number | undefined, valueChangeDirection | undefined];\nconst INITIAL_VALUE: State = [undefined, undefined];\n\nexport interface PriceTickerProps extends HTMLAttributes<HTMLDivElement> {\n decimals?: number;\n price?: number;\n showArrow?: boolean;\n}\n\nexport const PriceTicker = memo(\n ({\n className,\n decimals = 2,\n price,\n showArrow,\n ...htmlAttributes\n }: PriceTickerProps) => {\n const ref = useRef<State>(INITIAL_VALUE);\n const [prevValue, prevDirection] = ref.current;\n const formatNumber = useMemo(() => getValueFormatter(decimals), [decimals]);\n\n const direction = isValidNumber(prevValue)\n ? getMovingValueDirection(price, prevDirection, prevValue, decimals)\n : \"\";\n\n ref.current = [price, direction];\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className, direction)}>\n {formatNumber(price)}\n {showArrow ? <span data-icon=\"price-arrow\" /> : null}\n </div>\n );\n }\n);\nPriceTicker.displayName = \"PriceTicker\";\n", "import { asReactElements, OverflowContainer } from \"@vuu-ui/vuu-layout\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { Button } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport React, { useMemo, useRef } from \"react\";\nimport { TabProps, TabstripProps } from \"./TabsTypes\";\nimport { useTabstrip } from \"./useTabstrip\";\n\nimport \"./Tabstrip.css\";\n\nconst classBase = \"vuuTabstrip\";\n\nexport const Tabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowAddTab,\n allowCloseTab,\n allowDragDrop = false,\n allowRenameTab = false,\n animateSelectionThumb = false,\n children,\n className: classNameProp,\n id: idProp,\n keyBoardActivation = \"manual\",\n location,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation = \"horizontal\",\n showTabMenuButton,\n style: styleProp,\n tabClassName,\n ...htmlAttributes\n}: TabstripProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const {\n activeTabIndex,\n focusVisible,\n containerStyle,\n draggedItemIndex,\n onClickAddTab,\n tabProps,\n ...tabstripHook\n } = useTabstrip({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef: rootRef,\n keyBoardActivation,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n });\n const id = useId(idProp);\n const className = cx(classBase, `${classBase}-${orientation}`, classNameProp);\n const style =\n styleProp || containerStyle\n ? {\n ...styleProp,\n ...containerStyle,\n }\n : undefined;\n\n const tabs = useMemo(\n () =>\n asReactElements(children)\n .map((child, index) => {\n const {\n id: tabId = `${id}-tab-${index}`,\n className,\n closeable = allowCloseTab,\n editable = allowRenameTab,\n location: tabLocation,\n showMenuButton = showTabMenuButton,\n } = child.props;\n const selected = index === activeTabIndex;\n return React.cloneElement(child, {\n ...tabProps,\n ...tabstripHook.navigationProps,\n className: cx(className, tabClassName),\n closeable,\n \"data-overflow-priority\": selected ? \"1\" : undefined,\n dragging: draggedItemIndex === index,\n editable,\n focusVisible: focusVisible === index,\n id: tabId,\n index,\n key: index,\n location: cx(location, tabLocation),\n selected,\n showMenuButton,\n tabIndex: selected ? 0 : -1,\n } as Partial<TabProps>);\n })\n .concat(\n allowAddTab ? (\n <Button\n {...tabstripHook.navigationProps}\n aria-label=\"Create Tab\"\n className={`${classBase}-addTabButton`}\n data-icon=\"add\"\n data-overflow-priority=\"1\"\n key=\"addButton\"\n onClick={onClickAddTab}\n variant=\"secondary\"\n tabIndex={-1}\n />\n ) : (\n []\n )\n ),\n [\n children,\n allowAddTab,\n tabstripHook.navigationProps,\n onClickAddTab,\n id,\n allowCloseTab,\n allowRenameTab,\n showTabMenuButton,\n activeTabIndex,\n tabProps,\n tabClassName,\n draggedItemIndex,\n focusVisible,\n location,\n ]\n );\n\n return (\n <>\n <OverflowContainer\n {...htmlAttributes}\n {...tabstripHook.containerProps}\n className={className}\n height={29}\n id={id}\n orientation={orientation}\n overflowIcon=\"more-horiz\"\n ref={rootRef}\n style={style}\n role=\"tablist\"\n >\n {tabs}\n </OverflowContainer>\n {tabstripHook.draggable}\n </>\n );\n};\n", "import type { MenuActionHandler } from \"@vuu-ui/vuu-data-types\";\nimport type { OverflowItem } from \"@vuu-ui/vuu-layout\";\nimport { dispatchMouseEvent, orientationType } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\nimport { useDragDropNext as useDragDrop } from \"../drag-drop\";\nimport { isTabMenuOptions } from \"./TabMenuOptions\";\nimport { getIndexOfSelectedTab } from \"./tabstrip-dom-utils\";\nimport { useAnimatedSelectionThumb } from \"./useAnimatedSelectionThumb\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { useSelection } from \"./useSelection\";\n\nexport type ExitEditModeHandler = (\n originalValue: string,\n editedValue: string,\n allowDeactivation: boolean,\n tabIndex: number\n) => void;\n\nexport interface TabstripHookProps {\n activeTabIndex: number;\n allowDragDrop: boolean;\n animateSelectionThumb: boolean;\n containerRef: RefObject<HTMLElement>;\n onActiveChange?: (tabIndex: number) => void;\n onAddTab?: () => void;\n onCloseTab?: (tabIndex: number, newActiveTabIndex: number) => void;\n onExitEditMode?: ExitEditModeHandler;\n onMoveTab?: (fromIndex: number, toIndex: number) => void;\n orientation: orientationType;\n keyBoardActivation?: \"manual\" | \"automatic\";\n}\n\nconst editKeys = new Set([\"Enter\", \" \"]);\nconst isEditKey = (key: string) => editKeys.has(key);\n\nconst getElementWithIndex = (container: HTMLElement | null, index: number) => {\n if (container) {\n return container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement;\n } else {\n return null;\n }\n};\n\nexport const useTabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n keyBoardActivation,\n}: TabstripHookProps) => {\n const lastSelection = useRef(activeTabIndexProp);\n\n const {\n focusTab: keyboardHookFocusTab,\n highlightedIdx,\n onClick: keyboardHookHandleClick,\n onKeyDown: keyboardHookHandleKeyDown,\n setHighlightedIdx: keyboardHookSetHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation({\n containerRef,\n keyBoardActivation,\n orientation,\n selectedIndex: lastSelection.current,\n });\n\n const {\n activateTab: selectionHookActivateTab,\n onClick: selectionHookHandleClick,\n onKeyDown: selectionHookHandleKeyDown,\n selected: selectionHookSelected,\n } = useSelection({\n highlightedIdx,\n onSelectionChange: onActiveChange,\n selected: activeTabIndexProp,\n });\n // We need this on reEntry for navigation hook to handle focus and for dragDropHook\n // to re-apply selection after drag drop. For some reason the value is stale if we\n // directly use selectionHookSelected within the drag, even though all dependencies\n //appear to be correctly declared.\n lastSelection.current = selectionHookSelected;\n\n const { containerStyle, resumeAnimation, suspendAnimation } =\n useAnimatedSelectionThumb(\n containerRef,\n animateSelectionThumb ? selectionHookSelected : -1,\n orientation\n );\n\n const handleDrop = useCallback(\n (fromIndex: number, toIndex: number) => {\n const { current: selected } = lastSelection;\n console.log(\n `useTabstrip handleDrop ${fromIndex} - ${toIndex} ${selected}`\n );\n onMoveTab?.(fromIndex, toIndex);\n let nextSelectedTab = -1;\n if (toIndex !== -1) {\n if (selected === fromIndex) {\n nextSelectedTab = toIndex;\n } else if (fromIndex > selected && toIndex <= selected) {\n nextSelectedTab = selected + 1;\n } else if (fromIndex < selected && toIndex >= selected) {\n nextSelectedTab = selected - 1;\n }\n if (nextSelectedTab !== -1) {\n suspendAnimation();\n selectionHookActivateTab(nextSelectedTab);\n requestAnimationFrame(resumeAnimation);\n }\n keyboardHookFocusTab(toIndex, false, false, 350);\n }\n },\n [\n keyboardHookFocusTab,\n onMoveTab,\n resumeAnimation,\n selectionHookActivateTab,\n suspendAnimation,\n ]\n );\n\n const { onMouseDown: dragDropHookHandleMouseDown, ...dragDropHook } =\n useDragDrop({\n allowDragDrop,\n containerRef,\n // this is for useDragDropNext\n draggableClassName: `tabstrip-${orientation}`,\n // extendedDropZone: overflowedItems.length > 0,\n onDrop: handleDrop,\n orientation: \"horizontal\",\n itemQuery: \".vuuOverflowContainer-item\",\n });\n\n const handleExitEditMode = useCallback<ExitEditModeHandler>(\n (originalValue, editedValue, allowDeactivation, tabIndex) => {\n console.log(\n `handleExitEditMode ${originalValue} ${editedValue} ${allowDeactivation} ${tabIndex}`\n );\n onExitEditMode?.(originalValue, editedValue, allowDeactivation, tabIndex);\n if (!allowDeactivation) {\n // this indicates that Enter or Esc key has been pressed, hence we\n // want to make sure keyboardHook treats this as a keyboard event\n // (and applies focusVisible). The last parameter here does that.\n keyboardHookFocusTab(tabIndex, false, true);\n }\n },\n [keyboardHookFocusTab, onExitEditMode]\n );\n\n const handleClick = useCallback(\n (evt: ReactMouseEvent<HTMLElement>, tabIndex: number) => {\n // releasing the mouse at end of drag will trigger a click, ignore those\n // if (!dragDropHook.isDragging) {\n keyboardHookHandleClick(evt, tabIndex);\n selectionHookHandleClick(evt, tabIndex);\n // }\n },\n // [dragDropHook.isDragging, keyboardHook, selectionHook]\n [keyboardHookHandleClick, selectionHookHandleClick]\n );\n\n const getEditableLabel = useCallback(\n (tabIndex = highlightedIdx) => {\n const targetEl = getElementWithIndex(containerRef.current, tabIndex);\n if (targetEl) {\n return targetEl.querySelector(\".vuuEditableLabel\") as HTMLElement;\n }\n },\n [containerRef, highlightedIdx]\n );\n\n const tabInEditMode = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabel = getEditableLabel(tabIndex);\n if (editableLabel) {\n return editableLabel.classList.contains(\"vuuEditableLabel-editing\");\n }\n return false;\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const editTab = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabelEl = getEditableLabel(tabIndex);\n if (editableLabelEl) {\n dispatchMouseEvent(editableLabelEl, \"dblclick\");\n }\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n keyboardHookHandleKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHookHandleKeyDown(evt);\n }\n if (!evt.defaultPrevented && isEditKey(evt.key)) {\n editTab();\n }\n },\n [editTab, keyboardHookHandleKeyDown, selectionHookHandleKeyDown]\n );\n\n const handleCloseTabFromMenu = useCallback(\n (tabIndex: number) => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n const newActiveTabIndex =\n selectedTabIndex > tabIndex\n ? selectedTabIndex - 1\n : selectedTabIndex === tabIndex\n ? 0\n : selectedTabIndex;\n suspendAnimation();\n // containerRef.current?.classList.add(\"vuuTabThumb-noTransition\");\n onCloseTab?.(tabIndex, newActiveTabIndex);\n setTimeout(() => {\n resumeAnimation();\n // containerRef.current?.classList.remove(\"vuuTabThumb-noTransition\");\n }, 200);\n return true;\n },\n [containerRef, onCloseTab, resumeAnimation, suspendAnimation]\n );\n\n const handleRenameTabFromMenu = useCallback(\n (tabIndex: number) => {\n editTab(tabIndex);\n return true;\n },\n [editTab]\n );\n\n const handleTabMenuAction = useCallback<MenuActionHandler>(\n (action) => {\n if (isTabMenuOptions(action.options)) {\n switch (action.menuId) {\n case \"close-tab\":\n return handleCloseTabFromMenu(action.options.tabIndex);\n case \"rename-tab\":\n return handleRenameTabFromMenu(action.options.tabIndex);\n default:\n console.log(`tab menu action ${action.menuId}`);\n }\n }\n return false;\n },\n [handleCloseTabFromMenu, handleRenameTabFromMenu]\n );\n\n //TODO( why do we sometimes see this fired twice eg following rename)\n const handleTabMenuClose = useCallback(() => {\n if (!tabInEditMode()) {\n keyboardHookFocusTab(highlightedIdx);\n } else {\n keyboardHookSetHighlightedIndex(highlightedIdx);\n }\n }, [\n highlightedIdx,\n keyboardHookFocusTab,\n keyboardHookSetHighlightedIndex,\n tabInEditMode,\n ]);\n\n const onSwitchWrappedItemIntoView = useCallback(\n (item: OverflowItem) => {\n const index = parseInt(item.index);\n if (!isNaN(index)) {\n selectionHookActivateTab(index);\n }\n },\n [selectionHookActivateTab]\n );\n\n const navigationProps = {\n onFocus: keyboardHook.onFocus,\n onKeyDown: handleKeyDown,\n };\n\n const handleAddTabClick = useCallback(() => {\n onAddTab?.();\n requestAnimationFrame(() => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n if (selectedTabIndex !== -1) {\n keyboardHookFocusTab(selectedTabIndex);\n }\n });\n }, [containerRef, keyboardHookFocusTab, onAddTab]);\n\n const tabProps = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onExitEditMode: handleExitEditMode,\n onMenuAction: handleTabMenuAction,\n onMenuClose: handleTabMenuClose,\n onMouseDown: dragDropHookHandleMouseDown,\n };\n\n return {\n activeTabIndex: selectionHookSelected,\n containerStyle,\n focusVisible: keyboardHook.focusVisible,\n containerProps: {\n ...keyboardHook.containerProps,\n onSwitchWrappedItemIntoView,\n },\n navigationProps,\n onClickAddTab: handleAddTabClick,\n tabProps,\n ...dragDropHook,\n };\n};\n", "import { ContextMenuItemDescriptor } from \"@vuu-ui/vuu-data-types\";\n\nexport type MenuOptions = { [key: string]: unknown };\n\nexport interface TabMenuOptions {\n tabIndex: number;\n}\n\nexport const isTabMenuOptions = (options: unknown): options is TabMenuOptions =>\n typeof options === \"object\" &&\n options !== null &&\n \"tabIndex\" in options &&\n typeof options.tabIndex === \"number\";\n\nexport const closeCommand = (options?: MenuOptions) =>\n ({\n label: `Close`,\n location: \"tab\",\n action: `close-tab`,\n options,\n } as ContextMenuItemDescriptor);\n\nexport const renameCommand = (options?: MenuOptions) =>\n ({\n label: `Rename`,\n location: \"tab\",\n action: `rename-tab`,\n options,\n } as ContextMenuItemDescriptor);\n", "import { getElementDataIndex } from \"@vuu-ui/vuu-utils\";\n\nconst getIndexOfItem = (container: HTMLElement | null, query: string) => {\n if (container) {\n const targetTab = container.querySelector(\n `[data-index]:has(${query})`\n ) as HTMLElement;\n return getElementDataIndex(targetTab);\n }\n return -1;\n};\n\nexport const getIndexOfSelectedTab = (container: HTMLElement | null) =>\n getIndexOfItem(container, '[aria-selected=\"true\"]');\n\nexport const getIndexOfEditedItem = (container: HTMLElement | null) =>\n getIndexOfItem(container, \".vuuEditableLabel-editing\");\n", "import { isValidNumber, MEASURES, orientationType } from \"@vuu-ui/vuu-utils\";\nimport { CSSProperties, RefObject, useCallback, useMemo, useRef } from \"react\";\n\nexport const useAnimatedSelectionThumb = (\n containerRef: RefObject<HTMLElement>,\n activeTabIndex: number,\n orientation: orientationType = \"horizontal\"\n) => {\n const animationSuspendedRef = useRef(false);\n const suspendAnimation = useCallback(() => {\n animationSuspendedRef.current = true;\n }, []);\n\n const resumeAnimation = useCallback(() => {\n animationSuspendedRef.current = false;\n }, []);\n\n const onTransitionEnd = useCallback(() => {\n containerRef.current?.style.setProperty(\"--tab-thumb-transition\", \"none\");\n containerRef.current?.removeEventListener(\"transitionend\", onTransitionEnd);\n }, [containerRef]);\n const lastSelectedRef = useRef(-1);\n return useMemo(() => {\n let offset = 0;\n let size = 0;\n if (lastSelectedRef.current !== -1) {\n const oldSelected =\n containerRef.current?.querySelector(\".vuuTab-selected\");\n const newSelected = containerRef.current?.querySelector(\n `[data-index=\"${activeTabIndex}\"] .vuuTab`\n );\n const { positionProp, sizeProp } = MEASURES[orientation];\n if (oldSelected && newSelected && !animationSuspendedRef.current) {\n const { [positionProp]: oldPosition, [sizeProp]: oldSize } =\n oldSelected.getBoundingClientRect();\n const { [positionProp]: newPosition } =\n newSelected.getBoundingClientRect();\n if (\n isValidNumber(oldPosition) &&\n isValidNumber(newPosition) &&\n isValidNumber(oldSize)\n ) {\n offset = oldPosition - newPosition;\n size = oldSize;\n const speed = orientation === \"horizontal\" ? 1100 : 700;\n const duration = Math.abs(offset / speed);\n requestAnimationFrame(() => {\n containerRef.current?.style.setProperty(\n \"--tab-thumb-offset\",\n \"0px\"\n );\n containerRef.current?.style.setProperty(\"--tab-thumb-size\", \"100%\");\n containerRef.current?.style.setProperty(\n \"--tab-thumb-transition\",\n `all ${duration}s ease`\n );\n containerRef.current?.addEventListener(\n \"transitionend\",\n onTransitionEnd\n );\n });\n }\n }\n }\n lastSelectedRef.current = activeTabIndex;\n if (animationSuspendedRef.current) {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": \"0px\",\n \"--tab-thumb-size\": \"100%\",\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n } else {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": `${offset}px`,\n \"--tab-thumb-size\": size ? `${size}px` : undefined,\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n }\n }, [\n activeTabIndex,\n containerRef,\n orientation,\n onTransitionEnd,\n resumeAnimation,\n suspendAnimation,\n ]);\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport {\n dispatchMouseEvent,\n getFocusableElement,\n orientationType,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n MouseEventHandler,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n} from \"@vuu-ui/vuu-utils\";\nimport { getIndexOfEditedItem } from \"./tabstrip-dom-utils\";\n\ntype directionType = \"bwd\" | \"fwd\" | \"start\" | \"end\";\ntype directionMap = { [key: string]: directionType };\nconst navigation = {\n horizontal: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowLeft]: \"bwd\",\n [ArrowRight]: \"fwd\",\n } as directionMap,\n vertical: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowUp]: \"bwd\",\n [ArrowDown]: \"fwd\",\n } as directionMap,\n};\n\nconst isNavigationKey = (\n key: string,\n orientation: orientationType = \"horizontal\"\n) => navigation[orientation][key] !== undefined;\n\nconst isMenuActivationKey = (key: string) => key === ArrowDown;\n\nfunction nextItemIdx(count: number, direction: directionType, idx: number) {\n if (direction === \"start\") {\n return 0;\n } else if (direction === \"end\") {\n return count - 1;\n } else if (direction === \"bwd\") {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isNonWrappedElement = (element: HTMLElement | null) =>\n element !== null && !element.classList.contains(\"wrapped\");\n\nconst getElementByPosition = (container: HTMLElement | null, index: number) =>\n container\n ? (container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement)\n : null;\n\nexport interface ContainerNavigationProps {\n onBlur: FocusEventHandler;\n onFocus: FocusEventHandler;\n onMouseDownCapture: MouseEventHandler;\n onMouseLeave: MouseEventHandler;\n}\n\ninterface TabstripNavigationHookProps {\n containerRef: RefObject<HTMLElement>;\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n keyBoardActivation?: \"manual\" | \"automatic\";\n orientation: orientationType;\n selectedIndex: number | null;\n}\n\ninterface TabstripNavigationHookResult {\n containerProps: ContainerNavigationProps;\n highlightedIdx: number;\n focusTab: (\n tabIndex: number,\n immediateFocus?: boolean,\n withKeyboard?: boolean,\n delay?: number\n ) => void;\n focusVisible: number;\n focusIsWithinComponent: boolean;\n onClick: (evt: ReactMouseEvent, tabIndex: number) => void;\n onFocus: (evt: FocusEvent<HTMLElement>) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n setHighlightedIdx: (highlightedIndex: number) => void;\n}\n\nexport const useKeyboardNavigation = ({\n containerRef,\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n keyBoardActivation,\n orientation,\n selectedIndex: selectedTabIndex = 0,\n}: TabstripNavigationHookProps): TabstripNavigationHookResult => {\n const manualActivation = keyBoardActivation === \"manual\";\n const mouseClickPending = useRef(false);\n const focusedRef = useRef<number>(-1);\n const [hasFocus, setHasFocus] = useState(false);\n const [, forceRefresh] = useState({});\n const [highlightedIdx, _setHighlightedIdx] = useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIdx = useCallback(\n (value: number) => {\n _setHighlightedIdx((focusedRef.current = value));\n },\n [_setHighlightedIdx]\n );\n\n const keyboardNavigation = useRef(false);\n\n const focusTab = useCallback(\n (\n tabIndex: number,\n immediateFocus = false,\n withKeyboard?: boolean,\n delay = 70\n ) => {\n // The timeout is important in two scenarios:\n // 1) where tab has overflowed and is being selected from overflow menu.\n // We must not focus it until the overflow mechanism + render has restored\n // it to the main display.\n // 2) when we are focussing a new tab\n // We MUST NOT delay focus when using keyboard nav, else when focus moves from\n // close button (focus ring styled by :focus-visible) to Tab label (focus ring\n // styled by css class) focus style will briefly linger on both.\n setHighlightedIdx(tabIndex);\n\n if (withKeyboard === true && !keyboardNavigation.current) {\n keyboardNavigation.current = true;\n }\n\n const setFocus = () => {\n const element = getElementByPosition(containerRef.current, tabIndex);\n if (element) {\n const focussableElement = getFocusableElement(element);\n focussableElement?.focus();\n }\n };\n if (immediateFocus) {\n setFocus();\n } else {\n setTimeout(setFocus, delay);\n }\n },\n [containerRef, setHighlightedIdx]\n );\n\n const onFocus = (e: FocusEvent<HTMLElement>) => {\n // If focus is received by keyboard navigation, item with tabindex 0 will receive\n // focus. If the item receiving focus has tabindex -1, then focus has been set\n // programatically. We must respect this and not reset focus to selected tab.\n if (focusedRef.current === -1) {\n // Focus is entering tabstrip. Assume keyboard - if it'a actually mouse-driven,\n // the click event will have set correct value.\n if (e.target.tabIndex === -1) {\n // Do nothing, assume focus is being passed back to button by closing dialog. Might need\n // to revisit this and add code here if we may get focus set programatically in other ways.\n } else {\n const index = getIndexOfEditedItem(containerRef.current);\n if (index !== -1) {\n requestAnimationFrame(() => {\n setHighlightedIdx(index);\n });\n } else {\n setTimeout(() => {\n // The selected tab will have tabIndex 0 make sure our internal state is aligned.\n if (focusedRef.current === -1 && selectedTabIndex !== null) {\n setHighlightedIdx(selectedTabIndex);\n }\n }, 200);\n }\n }\n }\n };\n\n const getIndexCount = useCallback(\n () => containerRef.current?.querySelectorAll(`[data-index]`).length ?? 0,\n [containerRef]\n );\n\n const nextFocusableItemIdx = useCallback(\n (direction: directionType = \"fwd\", idx?: number) => {\n const indexCount = getIndexCount();\n const index = typeof idx === \"number\" ? idx : indexCount;\n\n let nextIdx = nextItemIdx(indexCount, direction, index);\n const nextDirection =\n direction === \"start\" ? \"fwd\" : direction === \"end\" ? \"bwd\" : direction;\n while (\n ((nextDirection === \"fwd\" && nextIdx < indexCount) ||\n (nextDirection === \"bwd\" && nextIdx > 0)) &&\n !isNonWrappedElement(\n getElementByPosition(containerRef.current, nextIdx)\n )\n ) {\n const newIdx = nextItemIdx(indexCount, nextDirection, nextIdx);\n if (newIdx === nextIdx) {\n break;\n } else {\n nextIdx = newIdx;\n }\n }\n return nextIdx;\n },\n [containerRef, getIndexCount]\n );\n\n // forceFocusVisible supports an edge case - first or last Tab are clicked\n // then Left or Right Arrow keys are pressed, There will be no navigation\n // but focusVisible must be applied\n const navigateChildItems = useCallback(\n (e: React.KeyboardEvent, forceFocusVisible = false) => {\n const direction = navigation[orientation][e.key];\n const nextIdx = nextFocusableItemIdx(direction, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n const immediateFocus = true;\n if (manualActivation) {\n focusTab(nextIdx, immediateFocus);\n } else {\n // activateTab(newTabIndex);\n }\n } else if (forceFocusVisible) {\n forceRefresh({});\n }\n },\n [\n highlightedIdx,\n manualActivation,\n nextFocusableItemIdx,\n focusTab,\n orientation,\n ]\n );\n\n const highlightedTabHasMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n if (el) {\n return el.querySelector(\".vuuPopupMenu\") != null;\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const activateTabMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n const menuEl = el?.querySelector(\".vuuPopupMenu\") as HTMLElement;\n if (menuEl) {\n dispatchMouseEvent(menuEl, \"click\");\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (getIndexCount() > 0 && isNavigationKey(e.key, orientation)) {\n e.preventDefault();\n if (keyboardNavigation.current) {\n navigateChildItems(e);\n } else {\n keyboardNavigation.current = true;\n navigateChildItems(e, true);\n }\n } else if (isMenuActivationKey(e.key) && highlightedTabHasMenu()) {\n activateTabMenu();\n }\n },\n [\n activateTabMenu,\n getIndexCount,\n highlightedTabHasMenu,\n navigateChildItems,\n orientation,\n ]\n );\n\n // TODO, in common hooks, we use mouse movement to track current highlighted\n // index, rather than rely on component item reporting it\n const handleItemClick = (_: ReactMouseEvent, tabIndex: number) => {\n setHighlightedIdx(tabIndex);\n };\n\n const handleFocus = useCallback(() => {\n if (!hasFocus) {\n setHasFocus(true);\n if (!mouseClickPending.current) {\n keyboardNavigation.current = true;\n } else {\n mouseClickPending.current = false;\n }\n }\n }, [hasFocus]);\n\n const handleContainerMouseDown = useCallback(() => {\n if (!hasFocus) {\n mouseClickPending.current = true;\n }\n keyboardNavigation.current = false;\n }, [hasFocus]);\n\n const containerProps = {\n onBlur: (e: FocusEvent) => {\n const sourceTarget = (e.target as HTMLElement).closest(\".vuuTabstrip\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n setHighlightedIdx(-1);\n setHasFocus(false);\n }\n },\n onMouseDownCapture: handleContainerMouseDown,\n onFocus: handleFocus,\n onMouseLeave: () => {\n keyboardNavigation.current = true;\n setHighlightedIdx(-1);\n mouseClickPending.current = false;\n },\n };\n\n return {\n containerProps,\n focusVisible: keyboardNavigation.current ? highlightedIdx : -1,\n focusIsWithinComponent: hasFocus,\n highlightedIdx,\n focusTab,\n onClick: handleItemClick,\n onFocus,\n onKeyDown: handleKeyDown,\n setHighlightedIdx,\n };\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, MouseEvent, useCallback } from \"react\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst isTabElement = (el: HTMLElement): boolean =>\n el && el.matches('[class*=\"vuuTab \"]');\n\n// TODO use SelectionProps\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n onSelectionChange,\n selected: selectedProp,\n}: {\n defaultSelected?: number;\n highlightedIdx: number;\n onSelectionChange?: (tabIndex: number) => void;\n selected?: number;\n}): {\n activateTab: (tabIndex: number) => void;\n isControlled: boolean;\n onClick: (evt: MouseEvent<Element>, tabIndex: number) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n selected: number;\n} => {\n const [selected, setSelected, isControlled] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? 0,\n name: \"Tabstrip\",\n state: \"value\",\n });\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => defaultSelectionKeys.includes(evt.key),\n []\n );\n\n const selectItem = useCallback(\n (tabIndex: number) => {\n setSelected(tabIndex);\n onSelectionChange?.(tabIndex);\n },\n [onSelectionChange, setSelected]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n const targetElement = e.target as HTMLElement;\n if (\n isSelectionEvent(e) &&\n highlightedIdx !== selected &&\n isTabElement(targetElement)\n ) {\n e.stopPropagation();\n e.preventDefault();\n selectItem(highlightedIdx);\n }\n },\n [isSelectionEvent, highlightedIdx, selected, selectItem]\n );\n\n const onClick = useCallback(\n (e: MouseEvent, tabIndex: number) => {\n if (tabIndex !== selected) {\n selectItem(tabIndex);\n }\n },\n [selectItem, selected]\n );\n\n return {\n activateTab: selectItem,\n isControlled,\n onClick,\n onKeyDown: handleKeyDown,\n selected,\n };\n};\n", "// TODO close button needs to be a button. Hence tab needs to include 2 buttons\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { MenuActionHandler } from \"@vuu-ui/vuu-data-types\";\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\nimport { EditableLabel, EditableLabelProps } from \"../editable-label\";\nimport { TabMenu } from \"./TabMenu\";\nimport { TabProps } from \"./TabsTypes\";\n\nimport \"./Tab.css\";\n\nconst classBase = \"vuuTab\";\n\nconst noop = () => undefined;\n\nexport const Tab = forwardRef(function Tab(\n {\n ariaControls,\n children,\n className,\n closeable = false,\n dragging,\n editable = false,\n editing,\n focusVisible,\n index = -1,\n label,\n location,\n onClick,\n onClose,\n onEnterEditMode = noop,\n onExitEditMode = noop,\n onFocus: onFocusProp,\n onKeyUp,\n onMenuAction,\n onMenuClose,\n orientation,\n selected,\n showMenuButton = closeable || editable || Boolean(location),\n tabIndex,\n ...props\n }: TabProps,\n ref: ForwardedRef<HTMLDivElement>\n): ReactElement<TabProps> {\n if (showMenuButton && typeof onMenuAction !== \"function\") {\n throw Error(\"Tab onMenuAction must be provided if showMenuButton is set\");\n }\n\n const rootRef = useRef<HTMLDivElement>(null);\n const editableRef = useRef<HTMLDivElement>(null);\n const setForkRef = useForkRef(ref, rootRef);\n const handleClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n if (!editing) {\n e.preventDefault();\n onClick?.(e, index);\n }\n },\n [editing, index, onClick]\n );\n\n const handleOnExitEditMode: EditableLabelProps[\"onExitEditMode\"] = (\n originalValue = \"\",\n editedValue = \"\",\n allowDeactivation = true\n ) => onExitEditMode(originalValue, editedValue, allowDeactivation, index);\n\n const handleKeyUp = (e: KeyboardEvent) => {\n switch (e.key) {\n case \"Backspace\":\n case \"Delete\":\n if (closeable) {\n e.stopPropagation();\n onClose && onClose(index);\n }\n break;\n default:\n onKeyUp && onKeyUp(e, index);\n }\n };\n\n const getLabel = () => {\n if (editable) {\n return (\n <EditableLabel\n editing={editing}\n defaultValue={label}\n // Create a fresh instance after each edit, so it can be uncontrolled ...\n key={label}\n onEnterEditMode={onEnterEditMode}\n onExitEditMode={handleOnExitEditMode}\n ref={editableRef}\n />\n );\n } else {\n return label;\n }\n };\n\n const handleFocus = (evt: FocusEvent<HTMLElement>) => {\n if (editableRef.current) {\n const editable = editableRef.current as HTMLElement;\n const input = editable.querySelector(\n \".vuuEditableLabel-input\"\n ) as HTMLInputElement;\n input?.focus();\n }\n onFocusProp?.(evt);\n };\n\n return (\n <div\n {...props}\n aria-controls={ariaControls}\n aria-selected={selected}\n className={cx(classBase, className, {\n [`${classBase}-closeable`]: closeable,\n \"vuuDraggable-dragAway\": dragging,\n [`${classBase}-editing`]: editing,\n [`${classBase}-selected`]: selected || undefined,\n [`${classBase}-vertical`]: orientation === \"vertical\",\n [`vuuFocusVisible`]: focusVisible,\n })}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n ref={setForkRef}\n role=\"tab\"\n tabIndex={tabIndex}\n >\n <div className={`${classBase}-main`}>\n <span\n className={`${classBase}-text`}\n // data-text is important, it determines the width of the tab. A pseudo\n // element assigns data-text as content. This is styled as selected tab\n // text. That means width of tab always corresponds to its selected state,\n // so tabs do not change size when selected (ie when the text is bolded).\n // Do not include if we have editable content, EditableLabel will determine\n // the width\n data-text={editable ? undefined : label}\n >\n {children ?? getLabel()}\n </span>\n </div>\n {showMenuButton ? (\n <TabMenu\n allowClose={closeable}\n allowRename={editable}\n controlledComponentId={ariaControls}\n controlledComponentTitle={label}\n location={location}\n onMenuAction={onMenuAction as MenuActionHandler}\n onMenuClose={onMenuClose}\n index={index}\n />\n ) : null}\n </div>\n );\n});\n", "import { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport {\n ContextMenuItemDescriptor,\n MenuActionHandler,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { useMemo } from \"react\";\nimport cx from \"clsx\";\nimport { closeCommand, MenuOptions, renameCommand } from \"./TabMenuOptions\";\n\nimport \"./TabMenu.css\";\n\nconst classBase = \"vuuTabMenu\";\n\nexport interface TabMenuProps {\n allowClose: boolean;\n allowRename: boolean;\n index: number;\n location?: string;\n onMenuAction: MenuActionHandler;\n onMenuClose?: () => void;\n /**\n * The id of associated component, if available\n */\n controlledComponentId?: string;\n /**\n * The label of Tab, if available\n */\n controlledComponentTitle?: string;\n}\n\nexport const TabMenu = ({\n allowClose,\n allowRename,\n controlledComponentId,\n controlledComponentTitle,\n location,\n onMenuAction,\n onMenuClose,\n index,\n}: TabMenuProps) => {\n const [menuBuilder, menuOptions] = useMemo(\n (): [MenuBuilder, MenuOptions] => [\n (_location, options) => {\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (allowRename) {\n menuItems.push(renameCommand(options as MenuOptions));\n }\n if (allowClose) {\n menuItems.push(closeCommand(options as MenuOptions));\n }\n return menuItems;\n },\n {\n controlledComponentId,\n controlledComponentTitle,\n tabIndex: index,\n },\n ],\n [\n allowClose,\n allowRename,\n controlledComponentId,\n controlledComponentTitle,\n index,\n ]\n );\n\n return (\n <PopupMenu\n className={classBase}\n menuBuilder={menuBuilder}\n menuActionHandler={onMenuAction}\n menuLocation={cx(\"tab\", location)}\n menuOptions={menuOptions}\n onMenuClose={onMenuClose}\n tabIndex={-1}\n aria-label=\"context menu\"\n />\n );\n};\n", "import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n MouseEvent,\n useRef,\n} from \"react\";\nimport { closestListItemIndex } from \"./list-dom-utils\";\nimport { useItemsWithIds } from \"./use-items-with-ids\";\nimport {\n GroupSelection,\n groupSelectionEnabled,\n TreeNodeSelectionHandler,\n TreeSelection,\n} from \"./use-selection\";\nimport { useViewportTracking } from \"./use-viewport-tracking\";\nimport { useTree } from \"./useTree\";\n\nimport \"./Tree.css\";\n\nconst classBase = \"vuuTree\";\n\ntype Indexer = {\n value: number;\n};\n\nexport interface TreeSourceNode {\n id: string;\n icon?: string;\n header?: boolean;\n label: string;\n childNodes?: TreeSourceNode[];\n}\nexport interface NormalisedTreeSourceNode extends TreeSourceNode {\n childNodes?: NormalisedTreeSourceNode[];\n count: number;\n expanded?: boolean;\n index: number;\n level: number;\n}\n\nexport interface NonLeafNode extends NormalisedTreeSourceNode {\n childNodes: NormalisedTreeSourceNode[];\n}\n\nexport const isExpanded = (\n node: NormalisedTreeSourceNode\n): node is NonLeafNode => node.expanded === true;\n\nexport interface TreeNodeProps extends HTMLAttributes<HTMLLIElement> {\n idx?: number;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport const TreeNode = ({ children, idx, ...props }: TreeNodeProps) => {\n return <li {...props}>{children}</li>;\n};\n\nexport interface TreeProps extends HTMLAttributes<HTMLUListElement> {\n allowDragDrop?: boolean;\n defaultSelected?: any;\n groupSelection?: GroupSelection;\n onHighlight?: (index: number) => void;\n onSelectionChange: (selected: TreeSourceNode[]) => void;\n revealSelected?: boolean;\n selected?: string[];\n selection?: TreeSelection;\n source: TreeSourceNode[];\n}\n\nconst Tree = forwardRef(function Tree(\n {\n allowDragDrop,\n className,\n defaultSelected,\n groupSelection = \"none\",\n id: idProp,\n onHighlight,\n onSelectionChange,\n revealSelected,\n selected: selectedProp,\n selection = \"single\",\n source,\n ...htmlAttributes\n }: TreeProps,\n forwardedRef: ForwardedRef<HTMLUListElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLUListElement>(null);\n\n // returns the full source data\n const [, sourceWithIds, sourceItemById] = useItemsWithIds(source, id, {\n revealSelected: revealSelected\n ? selectedProp ?? defaultSelected ?? false\n : undefined,\n });\n\n const handleSelectionChange: TreeNodeSelectionHandler = (evt, selected) => {\n if (onSelectionChange) {\n const sourceItems = selected\n .map((id) => sourceItemById(id))\n .filter((sourceItem) => sourceItem !== undefined) as TreeSourceNode[];\n onSelectionChange(sourceItems);\n }\n };\n\n const {\n focusVisible,\n highlightedIdx,\n hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected,\n visibleData,\n } = useTree({\n defaultSelected,\n groupSelection,\n onChange: handleSelectionChange,\n onHighlight,\n selected: selectedProp,\n selection,\n sourceWithIds,\n });\n\n // const isScrolling = useViewportTracking(root, highlightedIdx);\n useViewportTracking(rootRef, highlightedIdx);\n\n const defaultItemHandlers = {\n onMouseEnter: (evt: MouseEvent) => {\n // if (!isScrolling.current) {\n const targetEl = evt.target as HTMLElement;\n const idx = closestListItemIndex(targetEl);\n hiliteItemAtIndex(idx);\n // onMouseEnterListItem && onMouseEnterListItem(evt, idx);\n // }\n },\n };\n\n const propsCommonToAllListItems = {\n ...defaultItemHandlers,\n ...listItemHandlers,\n role: \"treeitem\",\n };\n const allowGroupSelect = groupSelectionEnabled(groupSelection);\n\n /**\n * Add a ListItem from source item\n */\n function addLeafNode(\n list: JSX.Element[],\n item: NormalisedTreeSourceNode,\n idx: Indexer\n ) {\n list.push(\n <TreeNode\n {...propsCommonToAllListItems}\n {...getListItemProps(item, idx, highlightedIdx, selected, focusVisible)}\n >\n {item.icon ? (\n <span className={`${classBase}Node-icon`} data-icon={item.icon} />\n ) : null}\n <span>{item.label}</span>\n </TreeNode>\n );\n idx.value += 1;\n }\n\n function addGroupNode(\n list: JSX.Element[],\n child: NormalisedTreeSourceNode,\n idx: Indexer,\n id: string,\n title: string\n ) {\n const { value: i } = idx;\n idx.value += 1;\n list.push(\n <TreeNode\n {...listItemHandlers}\n aria-expanded={child.expanded}\n aria-level={child.level}\n aria-selected={selected.includes(id) || undefined}\n className={cx(`${classBase}Node`, {\n focusVisible: focusVisible === i,\n [`${classBase}Node-toggle`]: !allowGroupSelect,\n })}\n data-idx={i}\n data-highlighted={i === highlightedIdx || undefined}\n data-selectable\n id={id}\n key={`header-${i}`}\n >\n {allowGroupSelect ? (\n <div className={`${classBase}Node-label`}>\n <span className={`${classBase}Node-toggle`} />\n {title}\n </div>\n ) : (\n <div className={`${classBase}Node-label`}>\n {child.icon ? (\n <span\n className={`${classBase}Node-icon`}\n data-icon={child.icon}\n />\n ) : null}\n <span>{title}</span>\n </div>\n )}\n <ul role=\"group\">\n {isExpanded(child) ? renderSourceContent(child.childNodes, idx) : \"\"}\n </ul>\n </TreeNode>\n );\n }\n\n function renderSourceContent(\n items: NormalisedTreeSourceNode[],\n idx = { value: 0 }\n ) {\n if (items?.length > 0) {\n const listItems: JSX.Element[] = [];\n for (const item of items) {\n if (item.childNodes) {\n addGroupNode(listItems, item, idx, item.id, item.label);\n } else {\n addLeafNode(listItems, item, idx);\n }\n }\n return listItems;\n }\n }\n\n return (\n <ul\n {...htmlAttributes}\n {...listProps}\n className={cx(classBase, className)}\n id={`Tree-${id}`}\n ref={useForkRef<HTMLUListElement>(rootRef, forwardedRef)}\n role=\"tree\"\n tabIndex={0}\n >\n {renderSourceContent(visibleData)}\n </ul>\n );\n});\n\nconst getListItemProps = (\n item: NormalisedTreeSourceNode,\n idx: Indexer,\n highlightedIdx: number,\n selected: string[],\n focusVisible: number,\n className?: string\n) => ({\n id: item.id,\n key: item.id,\n \"aria-level\": item.level,\n \"aria-selected\": selected.includes(item.id) || undefined,\n \"data-idx\": idx.value,\n \"data-highlighted\": idx.value === highlightedIdx || undefined,\n className: cx(\"vuuTreeNode\", className, {\n focusVisible: focusVisible === idx.value,\n }),\n});\n\nTree.displayName = \"Tree\";\nexport default Tree;\n", "export const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n let idx = listItemEl.dataset.idx;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if ((idx = listItemEl.ariaPosInSet ?? \"-1\")) {\n return parseInt(idx, 10) - 1;\n }\n }\n}\n\nexport const listItemId = (el: HTMLElement | null) => el?.id;\n\nexport const closestListItem = (el: HTMLElement) =>\n el.closest(\"[data-idx],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import { useCallback, useMemo } from \"react\";\nimport { NormalisedTreeSourceNode, TreeSourceNode } from \"./Tree\";\n\nconst PathSeparators = new Set([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nconst isParentPath = (parentPath: string, childPath: string) =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\ntype Indexer = {\n index: number;\n};\n\ntype SourceItemById = (\n id: string,\n target?: NormalisedTreeSourceNode[]\n) => TreeSourceNode | undefined;\n\nexport const useItemsWithIds = (\n sourceProp: TreeSourceNode[],\n idRoot = \"root\",\n {\n collapsibleHeaders = undefined,\n defaultExpanded = false,\n revealSelected = false,\n } = {}\n): [number, NormalisedTreeSourceNode[], SourceItemById] => {\n const countChildItems = (\n item: TreeSourceNode,\n items: TreeSourceNode[],\n idx: number\n ) => {\n if (item.childNodes) {\n return item.childNodes.length;\n } else if (item.header) {\n let i = idx + 1;\n let count = 0;\n while (i < items.length && !items[i].header) {\n count++;\n i++;\n }\n return count;\n } else {\n return 0;\n }\n };\n\n const isExpanded = useCallback(\n (path) => {\n if (Array.isArray(revealSelected)) {\n return revealSelected.some((id) => isParentPath(path, id));\n }\n return defaultExpanded;\n },\n [defaultExpanded, revealSelected]\n );\n\n const normalizeItems = useCallback(\n (\n items: TreeSourceNode[],\n indexer: Indexer,\n level = 1,\n path = \"\",\n results: NormalisedTreeSourceNode[] = [],\n flattenedSource: TreeSourceNode[] = []\n ): [number, NormalisedTreeSourceNode[], TreeSourceNode[]] => {\n let count = 0;\n // TODO get rid of the Proxy\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `${i}`;\n const id = item.id ?? `${idRoot}-${childPath}`;\n\n const expanded = nonCollapsible ? undefined : isExpanded(id);\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: NormalisedTreeSourceNode = {\n ...item,\n childNodes: undefined,\n id,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n expanded,\n index: indexer.index,\n level,\n };\n results.push(normalisedItem);\n flattenedSource.push(items[i]);\n\n count += 1;\n indexer.index += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [childCount, children] = normalizeItems(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedSource\n );\n normalisedItem.childNodes = children;\n if (expanded === true || isNonCollapsibleGroupNode) {\n count += childCount;\n }\n }\n });\n return [count, results, flattenedSource];\n },\n [collapsibleHeaders, idRoot, isExpanded]\n );\n\n const [count, sourceWithIds, flattenedSource] = useMemo<\n [number, NormalisedTreeSourceNode[], TreeSourceNode[]]\n >(() => {\n return normalizeItems(sourceProp, { index: 0 });\n }, [normalizeItems, sourceProp]);\n\n const sourceItemById = useCallback<SourceItemById>(\n (id, target = sourceWithIds): TreeSourceNode | undefined => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n return flattenedSource[sourceWithId.index];\n } else if (sourceWithId) {\n return sourceItemById(id, sourceWithId.childNodes);\n }\n },\n [flattenedSource, sourceWithIds]\n );\n\n return [count, sourceWithIds, sourceItemById];\n};\n", "import {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport type TreeSelection =\n | \"none\"\n | \"single\"\n | \"checkbox\"\n | \"multi\"\n | \"extended\";\n\nexport const SINGLE = \"single\";\nexport const CHECKBOX = \"checkbox\";\nexport const MULTI = \"multi\";\nexport const EXTENDED = \"extended\";\n\nexport type GroupSelection = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst NO_HANDLERS = {};\n\nconst isCollapsibleItem = (item: NormalisedTreeSourceNode) =>\n item.expanded !== undefined;\n\nexport type TreeNodeSelectionHandler = (\n evt: SyntheticEvent,\n selected: string[]\n) => void;\n\nexport const groupSelectionEnabled = (groupSelection: GroupSelection) =>\n groupSelection && groupSelection !== \"none\";\n\nexport interface SelectionHookProps {\n defaultSelected?: string[];\n highlightedIdx: number;\n onChange: TreeNodeSelectionHandler;\n selected?: string[];\n selection: TreeSelection;\n selectionKeys?: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\nexport interface SelectionHookResult {\n listHandlers: {\n onKeyDown?: (evt: KeyboardEvent) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, currentIndex: number) => void;\n };\n listItemHandlers: {\n onClick?: (evt: MouseEvent) => void;\n };\n selected: string[];\n setSelected: (selected: string[]) => void;\n}\n\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n treeNodes,\n onChange,\n selected: selectedProp,\n selection = SINGLE,\n selectionKeys = defaultSelectionKeys,\n}: SelectionHookProps): SelectionHookResult => {\n const singleSelect = selection === SINGLE;\n const multiSelect = selection === MULTI || selection.startsWith(CHECKBOX);\n const extendedSelect = selection === EXTENDED;\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const [selected, setSelected] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"selected\",\n });\n\n // const highlightedIdxRef = useRef();\n // highlightedIdxRef.current = highlightedIdx;\n\n const selectItemAtIndex = useCallback(\n (\n evt: SyntheticEvent,\n idx: number,\n id: string,\n rangeSelect: boolean,\n preserveExistingSelection = false\n ) => {\n const { current: active } = lastActive;\n const isSelected = selected?.includes(id);\n const inactiveRange = active === -1;\n const actsLikeSingleSelect =\n singleSelect ||\n (extendedSelect &&\n !preserveExistingSelection &&\n (!rangeSelect || inactiveRange));\n const actsLikeMultiSelect =\n multiSelect ||\n (extendedSelect && preserveExistingSelection && !rangeSelect);\n\n let newSelected: string[] = [];\n if (actsLikeSingleSelect && isSelected) {\n newSelected = [];\n } else if (actsLikeSingleSelect) {\n newSelected = [id];\n } else if (actsLikeMultiSelect && isSelected) {\n newSelected = selected.filter((i) => i !== id);\n } else if (actsLikeMultiSelect) {\n newSelected = selected.concat(id);\n } else if (extendedSelect) {\n const [from, to] = idx > active ? [active, idx] : [idx, active];\n newSelected = selected.slice();\n for (let i = from; i <= to; i++) {\n const { id } = treeNodes[i];\n if (!selected.includes(id)) {\n newSelected.push(id);\n }\n }\n }\n setSelected(newSelected);\n if (onChange) {\n onChange(evt, newSelected);\n }\n },\n [\n extendedSelect,\n treeNodes,\n multiSelect,\n onChange,\n selected,\n setSelected,\n singleSelect,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (~highlightedIdx && isSelectionEvent(evt)) {\n evt.preventDefault();\n const item = treeNodes[highlightedIdx];\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n },\n [\n extendedSelect,\n highlightedIdx,\n treeNodes,\n isSelectionEvent,\n selectItemAtIndex,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (extendedSelect && evt.shiftKey) {\n const item = treeNodes[currentIndex];\n selectItemAtIndex(evt, currentIndex, item.id, true);\n }\n },\n [extendedSelect, treeNodes, selectItemAtIndex]\n );\n\n const listHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n if (highlightedIdx !== -1) {\n const item = treeNodes[highlightedIdx];\n if (!isCollapsibleItem(item)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n }\n },\n [extendedSelect, highlightedIdx, treeNodes, selectItemAtIndex]\n );\n\n const listItemHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n selected,\n setSelected,\n };\n};\n", "import {\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useResizeObserver } from \"../common-hooks\";\n\nconst HeightOnly = [\"height\", \"scrollHeight\"];\n\nexport const useViewportTracking = (\n root: RefObject<HTMLElement>,\n highlightedIdx: number,\n stickyHeaders = false\n) => {\n const scrollTop = useRef(0);\n const scrolling = useRef(false);\n const rootHeight = useRef(0);\n const rootScrollHeight = useRef(0);\n\n const scrollIntoView = useCallback(\n (el) => {\n const targetEl = el.ariaExpanded ? el.firstChild : el;\n const headerHeight = stickyHeaders ? 30 : 0;\n const t = targetEl.offsetTop;\n const h = targetEl.offsetHeight;\n const viewportStart = scrollTop.current + headerHeight;\n const viewportEnd = viewportStart + rootHeight.current - headerHeight;\n\n if (t + h > viewportEnd || t < viewportStart) {\n scrollTop.current =\n t + h > viewportEnd\n ? scrollTop.current + (t + h) - viewportEnd\n : t - headerHeight;\n\n scrolling.current = true;\n if (root.current) {\n root.current.scrollTop = scrollTop.current;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }\n },\n [root, stickyHeaders]\n );\n\n const scrollHandler = useCallback((e) => {\n scrollTop.current = e.target.scrollTop;\n }, []);\n\n useEffect(() => {\n const { current: rootEl } = root;\n if (rootEl) {\n rootEl.addEventListener(\"scroll\", scrollHandler);\n }\n\n return () => {\n if (rootEl) {\n rootEl.removeEventListener(\"scroll\", scrollHandler);\n }\n };\n }, [root, scrollHandler]);\n\n useLayoutEffect(() => {\n if (\n highlightedIdx !== -1 &&\n rootScrollHeight.current > rootHeight.current\n ) {\n if (root.current) {\n const item = root.current.querySelector(`\n [data-idx='${highlightedIdx}'],\n [aria-posinset='${highlightedIdx + 1}']\n `);\n if (item === null) {\n console.log(\n \"[useViewportTracking], is this virtualised ? we're going to have to know rowHeight\"\n );\n } else {\n scrollIntoView(item);\n }\n }\n }\n }, [highlightedIdx, root, scrollIntoView]);\n\n useEffect(() => {\n // onsole.log('TODO measure the sticky header')\n }, [stickyHeaders]);\n\n const onResize = useCallback(({ height, scrollHeight }) => {\n rootHeight.current = height;\n rootScrollHeight.current = scrollHeight;\n }, []);\n\n useResizeObserver(root, HeightOnly, onResize, true);\n\n return scrolling;\n};\n", "import { KeyboardEvent, useCallback, useRef } from \"react\";\nimport { useKeyboardNavigation } from \"./use-keyboard-navigation\";\nimport {\n GroupSelection,\n TreeNodeSelectionHandler,\n TreeSelection,\n useSelection,\n} from \"./use-selection\";\nimport { useHierarchicalData } from \"./use-hierarchical-data\";\nimport { useCollapsibleGroups } from \"./use-collapsible-groups\";\nimport { useTreeKeyboardNavigation } from \"./use-tree-keyboard-navigation\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst EMPTY_ARRAY: string[] = [];\n\nexport interface TreeHookProps {\n defaultSelected?: string[];\n groupSelection: GroupSelection;\n onChange: TreeNodeSelectionHandler;\n onHighlight?: (index: number) => void;\n selected?: string[];\n selection: TreeSelection;\n sourceWithIds: NormalisedTreeSourceNode[];\n}\n\nexport const useTree = ({\n defaultSelected,\n sourceWithIds,\n onChange,\n onHighlight: onHighlightProp,\n selected: selectedProp,\n selection,\n}: TreeHookProps) => {\n const lastSelection = useRef<string[]>(EMPTY_ARRAY);\n const dataHook = useHierarchicalData(sourceWithIds);\n\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIdx: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIdx);\n };\n\n const { highlightedIdx, ...keyboardHook } = useKeyboardNavigation({\n treeNodes: dataHook.indexPositions,\n onHighlight: onHighlightProp,\n onKeyboardNavigation: handleKeyboardNavigation,\n selected: lastSelection.current,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders: true,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n setVisibleData: dataHook.setData,\n source: dataHook.data,\n });\n\n const selectionHook = useSelection({\n defaultSelected,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n onChange,\n selected: selectedProp,\n selection,\n });\n\n const treeNavigationHook = useTreeKeyboardNavigation({\n source: dataHook.data,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n indexPositions: dataHook.indexPositions,\n });\n\n const handleClick = useCallback(\n (evt) => {\n collapsibleHook.listItemHandlers?.onClick(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listItemHandlers?.onClick?.(evt);\n }\n },\n [collapsibleHook, selectionHook]\n );\n\n const handleKeyDown = useCallback(\n (evt) => {\n keyboardHook.listProps.onKeyDown?.(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n treeNavigationHook.listHandlers.onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook.listHandlers,\n keyboardHook.listProps,\n selectionHook.listHandlers,\n treeNavigationHook.listHandlers,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIdx === undefined || highlightedIdx === -1\n ? undefined\n : dataHook.indexPositions[highlightedIdx]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n const listProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: keyboardHook.listProps.onBlur,\n onFocus: keyboardHook.listProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: keyboardHook.listProps.onMouseDownCapture,\n onMouseLeave: keyboardHook.listProps.onMouseLeave,\n onMouseMove: keyboardHook.listProps.onMouseMove,\n };\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected: selectionHook.selected,\n visibleData: dataHook.data,\n };\n};\n", "import { KeyboardEvent, useCallback, useMemo, useRef } from \"react\";\nimport { getIndexOfNode, getNodeById } from \"./hierarchical-data-utils\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { ArrowDown, ArrowLeft, ArrowUp, isNavigationKey } from \"./key-code\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === ArrowLeft) {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isLeaf = (item: NormalisedTreeSourceNode) =>\n !item.header && !item.childNodes;\nconst isFocusable = (item: NormalisedTreeSourceNode) =>\n isLeaf(item) || item.expanded !== undefined;\n\nexport interface KeyboardNavigationHookProps {\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n onHighlight?: (highlightedIdx: number) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, nextIdx: number) => void;\n selected: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useKeyboardNavigation = ({\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n treeNodes,\n onHighlight,\n onKeyboardNavigation,\n selected = [],\n}: KeyboardNavigationHookProps) => {\n const { bwd: ArrowBwd, fwd: ArrowFwd } = useMemo(\n () => ({\n bwd: ArrowUp,\n fwd: ArrowDown,\n }),\n []\n );\n\n const [highlightedIdx, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"highlightedIdx\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextFocusableItemIdx = useCallback(\n (key = ArrowFwd, idx = key === ArrowFwd ? -1 : treeNodes.length) => {\n let nextIdx = nextItemIdx(treeNodes.length, key, idx);\n while (\n nextIdx !== -1 &&\n ((key === ArrowFwd && nextIdx < treeNodes.length) ||\n (key === ArrowBwd && nextIdx > 0)) &&\n !isFocusable(treeNodes[nextIdx])\n ) {\n nextIdx = nextItemIdx(treeNodes.length, key, nextIdx);\n }\n return nextIdx;\n },\n [ArrowBwd, ArrowFwd, treeNodes]\n );\n\n // does this belong here or should it be a method passed in?\n const keyBoardNavigation = useRef(true);\n const ignoreFocus = useRef(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(() => {\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else if (selected.length > 0) {\n const node = getNodeById(treeNodes, selected[0]);\n if (node) {\n const idx = getIndexOfNode(treeNodes, node);\n setHighlightedIndex(idx);\n }\n } else {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }, [treeNodes, nextFocusableItemIdx, selected, setHighlightedIndex]);\n\n const navigateChildItems = useCallback(\n (e) => {\n const nextIdx = nextFocusableItemIdx(e.key, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n setHighlightedIndex(nextIdx);\n // What exactly is the point of this ?\n onKeyboardNavigation?.(e, nextIdx);\n }\n },\n [\n highlightedIdx,\n nextFocusableItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (treeNodes.length > 0 && isNavigationKey(e, \"vertical\")) {\n e.preventDefault();\n e.stopPropagation();\n keyBoardNavigation.current = true;\n navigateChildItems(e);\n }\n },\n [treeNodes, navigateChildItems]\n );\n\n const listProps = useMemo(\n () => ({\n onBlur: () => {\n setHighlightedIndex(-1);\n },\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyBoardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n // SHould this be here - this is not strictly keyboard nav\n onMouseMove: () => {\n if (keyBoardNavigation.current) {\n keyBoardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyBoardNavigation.current = true;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n }),\n [handleFocus, handleKeyDown, setHighlightedIndex]\n );\n\n return {\n focusVisible: keyBoardNavigation.current ? highlightedIdx : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIdx,\n hiliteItemAtIndex: setHighlightedIndex,\n keyBoardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n", "import { NonLeafNode, NormalisedTreeSourceNode } from \"./Tree\";\n\nexport const getNodeParentPath = ({ id }: NormalisedTreeSourceNode) => {\n let pos = id.lastIndexOf(\"-\");\n if (pos !== -1) {\n // using the built-in hierarchical id scheme\n // rootId-n-n.n\n const path = id.slice(pos + 1);\n const steps = path.split(\".\");\n if (steps.length === 1) {\n return null;\n } else {\n steps.pop();\n return `${id.slice(0, pos)}-${steps.join(\".\")}`;\n }\n } else if ((pos = id.lastIndexOf(\"/\")) !== -1) {\n // using a path scheme step/step/step\n return id.slice(0, pos);\n }\n};\n\nexport const isGroupNode = (node: NormalisedTreeSourceNode) =>\n node.childNodes !== undefined;\nexport const isCollapsibleGroupNode = (node: NormalisedTreeSourceNode) =>\n isGroupNode(node) && node.expanded !== undefined;\nexport const isHeader = (node: NormalisedTreeSourceNode) =>\n node.header === true;\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nconst isDescendantOf = (\n node: NormalisedTreeSourceNode,\n targetPath: string\n): node is NonLeafNode => {\n if (!targetPath.startsWith(node.id)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(node.id.length));\n }\n};\n\nexport const getNodeById = (\n nodes: NormalisedTreeSourceNode[],\n id: string\n): NormalisedTreeSourceNode | undefined => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n } else if (isDescendantOf(node, id)) {\n return getNodeById(node.childNodes, id);\n }\n }\n};\n\nexport const getIndexOfNode = (\n treeNodes: NormalisedTreeSourceNode[],\n node: NormalisedTreeSourceNode\n) => {\n const id = typeof node === \"string\" ? node : node.id;\n for (let i = 0; i < treeNodes.length; i++) {\n if (treeNodes[i].id === id) {\n return i;\n }\n }\n};\n\nexport const replaceNode = (\n nodes: NormalisedTreeSourceNode[],\n id: string,\n props: Partial<NormalisedTreeSourceNode>\n): NormalisedTreeSourceNode[] => {\n let childNodes;\n const newNodes = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node, id)) {\n childNodes = replaceNode(node.childNodes, id, props);\n return {\n ...node,\n childNodes,\n };\n } else {\n return node;\n }\n });\n\n return newNodes;\n};\n", "import { KeyboardEvent } from \"react\";\n\nfunction union(set1: Set<string>, ...sets: Set<string>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const Backspace = \"Backspace\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Delete = \"Delete\";\n\nconst actionKeys = new Set([Enter, Delete]);\nconst focusKeys = new Set([\"Tab\"]);\n// const navigationKeys = new Set([\"Home\", \"End\", \"ArrowRight\", \"ArrowLeft\",\"ArrowDown\", \"ArrowUp\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst verticalNavigationKeys = new Set([\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\"]);\nconst horizontalNavigationKeys = new Set([\n \"Home\",\n \"End\",\n \"ArrowRight\",\n \"ArrowLeft\",\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n horizontalNavigationKeys,\n verticalNavigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: KeyboardEvent) => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n if (typeof evt.which === \"number\" && evt.which > 0) {\n return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which !== 8;\n }\n};\n\nexport const isNavigationKey = (\n { key }: KeyboardEvent,\n orientation = \"vertical\"\n) => {\n const navigationKeys =\n orientation === \"vertical\"\n ? verticalNavigationKeys\n : horizontalNavigationKeys;\n return navigationKeys.has(key);\n};\n", "import { useRef, useState } from \"react\";\nimport { isGroupNode, isHeader } from \"./hierarchical-data-utils\";\nimport { isExpanded, NormalisedTreeSourceNode } from \"./Tree\";\n\nconst populateIndices = (\n nodes: NormalisedTreeSourceNode[],\n results: NormalisedTreeSourceNode[] = [],\n idx = { value: 0 }\n) => {\n let skipToNextHeader = false;\n for (const node of nodes) {\n if (skipToNextHeader && !isHeader(node)) {\n continue;\n } else {\n results[idx.value] = node;\n idx.value += 1;\n skipToNextHeader = false;\n if (isHeader(node) && node.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(node)) {\n if (isExpanded(node)) {\n populateIndices(node.childNodes, results, idx);\n }\n }\n }\n }\n return results;\n};\n\n//TODO return a read-only data structure\n// Question: is source changes at runtime, do we lose any current state ?\nexport const useHierarchicalData = (source: NormalisedTreeSourceNode[]) => {\n // console.log(`%c[useHierarchicalData<${label}>] entry`, 'color: green; font-weight: bold;');\n\n const externalSource = useRef(source);\n const statefulSource = useRef(source);\n const indexPositions = useRef(populateIndices(source));\n const [, forceUpdate] = useState({});\n\n // Maintain a mapping between nodes and their current index position within the rendered list.\n // This index position is liable to change with every expand/collapse operation. We require this\n // when handling keyboard events - these are List level, not listItem level, so we depend on the\n\n // Client needs to be careful source is not recreated inadvertently on each render\n if (source !== externalSource.current) {\n // console.log(\n // `%cuseHierarchicalData source has changed`,\n // 'color:red;font-weight: bold;',\n // externalSource.current,\n // source\n // );\n externalSource.current = source;\n // we might want to try and merge existing state here ?\n statefulSource.current = source;\n indexPositions.current = populateIndices(source);\n }\n\n const setData = (value: NormalisedTreeSourceNode[]) => {\n statefulSource.current = value;\n indexPositions.current = populateIndices(value);\n // console.log(\n // `data set in ${label} (${indexPositions.current.length} visible items)`,\n // indexPositions.current.map((i) => ({ index: i.index, label: i.label }))\n // );\n forceUpdate({});\n };\n\n return {\n // data, // do we actually use the data anywhere\n data: statefulSource.current,\n indexPositions: indexPositions.current,\n setData,\n };\n};\n", "import { KeyboardEvent, MouseEvent, useCallback, useRef } from \"react\";\nimport { closestListItem } from \"./list-dom-utils\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./key-code\";\nimport { getNodeById, replaceNode } from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst NO_HANDLERS: CollapsibleHookResult[\"listHandlers\"] = {};\nconst isToggleElement = (element: HTMLElement) =>\n element && element.hasAttribute(\"aria-expanded\");\n\nexport interface CollapsibleGroupsHookProps {\n collapsibleHeaders?: boolean;\n highlightedIdx: number;\n treeNodes: NormalisedTreeSourceNode[];\n setVisibleData: (nodes: NormalisedTreeSourceNode[]) => void;\n source: NormalisedTreeSourceNode[];\n}\n\nexport interface CollapsibleHookResult {\n listHandlers: {\n onKeyDown?: (e: KeyboardEvent) => void;\n };\n listItemHandlers: {\n onClick: (e: MouseEvent) => void;\n };\n}\n\nexport const useCollapsibleGroups = ({\n collapsibleHeaders,\n highlightedIdx,\n treeNodes,\n setVisibleData,\n source,\n}: CollapsibleGroupsHookProps): CollapsibleHookResult => {\n const fullSource = useRef<NormalisedTreeSourceNode[]>(source);\n const stateSource = useRef<NormalisedTreeSourceNode[]>(fullSource.current);\n\n const setSource = useCallback(\n (value) => {\n setVisibleData((stateSource.current = value));\n },\n [setVisibleData]\n );\n\n const expandNode = useCallback(\n (nodeList: NormalisedTreeSourceNode[], { id }: NormalisedTreeSourceNode) =>\n replaceNode(nodeList, id, { expanded: true }),\n []\n );\n\n const collapseNode = useCallback(\n (nodeList, { id }) => replaceNode(nodeList, id, { expanded: false }),\n []\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded === false) {\n e.preventDefault();\n setSource(expandNode(stateSource.current, node));\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded) {\n e.preventDefault();\n setSource(collapseNode(stateSource.current, node));\n }\n }\n }\n },\n [collapseNode, expandNode, highlightedIdx, treeNodes, setSource]\n );\n\n /**\n * These are List handlers, so we will not have reference to the actual node\n * element. We must rely on highlightedIdx to tell us which node is interactive.\n */\n const listHandlers = collapsibleHeaders\n ? {\n onKeyDown: handleKeyDown,\n }\n : NO_HANDLERS;\n\n const handleClick = useCallback(\n (evt) => {\n const el = closestListItem(evt.target);\n if (isToggleElement(el)) {\n evt.stopPropagation();\n evt.preventDefault();\n const node = getNodeById(source, el.id);\n if (node?.expanded === false) {\n setSource(expandNode(source, node));\n } else if (node?.expanded === true) {\n setSource(collapseNode(source, node));\n }\n }\n },\n [collapseNode, expandNode, setSource, source]\n );\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n };\n};\n", "import { useCallback } from \"react\";\nimport { ArrowLeft } from \"./key-code\";\nimport {\n getNodeById,\n getNodeParentPath,\n getIndexOfNode,\n} from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport interface TreeKeyboardNavigationHookProps {\n highlightedIdx: number;\n hiliteItemAtIndex: (idx: number) => void;\n indexPositions: NormalisedTreeSourceNode[];\n source: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useTreeKeyboardNavigation = ({\n highlightedIdx,\n hiliteItemAtIndex,\n indexPositions,\n source,\n}: TreeKeyboardNavigationHookProps) => {\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === ArrowLeft) {\n const node = indexPositions[highlightedIdx];\n const parentId = getNodeParentPath(node);\n if (parentId) {\n e.preventDefault();\n const parentNode = getNodeById(source, parentId);\n if (parentNode) {\n const idx = getIndexOfNode(indexPositions, parentNode);\n if (idx !== undefined) {\n hiliteItemAtIndex(idx);\n }\n }\n }\n }\n },\n [highlightedIdx, hiliteItemAtIndex, indexPositions, source]\n );\n\n const listHandlers = {\n onKeyDown: handleKeyDown,\n };\n\n return {\n listHandlers,\n };\n};\n"],
5
- "mappings": "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",
6
- "names": ["useId", "Input", "forwardRef", "useCallback", "useRef", "cloneElement", "createContext", "useContext", "jsx", "CollectionContext", "CollectionProvider", "children", "collectionHook", "props", "useCollection", "collection", "isPlainObject", "obj", "itemToString", "item", "useCallback", "useMemo", "useRef", "useState", "isValidElement", "isValidElement", "Children", "ListItemGroup", "_", "ListItemHeader", "_", "sourceItemHasProp", "item", "propertyName", "isHeader", "isGroupNode", "childItemHasProp", "isDisabled", "isValidElement", "isFocusable", "countChildItems", "items", "idx", "i", "count", "getChildLabel", "element", "childIsHeader", "child", "ListItemHeader", "childIsGroup", "ListItemGroup", "childIsSelectable", "getChildNodes", "children", "childItems", "mapReactElementChildren", "fn", "childElements", "Children", "sourceItems", "source", "options", "_a", "_b", "itemToString", "dataId", "disabled", "id", "dataExpanded", "expanded", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "PATH_SEPARATORS", "isDescendantOf", "basePath", "targetPath", "replaceCollectionItem", "nodes", "props", "childNodes", "node", "regExp", "escapeRegExp", "string", "forwardCallbackProps", "ownProps", "overrideProps", "map", "name", "ownProp", "overrideProp", "args", "leftTrim", "value", "getDefaultFilterRegex", "escapeRegExp", "getDefaultFilter", "inputValue", "getFilterRegex", "itemValue", "isSelected", "selectedId", "item", "isValidElement", "useCallback", "useEffect", "useRef", "useState", "useControlled", "controlled", "defaultProp", "name", "state", "isControlled", "valueState", "setValue", "value", "defaultValue", "ignoreReactElements", "setValueIfUncontrolled", "newValue", "key", "defaultCollectionOptions", "useCollectionItems", "children", "idRoot", "options", "source", "_a", "_b", "getItemId", "forceUpdate", "useState", "inheritedCollectionHook", "useCollection", "dataRef", "useRef", "flattenedDataRef", "EMPTY_COLLECTION", "useMemo", "filterPattern", "disableFilter", "getFilterRegex", "getDefaultFilterRegex", "noChildrenLabel", "itemToString", "isExpanded", "useCallback", "addMetadataToItems", "items", "indexer", "level", "path", "results", "flattenedCollection", "flattenedSource", "item", "i", "all", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "childPath", "id", "expanded", "normalisedItem", "countChildItems", "isDisabled", "isFocusable", "getFilter", "getDefaultFilter", "collectVisibleItems", "filter", "idx", "skipToNextHeader", "isHeader", "isGroupNode", "partialCollectionItems", "sourceItems", "childItems", "collectionItems", "collectionItemsRef", "setFilterPattern", "pattern", "itemById", "target", "sourceWithId", "isParentPath", "indexOfItemById", "toCollectionItem", "collectionItem", "isValidElement", "itemToCollectionItem", "sel", "result", "itemToCollectionItemId", "selectedCollectionItem", "stringToCollectionItem", "value", "itemToId", "collapseGroupItem", "replaceCollectionItem", "expandGroupItem", "useCallback", "useEffect", "useLayoutEffect", "useRef", "WidthHeight", "WidthOnly", "HeightOnly", "observedMap", "getTargetSize", "element", "size", "dimension", "resizeObserver", "entries", "entry", "target", "borderBoxSize", "contentBoxSize", "observedTarget", "height", "width", "contentHeight", "contentWidth", "onResize", "measurements", "sizeChanged", "newSize", "useResizeObserver", "ref", "dimensions", "reportInitialSize", "dimensionsRef", "measure", "map", "dim", "registerObserver", "record", "isSingleSelection", "s", "isMultiSelection", "selectionIsDisallowed", "selection", "allowMultipleSelection", "selectionStrategy", "specialKey", "deselectionIsAllowed", "hasSelection", "selected", "getFirstSelectedItem", "useCallback", "useRef", "useState", "isSimpleStateValue", "arg", "useStateRef", "initialValue", "value", "_setValue", "ref", "setValue", "prev", "Popup", "Portal", "useId", "useForkRef", "cx", "Children", "cloneElement", "forwardRef", "useRef", "useControlled", "useForkRef", "useCallback", "useRef", "useState", "useEffect", "useRef", "NO_HANDLERS", "useClickAway", "popperRef", "rootRef", "isOpen", "onClose", "openRef", "clickHandler", "escapeKeyHandler", "evt", "_a", "_b", "targetElement", "e", "NO_OBSERVER", "useDropdownBase", "defaultIsOpen", "disabled", "fullWidthProp", "id", "isOpenProp", "onOpenChange", "onKeyDownProp", "openKeys", "openOnFocus", "popupComponent", "popupWidthProp", "rootRef", "width", "_a", "justFocused", "useRef", "popperRef", "popperCallbackRef", "useCallback", "element", "isOpen", "setIsOpen", "useControlled", "popup", "setPopup", "useState", "showDropdown", "hideDropdown", "reason", "useClickAway", "handleTriggerFocus", "handleTriggerToggle", "e", "newIsOpen", "handleKeydown", "evt", "handleBlur", "fullWidth", "useResizeObserver", "WidthOnly", "componentId", "triggerProps", "dropdownComponentProps", "popupComponentRef", "useForkRef", "jsx", "jsxs", "classBase", "DropdownBase", "forwardRef", "PopupProps", "ariaLabelledByProp", "children", "classNameProp", "defaultIsOpen", "disabled", "fullWidth", "idProp", "isOpenProp", "onKeyDown", "onOpenChange", "openKeys", "openOnFocus", "placement", "popupWidth", "width", "htmlAttributes", "forwardedRef", "rootRef", "useRef", "className", "cx", "trigger", "popupComponent", "Children", "id", "useId", "componentProps", "isOpen", "popupComponentRef", "triggerProps", "useDropdownBase", "getTriggerComponent", "defaultId", "defaultRole", "restTriggerProps", "role", "ownProps", "cloneElement", "forwardCallbackProps", "getPopupComponent", "restComponentProps", "ownWidth", "ref", "useForkRef", "Portal", "Popup", "Button", "cx", "forwardRef", "jsx", "jsxs", "classBase", "DropdownButton", "forwardRef", "ariaHideOptionRole", "className", "disabled", "icon", "isOpen", "label", "labelId", "fullWidth", "posInSet", "setSize", "labelAriaAttributes", "rest", "ref", "Button", "cx", "useForkRef", "cloneElement", "forwardRef", "useCallback", "useRef", "useId", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Escape", "Home", "End", "PageUp", "PageDown", "Space", "actionKeys", "focusKeys", "arrowLeftRightKeys", "navigationKeys", "functionKeys", "specialKeys", "isCharacterKey", "evt", "isNavigationKey", "key", "useCallback", "NO_HANDLERS", "canToggleItem", "item", "canSelectItem", "_", "toggleIconClicked", "el", "useCollapsibleGroups", "collapsibleHeaders", "collectionHook", "highlightedIdx", "onToggle", "handleKeyDown", "useCallback", "e", "ArrowRight", "Enter", "ArrowLeft", "listHandlers", "evt", "listItemElement", "listEl", "listItemIdx", "listItemIndex", "listItemEl", "idx", "listItemId", "el", "closestListItem", "closestListItemId", "closestListItemIndex", "useImperativeHandle", "useMemo", "noScrolling", "useImperativeScrollingAPI", "collectionHook", "forwardedRef", "scrollableRef", "scrollIntoView", "scrollHandles", "itemIndex", "collectionItem", "item", "scrollOffset", "useControlled", "useCallback", "useMemo", "useRef", "useState", "getElementByDataIndex", "isValidNumber", "LIST_FOCUS_VISIBLE", "nextItemIdx", "count", "key", "idx", "ArrowUp", "End", "getIndexOfSelectedItem", "selected", "_a", "selectedItemId", "getFirstSelectedItem", "el", "index", "getStartIdx", "selectedIdx", "length", "Home", "pageDown", "containerEl", "itemEl", "itemCount", "itemTop", "scrollTop", "clientHeight", "scrollHeight", "lastIndexPosition", "newScrollTop", "nextIdx", "nextRect", "pageUp", "resolve", "isLeaf", "element", "isFocusable", "container", "targetEl", "useKeyboardNavigation", "containerRef", "defaultHighlightedIndex", "disableHighlightOnFocus", "highlightedIndexProp", "onHighlight", "onKeyboardNavigation", "restoreLastFocus", "viewportItemCount", "lastFocus", "useRef", "forceRender", "useState", "highlightedIndex", "setHighlightedIdx", "isControlledHighlighting", "useControlled", "setHighlightedIndex", "useCallback", "fromKeyboard", "nextPageItemIdx", "result", "PageDown", "nextFocusableItemIdx", "ArrowDown", "isEnd", "isHome", "indexOfSelectedItem", "startIdx", "keyboardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "selectedItemIdx", "hasSelection", "navigateChildItems", "e", "PageUp", "handleKeyDown", "isNavigationKey", "isCharacterKey", "containerProps", "useMemo", "sourceTarget", "destTarget", "getElementByDataIndex", "getElementDataIndex", "isSelectableElement", "useCallback", "useRef", "CHECKBOX", "GROUP_SELECTION_NONE", "GROUP_SELECTION_SINGLE", "GROUP_SELECTION_CASCADE", "defaultSelectionKeys", "groupSelectionEnabled", "groupSelection", "useSelection", "containerRef", "defaultSelected", "disableSelection", "highlightedIndex", "itemQuery", "onClick", "onSelect", "onSelectionChange", "selectedProp", "selectionStrategy", "selectionKeys", "tabToSelect", "isDeselectable", "isMultipleSelect", "isExtendedSelect", "lastActive", "useRef", "isSelectionEvent", "useCallback", "evt", "selected", "setSelected", "useControlled", "isItemSelected", "itemId", "selectDeselectable", "selectMultiple", "nextItems", "i", "selectRange", "idx", "preserveExistingSelection", "currentSelection", "lastSelectedItemId", "lastSelectedItemIndex", "getElementDataIndex", "startRegion", "endRegion", "container", "rangeSelection", "el", "selectItemAtIndex", "rangeSelect", "id", "getElementByDataIndex", "newSelected", "handleKeyDown", "element", "isSelectableElement", "handleKeyboardNavigation", "currentIndex", "handleClick", "selectionIsDisallowed", "useCallback", "useRef", "useTypeahead", "disableTypeToSelect", "highlightedIdx", "highlightItemAtIndex", "typeToNavigate", "items", "applyIncrementalSearch", "keyDownTimer", "useRef", "searchChars", "startIdx", "applySearch", "useCallback", "intermediateSearch", "regex", "idx", "label", "i", "handleKeyDown", "e", "searchInProgress", "isCharacterKey", "Space", "useCallback", "useRef", "useIsomorphicLayoutEffect", "HeightOnly", "HeightWithScroll", "EMPTY_ARRAY", "ObservedDimensions", "getObservedDimensions", "containerOnly", "NULL_REF", "getItemTop", "element", "offsetContainer", "transform", "pos", "offsetParent", "top", "useViewportTracking", "containerRef", "contentRef", "highlightedIdx", "indexPositions", "stickyHeaders", "scrolling", "useRef", "viewport", "scrollTo", "useCallback", "scrollPos", "scrollToStart", "scrollToEnd", "scrollIntoViewIfNeeded", "item", "el", "viewportHeight", "targetEl", "headerHeight", "itemTop", "itemHeight", "scrollTop", "viewportStart", "viewportEnd", "newScrollTop", "height", "contentHeight", "firstItem", "lastItem", "onContainerResize", "scrollHeight", "onContentResize", "containerDimensions", "contentDimensions", "useResizeObserver", "makePrefixer", "Fragment", "jsx", "withBaseName", "makePrefixer", "Highlighter", "props", "matchPattern", "text", "matchRegex", "escapeRegExp", "part", "index", "forwardRef", "cx", "cx", "jsx", "classBase", "CheckboxIcon", "checked", "disabled", "htmlAttributes", "cx", "jsx", "jsxs", "classBase", "ListItemProxy", "forwardRef", "height", "htmlAttributes", "forwardedRef", "cx", "ListItem", "children", "classNameProp", "disabled", "tabIndex", "item", "itemHeight", "itemTextHighlightPattern", "label", "_notUsed", "selected", "showCheckbox", "styleProp", "props", "className", "style", "CheckboxIcon", "Highlighter", "MeasuredContainer", "useId", "useForkRef", "cx", "cloneElement", "forwardRef", "isValidElement", "useCallback", "useRef", "useState", "useLayoutEffectSkipFirst", "useCallback", "useMemo", "useRef", "FWD", "BWD", "createContext", "useCallback", "useContext", "useMemo", "boxContainsPoint", "dispatchCustomEvent", "useCallback", "useRef", "useGlobalDragDrop", "onDragOverDropTarget", "onDrop", "dropTargetRef", "measuredDropTargetsRef", "dragDropStateRef", "mousePosRef", "overDropTarget", "x", "y", "dropTargets", "id", "measuredTarget", "dragMouseMoveHandler", "evt", "clientX", "clientY", "dragDropState", "draggableElement", "mouseOffset", "dragPosX", "dragPosY", "dropTargetId", "dragMouseUpHandler", "resumeDrag", "jsx", "NO_DRAG_CONTEXT", "unconfiguredRegistrationCall", "DragDropContext", "createContext", "measureDropTargets", "dropTargetIds", "map", "id", "el", "top", "right", "bottom", "left", "DragDropProvider", "children", "dragSourcesProp", "resumeDragHandlers", "useMemo", "dropHandlers", "handleDragOverDropTarget", "useCallback", "dropTargetId", "dragDropState", "resumeDrag", "handleDrop", "measuredDropTargetsRef", "useGlobalDragDrop", "dragSources", "dropTargets", "sources", "targets", "sourceId", "sourceEntry", "targetIds", "targetId", "targetEntry", "onDragOut", "onEndOfDragOperation", "registerDragDropParty", "onDrop", "contextValue", "useDragDropProvider", "_a", "_b", "useContext", "isDragSource", "isDropTarget", "DragDropState", "evt", "dragElement", "el", "payload", "clientX", "clientY", "draggableRect", "isOverflowElement", "dispatchCustomEvent", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "useForkRef", "cx", "forwardRef", "useCallback", "useMemo", "Popup", "Portal", "jsx", "makeClassNames", "classNames", "className", "Draggable", "forwardRef", "wrapperClassName", "element", "onDropped", "onTransitionEnd", "style", "scale", "forwardedRef", "handleVuuDrop", "useCallback", "callbackRef", "el", "forkedRef", "useForkRef", "position", "useMemo", "Portal", "Popup", "cx", "createDragSpacer", "transitioning", "spacer", "createDropIndicatorPosition", "createDropIndicator", "LEFT_RIGHT", "TOP_BOTTOM", "NOT_OVERFLOWED", "NOT_HIDDEN", "cloneElement", "element", "dolly", "measureElementSizeAndPosition", "dimension", "includeAutoMargin", "pos", "size", "position", "padEnd", "padStart", "style", "start", "end", "marginStart", "marginEnd", "minWidth", "flexBasis", "DIMENSIONS", "dimensions", "orientation", "getItemById", "measuredItems", "id", "result", "item", "removeDraggedItem", "index", "i", "measureDropTargets", "container", "itemQuery", "viewportRange", "draggedItemId", "dragThresholds", "DIMENSION", "children", "itemCount", "isLast", "getIndexOfDraggedItem", "dropTargets", "absoluteIndex", "indexOfDraggedItem", "d", "draggedItemOriginalIndex", "minIndex", "min", "mutateDropTargetsSwitchDropTargetPosition", "direction", "indexOfTarget", "draggedItem", "targetItem", "diff", "draggedStart", "draggedEnd", "newDraggedItem", "targetStart", "targetEnd", "newTargetItem", "getNextDropTarget", "draggedItemSize", "mouseMoveDirection", "len", "leadingEdge", "dropTarget", "constrainRect", "targetRect", "constraintRect", "height", "left", "top", "width", "constrainedHeight", "constrainedWidth", "dropTargetsDebugString", "_a", "getScrollableContainer", "firstItem", "immediateParent", "isContainerScrollable", "scrollableContainer", "SCROLL_SIZE", "CLIENT_SIZE", "scrollSize", "clientSize", "useCallback", "useRef", "useAutoScroll", "containerRef", "onScrollingStopped", "orientation", "scrollTimer", "useRef", "isScrolling", "scrollPosRef", "lastScrollDirectionRef", "stopScrolling", "useCallback", "atEnd", "startScrolling", "direction", "scrollRate", "scrollUnit", "container", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "scrollPos", "scrollSize", "clientSize", "maxScroll", "nextScroll", "useCallback", "useRef", "useDragDropCopy", "selected", "viewportRange", "rangeRef", "beginDrag", "dragElement", "drag", "drop", "useCallback", "useRef", "useState", "useCallback", "useMemo", "useDropIndicator", "spacer", "useMemo", "createDropIndicatorPosition", "clearSpacer", "useCallback", "dropTarget", "dropZone", "jsx", "NOT_OVERFLOWED", "NOT_HIDDEN", "useDragDropIndicator", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "useRef", "dropIndicatorRef", "dropTargetRef", "dropZoneRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "useState", "dropIndicator", "setDropIndicator", "clearSpacer", "positionDropIndicator", "useDropIndicator", "draggedItemRef", "fullItemQuery", "indexOf", "dropTarget", "d", "reposition", "distance", "indexShift", "rangeRef", "handleScrollStart", "useCallback", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "nextDropTarget", "getNextDropTarget", "beginDrag", "dragElement", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "getItemById", "targetIndex", "removeDraggedItem", "range", "i", "dropZone", "dropIndicatorPosition", "top", "left", "width", "dropIndicatorRect", "Draggable", "createDropIndicator", "drag", "dragPos", "mouseMoveDirection", "currentDropTarget", "START", "drop", "fromIndex", "dropBefore", "originalDropTargetIndex", "currentDropTargetIndex", "releaseDrag", "useCallback", "useMemo", "useRef", "useState", "useCallback", "useMemo", "useRef", "useDragDisplacers", "orientation", "animationFrame", "useRef", "transitioning", "spacers", "useMemo", "createDragSpacer", "animateTransition", "useCallback", "size", "propertyName", "spacer1", "spacer2", "clearSpacers", "useTransition", "spacer", "cleanup", "cancelAnyPendingAnimation", "displaceItem", "dropTargets", "dropTarget", "direction", "mutateDropTargetsSwitchDropTargetPosition", "displaceLastItem", "dispatchMouseEvent", "useDragDropNaturalMovement", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "useRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "useState", "clearSpacers", "displaceItem", "displaceLastItem", "useDragDisplacers", "draggedItemRef", "fullItemQuery", "NOT_OVERFLOWED", "NOT_HIDDEN", "indexOf", "dropTarget", "d", "rangeRef", "handleScrollStart", "useCallback", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "getNextDropTarget", "nextInsertPos", "nextDropTarget", "beginDrag", "dragElement", "internalDrag", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "indexOfDraggedItem", "getIndexOfDraggedItem", "dragPos", "index", "start", "end", "mid", "indexOfDropTarget", "i", "target", "showPopup", "hidePopup", "useMemo", "popupShowing", "button", "dispatchMouseEvent", "drag", "mouseMoveDirection", "overflowIndicator", "drop", "_a", "absoluteIndexDraggedItem", "scrollTop", "releaseDrag", "jsx", "NULL_DRAG_DROP_RESULT", "UNBOUNDED", "noDragDrop", "dragThreshold", "getDraggableElement", "el", "query", "getLastElement", "container", "itemQuery", "fullItemQuery", "NOT_OVERFLOWED", "lastElement", "isOverflowElement", "useDragDropNext", "allowDragDrop", "containerRef", "draggableClassName", "getDragPayload", "id", "onDragStart", "onDrop", "onDropSettle", "orientation", "dragDropProps", "dragBoundaries", "useRef", "draggableStatus", "setDraggableStatus", "useState", "dragDropStateRef", "mouseDownTimer", "isScrollableRef", "mousePosRef", "startPosRef", "settlingItemRef", "scrollableContainerRef", "dropPosRef", "dropIndexRef", "handleScrollStopRef", "isDragSource", "isDropTarget", "onDragOut", "onEndOfDragOperation", "register", "useDragDropProvider", "dragMouseMoveHandlerRef", "dragMouseUpHandlerRef", "attachDragHandlers", "useCallback", "dragMove", "dragUp", "removeDragHandlers", "setDragBoundaries", "containerRect", "draggableRect", "lastItemIsOverflowIndicator", "CONTRA", "CONTRA_END", "DIMENSION", "END", "START", "dimensions", "draggableSize", "lastItemStart", "lastItemEnd", "terminateDrag", "_a", "settlingItem", "toIndex", "droppedItem", "status", "dispatchCustomEvent", "getScrollDirection", "mousePos", "mouseOffset", "POS", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "scrollPos", "scrollSize", "clientSize", "maxScroll", "canScrollFwd", "viewportEnd", "bwd", "fwd", "useDragDropHook", "useDragDropNaturalMovement", "useDragDropIndicator", "useDragDropCopy", "onScrollingStopped", "scrollDirection", "atEnd", "isScrolling", "startScrolling", "stopScrolling", "useAutoScroll", "handleDrop", "fromIndex", "options", "beginDrag", "drag", "drop", "handleScrollStart", "handleScrollStop", "releaseDrag", "dragResult", "dragHandedOvertoProvider", "dragDistance", "clientContraPos", "CONTRA_POS", "lastClientContraPos", "dragOutDistance", "handoverToProvider", "dragMouseMoveHandler", "evt", "CLIENT_POS", "CONTRA_CLIENT_POS", "clientX", "clientY", "clientPos", "lastClientPos", "dragDropState", "draggableElement", "dragPosX", "dragPosY", "mouseMoveDirection", "dragPos", "renderDragPos", "dragMouseUpHandler", "resumeDrag", "dragStart", "target", "dragElement", "scrollableContainer", "getScrollableContainer", "isContainerScrollable", "DragDropState", "index", "Draggable", "cloneElement", "constrainRect", "preDragMouseMoveHandler", "preDragMouseUpHandler", "mouseDownHandler", "useLayoutEffect", "dropPos", "targetTop", "targetLeft", "style", "currentLeft", "currentTop", "useEffect", "useCallback", "useEffect", "useRef", "useListDrop", "dataHook", "onDrop", "onMoveListItem", "selected", "setHighlightedIndex", "setSelected", "selectedByIndexRef", "useRef", "dataHookRef", "adjustIndex", "useCallback", "index", "fromIndex", "toIndex", "reorderSelectedIndices", "id", "item", "handleDrop", "options", "hasSelection", "handleDropSettle", "useEffect", "selectedByIndex", "postDropSelected", "i", "useList", "allowDragDrop", "collapsibleHeaders", "dataHook", "containerRef", "contentRef", "defaultHighlightedIndex", "defaultSelected", "disabled", "disableAriaActiveDescendant", "disableHighlightOnFocus", "disableTypeToSelect", "highlightedIndexProp", "id", "label", "listHandlersProp", "onClickProp", "onDragStart", "onDrop", "onHighlight", "onKeyboardNavigation", "onKeyDown", "onMoveListItem", "onSelect", "onSelectionChange", "restoreLastFocus", "scrollContainerRef", "selected", "selectionStrategy", "selectionKeys", "stickyHeaders", "tabToSelect", "viewportRange", "lastSelection", "useRef", "handleKeyboardNavigation", "evt", "nextIndex", "_a", "_b", "selectionHook", "handleSelect", "useCallback", "selectedId", "scrollContainer", "useMemo", "handleSelectionChange", "isSingleSelection", "selectedItem", "isMultiSelection", "selectedItems", "highlightedIndex", "navigationKeyDown", "navigationMouseMove", "navigationControlProps", "setHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "handleDragStart", "dragDropState", "useSelection", "handleDrop", "onDropSettle", "useListDrop", "setSelected", "useLayoutEffectSkipFirst", "hasSelection", "onMouseDown", "isDragging", "isDragDropScrolling", "dragDropHook", "useDragDropNext", "typeaheadOnKeyDown", "useTypeahead", "handleKeyDown", "_c", "isViewportScrolling", "scrollIntoView", "useViewportTracking", "isScrolling", "handleMouseMove", "idx", "closestListItemIndex", "item", "getActiveDescendant", "listControlProps", "listHandlers", "useCallback", "useMemo", "useRef", "useState", "getContentHeight", "itemCount", "itemHeight", "itemGapSize", "useListHeight", "displayedItemCount", "getItemHeight", "height", "itemHeightProp", "size", "measuredItemHeight", "setMeasuredItemHeight", "useState", "forceUpdate", "proxyItemRef", "useRef", "contentHeight", "computedListHeight", "useMemo", "result", "preferredItemCount", "total", "_", "index", "handleRowHeight", "useCallback", "rowHeightProxyRef", "el", "useResizeObserver", "HeightOnly", "useIsomorphicLayoutEffect", "useCallback", "useMemo", "useRef", "useState", "getRange", "scrollPos", "height", "itemCount", "itemHeight", "viewportRowCount", "from", "to", "useScrollPosition", "listHeight", "listItemCount", "listItemGapSize", "listItemHeight", "onViewportScroll", "firstVisibleRowRef", "lastVisibleRowRef", "scrollPosRef", "range", "viewportRange", "setViewportRange", "e", "scrollTop", "Fragment", "jsx", "jsxs", "createElement", "defaultEmptyMessage", "classBase", "List", "forwardRef", "ListItem", "ListPlaceholder", "allowDragDrop", "children", "className", "collapsibleHeaders", "defaultHighlightedIndex", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "focusVisibleProp", "getItemHeightProp", "getItemId", "height", "highlightedIndexProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "listHandlersProp", "maxHeight", "maxWidth", "minHeight", "minWidth", "onClickProp", "onDragStart", "onDrop", "onMoveListItem", "onSelect", "onSelectionChange", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "checkable", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabIndex", "tabToSelect", "htmlAttributes", "forwardedRef", "_a", "_b", "id", "useId", "containerRef", "useRef", "scrollContainerRef", "contentContainerRef", "size", "setSize", "useState", "handleResize", "useCallback", "collectionHook", "useCollectionItems", "listClientHeight", "computedListHeight", "listItemHeight", "rowHeightProxyRef", "useListHeight", "onVerticalScroll", "viewportRange", "useScrollPosition", "draggable", "draggedItemIndex", "dropIndicator", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "listItemHeaderHandlers", "scrollIntoView", "selected", "useList", "useImperativeScrollingAPI", "appliedFocusVisible", "createHeader", "idx", "headerId", "title", "expanded", "header", "cx", "getItemHeight", "renderCollectionItem", "list", "item", "disabled", "value", "itemId", "label", "isChildItem", "isValidElement", "listItemProps", "isSelected", "cloneElement", "addGroup", "items", "count", "childItems", "renderCollectionItems", "end", "listItems", "renderEmpty", "isEmpty", "renderContent", "itemsToRender", "contentHeight", "sizeStyles", "MeasuredContainer", "LIST_FOCUS_VISIBLE", "useForkRef", "ListItemProxy", "makePrefixer", "useForkRef", "useIdMemo", "clsx", "forwardRef", "memo", "useRef", "useMemo", "KeySet", "from", "to", "keyValue", "rowIndex", "size", "nextKeyValue", "byKey", "k1", "k2", "renderBuffer", "useVirtualization", "data", "listItemGapSize", "listItemHeight", "viewportRange", "keys", "useMemo", "KeySet", "rowHeightWithGap", "lo", "hi", "value", "idx", "jsx", "jsxs", "defaultEmptyMessage", "withBaseName", "makePrefixer", "ListItem", "memo", "VirtualizedList", "forwardRef", "borderless", "children", "className", "collapsibleHeaders", "defaultHighlightedIdx", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "getItemHeight", "getItemId", "height", "highlightedIdxProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "maxHeight", "maxWidth", "minHeight", "minWidth", "onDragStart", "onDrop", "onSelect", "onSelectionChange", "onViewportScroll", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabToSelect", "width", "htmlAttributes", "forwardedRef", "id", "useIdMemo", "rootRef", "useRef", "rowHeightProxyRef", "collectionHook", "useCollectionItems", "contentHeight", "listItemHeight", "listHeight", "useListHeight", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "scrollIntoView", "selected", "useList", "onVerticalScroll", "viewportRange", "useScrollPosition", "data", "useVirtualization", "useImperativeScrollingAPI", "addItem", "list", "row", "idx", "key", "offset", "pos", "item", "index", "clsx", "isSelected", "renderItems", "end", "listItems", "renderEmpty", "renderContent", "sizeStyles", "useForkRef", "ListItemProxy", "cx", "jsx", "classBase", "RadioIcon", "checked", "htmlAttributes", "cx", "useControlled", "useCallback", "useMemo", "useDropdown", "collectionHook", "defaultHighlightedIndexProp", "defaultIsOpen", "defaultSelected", "highlightedIndexProp", "isOpenProp", "itemToString", "listRef", "onHighlight", "onOpenChange", "onSelectionChange", "onSelect", "selected", "selectionStrategy", "isMultiSelect", "isMultiSelection", "isOpen", "setIsOpen", "useControlled", "handleSelectionChange", "useCallback", "evt", "handleSelect", "listHook", "useList", "handleOpenChange", "open", "triggerLabel", "useMemo", "selectedItems", "id", "item", "jsx", "jsxs", "Dropdown", "forwardRef", "ariaLabel", "children", "defaultIsOpen", "defaultSelected", "idProp", "isOpenProp", "itemToString", "onOpenChange", "onSelectionChange", "onSelect", "selectedProp", "selectionStrategy", "source", "triggerComponent", "ListItem", "ListProps", "width", "props", "forwardedRef", "id", "useId", "rootRef", "useRef", "listRef", "forkedRef", "useForkRef", "collectionHook", "useCollectionItems", "highlightedIndex", "triggerLabel", "listHandlers", "listControlProps", "selected", "dropdownListHook", "useDropdown", "itemIdToItem", "useCallback", "itemId", "getTriggerComponent", "ariaProps", "ownProps", "cloneElement", "forwardCallbackProps", "DropdownButton", "CollectionProvider", "DropdownBase", "List", "cx", "jsx", "classBase", "ChevronIcon", "props", "direction", "htmlAttributes", "cx", "useLayoutEffectSkipFirst", "useControlled", "useCallback", "useRef", "useState", "EnterOnly", "useCombobox", "allowBackspaceClearsSelection", "allowFreeText", "ariaLabel", "collectionHook", "defaultIsOpen", "defaultSelected", "defaultValue", "onBlur", "onFocus", "onChange", "onDeselect", "onSelect", "id", "initialHighlightedIndex", "isOpenProp", "itemCount", "itemsToString", "itemToString", "listRef", "onOpenChange", "onSelectionChange", "onSetSelectedText", "selectedProp", "selectionKeys", "selectionStrategy", "valueProp", "inputProps", "isMultiSelect", "isMultiSelection", "setFilterPattern", "setHighlightedIndexRef", "useRef", "selectedRef", "ignoreSelectOnFocus", "isOpen", "setIsOpen", "useControlled", "value", "setValue", "disableAriaActiveDescendant", "setDisableAriaActiveDescendant", "useState", "highlightSelectedItem", "useCallback", "selected", "_a", "setTextValue", "applyFilter", "reconcileInput", "newValue", "applySelection", "selectFreeTextInputValue", "text", "handleOpenChange", "open", "closeReason", "handleSelectionChange", "evt", "handleKeyboardNavigation", "focusVisible", "setHighlightedIndex", "highlightedIndex", "listControlProps", "listHookListHandlers", "useList", "listHandlersOnClick", "handleListClick", "handleInputChange", "handleInputKeyDown", "e", "inputOnFocus", "listOnFocus", "handleInputFocus", "listFocused", "element", "inputOnBlur", "listOnBlur", "handleInputBlur", "inputOnSelect", "handleInputSelect", "event", "useLayoutEffectSkipFirst", "hasSelection", "mergedInputProps", "jsx", "jsxs", "ComboBox", "forwardRef", "InputProps", "ListProps", "PopupProps", "ListItem", "ariaLabel", "allowBackspaceClearsSelection", "allowFreeText", "children", "defaultIsOpen", "defaultSelected", "defaultValue", "disabled", "disableFilter", "onBlur", "onFocus", "onChange", "onSelect", "onSetSelectedText", "getFilterRegex", "idProp", "initialHighlightedIndex", "isOpenProp", "itemToString", "itemsToString", "onDeselect", "onOpenChangeProp", "onSelectionChange", "selectedProp", "selectionKeys", "selectionStrategy", "source", "valueProp", "width", "props", "forwardedRef", "id", "useId", "listRef", "useRef", "valueFromSelected", "item", "initialValue", "items1", "items2", "collectionHook", "useCollectionItems", "focusVisible", "highlightedIndex", "endAdornmentProp", "inputProps", "isOpen", "listHandlers", "controlProps", "onOpenChange", "selected", "useCombobox", "handleDropdownIconClick", "useCallback", "CollectionProvider", "DropdownBase", "Input", "ChevronIcon", "List", "Button", "cx", "forwardRef", "useCallback", "jsx", "classBase", "getNextValue", "value", "valueList", "index", "CycleStateButton", "className", "onCommit", "values", "buttonProps", "forwardedRef", "handleClick", "evt", "nextValue", "response", "getEditRuleValidator", "buildValidationChecker", "rules", "value", "applyRules", "result", "rule", "editRuleValidator", "ruleResult", "useLayoutEffectSkipFirst", "dispatchCustomEvent", "useCallback", "useRef", "useState", "WarnCommit", "useEditableText", "clientSideEditValidationCheck", "initialValue", "onCommit", "type", "message", "setMessage", "value", "setValue", "initialValueRef", "isDirtyRef", "hasCommittedRef", "commit", "target", "warningMessage", "response", "handleKeyDown", "evt", "handleBlur", "handleChange", "typedValue", "cx", "useCallback", "useLayoutEffect", "forwardRef", "useRef", "Input", "useControlled", "jsx", "classBase", "EditableLabel", "forwardRef", "classNameProp", "defaultEditing", "defaultValue", "editingProp", "onChange", "onEnterEditMode", "onExitEditMode", "valueProp", "restProps", "forwardedRef", "inputRef", "useRef", "editingRef", "value", "setValue", "useControlled", "editing", "_setEditing", "setEditing", "useCallback", "initialValue", "useLayoutEffect", "enterEditMode", "exitEditMode", "cancelEdit", "allowDeactivation", "originalValue", "handleChange", "evt", "handleDoubleClick", "handleBlur", "handleKeyDown", "className", "cx", "Input", "cx", "forwardRef", "Tooltip", "useTooltip", "isValidNumber", "useId", "Input", "cx", "forwardRef", "useCallback", "Fragment", "jsx", "jsxs", "classBase", "constantInputProps", "VuuInput", "forwardRef", "className", "errorMessage", "idProp", "onCommit", "onKeyDown", "type", "props", "forwardedRef", "id", "useId", "anchorProps", "tooltipProps", "useTooltip", "commitValue", "useCallback", "evt", "value", "numericValue", "isValidNumber", "handleKeyDown", "handleBlur", "endAdornment", "Input", "cx", "Tooltip", "jsx", "classBase", "noop", "ExpandoInput", "forwardRef", "classNameProp", "errorMessage", "value", "inputProps", "onCommit", "props", "forwardedRef", "cx", "VuuInput", "jsx", "jsxs", "Checkbox", "props", "onToggle", "checked", "label", "e", "CheckboxIcon", "jsx", "jsxs", "RadioButton", "props", "onClick", "checked", "label", "groupName", "RadioIcon", "Table", "useId", "Input", "forwardRef", "useMemo", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "column", "columnMap", "row", "key", "value", "registerComponent", "useControlledTableNavigation", "useCallback", "useMemo", "useState", "defaultItemToString", "columns", "columnMap", "row", "name", "useInstrumentPicker", "dataSource", "defaultIsOpen", "isOpenProp", "itemToString", "onOpenChange", "onSelect", "searchColumns", "value", "setValue", "useState", "isOpen", "setIsOpen", "useControlled", "highlightedIndexRef", "onKeyDown", "tableRef", "useControlledTableNavigation", "baseFilterPattern", "useMemo", "col", "handleOpenChange", "useCallback", "open", "closeReason", "handleInputChange", "evt", "filter", "handleSelectRow", "inputProps", "tableHandlers", "jsx", "jsxs", "classBase", "SearchCell", "InstrumentPicker", "forwardRef", "dataSource", "TableProps", "className", "columnMap", "disabled", "idProp", "itemToString", "onOpenChangeProp", "onSelect", "schema", "searchColumns", "width", "htmlAttributes", "forwardedRef", "id", "useId", "highlightedIndex", "inputProps", "isOpen", "onOpenChange", "tableHandlers", "tableRef", "value", "useInstrumentPicker", "endAdornment", "useMemo", "tableProps", "DropdownBase", "Input", "Table", "registerComponent", "Table", "useControlledTableNavigation", "Input", "cx", "useCallback", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "column", "columnMap", "row", "key", "value", "registerComponent", "useCallback", "useMemo", "useState", "useInstrumentSearch", "dataSource", "searchColumns", "searchState", "setSearchState", "baseFilterPattern", "col", "handleChange", "evt", "value", "filter", "jsx", "jsxs", "classBase", "SearchCell", "defaultTableConfig", "searchIcon", "InstrumentSearch", "TableProps", "autoFocus", "className", "dataSourceProp", "placeHolder", "searchColumns", "htmlAttributes", "_a", "dataSource", "onChange", "searchState", "useInstrumentSearch", "highlightedIndexRef", "onHighlight", "onKeyDown", "tableRef", "useControlledTableNavigation", "searchCallbackRef", "useCallback", "el", "cx", "Input", "Table", "registerComponent", "getMovingValueDirection", "isValidNumber", "numericFormatter", "memo", "useMemo", "useRef", "cx", "jsx", "jsxs", "classBase", "getValueFormatter", "decimals", "numericFormatter", "INITIAL_VALUE", "PriceTicker", "memo", "className", "price", "showArrow", "htmlAttributes", "ref", "useRef", "prevValue", "prevDirection", "formatNumber", "useMemo", "direction", "isValidNumber", "getMovingValueDirection", "cx", "asReactElements", "OverflowContainer", "useId", "Button", "cx", "React", "useMemo", "useRef", "dispatchMouseEvent", "useCallback", "useRef", "isTabMenuOptions", "options", "closeCommand", "renameCommand", "getElementDataIndex", "getIndexOfItem", "container", "query", "targetTab", "getIndexOfSelectedTab", "getIndexOfEditedItem", "isValidNumber", "MEASURES", "useCallback", "useMemo", "useRef", "useAnimatedSelectionThumb", "containerRef", "activeTabIndex", "orientation", "animationSuspendedRef", "suspendAnimation", "resumeAnimation", "onTransitionEnd", "_a", "_b", "lastSelectedRef", "offset", "size", "oldSelected", "newSelected", "positionProp", "sizeProp", "oldPosition", "oldSize", "newPosition", "duration", "_c", "_d", "useControlled", "dispatchMouseEvent", "getFocusableElement", "useCallback", "useRef", "useState", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End", "navigation", "Home", "End", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "isNavigationKey", "key", "orientation", "isMenuActivationKey", "nextItemIdx", "count", "direction", "idx", "isNonWrappedElement", "element", "getElementByPosition", "container", "index", "useKeyboardNavigation", "containerRef", "defaultHighlightedIdx", "highlightedIdxProp", "keyBoardActivation", "selectedTabIndex", "manualActivation", "mouseClickPending", "useRef", "focusedRef", "hasFocus", "setHasFocus", "useState", "forceRefresh", "highlightedIdx", "_setHighlightedIdx", "useControlled", "setHighlightedIdx", "useCallback", "value", "keyboardNavigation", "focusTab", "tabIndex", "immediateFocus", "withKeyboard", "delay", "setFocus", "focussableElement", "getFocusableElement", "onFocus", "e", "getIndexOfEditedItem", "getIndexCount", "_a", "_b", "nextFocusableItemIdx", "indexCount", "nextIdx", "nextDirection", "newIdx", "navigateChildItems", "forceFocusVisible", "highlightedTabHasMenu", "el", "activateTabMenu", "menuEl", "dispatchMouseEvent", "handleKeyDown", "handleItemClick", "_", "handleFocus", "handleContainerMouseDown", "sourceTarget", "destTarget", "useControlled", "useCallback", "defaultSelectionKeys", "isTabElement", "el", "useSelection", "defaultSelected", "highlightedIdx", "onSelectionChange", "selectedProp", "selected", "setSelected", "isControlled", "isSelectionEvent", "evt", "selectItem", "tabIndex", "handleKeyDown", "e", "targetElement", "onClick", "editKeys", "isEditKey", "key", "getElementWithIndex", "container", "index", "useTabstrip", "activeTabIndexProp", "allowDragDrop", "animateSelectionThumb", "containerRef", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "keyBoardActivation", "lastSelection", "useRef", "keyboardHookFocusTab", "highlightedIdx", "keyboardHookHandleClick", "keyboardHookHandleKeyDown", "keyboardHookSetHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "selectionHookActivateTab", "selectionHookHandleClick", "selectionHookHandleKeyDown", "selectionHookSelected", "useSelection", "containerStyle", "resumeAnimation", "suspendAnimation", "useAnimatedSelectionThumb", "handleDrop", "useCallback", "fromIndex", "toIndex", "selected", "nextSelectedTab", "dragDropHookHandleMouseDown", "dragDropHook", "useDragDropNext", "handleExitEditMode", "originalValue", "editedValue", "allowDeactivation", "tabIndex", "handleClick", "evt", "getEditableLabel", "targetEl", "tabInEditMode", "editableLabel", "editTab", "editableLabelEl", "dispatchMouseEvent", "handleKeyDown", "handleCloseTabFromMenu", "selectedTabIndex", "getIndexOfSelectedTab", "newActiveTabIndex", "handleRenameTabFromMenu", "handleTabMenuAction", "action", "isTabMenuOptions", "handleTabMenuClose", "onSwitchWrappedItemIntoView", "item", "navigationProps", "handleAddTabClick", "tabProps", "Fragment", "jsx", "jsxs", "createElement", "classBase", "Tabstrip", "activeTabIndexProp", "allowAddTab", "allowCloseTab", "allowDragDrop", "allowRenameTab", "animateSelectionThumb", "children", "classNameProp", "idProp", "keyBoardActivation", "location", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "showTabMenuButton", "styleProp", "tabClassName", "htmlAttributes", "rootRef", "useRef", "activeTabIndex", "focusVisible", "containerStyle", "draggedItemIndex", "onClickAddTab", "tabProps", "tabstripHook", "useTabstrip", "id", "useId", "className", "cx", "style", "tabs", "useMemo", "asReactElements", "child", "index", "tabId", "closeable", "editable", "tabLocation", "showMenuButton", "selected", "React", "Button", "OverflowContainer", "useForkRef", "cx", "forwardRef", "useCallback", "useRef", "PopupMenu", "useMemo", "cx", "jsx", "classBase", "TabMenu", "allowClose", "allowRename", "controlledComponentId", "controlledComponentTitle", "location", "onMenuAction", "onMenuClose", "index", "menuBuilder", "menuOptions", "useMemo", "_location", "options", "menuItems", "renameCommand", "closeCommand", "PopupMenu", "cx", "jsx", "jsxs", "classBase", "noop", "Tab", "forwardRef", "ariaControls", "children", "className", "closeable", "dragging", "editable", "editing", "focusVisible", "index", "label", "location", "onClick", "onClose", "onEnterEditMode", "onExitEditMode", "onFocusProp", "onKeyUp", "onMenuAction", "onMenuClose", "orientation", "selected", "showMenuButton", "tabIndex", "props", "ref", "rootRef", "useRef", "editableRef", "setForkRef", "useForkRef", "handleClick", "useCallback", "e", "handleOnExitEditMode", "originalValue", "editedValue", "allowDeactivation", "handleKeyUp", "getLabel", "EditableLabel", "handleFocus", "evt", "input", "cx", "TabMenu", "useForkRef", "useId", "cx", "forwardRef", "useRef", "listItemIndex", "listItemEl", "_a", "idx", "closestListItem", "el", "closestListItemIndex", "el", "listItemIndex", "closestListItem", "useCallback", "useMemo", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "useItemsWithIds", "sourceProp", "idRoot", "collapsibleHeaders", "defaultExpanded", "revealSelected", "countChildItems", "item", "items", "idx", "i", "count", "isExpanded", "path", "id", "normalizeItems", "indexer", "level", "results", "flattenedSource", "all", "_a", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "expanded", "normalisedItem", "childCount", "children", "sourceWithIds", "sourceItemById", "target", "sourceWithId", "useCallback", "useRef", "useControlled", "SINGLE", "CHECKBOX", "MULTI", "EXTENDED", "defaultSelectionKeys", "NO_HANDLERS", "isCollapsibleItem", "item", "groupSelectionEnabled", "groupSelection", "useSelection", "defaultSelected", "highlightedIdx", "treeNodes", "onChange", "selectedProp", "selection", "selectionKeys", "singleSelect", "multiSelect", "extendedSelect", "lastActive", "isSelectionEvent", "evt", "selected", "setSelected", "selectItemAtIndex", "idx", "id", "rangeSelect", "preserveExistingSelection", "active", "isSelected", "actsLikeSingleSelect", "actsLikeMultiSelect", "newSelected", "i", "from", "to", "handleKeyDown", "handleKeyboardNavigation", "currentIndex", "listHandlers", "handleClick", "useCallback", "useEffect", "useLayoutEffect", "useRef", "HeightOnly", "useViewportTracking", "root", "highlightedIdx", "stickyHeaders", "scrollTop", "useRef", "scrolling", "rootHeight", "rootScrollHeight", "scrollIntoView", "useCallback", "el", "targetEl", "headerHeight", "t", "h", "viewportStart", "viewportEnd", "scrollHandler", "e", "useEffect", "rootEl", "useLayoutEffect", "item", "onResize", "height", "scrollHeight", "useResizeObserver", "useCallback", "useRef", "useCallback", "useMemo", "useRef", "getNodeParentPath", "id", "pos", "steps", "isGroupNode", "node", "isHeader", "node", "PATH_SEPARATORS", "isDescendantOf", "targetPath", "getNodeById", "nodes", "id", "getIndexOfNode", "treeNodes", "i", "replaceNode", "props", "childNodes", "useControlled", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Delete", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "key", "orientation", "verticalNavigationKeys", "horizontalNavigationKeys", "nextItemIdx", "count", "key", "idx", "ArrowUp", "ArrowLeft", "isLeaf", "item", "isFocusable", "useKeyboardNavigation", "defaultHighlightedIdx", "highlightedIdxProp", "treeNodes", "onHighlight", "onKeyboardNavigation", "selected", "ArrowBwd", "ArrowFwd", "useMemo", "ArrowDown", "highlightedIdx", "setHighlightedIdx", "isControlledHighlighting", "useControlled", "setHighlightedIndex", "useCallback", "nextFocusableItemIdx", "nextIdx", "keyBoardNavigation", "useRef", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "node", "getNodeById", "getIndexOfNode", "navigateChildItems", "e", "handleKeyDown", "isNavigationKey", "listProps", "useRef", "useState", "populateIndices", "nodes", "results", "idx", "skipToNextHeader", "node", "isHeader", "isGroupNode", "isExpanded", "useHierarchicalData", "source", "externalSource", "useRef", "statefulSource", "indexPositions", "forceUpdate", "useState", "setData", "value", "useCallback", "useRef", "NO_HANDLERS", "isToggleElement", "element", "useCollapsibleGroups", "collapsibleHeaders", "highlightedIdx", "treeNodes", "setVisibleData", "source", "fullSource", "useRef", "stateSource", "setSource", "useCallback", "value", "expandNode", "nodeList", "id", "replaceNode", "collapseNode", "handleKeyDown", "e", "ArrowRight", "Enter", "node", "ArrowLeft", "listHandlers", "listItemHandlers", "evt", "el", "closestListItem", "getNodeById", "useCallback", "useTreeKeyboardNavigation", "highlightedIdx", "hiliteItemAtIndex", "indexPositions", "source", "useCallback", "e", "ArrowLeft", "node", "parentId", "getNodeParentPath", "parentNode", "getNodeById", "idx", "getIndexOfNode", "EMPTY_ARRAY", "useTree", "defaultSelected", "sourceWithIds", "onChange", "onHighlightProp", "selectedProp", "selection", "lastSelection", "useRef", "dataHook", "useHierarchicalData", "handleKeyboardNavigation", "evt", "nextIdx", "_a", "_b", "selectionHook", "highlightedIdx", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "useSelection", "treeNavigationHook", "useTreeKeyboardNavigation", "handleClick", "useCallback", "_c", "handleKeyDown", "_d", "_e", "_f", "_g", "_h", "getActiveDescendant", "listProps", "listItemHandlers", "jsx", "jsxs", "createElement", "classBase", "isExpanded", "node", "TreeNode", "children", "idx", "props", "Tree", "forwardRef", "allowDragDrop", "className", "defaultSelected", "groupSelection", "idProp", "onHighlight", "onSelectionChange", "revealSelected", "selectedProp", "selection", "source", "htmlAttributes", "forwardedRef", "_a", "id", "useId", "rootRef", "useRef", "sourceWithIds", "sourceItemById", "useItemsWithIds", "handleSelectionChange", "evt", "selected", "sourceItems", "sourceItem", "focusVisible", "highlightedIdx", "hiliteItemAtIndex", "listProps", "listItemHandlers", "visibleData", "useTree", "useViewportTracking", "propsCommonToAllListItems", "targetEl", "closestListItemIndex", "allowGroupSelect", "groupSelectionEnabled", "addLeafNode", "list", "item", "getListItemProps", "addGroupNode", "child", "title", "i", "cx", "renderSourceContent", "items", "listItems", "useForkRef", "Tree_default"]
5
+ "mappings": "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",
6
+ "names": ["useId", "forwardRef", "useCallback", "useRef", "useCallback", "useRef", "useState", "isValidElement", "_a", "isSelected", "isValidElement", "_a", "useState", "useRef", "itemToString", "isExpanded", "useCallback", "flattenedCollection", "flattenedSource", "_b", "isLeaf", "children", "isValidElement", "toCollectionItem", "useCallback", "useEffect", "useRef", "measurements", "dimensions", "target", "useCallback", "useRef", "useState", "useForkRef", "Children", "cloneElement", "useRef", "useControlled", "useCallback", "useRef", "useState", "useEffect", "useRef", "_a", "_a", "useRef", "useCallback", "useControlled", "useState", "measurements", "jsx", "useRef", "Children", "id", "cloneElement", "width", "className", "useForkRef", "cx", "forwardRef", "jsx", "jsxs", "classBase", "forwardRef", "DropdownButton", "cx", "useForkRef", "cloneElement", "forwardRef", "useCallback", "useRef", "useId", "useCallback", "NO_HANDLERS", "useCallback", "useMemo", "useControlled", "useCallback", "useMemo", "useRef", "useState", "_a", "isFocusable", "useRef", "useState", "useControlled", "useCallback", "useMemo", "getElementByDataIndex", "useCallback", "useRef", "useRef", "useCallback", "getElementByDataIndex", "useCallback", "useRef", "useRef", "useCallback", "useCallback", "useRef", "HeightOnly", "useRef", "useCallback", "jsx", "forwardRef", "cx", "cx", "jsx", "classBase", "cx", "jsx", "jsxs", "classBase", "forwardRef", "cx", "ListItem", "useId", "useForkRef", "cx", "cloneElement", "forwardRef", "isValidElement", "useCallback", "useRef", "useState", "useCallback", "useMemo", "useRef", "createContext", "useCallback", "useContext", "useMemo", "useCallback", "useRef", "jsx", "createContext", "useMemo", "useCallback", "resumeDrag", "handleDrop", "dropTargets", "_a", "useContext", "dispatchCustomEvent", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "useForkRef", "cx", "forwardRef", "useCallback", "useMemo", "Popup", "Portal", "jsx", "forwardRef", "Draggable", "useCallback", "useForkRef", "useMemo", "Portal", "Popup", "cx", "cloneElement", "measureDropTargets", "start", "_a", "useCallback", "useRef", "useRef", "useCallback", "useCallback", "useRef", "useCallback", "useRef", "useState", "useCallback", "useMemo", "useMemo", "useCallback", "dropZone", "jsx", "NOT_OVERFLOWED", "NOT_HIDDEN", "useRef", "useState", "useCallback", "measureDropTargets", "dropZone", "useCallback", "useMemo", "useRef", "useState", "useCallback", "useMemo", "useRef", "useRef", "useMemo", "useCallback", "useRef", "useState", "useCallback", "measureDropTargets", "useMemo", "_a", "jsx", "useRef", "useState", "useCallback", "_a", "settlingItem", "dispatchCustomEvent", "cloneElement", "useLayoutEffect", "useEffect", "useCallback", "useEffect", "useRef", "useRef", "useCallback", "selected", "useEffect", "useRef", "_a", "useCallback", "useMemo", "selected", "id", "useCallback", "useMemo", "useRef", "useState", "useState", "useRef", "useMemo", "contentHeight", "useCallback", "height", "useIsomorphicLayoutEffect", "useCallback", "useMemo", "useRef", "useState", "range", "Fragment", "jsx", "jsxs", "classBase", "forwardRef", "List", "ListItem", "itemToString", "_a", "useId", "useRef", "useState", "useCallback", "size", "createHeader", "cx", "_b", "isValidElement", "cloneElement", "addGroup", "id", "childItems", "useForkRef", "makePrefixer", "useForkRef", "forwardRef", "useRef", "useMemo", "useMemo", "jsx", "jsxs", "defaultEmptyMessage", "withBaseName", "makePrefixer", "ListItem", "forwardRef", "List", "itemToString", "useRef", "data", "useForkRef", "cx", "jsx", "classBase", "cx", "useControlled", "useCallback", "useMemo", "itemToString", "useControlled", "useCallback", "selected", "useMemo", "jsx", "jsxs", "Dropdown", "forwardRef", "itemToString", "ListItem", "ListProps", "useId", "useRef", "useForkRef", "useCallback", "id", "cloneElement", "cx", "jsx", "classBase", "cx", "useLayoutEffectSkipFirst", "useControlled", "useCallback", "useRef", "useState", "itemToString", "useRef", "useControlled", "useState", "useCallback", "selected", "_a", "value", "useLayoutEffectSkipFirst", "jsx", "jsxs", "forwardRef", "InputProps", "ListProps", "ListItem", "itemToString", "useId", "useRef", "useCallback", "Button", "cx", "forwardRef", "useCallback", "jsx", "classBase", "CycleStateButton", "useLayoutEffectSkipFirst", "dispatchCustomEvent", "useCallback", "useRef", "useState", "cx", "useCallback", "useLayoutEffect", "forwardRef", "useRef", "Input", "useControlled", "jsx", "classBase", "forwardRef", "EditableLabel", "useRef", "useControlled", "useCallback", "value", "useLayoutEffect", "cx", "Input", "cx", "forwardRef", "isValidNumber", "useId", "Input", "cx", "forwardRef", "useCallback", "Fragment", "jsx", "jsxs", "classBase", "forwardRef", "VuuInput", "useId", "useCallback", "isValidNumber", "Input", "cx", "jsx", "classBase", "forwardRef", "ExpandoInput", "cx", "jsx", "jsxs", "jsx", "jsxs", "useId", "Input", "forwardRef", "useMemo", "jsx", "jsxs", "classBase", "useCallback", "useMemo", "useState", "itemToString", "useState", "useMemo", "useCallback", "value", "jsx", "jsxs", "classBase", "forwardRef", "InstrumentPicker", "TableProps", "itemToString", "useId", "useMemo", "Input", "registerComponent", "Table", "useControlledTableNavigation", "Input", "cx", "useCallback", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "registerComponent", "useCallback", "useMemo", "useState", "jsx", "jsxs", "classBase", "SearchCell", "TableProps", "_a", "useControlledTableNavigation", "useCallback", "cx", "Input", "Table", "registerComponent", "isValidNumber", "memo", "useMemo", "useRef", "cx", "jsx", "jsxs", "classBase", "memo", "useRef", "useMemo", "isValidNumber", "cx", "useId", "Button", "cx", "React", "useMemo", "useRef", "dispatchMouseEvent", "useCallback", "useRef", "getElementDataIndex", "isValidNumber", "useCallback", "useMemo", "useRef", "_a", "_b", "useControlled", "dispatchMouseEvent", "useCallback", "useRef", "useState", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End", "Home", "End", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "isNavigationKey", "nextItemIdx", "useKeyboardNavigation", "useRef", "useState", "useControlled", "useCallback", "_a", "dispatchMouseEvent", "useControlled", "useCallback", "defaultSelectionKeys", "useSelection", "useRef", "useKeyboardNavigation", "useSelection", "useCallback", "dispatchMouseEvent", "Fragment", "jsx", "jsxs", "createElement", "classBase", "useRef", "useId", "cx", "useMemo", "className", "React", "Button", "useForkRef", "cx", "forwardRef", "useCallback", "useRef", "useMemo", "cx", "jsx", "classBase", "useMemo", "cx", "jsx", "jsxs", "classBase", "noop", "forwardRef", "Tab", "useRef", "useForkRef", "useCallback", "editable", "cx", "useForkRef", "useId", "cx", "forwardRef", "useRef", "listItemIndex", "_a", "closestListItem", "closestListItemIndex", "listItemIndex", "closestListItem", "useCallback", "useMemo", "PathSeparators", "isPathSeparator", "isParentPath", "countChildItems", "count", "isExpanded", "flattenedSource", "_a", "isLeaf", "useCallback", "useRef", "useControlled", "CHECKBOX", "defaultSelectionKeys", "NO_HANDLERS", "groupSelectionEnabled", "useSelection", "isSelected", "id", "useCallback", "useEffect", "useLayoutEffect", "useRef", "HeightOnly", "useViewportTracking", "useRef", "useCallback", "useEffect", "useLayoutEffect", "useCallback", "useRef", "useCallback", "useMemo", "useRef", "isGroupNode", "isHeader", "PATH_SEPARATORS", "isDescendantOf", "useControlled", "union", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "navigationKeys", "nextItemIdx", "ArrowUp", "ArrowLeft", "isLeaf", "isFocusable", "useKeyboardNavigation", "useMemo", "ArrowDown", "useControlled", "useCallback", "useRef", "isNavigationKey", "useRef", "useState", "isHeader", "isGroupNode", "useRef", "useState", "useCallback", "useRef", "NO_HANDLERS", "useCollapsibleGroups", "useRef", "useCallback", "ArrowRight", "Enter", "ArrowLeft", "closestListItem", "useCallback", "useCallback", "ArrowLeft", "EMPTY_ARRAY", "useRef", "_a", "useKeyboardNavigation", "useCollapsibleGroups", "useSelection", "useCallback", "jsx", "jsxs", "createElement", "classBase", "forwardRef", "Tree", "_a", "useId", "useRef", "selected", "sourceItems", "id", "useViewportTracking", "closestListItemIndex", "groupSelectionEnabled", "cx", "useForkRef"]
7
7
  }