@vuu-ui/vuu-ui-controls 0.8.13-debug → 0.8.14-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 +137 -137
- package/esm/index.js.map +2 -2
- package/package.json +8 -8
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/useDragDropNext.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropState.ts", "../../../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", "../../../node_modules/clsx/dist/clsx.m.js", "../../../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/combo-box/useCombobox.ts", "../../../packages/vuu-ui-controls/src/list/ChevronIcon.tsx", "../../../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/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-data-react/src/hooks/useDataSource.ts", "../../../packages/vuu-data-react/src/hooks/useLookupValues.ts", "../../../packages/vuu-shell/src/app-header/AppHeader.tsx", "../../../packages/vuu-shell/src/login/LoginPanel.tsx", "../../../packages/vuu-shell/src/login/VuuLogo.tsx", "../../../packages/vuu-shell/src/login/login-utils.ts", "../../../packages/vuu-shell/src/connection-status/ConnectionStatusIcon.tsx", "../../../packages/vuu-shell/src/density-switch/DensitySwitch.tsx", "../../../packages/vuu-shell/src/feature/Feature.tsx", "../../../packages/vuu-shell/src/feature/FeatureErrorBoundary.tsx", "../../../packages/vuu-shell/src/feature/Loader.tsx", "../../../packages/vuu-shell/src/feature/css-module-loader.ts", "../../../packages/vuu-shell/src/layout-management/SaveLayoutPanel.tsx", "../../../packages/vuu-shell/src/layout-management/useLayoutManager.tsx", "../../../packages/vuu-shell/src/layout-management/LayoutList.tsx", "../../../packages/vuu-icons/src/VuuLogo.tsx", "../../../packages/vuu-shell/src/left-nav/LeftNav.tsx", "../../../packages/vuu-shell/src/feature-list/FeatureList.tsx", "../../../packages/vuu-shell/src/theme-provider/ThemeProvider.tsx", "../../../packages/vuu-shell/src/session-editing-form/SessionEditingForm.tsx", "../../../packages/vuu-shell/src/shell.tsx", "../../../packages/vuu-shell/src/shell-layouts/context-panel/ContextPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useFullHeightLeftPanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/side-panel/SidePanel.tsx", "../../../packages/vuu-shell/src/shell-layouts/useInlayLeftPanel.tsx", "../../../packages/vuu-shell/src/ShellContextProvider.tsx", "../../../packages/vuu-shell/src/theme-switch/ThemeSwitch.tsx", "../../../packages/vuu-data-react/src/hooks/useServerConnectionStatus.ts", "../../../packages/vuu-data-react/src/hooks/useServerConnectionQuality.ts", "../../../packages/vuu-data-react/src/hooks/useTypeaheadSuggestions.ts", "../../../node_modules/@lezer/common/dist/index.js", "../../../node_modules/@lezer/lr/dist/index.js", "../../../packages/vuu-filter-parser/src/generated/filter-parser.js", "../../../packages/vuu-filter-parser/src/FilterTreeWalker.ts", "../../../packages/vuu-filter-parser/src/FilterParser.ts", "../../../packages/vuu-data-react/src/hooks/useVuuMenuActions.ts", "../../../packages/vuu-data-react/src/hooks/useVuuTables.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", "../../../packages/vuu-ui-controls/src/vuu-input/VuuInput.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useId } from \"@vuu-ui/vuu-layout\";\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 { useCombobox } from \"./useCombobox\";\nimport { ChevronIcon } from \"../list/ChevronIcon\";\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 allowFreeText?: boolean;\n defaultValue?: string;\n getFilterRegex?: (inputValue: string) => RegExp;\n initialHighlightedIndex?: number;\n itemsToString?: (items: Item[]) => string;\n onSetSelectedText?: (text: string) => void;\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 allowFreeText,\n children,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n disabled,\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 onOpenChange: onOpenChangeProp,\n onSelectionChange,\n selected: selectedProp,\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 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 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 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 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 id={`${id}-list`}\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\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) {\n return getDefaultFilter(filterPattern.current, getFilterRegex);\n } else {\n return null;\n }\n }, [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 }, index) =>\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\nconst isScrollAttribute = {\n scrollHeight: true,\n scrollWidth: true,\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 (let [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 cx from \"classnames\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport { Children, cloneElement, forwardRef, useRef } from \"react\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdownBase } from \"./useDropdownBase\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\nimport { PopupComponent as Popup, Portal } from \"@vuu-ui/vuu-popups\";\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 \"classnames\";\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-layout\";\nimport {\n CollectionProvider,\n itemToString as defaultItemToString,\n SelectionStrategy,\n SelectionType,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { List, ListProps } from \"../list\";\nimport { DropdownBase, MaybeChildProps } from \"./DropdownBase\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { forwardCallbackProps } from \"../utils\";\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 = (item: 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 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 \"classnames\";\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 \"classnames\";\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, useId } from \"@vuu-ui/vuu-layout\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactElement,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n isSelected,\n LIST_FOCUS_VISIBLE,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\nimport {\n CollectionIndexer,\n CollectionItem,\n itemToString as defaultItemToString,\n SelectionStrategy,\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-layout\";\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\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 { 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 { 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 { useForkRef } from \"@salt-ds/core\";\nimport cx from \"classnames\";\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", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "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 \"classnames\";\n\nimport \"./RadioIcon.css\";\n\nconst classBase = \"vuuRadioIcon\";\n\nexport const RadioIcon = ({\n checked = false,\n ...htmlAttributes\n}) => (\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 { InputProps, useControlled } from \"@salt-ds/core\";\nimport { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-layout\";\nimport {\n ChangeEvent,\n FocusEvent,\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\";\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 Omit<ComponentSelectionProps<Item, S>, \"onSelect\">,\n Omit<\n ListHookProps<Item, S>,\n \"containerRef\" | \"defaultSelected\" | \"onSelect\" | \"selected\"\n > {\n InputProps?: InputProps;\n allowFreeText?: boolean;\n ariaLabel?: string;\n defaultValue?: string;\n id: string;\n initialHighlightedIndex?: number;\n itemCount: number;\n itemsToString?: (items: Item[]) => string;\n itemToString?: (item: Item) => string;\n listRef: RefObject<HTMLDivElement>;\n onSetSelectedText?: (text: string) => void;\n value?: string;\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 allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n onBlur,\n onFocus,\n onChange,\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 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 console.log(\"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);\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 onKeyboardNavigation: handleKeyboardNavigation,\n // onKeyDown: handleInputKeyDown,\n onSelectionChange: handleSelectionChange,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionKeys: EnterOnly,\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 { 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 };\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 cx from \"classnames\";\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 (\n <span {...htmlAttributes} className={cx(classBase, direction)} />\n )\n};\n", "import { Button, ButtonProps } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { CommitResponse } from \"packages/vuu-table-types\";\nimport {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"packages/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-layout\";\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 \"classnames\";\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 { VuuInput, VuuInputProps } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"classnames\";\nimport { ForwardedRef, forwardRef } from \"react\";\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 { CheckboxIcon } from \"@vuu-ui/vuu-ui-controls/src/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 { TableSchema } from \"@vuu-ui/vuu-data\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\nimport { Table, TableProps, TableRowSelectHandler } from \"@vuu-ui/vuu-table\";\nimport { ColumnMap } 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\";\nimport { useInstrumentPicker } from \"./useInstrumentPicker\";\n\nimport \"./InstrumentPicker.css\";\n\nconst classBase = \"vuuInstrumentPicker\";\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 } from \"@vuu-ui/vuu-data\";\nimport { 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\";\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 \"classnames\";\nimport { HTMLAttributes, RefCallback, useCallback } from \"react\";\nimport \"./SearchCell\";\n\nimport \"./InstrumentSearch.css\";\nimport { VuuTable } from \"packages/vuu-protocol-types\";\nimport { useInstrumentSearch } from \"./useInstrumentSearch\";\n\nconst classBase = \"vuuInstrumentSearch\";\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 table?: VuuTable;\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 table,\n ...htmlAttributes\n}: InstrumentSearchProps) => {\n const { dataSource, onChange, searchState } = useInstrumentSearch({\n dataSource: dataSourceProp,\n searchColumns,\n table,\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 { DataSource, RemoteDataSource } from \"@vuu-ui/vuu-data\";\nimport { getVuuTableSchema } from \"@vuu-ui/vuu-data-react\";\nimport { useViewContext } from \"@vuu-ui/vuu-layout\";\nimport { FormEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { InstrumentSearchProps } from \"./InstrumentSearch\";\n\nexport interface InstrumentSearchHookProps\n extends Pick<\n InstrumentSearchProps,\n \"dataSource\" | \"searchColumns\" | \"table\"\n > {\n label?: string;\n}\n\nexport const useInstrumentSearch = ({\n dataSource: dataSourceProp,\n searchColumns = [\"description\"],\n table,\n}: InstrumentSearchHookProps) => {\n const [dataSource, setDataSource] = useState(dataSourceProp);\n const { loadSession, saveSession } = useViewContext();\n\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 useMemo(() => {\n if (dataSourceProp === undefined) {\n if (table) {\n const sessionKey = `instrument-search-${table.module}-${table.table}`;\n const dataSource = loadSession?.(sessionKey) as DataSource;\n if (dataSource) {\n setDataSource(dataSource);\n } else {\n getVuuTableSchema(table).then((tableSchema) => {\n const newDataSource = new RemoteDataSource({\n columns: tableSchema.columns.map((col) => col.name),\n // sort: { sortDefs: [{ column: \"description\", sortType: \"A\" }] },\n table: tableSchema.table,\n });\n setDataSource(newDataSource);\n saveSession?.(newDataSource, sessionKey);\n });\n }\n } else {\n throw Error(\n `useInstrumentSearch, if dataSource ismnot provided as prop, Vuu table must be provided`\n );\n }\n }\n }, [dataSourceProp, loadSession, saveSession, table]);\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", "// TODO is this hook needed ? it is currently used only in a vuu salt story\nimport { DataSource, SubscribeCallback } from \"@vuu-ui/vuu-data\";\nimport { DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { getFullRange, metadataKeys, WindowRange } from \"@vuu-ui/vuu-utils\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nconst { SELECTED } = metadataKeys;\n\nexport interface DataSourceHookProps {\n dataSource: DataSource;\n renderBufferSize?: number;\n}\n\nexport function useDataSource({\n dataSource,\n renderBufferSize = 10,\n}: DataSourceHookProps): [\n DataSourceRow[],\n number,\n VuuRange,\n (range: VuuRange) => void\n] {\n const [, forceUpdate] = useState<object | null>(null);\n const isMounted = useRef(true);\n const hasUpdated = useRef(false);\n const rafHandle = useRef(null);\n const data = useRef<DataSourceRow[]>([]);\n const rangeRef = useRef({ from: 0, to: 10 });\n\n const dataWindow = useMemo(\n () => new MovingWindow(getFullRange(rangeRef.current, renderBufferSize)),\n [renderBufferSize]\n );\n\n const setData = useCallback(\n (updates: DataSourceRow[]) => {\n for (const row of updates) {\n dataWindow.add(row);\n }\n // Why bother with the slice ?\n data.current = dataWindow.data.slice();\n\n hasUpdated.current = true;\n },\n [dataWindow]\n );\n\n const datasourceMessageHandler: SubscribeCallback = useCallback(\n (message) => {\n if (message.type === \"viewport-update\") {\n if (message.size !== undefined) {\n dataWindow.setRowCount(message.size);\n }\n if (message.rows) {\n setData(message.rows);\n forceUpdate({});\n } else if (message.size !== undefined) {\n // TODO is this right ?\n data.current = dataWindow.data.slice();\n hasUpdated.current = true;\n }\n }\n },\n [dataWindow, setData]\n );\n\n useEffect(\n () => () => {\n if (rafHandle.current) {\n cancelAnimationFrame(rafHandle.current);\n rafHandle.current = null;\n }\n isMounted.current = false;\n },\n []\n );\n\n const setRange = useCallback(\n (range) => {\n rangeRef.current = range;\n const fullRange = getFullRange(rangeRef.current, renderBufferSize);\n dataSource.range = fullRange;\n dataWindow.setRange(fullRange.from, fullRange.to);\n },\n [dataSource, dataWindow, renderBufferSize]\n );\n\n useMemo(() => {\n const { from, to } = rangeRef.current;\n const fullRange = getFullRange({ from, to }, renderBufferSize);\n dataSource.range = fullRange;\n dataWindow.setRange(fullRange.from, fullRange.to);\n }, [dataSource, dataWindow, renderBufferSize]);\n\n useEffect(() => {\n const { from, to } = getFullRange(rangeRef.current, renderBufferSize);\n dataSource.subscribe(\n {\n range: { from, to },\n },\n datasourceMessageHandler\n );\n }, [dataSource, datasourceMessageHandler, renderBufferSize]);\n\n useEffect(\n () => () => {\n dataSource.unsubscribe();\n },\n [dataSource]\n );\n\n return [\n data.current,\n dataWindow.rowCount,\n getFullRange(rangeRef.current, renderBufferSize),\n setRange,\n ];\n}\n\nexport class MovingWindow {\n public data: DataSourceRow[];\n public rowCount = 0;\n private range: WindowRange;\n\n constructor({ from, to }: VuuRange) {\n this.range = new WindowRange(from, to);\n this.data = new Array(to - from);\n }\n\n setRowCount = (rowCount: number) => {\n if (rowCount < this.data.length) {\n this.data.length = rowCount;\n }\n this.rowCount = rowCount;\n };\n\n add(data: DataSourceRow) {\n const [index] = data;\n if (this.isWithinRange(index)) {\n const internalIndex = index - this.range.from;\n this.data[internalIndex] = data;\n if (this.data[internalIndex - 1]) {\n // assign 'post-selected' selection state\n if (\n this.data[internalIndex - 1][SELECTED] === 1 &&\n data[SELECTED] === 0\n ) {\n data[SELECTED] = 2;\n }\n }\n if (index === this.rowCount - 1) {\n this.data.length = internalIndex + 1;\n }\n }\n }\n\n getAtIndex(index: number) {\n return this.range.isWithin(index) &&\n this.data[index - this.range.from] != null\n ? this.data[index - this.range.from]\n : undefined;\n }\n\n isWithinRange(index: number) {\n return this.range.isWithin(index);\n }\n\n setRange(from: number, to: number) {\n if (from !== this.range.from || to !== this.range.to) {\n const [overlapFrom, overlapTo] = this.range.overlap(from, to);\n const newData = new Array(to - from);\n for (let i = overlapFrom; i < overlapTo; i++) {\n const data = this.getAtIndex(i);\n if (data) {\n const index = i - from;\n newData[index] = data;\n }\n }\n this.data = newData;\n this.range.from = from;\n this.range.to = to;\n }\n }\n}\n", "import {\n ColumnDescriptor,\n ListOption,\n LookupTableDetails,\n} from \"@vuu-ui/vuu-table-types\";\nimport { RemoteDataSource } from \"@vuu-ui/vuu-data\";\nimport { useShellContext } from \"@vuu-ui/vuu-shell\";\nimport {\n buildColumnMap,\n isLookupRenderer,\n isTypeDescriptor,\n} from \"@vuu-ui/vuu-utils\";\nimport { useMemo, useState } from \"react\";\n\nconst NO_VALUES: ListOption[] = [];\n\nconst lookupValueMap = new Map<string, Promise<ListOption[]>>();\n\nconst loadLookupValues = ({\n labelColumn,\n table,\n valueColumn,\n}: LookupTableDetails): Promise<ListOption[]> => {\n const tableKey = `${table.module}:${table.table}`;\n const lookupValues = lookupValueMap.get(tableKey);\n if (lookupValues) {\n return lookupValues;\n } else {\n const promise: Promise<ListOption[]> = new Promise((resolve) => {\n const columns = [valueColumn, labelColumn];\n const columnMap = buildColumnMap(columns);\n const dataSource = new RemoteDataSource({\n bufferSize: 0,\n table,\n });\n dataSource.subscribe(\n {\n columns,\n range: { from: 0, to: 100 },\n },\n (message) => {\n if (message.type === \"viewport-update\") {\n //TODO check we have full dataset\n if (message.rows) {\n const listOptions = message.rows.map<ListOption>((row) => ({\n value: row[columnMap[valueColumn]] as string | number,\n label: row[columnMap[labelColumn]] as string,\n }));\n resolve(listOptions);\n dataSource.unsubscribe();\n }\n }\n }\n );\n });\n lookupValueMap.set(tableKey, promise);\n return promise;\n }\n};\n\ntype LookupState = {\n initialValue: ListOption | null;\n values: ListOption[];\n};\n\nconst getSelectedOption = (\n values: ListOption[],\n selectedValue: string | number | undefined\n) => {\n if (selectedValue === undefined) {\n return null;\n }\n return values.find((option) => option.value === selectedValue) ?? null;\n};\n\nconst getLookupDetails = ({ name, type }: ColumnDescriptor) => {\n if (isTypeDescriptor(type) && isLookupRenderer(type.renderer)) {\n return type.renderer.lookup;\n } else {\n throw Error(\n `useLookupValues column ${name} is not configured to use lookup values`\n );\n }\n};\n\nexport const useLookupValues = (\n column: ColumnDescriptor,\n initialValueProp: number | string\n) => {\n const lookupDetails = getLookupDetails(column);\n const { getLookupValues } = useShellContext();\n\n const initialState = useMemo<LookupState>(() => {\n const values = getLookupValues?.(lookupDetails.table) ?? NO_VALUES;\n return {\n initialValue: getSelectedOption(values, initialValueProp),\n values,\n };\n }, [getLookupValues, initialValueProp, lookupDetails.table]);\n\n const [{ initialValue, values }, setLookupState] =\n useState<LookupState>(initialState);\n\n useMemo(() => {\n if (values === NO_VALUES) {\n loadLookupValues(lookupDetails).then((values) =>\n setLookupState({\n initialValue: getSelectedOption(values, initialValueProp),\n values,\n })\n );\n }\n }, [values, lookupDetails, initialValueProp]);\n\n return {\n initialValue,\n values,\n };\n};\n", "import { HTMLAttributes, useCallback } from \"react\";\nimport { VuuUser } from \"../shell\";\n// import { UserProfile } from \"../user-profile\";\n// import { ThemeSwitch } from \"../theme-switch\";\nimport { ThemeMode } from \"../theme-provider\";\nimport cx from \"classnames\";\nimport { Toolbar } from \"@vuu-ui/vuu-layout\";\nimport { logout } from \"../login\";\n\nimport \"./AppHeader.css\";\nimport { Button } from \"@salt-ds/core\";\n\nconst classBase = \"vuuAppHeader\";\nexport interface AppHeaderProps extends HTMLAttributes<HTMLDivElement> {\n layoutId: string;\n loginUrl?: string;\n onNavigate: (id: string) => void;\n onSwitchTheme?: (mode: ThemeMode) => void;\n themeMode?: ThemeMode;\n user: VuuUser;\n}\n\nexport const AppHeader = ({\n className: classNameProp,\n layoutId,\n loginUrl,\n onNavigate,\n onSwitchTheme,\n themeMode = \"light\",\n user,\n ...htmlAttributes\n}: AppHeaderProps) => {\n const className = cx(classBase, classNameProp);\n // const handleSwitchTheme = useCallback(\n // (mode: ThemeMode) => onSwitchTheme?.(mode),\n // [onSwitchTheme]\n // );\n\n const handleLogout = useCallback(() => {\n logout(loginUrl);\n }, [loginUrl]);\n\n return (\n <Toolbar\n alignItems=\"end\"\n className={className}\n height={36}\n showSeparators\n {...htmlAttributes}\n >\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n Help\n </Button>\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n History <span data-icon=\"history\" />\n </Button>\n <Button className={`${classBase}-menuItem`} variant=\"secondary\">\n View <span data-icon=\"settings\" />\n </Button>\n <Button\n className={`${classBase}-menuItem`}\n onClick={handleLogout}\n variant=\"secondary\"\n >\n Log out\n </Button>\n {/* <ThemeSwitch\n data-align=\"right\"\n defaultMode={themeMode}\n onChange={handleSwitchTheme}\n /> */}\n {/* <UserProfile\n layoutId={layoutId}\n loginUrl={loginUrl}\n onNavigate={onNavigate}\n user={user}\n /> */}\n </Toolbar>\n );\n};\n", "import {\n ChangeEvent,\n HTMLAttributes,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { Button, FormField, FormFieldLabel } from \"@salt-ds/core\";\nimport { VuuInput } from \"@vuu-ui/vuu-ui-controls\";\nimport { VuuLogo } from \"./VuuLogo\";\nimport cx from \"classnames\";\n\nimport \"./LoginPanel.css\";\n\nconst classBase = \"vuuLoginPanel\";\n\nexport interface LoginPanelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onSubmit\"> {\n appName?: string;\n onSubmit: (username: string, password?: string) => void;\n requirePassword?: boolean;\n}\n\nexport const LoginPanel = ({\n appName = \"Demo App\",\n className,\n requirePassword = true,\n onSubmit,\n ...htmlAttributes\n}: LoginPanelProps) => {\n const [username, setUserName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n const login = () => {\n onSubmit(username, password);\n };\n\n const handleUsername = (evt: ChangeEvent<HTMLInputElement>) => {\n setUserName(evt.target.value);\n };\n\n const handlePassword = (evt: ChangeEvent<HTMLInputElement>) => {\n setPassword(evt.target.value);\n };\n\n const handleCommitName = useCallback(() => {\n if (!requirePassword) {\n onSubmit(username);\n }\n }, [onSubmit, requirePassword, username]);\n\n const handleCommitPassword = useCallback(() => {\n if (username) {\n onSubmit(username, password);\n }\n }, [onSubmit, password, username]);\n\n const dataIsValid =\n username.trim() !== \"\" &&\n (requirePassword === false || password.trim() !== \"\");\n\n useEffect(() => {\n console.log(`inputRef`, {\n input: inputRef.current,\n });\n inputRef.current?.focus();\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-branding`}>\n <VuuLogo />\n <div className={`${classBase}-appName`}>{appName}</div>\n </div>\n <div className={`${classBase}-form`}>\n <div className={`${classBase}-title`}>Welcome Back</div>\n <FormField>\n <FormFieldLabel>Username</FormFieldLabel>\n <VuuInput\n value={username}\n id=\"text-username\"\n inputRef={inputRef}\n onChange={handleUsername}\n onCommit={handleCommitName}\n />\n </FormField>\n\n {requirePassword ? (\n <FormField>\n <FormFieldLabel>Password</FormFieldLabel>\n <VuuInput\n className={`${classBase}-password`}\n inputProps={{\n type: \"password\",\n }}\n value={password}\n id=\"text-password\"\n onChange={handlePassword}\n onCommit={handleCommitPassword}\n endAdornment={\n <span data-icon=\"eye\" style={{ cursor: \"pointer\" }} />\n }\n />\n </FormField>\n ) : null}\n\n <Button\n className={`${classBase}-login`}\n disabled={!dataIsValid}\n onClick={login}\n variant=\"cta\"\n >\n Login\n </Button>\n </div>\n </div>\n );\n};\n", "import { useMemo } from \"react\";\n\nexport const VuuLogo = () => {\n const logo = useMemo(\n () => (\n <svg\n width=\"184\"\n height=\"90\"\n viewBox=\"0 0 184 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_1173_59965)\">\n <path\n d=\"M77.0775 31.1019L69.4572 15.1795L66.3997 13.7093L47.6353 44.165L75.7224 61.2361L81.8124 51.2694L77.0775 31.1019Z\"\n fill=\"url(#paint0_linear_1173_59965)\"\n />\n <path\n d=\"M82.4101 49.7431C81.0488 51.8314 79.1993 53.648 76.8897 54.9809C74.2954 56.4792 71.4601 57.194 68.6623 57.194C63.3422 57.194 58.1597 54.6188 55.0209 49.971L30.5358 7.8193L30.5232 7.84116C25.8791 0.274825 16.0118 -2.26289 8.27258 2.21011C0.411306 6.74866 -2.26753 16.7872 2.28587 24.625L35.5054 81.8189C36.9856 84.3691 39.0542 86.3668 41.4358 87.7527C41.4545 87.7652 41.4733 87.7777 41.4921 87.7902C41.5015 87.7964 41.514 87.8027 41.5234 87.8089C42.6312 88.4457 43.8079 88.942 45.0253 89.3072C45.116 89.3353 45.2099 89.3634 45.3007 89.3883C45.7388 89.5101 46.1801 89.6193 46.6276 89.7067C46.7121 89.7223 46.7966 89.7317 46.8811 89.7473C47.241 89.8097 47.604 89.8628 47.967 89.9003C48.111 89.9159 48.2549 89.9315 48.3989 89.9408C48.8151 89.9752 49.2313 89.997 49.6507 90.0001C49.6726 90.0001 49.6945 90.0001 49.7132 90.0001C49.7195 90.0001 49.7226 90.0001 49.7289 90.0001C49.7352 90.0001 49.7383 90.0001 49.7445 90.0001C50.1983 90.0001 50.6552 89.9752 51.109 89.9377C51.2123 89.9283 51.3155 89.919 51.422 89.9065C51.8663 89.8597 52.3107 89.8004 52.7551 89.7192C52.7614 89.7192 52.7676 89.7192 52.7739 89.7192C53.2621 89.6287 53.7503 89.5101 54.2322 89.3727C54.2635 89.3634 54.2917 89.354 54.323 89.3446C55.024 89.1418 55.7156 88.8889 56.3978 88.5861C56.4104 88.5799 56.426 88.5736 56.4385 88.5674C56.958 88.3364 57.4712 88.0836 57.9751 87.7933C58.4852 87.4999 58.9703 87.1815 59.4334 86.8413C59.8371 86.5478 60.2252 86.2357 60.6039 85.9048C61.0639 85.499 61.4989 85.0745 61.9026 84.6282C62.2062 84.2942 62.4972 83.9446 62.7757 83.5825C62.8665 83.4639 62.951 83.3421 63.0355 83.2235C63.2264 82.9613 63.4079 82.6929 63.5831 82.4182C63.6739 82.2746 63.7646 82.1342 63.8523 81.9906C63.8867 81.9344 63.9242 81.8813 63.9555 81.8251L82.5854 49.7525H82.4039L82.4101 49.7431Z\"\n fill=\"url(#paint1_linear_1173_59965)\"\n />\n <path\n d=\"M82.8264 32.8436L81.4181 30.4464L75.3375 19.1687L72.5178 14.3929C71.9858 13.1225 70.7309 12.2266 69.26 12.2266C67.3104 12.2266 65.7331 13.8029 65.7331 15.7445C65.7331 16.4031 65.924 17.0086 66.2401 17.5362L66.2025 17.5611L77.1557 36.1617C78.4764 38.4372 78.83 41.0873 78.1509 43.6281C77.4718 46.169 75.8445 48.2915 73.5631 49.6119C72.0609 50.4797 70.3553 50.9385 68.6341 50.9385C65.1166 50.9385 61.84 49.0563 60.0812 46.0285L44.3368 19.2654H44.3681L37.7179 7.81917L37.7054 7.84102C37.5896 7.65061 37.455 7.47893 37.333 7.29477L37.1452 6.97326C37.1452 6.97326 37.1296 6.98262 37.1233 6.98887C34.0001 2.55332 29.0054 0.0780356 23.8512 0.0187285V0H15.3515V0.0436999C21.2881 -0.368328 27.2247 2.46593 30.5232 7.84102L30.5357 7.81917L55.0177 49.974C58.1566 54.6187 63.3422 57.197 68.6592 57.197C71.4569 57.197 74.2922 56.4853 76.8866 54.9839C79.1961 53.651 81.0425 51.8312 82.407 49.7461H82.5885L82.5259 49.8523C83.399 48.4695 84.0687 46.9462 84.5006 45.3231C85.6304 41.0904 85.042 36.6705 82.8201 32.8467L82.8264 32.8436Z\"\n fill=\"#F37880\"\n />\n <g opacity=\"0.86\">\n <path\n d=\"M66.1994 17.5642L77.1526 36.1648C78.4732 38.4403 78.8269 41.0904 78.1478 43.6313C77.7347 45.1795 76.9648 46.5716 75.9133 47.7234C77.2903 46.4686 78.2823 44.8486 78.7737 43.007C79.4527 40.4661 79.0991 37.816 77.7785 35.5405L66.8253 16.94L66.8628 16.915C66.5467 16.3875 66.3558 15.7819 66.3558 15.1233C66.3558 14.3117 66.6344 13.5657 67.0975 12.9695C66.2651 13.6125 65.7299 14.6176 65.7299 15.7476C65.7299 16.4062 65.9208 17.0118 66.2369 17.5393L66.1994 17.5642Z\"\n fill=\"white\"\n />\n <path\n d=\"M82.5382 49.8335L82.5291 49.8487C82.5291 49.8487 82.5352 49.8365 82.5413 49.8304C82.5413 49.8304 82.5413 49.8304 82.5413 49.8335H82.5382Z\"\n fill=\"white\"\n />\n <path\n d=\"M77.5156 54.3596C74.9213 55.8579 72.0859 56.5727 69.2882 56.5727C63.9681 56.5727 58.7856 53.9975 55.6467 49.3497L31.1616 7.19488L31.1491 7.21673C28.9053 3.56154 25.4441 1.08626 21.5917 0H15.3515V0.0436999C21.2881 -0.368328 27.2247 2.46593 30.5232 7.84102L30.5357 7.81917L55.0177 49.974C58.1566 54.6187 63.3422 57.197 68.6592 57.197C71.4569 57.197 74.2922 56.4853 76.8866 54.9839C78.2698 54.1848 79.4809 53.2109 80.5293 52.1122C79.6311 52.9581 78.6266 53.7166 77.5125 54.3596H77.5156Z\"\n fill=\"white\"\n />\n </g>\n </g>\n <path\n d=\"M117.046 58.661C116.362 58.661 115.792 58.509 115.336 58.205C114.906 57.8757 114.551 57.3943 114.272 56.761L104.354 34.493C104.076 33.8597 104 33.3023 104.126 32.821C104.253 32.3397 104.519 31.9597 104.924 31.681C105.33 31.4023 105.811 31.263 106.368 31.263C107.103 31.263 107.648 31.4277 108.002 31.757C108.382 32.061 108.699 32.5297 108.952 33.163L117.958 54.025H116.324L125.292 33.125C125.571 32.517 125.9 32.061 126.28 31.757C126.66 31.4277 127.192 31.263 127.876 31.263C128.434 31.263 128.89 31.4023 129.244 31.681C129.624 31.9597 129.865 32.3397 129.966 32.821C130.068 33.3023 129.979 33.8597 129.7 34.493L119.782 56.761C119.504 57.3943 119.149 57.8757 118.718 58.205C118.313 58.509 117.756 58.661 117.046 58.661Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.63 58.737C142.781 58.737 141.147 58.4963 139.728 58.015C138.335 57.5337 137.157 56.8243 136.194 55.887C135.232 54.9243 134.51 53.7337 134.028 52.315C133.547 50.8963 133.306 49.2497 133.306 47.375V33.733C133.306 32.897 133.509 32.2763 133.914 31.871C134.345 31.4657 134.953 31.263 135.738 31.263C136.524 31.263 137.119 31.4657 137.524 31.871C137.955 32.2763 138.17 32.897 138.17 33.733V47.337C138.17 49.7437 138.715 51.555 139.804 52.771C140.919 53.9617 142.528 54.557 144.63 54.557C146.733 54.557 148.329 53.9617 149.418 52.771C150.508 51.555 151.052 49.7437 151.052 47.337V33.733C151.052 32.897 151.255 32.2763 151.66 31.871C152.091 31.4657 152.699 31.263 153.484 31.263C154.244 31.263 154.827 31.4657 155.232 31.871C155.663 32.2763 155.878 32.897 155.878 33.733V47.375C155.878 49.8577 155.448 51.9477 154.586 53.645C153.75 55.3423 152.496 56.6217 150.824 57.483C149.152 58.319 147.088 58.737 144.63 58.737Z\"\n fill=\"white\"\n />\n <path\n d=\"M172.685 58.737C170.836 58.737 169.202 58.4963 167.783 58.015C166.39 57.5337 165.212 56.8243 164.249 55.887C163.286 54.9243 162.564 53.7337 162.083 52.315C161.602 50.8963 161.361 49.2497 161.361 47.375V33.733C161.361 32.897 161.564 32.2763 161.969 31.871C162.4 31.4657 163.008 31.263 163.793 31.263C164.578 31.263 165.174 31.4657 165.579 31.871C166.01 32.2763 166.225 32.897 166.225 33.733V47.337C166.225 49.7437 166.77 51.555 167.859 52.771C168.974 53.9617 170.582 54.557 172.685 54.557C174.788 54.557 176.384 53.9617 177.473 52.771C178.562 51.555 179.107 49.7437 179.107 47.337V33.733C179.107 32.897 179.31 32.2763 179.715 31.871C180.146 31.4657 180.754 31.263 181.539 31.263C182.299 31.263 182.882 31.4657 183.287 31.871C183.718 32.2763 183.933 32.897 183.933 33.733V47.375C183.933 49.8577 183.502 51.9477 182.641 53.645C181.805 55.3423 180.551 56.6217 178.879 57.483C177.207 58.319 175.142 58.737 172.685 58.737Z\"\n fill=\"white\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_1173_59965\"\n x1=\"47.6353\"\n y1=\"37.4727\"\n x2=\"81.8124\"\n y2=\"37.4727\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#4906A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_1173_59965\"\n x1=\"0.0670626\"\n y1=\"45.0017\"\n x2=\"82.5916\"\n y2=\"45.0017\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#7C06A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <clipPath id=\"clip0_1173_59965\">\n <rect\n width=\"85\"\n height=\"90\"\n fill=\"white\"\n transform=\"translate(0.0670471)\"\n />\n </clipPath>\n </defs>\n </svg>\n ),\n []\n );\n\n return logo;\n};\n", "import { getCookieValue } from \"@vuu-ui/vuu-utils\";\n\nexport const getAuthModeFromCookies = (): string => {\n const mode = getCookieValue(\"vuu-auth-mode\") as string;\n return mode ?? \"\";\n};\n\nexport const getAuthDetailsFromCookies = (): [string, string] => {\n const username = getCookieValue(\"vuu-username\") as string;\n const token = getCookieValue(\"vuu-auth-token\") as string;\n return [username, token];\n};\n\nconst getDefaultLoginUrl = () => {\n const authMode = getAuthModeFromCookies();\n return authMode === \"login\" ? \"login.html\" : \"demo.html\";\n};\n\nexport const redirectToLogin = (loginUrl = getDefaultLoginUrl()) => {\n window.location.href = loginUrl;\n};\n\nexport const logout = (loginUrl?: string) => {\n document.cookie = \"vuu-username= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n document.cookie = \"vuu-auth-token= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n redirectToLogin(loginUrl);\n};\n", "import React, { useEffect, useState } from 'react';\nimport cx from 'classnames';\nimport './ConnectionStatusIcon.css';\n\ntype connectionStatus = 'connected' | 'reconnected' | 'connecting' | 'disconnected';\n\ninterface ConnectionStatusProps {\n\tconnectionStatus: connectionStatus\n\tclassName?: string;\n\tprops?: unknown;\n\telement?: string;\n}\n\nexport const ConnectionStatusIcon = ({ connectionStatus, className, element = 'span', ...props}: ConnectionStatusProps) => {\n\tconst [classBase, setClassBase] = useState<string>('vuuConnectingStatus');\n\tuseEffect(() => {\n\t\tswitch(connectionStatus) {\n\t\t\tcase 'connected':\n\t\t\tcase 'reconnected':\n\t\t\t\tsetClassBase('vuuActiveStatus');\n\t\t\t\tbreak;\n\t\t\tcase 'connecting':\n\t\t\t\tsetClassBase('vuuConnectingStatus');\n\t\t\t\tbreak;\n\t\t\tcase 'disconnected':\n\t\t\t\tsetClassBase('vuuDisconnectedStatus');\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}, [connectionStatus]);\n\n\tconst statusIcon = React.createElement (\n\t\telement,\n\t\t{\n\t\t\t...props,\n\t\t\tclassName: cx('vuuStatus vuuIcon', classBase, className)\n\t\t},\n\t)\n\n\treturn (\n\t\t<>\n\t\t\t<div className='vuuStatus-container salt-theme'>\n\t\t\t\t{statusIcon}\n\t\t\t\t<div\tclassName='vuuStatus-text'>Status: {connectionStatus.toUpperCase()}</div>\n\t\t\t</div>\n\t\t</>\n\t)\n}", "import { Dropdown } from \"@salt-ds/lab\";\nimport { Density } from \"@salt-ds/core\";\nimport { HTMLAttributes, useCallback } from \"react\";\nimport cx from \"classnames\";\n\nconst classBase = \"vuuDensitySwitch\";\n\nconst densities: Density[] = [\"high\", \"medium\", \"low\", \"touch\"];\nconst DEFAULT_DENSITY = \"high\";\n\nexport interface DensitySwitchProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n defaultDensity?: Density;\n density?: Density;\n onChange: (density: Density) => void;\n}\n\nexport const DensitySwitch = ({\n className: classNameProp,\n defaultDensity = DEFAULT_DENSITY,\n onChange,\n}: DensitySwitchProps) => {\n const handleSelectionChange = useCallback(\n (_event, selectedItem) => {\n onChange(selectedItem);\n },\n [onChange]\n );\n\n const className = cx(classBase, classNameProp);\n\n return (\n <Dropdown<Density>\n className={className}\n source={densities}\n defaultSelected={defaultDensity}\n onSelectionChange={handleSelectionChange}\n />\n );\n};\n", "import React, { Suspense, useEffect } from \"react\";\nimport { registerComponent, ViewProps } from \"@vuu-ui/vuu-layout\";\nimport { FeatureErrorBoundary } from \"./FeatureErrorBoundary\";\nimport { Loader } from \"./Loader\";\nimport { importCSS } from \"./css-module-loader\";\n\n/**\n * Ensure we never lazy load the same component more than once\n */\nconst componentsMap = new Map<string, ReturnType<typeof React.lazy>>();\nconst useCachedFeature = (url: string) => {\n useEffect(\n () => () => {\n componentsMap.delete(url);\n },\n [url]\n );\n\n if (!componentsMap.has(url)) {\n componentsMap.set(\n url,\n React.lazy(() => import(/* @vite-ignore */ url))\n );\n }\n\n const lazyFeature = componentsMap.get(url);\n\n if (!lazyFeature) {\n throw Error(`Unable to load Lazy Feature at url ${url}`);\n } else {\n return lazyFeature;\n }\n};\n\nexport interface FeatureProps<P extends object | undefined = any> {\n /**\n props that will be passed to the lazily loaded component.\n */\n ComponentProps?: P;\n ViewProps?: Partial<Pick<ViewProps, \"closeable\" | \"header\">>;\n css?: string;\n height?: number;\n title?: string;\n /** \n The url of javascript bundle to lazily load. Bundle must provide a default export\n and that export must be a React component.\n */\n url: string;\n width?: number;\n}\n\nfunction RawFeature<Params extends object | undefined>({\n url,\n css,\n ComponentProps: params,\n ...props\n}: FeatureProps<Params>) {\n // useEffect(() => {\n // console.log(\"%cFeature mount\", \"color: green;\");\n // return () => {\n // console.log(\"%cFeature unmount\", \"color:red;\");\n // };\n // }, []);\n\n if (css) {\n // import(/* @vite-ignore */ css, { assert: { type: \"css\" } }).then(\n // (cssModule) => {\n // console.log(\"%cInject Styles\", \"color: blue;font-weight: bold\");\n // document.adoptedStyleSheets = [\n // ...document.adoptedStyleSheets,\n // cssModule.default,\n // ];\n // }\n // );\n // Polyfill until cypress build supports import assertions\n // Note: already fully supported in esbuild and vite\n importCSS(css).then((styleSheet) => {\n document.adoptedStyleSheets = [\n ...document.adoptedStyleSheets,\n styleSheet,\n ];\n });\n }\n\n const LazyFeature = useCachedFeature(url);\n return (\n <FeatureErrorBoundary url={url}>\n <Suspense fallback={<Loader />}>\n <LazyFeature {...props} {...params} />\n </Suspense>\n </FeatureErrorBoundary>\n );\n}\n\n/**\n Feature is a wrapper around React Lazy Loading. It will load a component\n from the given url. That url must resolve to a javascript bundle with a\n single default export. That export must be a React component.\n */\nexport const Feature = React.memo(RawFeature);\nFeature.displayName = \"Feature\";\nregisterComponent(\"Feature\", Feature, \"view\");\n", "import React, { ErrorInfo, ReactNode } from \"react\";\nimport { FeatureProps } from \"./Feature\";\n\nexport interface FeatureErrorBoundaryProps extends FeatureProps {\n children: ReactNode;\n}\n\nexport class FeatureErrorBoundary extends React.Component<\n FeatureErrorBoundaryProps,\n any\n> {\n constructor(props: FeatureErrorBoundaryProps) {\n super(props);\n this.state = { errorMessage: null };\n }\n\n static getDerivedStateFromError(error: Error) {\n // Update state so the next render will show the fallback UI.\n return { errorMessage: error.message };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // You can also log the error to an error reporting service\n console.log(`error creating component at ${this.props.url}`);\n console.log(error, errorInfo);\n }\n\n render() {\n if (this.state.errorMessage) {\n return (\n <>\n <h1>An error occured while creating component.</h1>\n <p>{this.state.errorMessage}</p>\n </>\n );\n }\n\n return this.props.children;\n }\n}\n", "// TODO\nexport const Loader = () => <div className=\"hwLoader\"></div>;\n", "export const importCSS = async (path: string) => {\n const container = new CSSStyleSheet();\n return fetch(path)\n .then((x) => x.text())\n .then((x) => container.replace(x));\n};\n", "import { ChangeEvent, useEffect, useState } from \"react\";\nimport { Input, Button, FormField, FormFieldLabel, Text } from \"@salt-ds/core\";\nimport { ComboBox, Checkbox, RadioButton } from \"@vuu-ui/vuu-ui-controls\";\nimport { takeScreenshot } from \"@vuu-ui/vuu-utils\";\nimport { LayoutMetadataDto } from \"./layoutTypes\";\n\nimport \"./SaveLayoutPanel.css\";\n\nconst classBase = \"saveLayoutPanel\";\nconst formField = `${classBase}-formField`;\n\nconst groups = [\"Group 1\", \"Group 2\", \"Group 3\", \"Group 4\", \"Group 5\"];\n\nconst checkboxValues = [\"Value 1\", \"Value 2\", \"Value 3\"];\n\nconst radioValues = [\"Value 1\", \"Value 2\", \"Value 3\"] as const;\n\ntype RadioValue = (typeof radioValues)[number];\n\ntype SaveLayoutPanelProps = {\n componentId?: string;\n defaultTitle?: string;\n onCancel: () => void;\n onSave: (layoutMetadata: LayoutMetadataDto) => void;\n};\n\nexport const SaveLayoutPanel = (props: SaveLayoutPanelProps) => {\n const { defaultTitle = \"\", onCancel, onSave, componentId } = props;\n\n const [layoutName, setLayoutName] = useState<string>(defaultTitle);\n const [group, setGroup] = useState<string>(\"\");\n const [checkValues, setCheckValues] = useState<string[]>([]);\n const [radioValue, setRadioValue] = useState<RadioValue>(radioValues[0]);\n const [screenshot, setScreenshot] = useState<string | undefined>();\n\n useEffect(() => {\n if (componentId) {\n takeScreenshot(document.getElementById(componentId) as HTMLElement).then(\n (screenshot) => setScreenshot(screenshot)\n );\n }\n }, [componentId]);\n\n const handleSubmit = () => {\n onSave({\n name: layoutName,\n group,\n screenshot: screenshot ?? \"\",\n user: \"User\",\n });\n };\n\n return (\n <div className={`${classBase}-panelContainer`}>\n <div className={`${classBase}-panelContent`}>\n <div className={`${classBase}-formContainer`}>\n <FormField className={formField}>\n <FormFieldLabel>Group</FormFieldLabel>\n <ComboBox\n source={groups}\n allowFreeText\n InputProps={{\n inputProps: {\n className: `${classBase}-inputText`,\n placeholder: \"Select Group or Enter New Name\",\n onChange: (event: ChangeEvent<HTMLInputElement>) =>\n setGroup(event.target.value),\n },\n }}\n width=\"100%\"\n onSelectionChange={(_, value) => setGroup(value || \"\")}\n />\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Layout Name</FormFieldLabel>\n <Input\n inputProps={{\n className: `${classBase}-inputText`,\n placeholder: \"Enter Layout Name\",\n }}\n onChange={(event: ChangeEvent<HTMLInputElement>) =>\n setLayoutName(event.target.value)\n }\n value={layoutName}\n />\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Some Layout Setting</FormFieldLabel>\n <div className={`${classBase}-settingsGroup`}>\n {checkboxValues.map((value, i) => (\n <Checkbox\n key={i}\n onToggle={() =>\n setCheckValues((prev) =>\n prev.includes(value)\n ? prev.filter((entry) => entry !== value)\n : [...prev, value]\n )\n }\n checked={checkValues.includes(value)}\n label={value}\n />\n ))}\n </div>\n </FormField>\n <FormField className={formField}>\n <FormFieldLabel>Some Layout Setting</FormFieldLabel>\n <div className={`${classBase}-settingsGroup`}>\n {radioValues.map((value, i) => (\n <RadioButton\n key={i}\n onClick={() => setRadioValue(value)}\n checked={radioValue === value}\n label={value}\n groupName=\"radioGroup\"\n />\n ))}\n </div>\n </FormField>\n </div>\n <div className={`${classBase}-screenshotContainer`}>\n {screenshot ? (\n <img\n className={`${classBase}-screenshot`}\n src={screenshot}\n alt=\"screenshot of current layout\"\n />\n ) : (\n <Text className=\"screenshot\">No screenshot available</Text>\n )}\n </div>\n </div>\n <div className={`${classBase}-buttonsContainer`}>\n <Button className={`${classBase}-cancelButton`} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n className={`${classBase}-saveButton`}\n onClick={handleSubmit}\n disabled={layoutName === \"\" || group === \"\"}\n >\n Save\n </Button>\n </div>\n </div>\n );\n};\n", "import React, {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport {\n ApplicationJSON,\n ApplicationSettings,\n loadingApplicationJson,\n LayoutJSON,\n LayoutPersistenceManager,\n LocalLayoutPersistenceManager,\n RemoteLayoutPersistenceManager,\n resolveJSONPath,\n defaultApplicationJson,\n} from \"@vuu-ui/vuu-layout\";\nimport { NotificationLevel, useNotifications } from \"@vuu-ui/vuu-popups\";\nimport { LayoutMetadata, LayoutMetadataDto } from \"./layoutTypes\";\n\nlet _persistenceManager: LayoutPersistenceManager;\n\nconst getPersistenceManager = () => {\n if (_persistenceManager === undefined) {\n _persistenceManager = process.env.LOCAL\n ? new LocalLayoutPersistenceManager()\n : new RemoteLayoutPersistenceManager();\n }\n return _persistenceManager;\n};\n\nexport const LayoutManagementContext = React.createContext<{\n layoutMetadata: LayoutMetadata[];\n saveLayout: (n: LayoutMetadataDto) => void;\n applicationJson: ApplicationJSON;\n saveApplicationLayout: (layout: LayoutJSON) => void;\n saveApplicationSettings: (settings: ApplicationSettings) => void;\n loadLayoutById: (id: string) => void;\n}>({\n layoutMetadata: [],\n saveLayout: () => undefined,\n // The default Application JSON will be served if no LayoutManagementProvider\n applicationJson: defaultApplicationJson,\n saveApplicationLayout: () => undefined,\n saveApplicationSettings: () => undefined,\n loadLayoutById: () => undefined,\n});\n\ntype LayoutManagementProviderProps = {\n children: JSX.Element | JSX.Element[];\n};\n\nconst ensureLayoutHasTitle = (\n layout: LayoutJSON,\n layoutMetadata: LayoutMetadataDto\n) => {\n if (layout.props?.title !== undefined) {\n return layout;\n } else {\n return {\n ...layout,\n props: {\n ...layout.props,\n title: layoutMetadata.name,\n },\n };\n }\n};\n\nexport const LayoutManagementProvider = (\n props: LayoutManagementProviderProps\n) => {\n const [layoutMetadata, setLayoutMetadata] = useState<LayoutMetadata[]>([]);\n // TODO this default should probably be a loading state rather than the placeholder\n // It will be replaced as soon as the localStorage/remote layout is resolved\n const [, forceRefresh] = useState({});\n const { notify } = useNotifications();\n const applicationJSONRef = useRef<ApplicationJSON>(loadingApplicationJson);\n\n const setApplicationJSON = useCallback(\n (applicationJSON: ApplicationJSON, rerender = true) => {\n applicationJSONRef.current = applicationJSON;\n if (rerender) {\n forceRefresh({});\n }\n },\n []\n );\n\n const setApplicationLayout = useCallback(\n (layout: LayoutJSON, rerender = true) => {\n setApplicationJSON(\n {\n ...applicationJSONRef.current,\n layout,\n },\n rerender\n );\n },\n [setApplicationJSON]\n );\n\n const setApplicationSettings = useCallback(\n (settings: ApplicationSettings) => {\n setApplicationJSON(\n {\n ...applicationJSONRef.current,\n settings: {\n ...applicationJSONRef.current.settings,\n ...settings,\n },\n },\n false\n );\n },\n [setApplicationJSON]\n );\n\n useEffect(() => {\n const persistenceManager = getPersistenceManager();\n\n persistenceManager\n .loadMetadata()\n .then((metadata) => {\n setLayoutMetadata(metadata);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layouts\",\n body: \"Could not load list of available layouts\",\n });\n console.error(\"Error occurred while retrieving metadata\", error);\n });\n\n persistenceManager\n .loadApplicationJSON()\n .then((applicationJSON: ApplicationJSON) => {\n setApplicationJSON(applicationJSON);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layout\",\n body: \"Could not load your latest view\",\n });\n console.error(\n \"Error occurred while retrieving application layout\",\n error\n );\n });\n }, [notify, setApplicationJSON]);\n\n const saveApplicationLayout = useCallback(\n (layout: LayoutJSON) => {\n setApplicationLayout(layout, false);\n getPersistenceManager().saveApplicationJSON(applicationJSONRef.current);\n },\n [setApplicationLayout]\n );\n\n const saveLayout = useCallback(\n (metadata: LayoutMetadataDto) => {\n const layoutToSave = resolveJSONPath(\n applicationJSONRef.current.layout,\n \"#main-tabs.ACTIVE_CHILD\"\n );\n\n if (layoutToSave) {\n getPersistenceManager()\n .createLayout(metadata, ensureLayoutHasTitle(layoutToSave, metadata))\n .then((metadata) => {\n notify({\n type: NotificationLevel.Success,\n header: \"Layout Saved Successfully\",\n body: `${metadata.name} saved successfully`,\n });\n setLayoutMetadata((prev) => [...prev, metadata]);\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Save Layout\",\n body: `Failed to save layout ${metadata.name}`,\n });\n console.error(\"Error occurred while saving layout\", error);\n });\n } else {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Save Layout\",\n body: \"Cannot save undefined layout\",\n });\n }\n },\n [notify]\n );\n\n const saveApplicationSettings = useCallback(\n (settings: ApplicationSettings) => {\n setApplicationSettings(settings);\n getPersistenceManager().saveApplicationJSON(applicationJSONRef.current);\n },\n [setApplicationSettings]\n );\n\n const loadLayoutById = useCallback(\n (id: string) => {\n getPersistenceManager()\n .loadLayout(id)\n .then((layoutJson) => {\n const { layout: currentLayout } = applicationJSONRef.current;\n setApplicationLayout({\n ...currentLayout,\n children: (currentLayout.children || []).concat(layoutJson),\n props: {\n ...currentLayout.props,\n active: currentLayout.children?.length ?? 0,\n },\n });\n })\n .catch((error: Error) => {\n notify({\n type: NotificationLevel.Error,\n header: \"Failed to Load Layout\",\n body: \"Failed to load the requested layout\",\n });\n console.error(\"Error occurred while loading layout\", error);\n });\n },\n [notify, setApplicationLayout]\n );\n\n return (\n <LayoutManagementContext.Provider\n value={{\n layoutMetadata,\n saveLayout,\n applicationJson: applicationJSONRef.current,\n saveApplicationLayout,\n saveApplicationSettings,\n loadLayoutById,\n }}\n >\n {props.children}\n </LayoutManagementContext.Provider>\n );\n};\n\nexport const useLayoutManager = () => useContext(LayoutManagementContext);\n", "import { HTMLAttributes } from \"react\";\nimport { List } from \"@vuu-ui/vuu-ui-controls\";\nimport { LayoutMetadata } from \"./layoutTypes\";\nimport { useLayoutManager } from \"./useLayoutManager\";\n\nimport \"./LayoutList.css\";\n\ntype LayoutGroups = {\n [groupName: string]: LayoutMetadata[];\n};\n\nconst classBase = \"vuuLayoutList\";\n\nexport const LayoutsList = (props: HTMLAttributes<HTMLDivElement>) => {\n const { layoutMetadata, loadLayoutById } = useLayoutManager();\n\n const handleLoadLayout = (layoutId?: string) => {\n if (layoutId) {\n loadLayoutById(layoutId);\n }\n };\n\n const layoutsByGroup = layoutMetadata.reduce((acc: LayoutGroups, cur) => {\n if (acc[cur.group]) {\n return {\n ...acc,\n [cur.group]: [...acc[cur.group], cur],\n };\n }\n return {\n ...acc,\n [cur.group]: [cur],\n };\n }, {});\n\n return (\n <div className={classBase} {...props}>\n <div className={`${classBase}-header`}>My Layouts</div>\n <List<[string, LayoutMetadata[]]>\n height=\"auto\"\n source={Object.entries(layoutsByGroup)}\n ListItem={({ item }) => {\n if (!item) return <></>;\n const [groupName, layoutMetadata] = item;\n return (\n <>\n <div className={`${classBase}-groupName`}>{groupName}</div>\n {layoutMetadata.map((metadata) => (\n <div\n className={`${classBase}-layoutContainer`}\n key={metadata?.id}\n onClick={() => handleLoadLayout(metadata?.id)}\n >\n <img\n className={`${classBase}-screenshot`}\n src={metadata?.screenshot}\n />\n <div>\n <div className={`${classBase}-layoutName`}>\n {metadata?.name}\n </div>\n <div className={`${classBase}-layoutDetails`}>\n <div>{`${metadata?.user}, ${metadata?.created}`}</div>\n </div>\n </div>\n </div>\n ))}\n </>\n );\n }}\n />\n </div>\n );\n};\n", "import { memo } from \"react\";\n\nexport const VuuLogo = memo(() => {\n return (\n <svg\n width=\"44\"\n height=\"45\"\n viewBox=\"0 0 44 45\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_217_6990)\">\n <path\n d=\"M39.8642 15.5509L35.9196 7.58974L34.3369 6.85464L24.6235 22.0825L39.1628 30.618L42.3152 25.6347L39.8642 15.5509Z\"\n fill=\"url(#paint0_linear_217_6990)\"\n />\n <path\n d=\"M42.6246 24.8716C41.9199 25.9157 40.9625 26.824 39.767 27.4905C38.424 28.2396 36.9563 28.597 35.5081 28.597C32.7541 28.597 30.0715 27.3094 28.4466 24.9855L15.772 3.90967L15.7655 3.9206C13.3615 0.137431 8.25372 -1.13143 4.24754 1.10507C0.178173 3.37435 -1.20852 8.39359 1.14854 12.3125L18.3445 40.9095C19.1108 42.1846 20.1816 43.1834 21.4144 43.8764C21.4241 43.8826 21.4338 43.8889 21.4435 43.8951C21.4484 43.8982 21.4549 43.9013 21.4597 43.9045C22.0332 44.2228 22.6423 44.471 23.2725 44.6536C23.3194 44.6677 23.368 44.6817 23.415 44.6942C23.6418 44.7551 23.8702 44.8097 24.1019 44.8534C24.1456 44.8612 24.1894 44.8659 24.2331 44.8737C24.4194 44.9049 24.6073 44.9314 24.7952 44.9501C24.8698 44.9579 24.9443 44.9658 25.0188 44.9704C25.2342 44.9876 25.4497 44.9985 25.6668 45.0001C25.6781 45.0001 25.6895 45.0001 25.6992 45.0001C25.7024 45.0001 25.704 45.0001 25.7073 45.0001C25.7105 45.0001 25.7121 45.0001 25.7154 45.0001C25.9503 45.0001 26.1868 44.9876 26.4217 44.9689C26.4751 44.9642 26.5286 44.9595 26.5837 44.9533C26.8137 44.9299 27.0438 44.9002 27.2738 44.8596C27.277 44.8596 27.2803 44.8596 27.2835 44.8596C27.5362 44.8144 27.7889 44.7551 28.0384 44.6864C28.0546 44.6817 28.0692 44.677 28.0854 44.6723C28.4483 44.5709 28.8063 44.4445 29.1594 44.2931C29.1659 44.29 29.174 44.2868 29.1805 44.2837C29.4494 44.1682 29.7151 44.0418 29.9759 43.8967C30.24 43.75 30.491 43.5908 30.7308 43.4206C30.9398 43.2739 31.1407 43.1179 31.3367 42.9524C31.5748 42.7495 31.8 42.5373 32.009 42.3141C32.1661 42.1471 32.3168 41.9723 32.4609 41.7913C32.5079 41.732 32.5517 41.6711 32.5954 41.6118C32.6942 41.4807 32.7882 41.3465 32.8789 41.2091C32.9259 41.1373 32.9728 41.0671 33.0182 40.9953C33.036 40.9672 33.0555 40.9407 33.0717 40.9126L42.7153 24.8763H42.6214L42.6246 24.8716Z\"\n fill=\"url(#paint1_linear_217_6990)\"\n />\n <path\n d=\"M42.8402 16.4218L42.1112 15.2232L38.9636 9.58433L37.504 7.19644C37.2286 6.56123 36.579 6.11331 35.8176 6.11331C34.8083 6.11331 33.9919 6.90147 33.9919 7.87223C33.9919 8.20154 34.0907 8.50432 34.2543 8.76808L34.2349 8.78056L39.9048 18.0808C40.5884 19.2186 40.7715 20.5437 40.4199 21.8141C40.0684 23.0845 39.226 24.1458 38.045 24.806C37.2675 25.2398 36.3846 25.4693 35.4936 25.4693C33.6727 25.4693 31.9766 24.5281 31.0662 23.0143L22.9161 9.63271H22.9323L19.4899 3.90958L19.4834 3.92051C19.4235 3.8253 19.3538 3.73947 19.2907 3.64738L19.1935 3.48663C19.1935 3.48663 19.1854 3.49131 19.1821 3.49443C17.5654 1.27666 14.9799 0.0390178 12.3118 0.00936427V0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.961 26.8255 41.9168 25.9156 42.6231 24.8731H42.717L42.6846 24.9261C43.1366 24.2347 43.4833 23.4731 43.7068 22.6615C44.2916 20.5452 43.9871 18.3352 42.8369 16.4234L42.8402 16.4218Z\"\n fill=\"#F37880\"\n />\n <g opacity=\"0.86\">\n <path\n d=\"M34.2332 8.78212L39.9031 18.0824C40.5868 19.2202 40.7698 20.5452 40.4183 21.8156C40.2044 22.5897 39.8059 23.2858 39.2616 23.8617C39.9744 23.2343 40.4879 22.4243 40.7423 21.5035C41.0938 20.2331 40.9107 18.908 40.2271 17.7703L34.5572 8.46998L34.5767 8.4575C34.413 8.19374 34.3142 7.89096 34.3142 7.56165C34.3142 7.15586 34.4584 6.78285 34.6982 6.48476C34.2672 6.80626 33.9902 7.30881 33.9902 7.87379C33.9902 8.2031 34.0891 8.50588 34.2527 8.76964L34.2332 8.78212Z\"\n fill=\"white\"\n />\n <path\n d=\"M42.6917 24.9169L42.6863 24.9256C42.6863 24.9256 42.6899 24.9187 42.6935 24.9152C42.6935 24.9152 42.6935 24.9152 42.6935 24.9169H42.6917Z\"\n fill=\"white\"\n />\n <path\n d=\"M40.0911 27.1798C38.7481 27.9289 37.2804 28.2863 35.8322 28.2863C33.0782 28.2863 30.3955 26.9988 28.7707 24.6749L16.0961 3.59744L16.0896 3.60837C14.9281 1.78077 13.1364 0.543128 11.1422 0H7.91199V0.02185C10.9851 -0.184164 14.0582 1.23296 15.7656 3.92051L15.7721 3.90958L28.4451 24.987C30.0699 27.3093 32.7542 28.5985 35.5066 28.5985C36.9548 28.5985 38.4225 28.2426 39.7655 27.4919C40.4815 27.0924 41.1084 26.6055 41.6511 26.0561C41.1862 26.479 40.6662 26.8583 40.0894 27.1798H40.0911Z\"\n fill=\"white\"\n />\n </g>\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_217_6990\"\n x1=\"24.6235\"\n y1=\"18.7363\"\n x2=\"42.3152\"\n y2=\"18.7363\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#4906A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_217_6990\"\n x1=\"-2.35794e-05\"\n y1=\"22.5009\"\n x2=\"42.7186\"\n y2=\"22.5009\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#7C06A5\" />\n <stop offset=\"1\" stopColor=\"#D3423A\" />\n </linearGradient>\n <clipPath id=\"clip0_217_6990\">\n <rect width=\"44\" height=\"45\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n});\nVuuLogo.displayName = \"VuuLogo\";\n", "import { VuuLogo } from \"@vuu-ui/vuu-icons\";\nimport { Stack, useLayoutProviderDispatch } from \"@vuu-ui/vuu-layout\";\nimport { LayoutResizeAction } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { Tab, Tabstrip } from \"@vuu-ui/vuu-ui-controls\";\nimport cx from \"classnames\";\nimport { LayoutsList } from \"../layout-management\";\nimport { CSSProperties, HTMLAttributes, useCallback, useState } from \"react\";\nimport { FeatureProps } from \"../feature\";\nimport { FeatureList } from \"../feature-list\";\nimport { useThemeAttributes } from \"../theme-provider\";\n\nimport \"./LeftNav.css\";\n\nconst classBase = \"vuuLeftNav\";\n\nexport type NavDisplayStatus =\n | \"menu-full\"\n | \"menu-icons\"\n | \"menu-full-content\"\n | \"menu-icons-content\";\n\nconst getDisplayStatus = (\n activeTabIndex: number,\n expanded: boolean\n): NavDisplayStatus => {\n if (activeTabIndex === 0) {\n return expanded ? \"menu-full\" : \"menu-icons\";\n } else {\n return expanded ? \"menu-full-content\" : \"menu-icons-content\";\n }\n};\n\nexport type NavDisplayStatusHandler = (\n navDisplayStatus: NavDisplayStatus\n) => void;\nexport interface LeftNavProps extends HTMLAttributes<HTMLDivElement> {\n \"data-path\"?: string;\n defaultActiveTabIndex?: number;\n defaultExpanded?: boolean;\n features: FeatureProps[];\n onActiveChange?: (activeTabIndex: number) => void;\n onTogglePrimaryMenu?: (expanded: boolean) => void;\n sizeCollapsed?: number;\n sizeContent?: number;\n sizeExpanded?: number;\n tableFeatures: FeatureProps[];\n}\n\ntype NavState = {\n activeTabIndex: number;\n expanded: boolean;\n};\n\nexport const LeftNav = (props: LeftNavProps) => {\n const dispatch = useLayoutProviderDispatch();\n const [themeClass] = useThemeAttributes();\n const {\n \"data-path\": path,\n defaultExpanded = true,\n defaultActiveTabIndex = 0,\n features,\n onActiveChange,\n onTogglePrimaryMenu,\n sizeCollapsed = 80,\n sizeContent = 300,\n sizeExpanded = 240,\n style: styleProp,\n tableFeatures,\n ...htmlAttributes\n } = props;\n\n const [navState, setNavState] = useState<NavState>({\n activeTabIndex: defaultActiveTabIndex,\n expanded: defaultExpanded,\n });\n\n const getFullWidth = useCallback(\n (tabIndex: number, expanded: boolean): number => {\n if (tabIndex === 0) {\n return expanded ? sizeExpanded : sizeCollapsed;\n } else {\n return expanded\n ? sizeExpanded + sizeContent\n : sizeCollapsed + sizeContent;\n }\n },\n [sizeCollapsed, sizeContent, sizeExpanded]\n );\n\n const handleTabSelection = useCallback(\n (activeTabIndex: number) => {\n const { activeTabIndex: currentIndex, expanded } = navState;\n const newState = { activeTabIndex, expanded };\n setNavState(newState);\n if (activeTabIndex === 0 || currentIndex === 0) {\n const width = getFullWidth(activeTabIndex, expanded);\n dispatch({\n type: \"layout-resize\",\n path: \"#vuu-side-panel\",\n size: width,\n } as LayoutResizeAction);\n }\n onActiveChange?.(activeTabIndex);\n },\n [dispatch, getFullWidth, navState, onActiveChange]\n );\n\n const displayStatus = getDisplayStatus(\n navState.activeTabIndex,\n navState.expanded\n );\n\n const toggleExpanded = useCallback(() => {\n const { activeTabIndex, expanded } = navState;\n const primaryMenuExpanded = !expanded;\n const newState = { activeTabIndex, expanded: primaryMenuExpanded };\n setNavState(newState);\n dispatch({\n type: \"layout-resize\",\n path: \"#vuu-side-panel\",\n size: getFullWidth(activeTabIndex, primaryMenuExpanded),\n } as LayoutResizeAction);\n onTogglePrimaryMenu?.(primaryMenuExpanded);\n }, [dispatch, getFullWidth, navState, onTogglePrimaryMenu]);\n\n const style = {\n ...styleProp,\n \"--nav-menu-collapsed-width\": `${sizeCollapsed}px`,\n \"--nav-menu-expanded-width\": `${sizeExpanded}px`,\n \"--nav-menu-content-width\": `${sizeContent}px`,\n } as CSSProperties;\n\n return (\n <div\n {...htmlAttributes}\n className={cx(classBase, `${classBase}-${displayStatus}`)}\n style={style}\n >\n <div\n className={cx(`${classBase}-menu-primary`, themeClass)}\n data-mode=\"dark\"\n >\n <div className=\"vuuLeftNav-logo\">\n <VuuLogo />\n </div>\n <div className={`${classBase}-main`}>\n <Tabstrip\n activeTabIndex={navState.activeTabIndex}\n animateSelectionThumb={false}\n className={`${classBase}-Tabstrip`}\n onActiveChange={handleTabSelection}\n orientation=\"vertical\"\n >\n <Tab data-icon=\"demo\" label=\"DEMO\"></Tab>\n <Tab data-icon=\"features\" label=\"VUU FEATURES\"></Tab>\n <Tab data-icon=\"tables\" label=\"VUU TABLES\"></Tab>\n <Tab data-icon=\"layouts\" label=\"MY LAYOUTS\"></Tab>\n </Tabstrip>\n </div>\n <div className=\"vuuLeftNav-buttonBar\">\n <button\n className={cx(\"vuuLeftNav-toggleButton\", {\n \"vuuLeftNav-toggleButton-open\":\n displayStatus.startsWith(\"menu-full\"),\n \"vuuLeftNav-toggleButton-closed\":\n displayStatus.startsWith(\"menu-icons\"),\n })}\n data-icon={\n displayStatus.startsWith(\"menu-full\")\n ? \"chevron-left\"\n : \"chevron-right\"\n }\n onClick={toggleExpanded}\n />\n </div>\n </div>\n <Stack\n active={navState.activeTabIndex - 1}\n className={`${classBase}-menu-secondary`}\n showTabs={false}\n >\n <FeatureList features={features} title=\"VUU FEATURES\" />\n <FeatureList features={tableFeatures} title=\"VUU TABLES\" />\n <div className=\"vuuLeftNav-drawer\">\n <LayoutsList />\n </div>\n </Stack>\n </div>\n );\n};\n", "import { Palette, PaletteItem } from \"@vuu-ui/vuu-layout\";\nimport { ListProps } from \"@vuu-ui/vuu-ui-controls\";\nimport { HTMLAttributes } from \"react\";\nimport { Feature, FeatureProps } from \"../feature/Feature\";\n\nimport \"./FeatureList.css\";\n\nconst classBase = \"vuuFeatureList\";\n\nexport interface FeatureListProps extends HTMLAttributes<HTMLDivElement> {\n features: FeatureProps[];\n}\n\nexport const FeatureList = ({\n features,\n title = \"VUU TABLES\",\n ...htmlAttributes\n}: FeatureListProps) => {\n const ViewProps = {};\n\n const listProps: Partial<ListProps> = {\n height: \"100%\",\n };\n\n return (\n <div {...htmlAttributes} className={classBase}>\n <div className={`${classBase}-header`}>{title}</div>\n <div className={`${classBase}-content`}>\n <Palette\n orientation=\"vertical\"\n ListProps={listProps}\n ViewProps={ViewProps}\n >\n {features.map((featureProps, i) => (\n <PaletteItem\n closeable\n key={i}\n label={featureProps.title}\n resizeable\n resize=\"defer\"\n header\n >\n <Feature {...featureProps} />\n </PaletteItem>\n ))}\n </Palette>\n </div>\n </div>\n );\n};\n", "import React, {\n createContext,\n HTMLAttributes,\n ReactNode,\n isValidElement,\n cloneElement,\n useContext,\n} from \"react\";\nimport cx from \"classnames\";\n\nexport const DEFAULT_DENSITY: Density = \"medium\";\nexport const DEFAULT_THEME = \"salt-theme\";\nexport const DEFAULT_THEME_MODE: ThemeMode = \"light\";\n\nexport type Density = \"high\" | \"medium\" | \"low\" | \"touch\";\nexport type ThemeMode = \"light\" | \"dark\";\nexport type TargetElement = \"root\" | \"scope\" | \"child\";\n\nexport interface ThemeContextProps {\n density: Density;\n theme: string;\n themeMode: ThemeMode;\n}\n\nexport const ThemeContext = createContext<ThemeContextProps>({\n density: \"high\",\n theme: \"vuu\",\n themeMode: \"light\",\n});\n\nexport type ThemeClasses = [string, string, ThemeMode];\n\nconst DEFAULT_THEME_ATTRIBUTES: ThemeClasses = [\n \"vuu\",\n \"vuu-density-high\",\n \"light\" as ThemeMode,\n];\n\nexport type ThemeAttributes = {\n themeClass: string;\n densityClass: string;\n dataMode: ThemeMode;\n};\n\nexport const useThemeAttributes = (\n themeAttributes?: ThemeAttributes\n): [string, string, ThemeMode] => {\n const context = useContext(ThemeContext);\n if (themeAttributes) {\n return [\n themeAttributes.themeClass,\n themeAttributes.densityClass,\n themeAttributes.dataMode,\n ];\n } else if (context) {\n return [\n `${context.theme}-theme`,\n `${context.theme}-density-${context.density}`,\n context.themeMode,\n ];\n }\n return DEFAULT_THEME_ATTRIBUTES;\n};\n\nconst createThemedChildren = (\n children: ReactNode,\n theme: string,\n themeMode: ThemeMode,\n density: Density\n) => {\n if (isValidElement<HTMLAttributes<HTMLElement>>(children)) {\n return cloneElement(children, {\n className: cx(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n children.props?.className,\n `${theme}-theme`,\n `${theme}-density-${density}`\n ),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n \"data-mode\": themeMode,\n });\n } else {\n console.warn(\n `\\nThemeProvider can only apply CSS classes for theming to a single nested child element of the ThemeProvider.\n Wrap elements with a single container`\n );\n return children;\n }\n};\n\ninterface ThemeProviderProps {\n applyThemeClasses?: boolean;\n children: ReactNode;\n density?: Density;\n theme?: string;\n themeMode?: ThemeMode;\n}\n\nexport const ThemeProvider = ({\n applyThemeClasses = false,\n children,\n theme: themeProp,\n themeMode: themeModeProp,\n density: densityProp,\n}: ThemeProviderProps) => {\n const {\n density: inheritedDensity,\n themeMode: inheritedThemeMode,\n theme: inheritedTheme,\n } = useContext(ThemeContext);\n const density = densityProp ?? inheritedDensity ?? DEFAULT_DENSITY;\n const themeMode = themeModeProp ?? inheritedThemeMode ?? DEFAULT_THEME_MODE;\n const theme = themeProp ?? inheritedTheme ?? DEFAULT_THEME;\n const themedChildren = applyThemeClasses\n ? createThemedChildren(children, theme, themeMode, density)\n : children;\n\n return (\n <ThemeContext.Provider value={{ themeMode, density, theme }}>\n {themedChildren}\n </ThemeContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n", "import {\n ChangeEvent,\n FocusEvent,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport cx from \"classnames\";\nimport {\n VuuColumnDataType,\n VuuDataRow,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useIdMemo } from \"@salt-ds/core\";\nimport { Button } from \"@salt-ds/core\";\nimport {\n DataSource,\n hasAction,\n isErrorResponse,\n RemoteDataSource,\n TableSchema,\n} from \"@vuu-ui/vuu-data\";\nimport {\n buildColumnMap,\n isValidNumber,\n shallowEquals,\n} from \"@vuu-ui/vuu-utils\";\n\nimport \"./SessionEditingForm.css\";\n\nexport type FormFieldDescriptor = {\n isKeyField?: boolean;\n label?: string;\n name: string;\n type: VuuColumnDataType;\n description: string;\n readonly?: boolean;\n required?: boolean;\n};\n\nexport type FormConfig = {\n title: string;\n key: string;\n fields: FormFieldDescriptor[];\n};\n\nexport interface SessionEditingFormProps\n extends HTMLAttributes<HTMLDivElement> {\n config: FormConfig;\n onClose: () => void;\n dataSource?: DataSource;\n schema?: TableSchema;\n}\n\nconst classBase = \"vuuSessionEditingForm\";\n\nconst getField = (\n fields: FormFieldDescriptor[],\n name: string\n): FormFieldDescriptor => {\n const field = fields.find((f) => f.name === name);\n if (field) {\n return field;\n } else {\n throw Error(`SessionEditingForm, no field '${name}' found`);\n }\n};\n\nconst getFieldNameAndValue = (\n evt: ChangeEvent | FocusEvent\n): [string, string] => {\n const {\n dataset: { field },\n value,\n } = evt.target as HTMLInputElement;\n if (field === undefined) {\n throw Error(\"SessionEditingForm, form field has no field name\");\n }\n return [field, value];\n};\n\nconst Status = {\n uninitialised: 0,\n unchanged: 1,\n changed: 2,\n invalid: 3,\n};\n\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined?: false\n): VuuRowDataItemType | undefined;\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined: true\n): VuuRowDataItemType;\nfunction getTypedValue(\n value: string,\n type: VuuColumnDataType,\n throwIfUndefined = false\n): VuuRowDataItemType | undefined {\n switch (type) {\n case \"int\":\n case \"long\": {\n const typedValue = parseInt(value, 10);\n if (isValidNumber(typedValue)) {\n return typedValue;\n } else if (throwIfUndefined) {\n throw Error(\"SessionEditingForm getTypedValue\");\n } else {\n return undefined;\n }\n }\n\n case \"double\": {\n const typedValue = parseFloat(value);\n if (isValidNumber(typedValue)) {\n return typedValue;\n }\n return undefined;\n }\n\n case \"boolean\":\n return value === \"true\" ? true : false;\n default:\n return value;\n }\n}\n\nconst getDataSource = (\n dataSource?: DataSource,\n schema?: TableSchema\n): DataSource => {\n if (dataSource) {\n return dataSource;\n } else if (schema) {\n return new RemoteDataSource({\n bufferSize: 0,\n table: schema.table,\n columns: schema.columns.map((col) => col.name),\n }) as DataSource;\n } else {\n throw Error(\n \"SessionEditingForm: either a DataSource or a TableSchema must be provided\"\n );\n }\n};\n\ntype FormValues = { [key: string]: VuuRowDataItemType | undefined };\n\nexport const SessionEditingForm = ({\n className,\n config: { fields, key: keyField },\n dataSource: dataSourceProp,\n id: idProp,\n onClose,\n schema,\n ...htmlAttributes\n}: SessionEditingFormProps) => {\n const [values, setValues] = useState<FormValues>();\n const [errorMessage, setErrorMessage] = useState(\"\");\n const formContentRef = useRef<HTMLDivElement>(null);\n const initialDataRef = useRef<FormValues>();\n const dataStatusRef = useRef(Status.uninitialised);\n\n const dataSource = useMemo(() => {\n const applyServerData = (data: VuuDataRow) => {\n if (columnMap) {\n const values: { [key: string]: VuuRowDataItemType } = {};\n for (const column of dataSource.columns) {\n values[column] = data[columnMap[column]];\n }\n if (dataStatusRef.current === Status.uninitialised) {\n dataStatusRef.current = Status.unchanged;\n initialDataRef.current = values;\n }\n setValues(values);\n }\n };\n\n const ds = getDataSource(dataSourceProp, schema);\n const columnMap = buildColumnMap(ds.columns);\n ds.subscribe({ range: { from: 0, to: 5 } }, (message) => {\n if (message.type === \"viewport-update\" && message.rows) {\n if (dataStatusRef.current === Status.uninitialised) {\n applyServerData(message.rows[0]);\n } else {\n console.log(\"what do we do with server updates\");\n }\n }\n });\n return ds;\n }, [dataSourceProp, schema]);\n\n const id = useIdMemo(idProp);\n\n const handleChange = useCallback(\n (evt) => {\n const [field, value] = getFieldNameAndValue(evt);\n const { type } = getField(fields, field);\n const typedValue = getTypedValue(value, type);\n setValues((values = {}) => {\n const newValues = {\n ...values,\n [field]: typedValue,\n };\n const notUpdated = shallowEquals(newValues, initialDataRef.current);\n dataStatusRef.current = notUpdated\n ? Status.unchanged\n : typedValue !== undefined\n ? Status.changed\n : Status.invalid;\n return newValues;\n });\n },\n [fields]\n );\n\n const handleBlur = useCallback(\n (evt: FocusEvent) => {\n const [field, value] = getFieldNameAndValue(evt);\n const { type } = getField(fields, field);\n const rowKey = values?.[keyField];\n const typedValue = getTypedValue(value, type, true);\n if (typeof rowKey === \"string\") {\n dataSource.menuRpcCall({\n rowKey,\n field: field,\n value: typedValue,\n type: \"VP_EDIT_CELL_RPC\",\n });\n }\n },\n [dataSource, fields, keyField, values]\n );\n\n const applyAction = useCallback(\n (action: unknown) => {\n if (typeof action === \"object\" && action !== null) {\n if (\"type\" in action && action.type === \"CLOSE_DIALOG_ACTION\") {\n onClose();\n }\n }\n },\n [onClose]\n );\n\n const handleSubmit = useCallback(async () => {\n const response = await dataSource.menuRpcCall({\n type: \"VP_EDIT_SUBMIT_FORM_RPC\",\n });\n if (isErrorResponse(response)) {\n setErrorMessage(response.error);\n } else if (hasAction(response)) {\n applyAction(response.action);\n }\n }, [applyAction, dataSource]);\n\n const handleKeyDown = useCallback(\n (evt) => {\n if (evt.key === \"Enter\" && dataStatusRef.current === Status.changed) {\n handleSubmit();\n }\n },\n [handleSubmit]\n );\n\n const handleCancel = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const getFormControl = (field: FormFieldDescriptor) => {\n const value = String(values?.[field.name] ?? \"\");\n if (field.readonly || field.name === keyField) {\n return (\n <div className={`${classBase}-fieldValue vuuReadOnly`}>{value}</div>\n );\n } else {\n return (\n <input\n className={`${classBase}-fieldValue`}\n data-field={field.name}\n onBlur={handleBlur}\n onChange={handleChange}\n type=\"text\"\n value={value}\n id={`${id}-input-${field.name}`}\n />\n );\n }\n };\n\n useEffect(() => {\n if (formContentRef.current) {\n const firstInput = formContentRef.current.querySelector(\n \"input\"\n ) as HTMLInputElement;\n if (firstInput) {\n setTimeout(() => {\n firstInput.focus();\n firstInput.select();\n }, 100);\n }\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (dataSource) {\n dataSource.unsubscribe();\n }\n };\n }, [dataSource]);\n\n const isDirty = dataStatusRef.current === Status.changed;\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n {errorMessage ? (\n <div\n className={`${classBase}-errorBanner`}\n data-icon=\"error\"\n title={errorMessage}\n >\n Error, edit(s) not saved\n </div>\n ) : undefined}\n <div\n className={`${classBase}-content`}\n ref={formContentRef}\n onKeyDown={handleKeyDown}\n >\n {fields.map((field) => (\n <div className={`${classBase}-field`} key={field.name}>\n <label\n className={cx(`${classBase}-fieldLabel`, {\n [`${classBase}-required`]: field.required,\n })}\n htmlFor={`${id}-input-${field.name}`}\n >\n {field?.label ?? field.description}\n </label>\n {getFormControl(field)}\n </div>\n ))}\n </div>\n <div className={`${classBase}-buttonbar salt-theme salt-density-high`}>\n <Button\n type=\"submit\"\n variant=\"cta\"\n disabled={!isDirty}\n onClick={handleSubmit}\n >\n Submit\n </Button>\n <Button variant=\"secondary\" onClick={handleCancel}>\n Cancel\n </Button>\n </div>\n </div>\n );\n};\n", "import { connectToServer } from \"@vuu-ui/vuu-data\";\nimport {\n DraggableLayout,\n LayoutProvider,\n LayoutProviderProps,\n loadingApplicationJson,\n useLayoutContextMenuItems,\n} from \"@vuu-ui/vuu-layout\";\nimport { LayoutChangeHandler } from \"@vuu-ui/vuu-layout/src/layout-reducer\";\nimport { logger } from \"@vuu-ui/vuu-utils\";\nimport cx from \"classnames\";\nimport {\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { AppHeader } from \"./app-header\";\nimport { useLayoutManager } from \"./layout-management\";\nimport { SidePanelProps, useShellLayout } from \"./shell-layouts\";\nimport { SaveLocation } from \"./shellTypes\";\nimport { ThemeMode, ThemeProvider, useThemeAttributes } from \"./theme-provider\";\nimport { ShellContextProvider } from \".\";\n\nimport { ContextMenuProvider, useDialog } from \"@vuu-ui/vuu-popups\";\nimport \"./shell.css\";\n\nexport type VuuUser = {\n username: string;\n token: string;\n};\n\nconst { error } = logger(\"Shell\");\n\nconst defaultLeftSidePanel: ShellProps[\"LeftSidePanelProps\"] = {};\n\nexport type LayoutTemplateName = \"full-height\" | \"inlay\";\n\nexport interface ShellProps extends HTMLAttributes<HTMLDivElement> {\n LayoutProps?: Pick<\n LayoutProviderProps,\n \"createNewChild\" | \"pathToDropTarget\"\n >;\n LeftSidePanelProps?: SidePanelProps;\n children?: ReactNode;\n leftSidePanelLayout?: \"full-height\" | \"inlay\";\n loginUrl?: string;\n // paletteConfig: any;\n saveLocation?: SaveLocation;\n saveUrl?: string;\n serverUrl?: string;\n user: VuuUser;\n}\n\nexport const Shell = ({\n LayoutProps,\n LeftSidePanelProps = defaultLeftSidePanel,\n children,\n className: classNameProp,\n leftSidePanelLayout,\n loginUrl,\n saveLocation = \"remote\",\n saveUrl,\n serverUrl,\n user,\n ...htmlAttributes\n}: ShellProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const { dialog, setDialogState } = useDialog();\n const layoutId = useRef(\"latest\");\n const { applicationJson, saveApplicationLayout, loadLayoutById } =\n useLayoutManager();\n const { buildMenuOptions, handleMenuAction } =\n useLayoutContextMenuItems(setDialogState);\n\n const handleLayoutChange = useCallback<LayoutChangeHandler>(\n (layout, layoutChangeReason) => {\n try {\n saveApplicationLayout(layout);\n } catch {\n error?.(\"Failed to save layout\");\n }\n },\n [saveApplicationLayout]\n );\n\n const handleSwitchTheme = useCallback((mode: ThemeMode) => {\n if (rootRef.current) {\n rootRef.current.dataset.mode = mode;\n }\n }, []);\n\n // TODO this is out of date\n const handleNavigate = useCallback(\n (id) => {\n layoutId.current = id;\n loadLayoutById(id);\n },\n [loadLayoutById]\n );\n\n useEffect(() => {\n if (serverUrl && user.token) {\n connectToServer({\n authToken: user.token,\n url: serverUrl,\n username: user.username,\n });\n }\n }, [serverUrl, user.token, user.username]);\n\n const [themeClass, densityClass, dataMode] = useThemeAttributes();\n const className = cx(\"vuuShell\", classNameProp, themeClass, densityClass);\n\n const isLoading = applicationJson === loadingApplicationJson;\n\n const shellLayout = useShellLayout({\n LeftSidePanelProps,\n leftSidePanelLayout,\n appHeader: (\n <AppHeader\n layoutId={layoutId.current}\n loginUrl={loginUrl}\n user={user}\n onNavigate={handleNavigate}\n onSwitchTheme={handleSwitchTheme}\n />\n ),\n });\n\n return isLoading ? null : (\n <ThemeProvider>\n <ContextMenuProvider\n menuActionHandler={handleMenuAction}\n menuBuilder={buildMenuOptions}\n >\n <LayoutProvider\n {...LayoutProps}\n layout={applicationJson.layout}\n onLayoutChange={handleLayoutChange}\n >\n <DraggableLayout\n className={className}\n data-mode={dataMode}\n ref={rootRef}\n {...htmlAttributes}\n >\n {shellLayout}\n </DraggableLayout>\n </LayoutProvider>\n {children || dialog}\n </ContextMenuProvider>\n </ThemeProvider>\n );\n};\n", "import { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { useCallback, useMemo } from \"react\";\nimport {\n layoutFromJson,\n LayoutJSON,\n View,\n useLayoutProviderDispatch,\n} from \"@vuu-ui/vuu-layout\";\n\nimport \"./ContextPanel.css\";\n\nconst classBase = \"vuuContextPanel\";\n\nexport interface ContextPanelProps {\n [key: string]: unknown;\n className?: string;\n content?: LayoutJSON;\n expanded?: boolean;\n overlay?: boolean;\n}\n\nexport const ContextPanel = ({\n className: classNameProp,\n expanded = false,\n content: contentProp,\n overlay = false,\n title,\n}: ContextPanelProps) => {\n const dispatchLayoutAction = useLayoutProviderDispatch();\n // const [contentJson, setContentJson] = useState(contentProp);\n const handleClose = useCallback(() => {\n dispatchLayoutAction({\n path: \"#context-panel\",\n propName: \"expanded\",\n propValue: false,\n type: \"set-prop\",\n });\n }, [dispatchLayoutAction]);\n // TODO look up content using context\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-expanded`]: expanded,\n [`${classBase}-inline`]: overlay !== true,\n [`${classBase}-overlay`]: overlay,\n });\n\n const content = useMemo(\n () =>\n contentProp && expanded ? layoutFromJson(contentProp, \"context-0\") : null,\n [contentProp, expanded]\n );\n\n return (\n <div\n className={cx(classBase, className, {\n [`${classBase}-expanded`]: expanded,\n })}\n >\n <View className={`${classBase}-inner`} header={false} id=\"context-panel\">\n <div className={`${classBase}-header`}>\n <h2 className={`${classBase}-title`}>{title}</h2>\n <Button\n className={`${classBase}-close`}\n data-icon=\"close\"\n onClick={handleClose}\n variant=\"secondary\"\n />\n </div>\n <div className={`${classBase}-content`}>{content}</div>\n </View>\n </div>\n );\n};\n", "import { DraggableLayout, Flexbox } from \"@vuu-ui/vuu-layout\";\nimport { ReactElement } from \"react\";\nimport { ContextPanel } from \"./context-panel\";\nimport { SidePanel } from \"./side-panel\";\nimport { ShellLayoutProps } from \"./useShellLayout\";\n\nexport const useFullHeightLeftPanel = ({\n appHeader,\n LeftSidePanelProps,\n}: ShellLayoutProps): ReactElement => {\n return (\n <Flexbox\n className=\"App\"\n style={{\n flexDirection: \"row\",\n height: \"100%\",\n width: \"100%\",\n }}\n >\n <SidePanel {...LeftSidePanelProps} id=\"vuu-side-panel\" />\n <Flexbox\n className=\"vuuShell-content\"\n style={{ flex: 1, flexDirection: \"column\" }}\n >\n {appHeader}\n <DraggableLayout dropTarget key=\"main-content\" style={{ flex: 1 }} />\n </Flexbox>\n <ContextPanel id=\"context-panel\" overlay></ContextPanel>\n </Flexbox>\n );\n};\n", "import { CSSProperties, HTMLAttributes, useMemo } from \"react\";\nimport cx from \"classnames\";\n\nimport \"./SidePanel.css\";\n// import { useLayoutManager } from \"../../layout-management\";\n\nconst classBase = \"vuuShellSidePanel\";\n\nexport interface SidePanelProps extends HTMLAttributes<HTMLDivElement> {\n open?: boolean;\n path?: string;\n sizeOpen?: number;\n sizeClosed?: number;\n}\n\nexport const SidePanel = ({\n children,\n open = true,\n sizeClosed = 90,\n sizeOpen = 200,\n style: styleProp,\n ...htmlAttributes\n}: SidePanelProps) => {\n // const { applicationJson, saveApplicationSettings } = useLayoutManager();\n // console.log(`settings`, {\n // expanded: applicationJson?.settings?.leftNav?.expanded,\n // active: applicationJson?.settings?.leftNav?.activeTabIndex,\n // });\n\n const style = useMemo(\n () =>\n ({\n ...styleProp,\n \"--shell-left-nav-size\": open ? `${sizeOpen}px` : `${sizeClosed}px`,\n } as CSSProperties),\n [open, sizeClosed, sizeOpen, styleProp]\n );\n return (\n <div {...htmlAttributes} className={cx(classBase)} style={style}>\n {children}\n </div>\n );\n};\n", "import {\n DockLayout,\n DraggableLayout,\n Drawer,\n Flexbox,\n View,\n} from \"@vuu-ui/vuu-layout\";\n\nimport { MouseEvent, ReactElement, useCallback, useRef, useState } from \"react\";\nimport { ShellLayoutProps } from \"./useShellLayout\";\n\nexport const useInlayLeftPanel = ({\n appHeader,\n LeftSidePanelProps,\n}: ShellLayoutProps): ReactElement => {\n const paletteView = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(true);\n\n const handleDrawerClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (!paletteView.current?.contains(target)) {\n setOpen(!open);\n }\n },\n [open]\n );\n\n const getDrawers = useCallback(\n (leftSidePanel) => {\n const drawers: ReactElement[] = [];\n drawers.push(\n <Drawer\n key=\"left-panel\"\n onClick={handleDrawerClick}\n open={open}\n position=\"left\"\n inline\n peekaboo\n sizeOpen={200}\n toggleButton=\"end\"\n >\n <View\n className=\"vuuShell-palette\"\n id=\"vw-app-palette\"\n key=\"app-palette\"\n ref={paletteView}\n style={{ height: \"100%\" }}\n >\n {leftSidePanel}\n </View>\n </Drawer>\n );\n\n return drawers;\n },\n [handleDrawerClick, open]\n );\n\n return (\n <Flexbox\n className=\"App\"\n style={{ flexDirection: \"column\", height: \"100%\", width: \"100%\" }}\n >\n {appHeader}\n <DockLayout style={{ flex: 1 }}>\n {getDrawers(LeftSidePanelProps?.children).concat(\n <DraggableLayout\n dropTarget\n key=\"main-content\"\n style={{ width: \"100%\", height: \"100%\" }}\n />\n )}\n </DockLayout>\n </Flexbox>\n );\n};\n", "import { ColumnDescriptor, ListOption } from \"@vuu-ui/vuu-table-types\";\nimport { RpcResponseHandler } from \"@vuu-ui/vuu-data-react\";\nimport { createContext, ReactElement, ReactNode, useContext } from \"react\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\n\nexport type LookupTableProvider = (table: VuuTable) => ListOption[];\n\nexport type DefaultColumnConfiguration = <T extends string = string>(\n tableName: T,\n columnName: string\n) => Partial<ColumnDescriptor> | undefined;\nexport interface ShellContextProps {\n getDefaultColumnConfig?: DefaultColumnConfiguration;\n getLookupValues?: LookupTableProvider;\n handleRpcResponse?: RpcResponseHandler;\n}\n\nconst defaultConfig = {};\n\nconst ShellContext = createContext<ShellContextProps>(defaultConfig);\n\nexport interface ShellProviderProps {\n children: ReactNode;\n value?: ShellContextProps;\n}\n\nconst Provider = ({\n children,\n context,\n inheritedContext,\n}: {\n children: ReactNode;\n context?: ShellContextProps;\n inheritedContext?: ShellContextProps;\n}) => {\n // TODO functions provided at multiple levels must be merged\n const mergedContext = {\n ...inheritedContext,\n ...context,\n };\n return (\n <ShellContext.Provider value={mergedContext}>\n {children}\n </ShellContext.Provider>\n );\n};\n\nexport const ShellContextProvider = ({\n children,\n value,\n}: ShellProviderProps): ReactElement => {\n return (\n <ShellContext.Consumer>\n {(context) => (\n <Provider context={value} inheritedContext={context}>\n {children}\n </Provider>\n )}\n </ShellContext.Consumer>\n );\n};\n\nexport const useShellContext = () => {\n return useContext(ShellContext);\n};\n", "import cx from \"classnames\";\nimport { ToggleButton, ToggleButtonGroup, useControlled } from \"@salt-ds/core\";\nimport { HTMLAttributes, SyntheticEvent, useCallback } from \"react\";\nimport { ThemeMode } from \"../theme-provider\";\n\nimport \"./ThemeSwitch.css\";\n\nconst classBase = \"vuuThemeSwitch\";\nexport interface ThemeSwitchProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n defaultMode?: ThemeMode;\n mode?: ThemeMode;\n onChange: (mode: ThemeMode) => void;\n}\n\nexport const ThemeSwitch = ({\n className: classNameProp,\n defaultMode: defaultModeProp,\n mode: modeProp,\n onChange,\n ...htmlAttributes\n}: ThemeSwitchProps) => {\n const [mode, setMode] = useControlled<ThemeMode>({\n controlled: modeProp,\n default: defaultModeProp ?? \"light\",\n name: \"ThemeSwitch\",\n state: \"mode\",\n });\n\n const handleChangeSecondary = useCallback(\n (evt: SyntheticEvent<HTMLButtonElement>) => {\n const { value } = evt.target as HTMLButtonElement;\n setMode(value as ThemeMode);\n onChange(value as ThemeMode);\n },\n [onChange, setMode]\n );\n const className = cx(classBase, classNameProp);\n return (\n <ToggleButtonGroup\n className={className}\n {...htmlAttributes}\n onChange={handleChangeSecondary}\n value={mode}\n >\n <ToggleButton aria-label=\"alert\" data-icon=\"light\" value=\"dark\" />\n <ToggleButton aria-label=\"home\" data-icon=\"dark\" value=\"light\" />\n </ToggleButtonGroup>\n );\n};\n", "import { useCallback, useEffect, useState } from \"react\";\nimport { ConnectionManager, ConnectionStatusMessage } from \"@vuu-ui/vuu-data\";\n\nexport const useServerConnectionStatus = () => {\n const [connectionStatus, setConnectionStatus] = useState(\"disconnected\");\n\n const handleStatusChange = useCallback(\n ({ status }: ConnectionStatusMessage) => {\n setConnectionStatus(status);\n },\n []\n );\n\n useEffect(() => {\n ConnectionManager.on(\"connection-status\", handleStatusChange);\n return () => {\n ConnectionManager.removeListener(\"connection-status\", handleStatusChange);\n };\n }, [handleStatusChange]);\n\n return connectionStatus;\n};\n", "import { useCallback, useEffect, useState } from \"react\";\nimport { ConnectionManager } from \"@vuu-ui/vuu-data\";\n\nexport const useServerConnectionQuality = () => {\n const [messagesPerSecond, setMessagesPerSecond] = useState<number>(0);\n const handleConnectivityMessage = useCallback(({ messages }) => {\n setMessagesPerSecond(messages.messagesLength);\n }, []);\n\n useEffect(() => {\n ConnectionManager.on(\"connection-metrics\", handleConnectivityMessage);\n return () => {\n ConnectionManager.removeListener(\n \"connection-metrics\",\n handleConnectivityMessage\n );\n };\n }, [handleConnectivityMessage]);\n\n return messagesPerSecond;\n};\n", "import {\n ClientToServerGetUniqueValues,\n ClientToServerGetUniqueValuesStartingWith,\n TypeaheadParams,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback } from \"react\";\nimport { makeRpcCall } from \"@vuu-ui/vuu-data\";\n\nexport type SuggestionFetcher = (params: TypeaheadParams) => Promise<string[]>;\n\n// const SPECIAL_SPACE = \"_\";\nconst TYPEAHEAD_MESSAGE_CONSTANTS = {\n type: \"RPC_CALL\",\n service: \"TypeAheadRpcHandler\",\n};\n\nexport const getTypeaheadParams = (\n table: VuuTable,\n column: string,\n text = \"\",\n selectedValues: string[] = []\n): TypeaheadParams => {\n if (text !== \"\" && !selectedValues.includes(text.toLowerCase())) {\n return [table, column, text];\n }\n return [table, column];\n};\n\n// const containSpace = (text: string) => text.indexOf(\" \") !== -1;\n// const replaceSpace = (text: string) => text.replace(/\\s/g, SPECIAL_SPACE);\n\nexport const useTypeaheadSuggestions = () =>\n useCallback<SuggestionFetcher>(async (params: TypeaheadParams) => {\n const rpcMessage =\n params.length === 2\n ? ({\n method: \"getUniqueFieldValues\",\n params,\n ...TYPEAHEAD_MESSAGE_CONSTANTS,\n } as ClientToServerGetUniqueValues)\n : ({\n method: \"getUniqueFieldValuesStartingWith\",\n params,\n ...TYPEAHEAD_MESSAGE_CONSTANTS,\n } as ClientToServerGetUniqueValuesStartingWith);\n\n return makeRpcCall<string[]>(rpcMessage);\n }, []);\n", "// FIXME profile adding a per-Tree TreeNode cache, validating it by\n// parent pointer\n/// The default maximum length of a `TreeBuffer` node.\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n constructor(from, to) {\n this.from = from;\n this.to = to;\n }\n}\n/// Each [node type](#common.NodeType) or [individual tree](#common.Tree)\n/// can have metadata associated with it in props. Instances of this\n/// class represent prop names.\nclass NodeProp {\n /// Create a new node prop type.\n constructor(config = {}) {\n this.id = nextPropID++;\n this.perNode = !!config.perNode;\n this.deserialize = config.deserialize || (() => {\n throw new Error(\"This node type doesn't define a deserialize function\");\n });\n }\n /// This is meant to be used with\n /// [`NodeSet.extend`](#common.NodeSet.extend) or\n /// [`LRParser.configure`](#lr.ParserConfig.props) to compute\n /// prop values for each node type in the set. Takes a [match\n /// object](#common.NodeType^match) or function that returns undefined\n /// if the node type doesn't get this prop, and the prop's value if\n /// it does.\n add(match) {\n if (this.perNode)\n throw new RangeError(\"Can't add per-node props to node types\");\n if (typeof match != \"function\")\n match = NodeType.match(match);\n return (type) => {\n let result = match(type);\n return result === undefined ? null : [this, result];\n };\n }\n}\n/// Prop that is used to describe matching delimiters. For opening\n/// delimiters, this holds an array of node names (written as a\n/// space-separated string when declaring this prop in a grammar)\n/// for the node types of closing delimiters that match it.\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/// The inverse of [`closedBy`](#common.NodeProp^closedBy). This is\n/// attached to closing delimiters, holding an array of node names\n/// of types of matching opening delimiters.\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/// Used to assign node types to groups (for example, all node\n/// types that represent an expression could be tagged with an\n/// `\"Expression\"` group).\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/// The hash of the [context](#lr.ContextTracker.constructor)\n/// that the node was parsed in, if any. Used to limit reuse of\n/// contextual nodes.\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/// The distance beyond the end of the node that the tokenizer\n/// looked ahead for any of the tokens inside the node. (The LR\n/// parser only stores this when it is larger than 25, for\n/// efficiency reasons.)\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/// This per-node prop is used to replace a given node, or part of a\n/// node, with another tree. This is useful to include trees from\n/// different languages in mixed-language parsers.\nNodeProp.mounted = new NodeProp({ perNode: true });\n/// A mounted tree, which can be [stored](#common.NodeProp^mounted) on\n/// a tree node to indicate that parts of its content are\n/// represented by another tree.\nclass MountedTree {\n constructor(\n /// The inner tree.\n tree, \n /// If this is null, this tree replaces the entire node (it will\n /// be included in the regular iteration instead of its host\n /// node). If not, only the given ranges are considered to be\n /// covered by this tree. This is used for trees that are mixed in\n /// a way that isn't strictly hierarchical. Such mounted trees are\n /// only entered by [`resolveInner`](#common.Tree.resolveInner)\n /// and [`enter`](#common.SyntaxNode.enter).\n overlay, \n /// The parser used to create this subtree.\n parser) {\n this.tree = tree;\n this.overlay = overlay;\n this.parser = parser;\n }\n}\nconst noProps = Object.create(null);\n/// Each node in a syntax tree has a node type associated with it.\nclass NodeType {\n /// @internal\n constructor(\n /// The name of the node type. Not necessarily unique, but if the\n /// grammar was written properly, different node types with the\n /// same name within a node set should play the same semantic\n /// role.\n name, \n /// @internal\n props, \n /// The id of this node in its set. Corresponds to the term ids\n /// used in the parser.\n id, \n /// @internal\n flags = 0) {\n this.name = name;\n this.props = props;\n this.id = id;\n this.flags = flags;\n }\n /// Define a node type.\n static define(spec) {\n let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n if (spec.props)\n for (let src of spec.props) {\n if (!Array.isArray(src))\n src = src(type);\n if (src) {\n if (src[0].perNode)\n throw new RangeError(\"Can't store a per-node prop on a node type\");\n props[src[0].id] = src[1];\n }\n }\n return type;\n }\n /// Retrieves a node prop for this type. Will return `undefined` if\n /// the prop isn't present on this node.\n prop(prop) { return this.props[prop.id]; }\n /// True when this is the top node of a grammar.\n get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n /// True when this node is produced by a skip rule.\n get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n /// Indicates whether this is an error node.\n get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n /// When true, this node type doesn't correspond to a user-declared\n /// named node, for example because it is used to cache repetition.\n get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n /// Returns true when this node's name or one of its\n /// [groups](#common.NodeProp^group) matches the given string.\n is(name) {\n if (typeof name == 'string') {\n if (this.name == name)\n return true;\n let group = this.prop(NodeProp.group);\n return group ? group.indexOf(name) > -1 : false;\n }\n return this.id == name;\n }\n /// Create a function from node types to arbitrary values by\n /// specifying an object whose property names are node or\n /// [group](#common.NodeProp^group) names. Often useful with\n /// [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n /// names, separated by spaces, in a single property name to map\n /// multiple node names to a single value.\n static match(map) {\n let direct = Object.create(null);\n for (let prop in map)\n for (let name of prop.split(\" \"))\n direct[name] = map[prop];\n return (node) => {\n for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n let found = direct[i < 0 ? node.name : groups[i]];\n if (found)\n return found;\n }\n };\n }\n}\n/// An empty dummy node type to use when no actual type is available.\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/// A node set holds a collection of node types. It is used to\n/// compactly represent trees by storing their type ids, rather than a\n/// full pointer to the type object, in a numeric array. Each parser\n/// [has](#lr.LRParser.nodeSet) a node set, and [tree\n/// buffers](#common.TreeBuffer) can only store collections of nodes\n/// from the same set. A set can have a maximum of 2**16 (65536) node\n/// types in it, so that the ids fit into 16-bit typed array slots.\nclass NodeSet {\n /// Create a set with the given types. The `id` property of each\n /// type should correspond to its position within the array.\n constructor(\n /// The node types in this set, by id.\n types) {\n this.types = types;\n for (let i = 0; i < types.length; i++)\n if (types[i].id != i)\n throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n }\n /// Create a copy of this set with some node properties added. The\n /// arguments to this method can be created with\n /// [`NodeProp.add`](#common.NodeProp.add).\n extend(...props) {\n let newTypes = [];\n for (let type of this.types) {\n let newProps = null;\n for (let source of props) {\n let add = source(type);\n if (add) {\n if (!newProps)\n newProps = Object.assign({}, type.props);\n newProps[add[0].id] = add[1];\n }\n }\n newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n }\n return new NodeSet(newTypes);\n }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/// Options that control iteration. Can be combined with the `|`\n/// operator to enable multiple ones.\nvar IterMode;\n(function (IterMode) {\n /// When enabled, iteration will only visit [`Tree`](#common.Tree)\n /// objects, not nodes packed into\n /// [`TreeBuffer`](#common.TreeBuffer)s.\n IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n /// Enable this to make iteration include anonymous nodes (such as\n /// the nodes that wrap repeated grammar constructs into a balanced\n /// tree).\n IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n /// By default, regular [mounted](#common.NodeProp^mounted) nodes\n /// replace their base node in iteration. Enable this to ignore them\n /// instead.\n IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n /// This option only applies in\n /// [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n /// library to not enter mounted overlays if one covers the given\n /// position.\n IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/// A piece of syntax tree. There are two ways to approach these\n/// trees: the way they are actually stored in memory, and the\n/// convenient way.\n///\n/// Syntax trees are stored as a tree of `Tree` and `TreeBuffer`\n/// objects. By packing detail information into `TreeBuffer` leaf\n/// nodes, the representation is made a lot more memory-efficient.\n///\n/// However, when you want to actually work with tree nodes, this\n/// representation is very awkward, so most client code will want to\n/// use the [`TreeCursor`](#common.TreeCursor) or\n/// [`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\n/// a view on some part of this data structure, and can be used to\n/// move around to adjacent nodes.\nclass Tree {\n /// Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n constructor(\n /// The type of the top node.\n type, \n /// This node's child nodes.\n children, \n /// The positions (offsets relative to the start of this tree) of\n /// the children.\n positions, \n /// The total length of this tree\n length, \n /// Per-node [node props](#common.NodeProp) to associate with this node.\n props) {\n this.type = type;\n this.children = children;\n this.positions = positions;\n this.length = length;\n /// @internal\n this.props = null;\n if (props && props.length) {\n this.props = Object.create(null);\n for (let [prop, value] of props)\n this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n }\n }\n /// @internal\n toString() {\n let mounted = this.prop(NodeProp.mounted);\n if (mounted && !mounted.overlay)\n return mounted.tree.toString();\n let children = \"\";\n for (let ch of this.children) {\n let str = ch.toString();\n if (str) {\n if (children)\n children += \",\";\n children += str;\n }\n }\n return !this.type.name ? children :\n (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n (children.length ? \"(\" + children + \")\" : \"\");\n }\n /// Get a [tree cursor](#common.TreeCursor) positioned at the top of\n /// the tree. Mode can be used to [control](#common.IterMode) which\n /// nodes the cursor visits.\n cursor(mode = 0) {\n return new TreeCursor(this.topNode, mode);\n }\n /// Get a [tree cursor](#common.TreeCursor) pointing into this tree\n /// at the given position and side (see\n /// [`moveTo`](#common.TreeCursor.moveTo).\n cursorAt(pos, side = 0, mode = 0) {\n let scope = CachedNode.get(this) || this.topNode;\n let cursor = new TreeCursor(scope);\n cursor.moveTo(pos, side);\n CachedNode.set(this, cursor._tree);\n return cursor;\n }\n /// Get a [syntax node](#common.SyntaxNode) object for the top of the\n /// tree.\n get topNode() {\n return new TreeNode(this, 0, 0, null);\n }\n /// Get the [syntax node](#common.SyntaxNode) at the given position.\n /// If `side` is -1, this will move into nodes that end at the\n /// position. If 1, it'll move into nodes that start at the\n /// position. With 0, it'll only enter nodes that cover the position\n /// from both sides.\n ///\n /// Note that this will not enter\n /// [overlays](#common.MountedTree.overlay), and you often want\n /// [`resolveInner`](#common.Tree.resolveInner) instead.\n resolve(pos, side = 0) {\n let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n CachedNode.set(this, node);\n return node;\n }\n /// Like [`resolve`](#common.Tree.resolve), but will enter\n /// [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n /// pointing into the innermost overlaid tree at the given position\n /// (with parent links going through all parent structure, including\n /// the host trees).\n resolveInner(pos, side = 0) {\n let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n CachedInnerNode.set(this, node);\n return node;\n }\n /// Iterate over the tree and its children, calling `enter` for any\n /// node that touches the `from`/`to` region (if given) before\n /// running over such a node's children, and `leave` (if given) when\n /// leaving the node. When `enter` returns `false`, that node will\n /// not have its children iterated over (or `leave` called).\n iterate(spec) {\n let { enter, leave, from = 0, to = this.length } = spec;\n let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n let entered = false;\n if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n if (c.firstChild())\n continue;\n entered = true;\n }\n for (;;) {\n if (entered && leave && (anon || !c.type.isAnonymous))\n leave(c);\n if (c.nextSibling())\n break;\n if (!c.parent())\n return;\n entered = true;\n }\n }\n }\n /// Get the value of the given [node prop](#common.NodeProp) for this\n /// node. Works with both per-node and per-type props.\n prop(prop) {\n return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n }\n /// Returns the node's [per-node props](#common.NodeProp.perNode) in a\n /// format that can be passed to the [`Tree`](#common.Tree)\n /// constructor.\n get propValues() {\n let result = [];\n if (this.props)\n for (let id in this.props)\n result.push([+id, this.props[id]]);\n return result;\n }\n /// Balance the direct children of this tree, producing a copy of\n /// which may have children grouped into subtrees with type\n /// [`NodeType.none`](#common.NodeType^none).\n balance(config = {}) {\n return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n }\n /// Build a tree from a postfix-ordered buffer of node information,\n /// or a cursor over such a buffer.\n static build(data) { return buildTree(data); }\n}\n/// The empty tree\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n constructor(buffer, index) {\n this.buffer = buffer;\n this.index = index;\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n get pos() { return this.index; }\n next() { this.index -= 4; }\n fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/// Tree buffers contain (type, start, end, endIndex) quads for each\n/// node. In such a buffer, nodes are stored in prefix order (parents\n/// before children, with the endIndex of the parent indicating which\n/// children belong to it).\nclass TreeBuffer {\n /// Create a tree buffer.\n constructor(\n /// The buffer's content.\n buffer, \n /// The total length of the group of nodes in the buffer.\n length, \n /// The node set used in this buffer.\n set) {\n this.buffer = buffer;\n this.length = length;\n this.set = set;\n }\n /// @internal\n get type() { return NodeType.none; }\n /// @internal\n toString() {\n let result = [];\n for (let index = 0; index < this.buffer.length;) {\n result.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result.join(\",\");\n }\n /// @internal\n childString(index) {\n let id = this.buffer[index], endIndex = this.buffer[index + 3];\n let type = this.set.types[id], result = type.name;\n if (/\\W/.test(result) && !type.isError)\n result = JSON.stringify(result);\n index += 4;\n if (endIndex == index)\n return result;\n let children = [];\n while (index < endIndex) {\n children.push(this.childString(index));\n index = this.buffer[index + 3];\n }\n return result + \"(\" + children.join(\",\") + \")\";\n }\n /// @internal\n findChild(startIndex, endIndex, dir, pos, side) {\n let { buffer } = this, pick = -1;\n for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n pick = i;\n if (dir > 0)\n break;\n }\n }\n return pick;\n }\n /// @internal\n slice(startI, endI, from) {\n let b = this.buffer;\n let copy = new Uint16Array(endI - startI), len = 0;\n for (let i = startI, j = 0; i < endI;) {\n copy[j++] = b[i++];\n copy[j++] = b[i++] - from;\n let to = copy[j++] = b[i++] - from;\n copy[j++] = b[i++] - startI;\n len = Math.max(len, to);\n }\n return new TreeBuffer(copy, len, this.set);\n }\n}\nfunction checkSide(side, pos, from, to) {\n switch (side) {\n case -2 /* Side.Before */: return from < pos;\n case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n case 0 /* Side.Around */: return from < pos && to > pos;\n case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n case 2 /* Side.After */: return to > pos;\n case 4 /* Side.DontCare */: return true;\n }\n}\nfunction enterUnfinishedNodesBefore(node, pos) {\n let scan = node.childBefore(pos);\n while (scan) {\n let last = scan.lastChild;\n if (!last || last.to != scan.to)\n break;\n if (last.type.isError && last.from == last.to) {\n node = scan;\n scan = last.prevSibling;\n }\n else {\n scan = last;\n }\n }\n return node;\n}\nfunction resolveNode(node, pos, side, overlays) {\n var _a;\n // Move up to a node that actually holds the position, if possible\n while (node.from == node.to ||\n (side < 1 ? node.from >= pos : node.from > pos) ||\n (side > -1 ? node.to <= pos : node.to < pos)) {\n let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n if (!parent)\n return node;\n node = parent;\n }\n let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n // Must go up out of overlays when those do not overlap with pos\n if (overlays)\n for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n node = parent;\n }\n for (;;) {\n let inner = node.enter(pos, side, mode);\n if (!inner)\n return node;\n node = inner;\n }\n}\nclass TreeNode {\n constructor(_tree, from, \n // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n index, _parent) {\n this._tree = _tree;\n this.from = from;\n this.index = index;\n this._parent = _parent;\n }\n get type() { return this._tree.type; }\n get name() { return this._tree.type.name; }\n get to() { return this.from + this._tree.length; }\n nextChild(i, dir, pos, side, mode = 0) {\n for (let parent = this;;) {\n for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n let next = children[i], start = positions[i] + parent.from;\n if (!checkSide(side, pos, start, start + next.length))\n continue;\n if (next instanceof TreeBuffer) {\n if (mode & IterMode.ExcludeBuffers)\n continue;\n let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n if (index > -1)\n return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n }\n else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n let mounted;\n if (!(mode & IterMode.IgnoreMounts) &&\n next.props && (mounted = next.prop(NodeProp.mounted)) && !mounted.overlay)\n return new TreeNode(mounted.tree, start, i, parent);\n let inner = new TreeNode(next, start, i, parent);\n return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n }\n }\n if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n return null;\n if (parent.index >= 0)\n i = parent.index + dir;\n else\n i = dir < 0 ? -1 : parent._parent._tree.children.length;\n parent = parent._parent;\n if (!parent)\n return null;\n }\n }\n get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n let mounted;\n if (!(mode & IterMode.IgnoreOverlays) && (mounted = this._tree.prop(NodeProp.mounted)) && mounted.overlay) {\n let rPos = pos - this.from;\n for (let { from, to } of mounted.overlay) {\n if ((side > 0 ? from <= rPos : from < rPos) &&\n (side < 0 ? to >= rPos : to > rPos))\n return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n }\n }\n return this.nextChild(0, 1, pos, side, mode);\n }\n nextSignificantParent() {\n let val = this;\n while (val.type.isAnonymous && val._parent)\n val = val._parent;\n return val;\n }\n get parent() {\n return this._parent ? this._parent.nextSignificantParent() : null;\n }\n get nextSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n }\n get prevSibling() {\n return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n }\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n get tree() { return this._tree; }\n toTree() { return this._tree; }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n enterUnfinishedNodesBefore(pos) { return enterUnfinishedNodesBefore(this, pos); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n /// @internal\n toString() { return this._tree.toString(); }\n get node() { return this; }\n matchContext(context) { return matchNodeContext(this, context); }\n}\nfunction getChildren(node, type, before, after) {\n let cur = node.cursor(), result = [];\n if (!cur.firstChild())\n return result;\n if (before != null)\n while (!cur.type.is(before))\n if (!cur.nextSibling())\n return result;\n for (;;) {\n if (after != null && cur.type.is(after))\n return result;\n if (cur.type.is(type))\n result.push(cur.node);\n if (!cur.nextSibling())\n return after == null ? result : [];\n }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n for (let p = node.parent; i >= 0; p = p.parent) {\n if (!p)\n return false;\n if (!p.type.isAnonymous) {\n if (context[i] && context[i] != p.name)\n return false;\n i--;\n }\n }\n return true;\n}\nclass BufferContext {\n constructor(parent, buffer, index, start) {\n this.parent = parent;\n this.buffer = buffer;\n this.index = index;\n this.start = start;\n }\n}\nclass BufferNode {\n get name() { return this.type.name; }\n get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n constructor(context, _parent, index) {\n this.context = context;\n this._parent = _parent;\n this.index = index;\n this.type = context.buffer.set.types[context.buffer.buffer[index]];\n }\n child(dir, pos, side) {\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n enter(pos, side, mode = 0) {\n if (mode & IterMode.ExcludeBuffers)\n return null;\n let { buffer } = this.context;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n return index < 0 ? null : new BufferNode(this.context, this, index);\n }\n get parent() {\n return this._parent || this.context.parent.nextSignificantParent();\n }\n externalSibling(dir) {\n return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n }\n get nextSibling() {\n let { buffer } = this.context;\n let after = buffer.buffer[this.index + 3];\n if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n return new BufferNode(this.context, this._parent, after);\n return this.externalSibling(1);\n }\n get prevSibling() {\n let { buffer } = this.context;\n let parentStart = this._parent ? this._parent.index + 4 : 0;\n if (this.index == parentStart)\n return this.externalSibling(-1);\n return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n cursor(mode = 0) { return new TreeCursor(this, mode); }\n get tree() { return null; }\n toTree() {\n let children = [], positions = [];\n let { buffer } = this.context;\n let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n if (endI > startI) {\n let from = buffer.buffer[this.index + 1];\n children.push(buffer.slice(startI, endI, from));\n positions.push(0);\n }\n return new Tree(this.type, children, positions, this.to - this.from);\n }\n resolve(pos, side = 0) {\n return resolveNode(this, pos, side, false);\n }\n resolveInner(pos, side = 0) {\n return resolveNode(this, pos, side, true);\n }\n enterUnfinishedNodesBefore(pos) { return enterUnfinishedNodesBefore(this, pos); }\n /// @internal\n toString() { return this.context.buffer.childString(this.index); }\n getChild(type, before = null, after = null) {\n let r = getChildren(this, type, before, after);\n return r.length ? r[0] : null;\n }\n getChildren(type, before = null, after = null) {\n return getChildren(this, type, before, after);\n }\n get node() { return this; }\n matchContext(context) { return matchNodeContext(this, context); }\n}\n/// A tree cursor object focuses on a given node in a syntax tree, and\n/// allows you to move to adjacent nodes.\nclass TreeCursor {\n /// Shorthand for `.type.name`.\n get name() { return this.type.name; }\n /// @internal\n constructor(node, \n /// @internal\n mode = 0) {\n this.mode = mode;\n /// @internal\n this.buffer = null;\n this.stack = [];\n /// @internal\n this.index = 0;\n this.bufferNode = null;\n if (node instanceof TreeNode) {\n this.yieldNode(node);\n }\n else {\n this._tree = node.context.parent;\n this.buffer = node.context;\n for (let n = node._parent; n; n = n._parent)\n this.stack.unshift(n.index);\n this.bufferNode = node;\n this.yieldBuf(node.index);\n }\n }\n yieldNode(node) {\n if (!node)\n return false;\n this._tree = node;\n this.type = node.type;\n this.from = node.from;\n this.to = node.to;\n return true;\n }\n yieldBuf(index, type) {\n this.index = index;\n let { start, buffer } = this.buffer;\n this.type = type || buffer.set.types[buffer.buffer[index]];\n this.from = start + buffer.buffer[index + 1];\n this.to = start + buffer.buffer[index + 2];\n return true;\n }\n yield(node) {\n if (!node)\n return false;\n if (node instanceof TreeNode) {\n this.buffer = null;\n return this.yieldNode(node);\n }\n this.buffer = node.context;\n return this.yieldBuf(node.index, node.type);\n }\n /// @internal\n toString() {\n return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n }\n /// @internal\n enterChild(dir, pos, side) {\n if (!this.buffer)\n return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n let { buffer } = this.buffer;\n let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n if (index < 0)\n return false;\n this.stack.push(this.index);\n return this.yieldBuf(index);\n }\n /// Move the cursor to this node's first child. When this returns\n /// false, the node has no child, and the cursor has not been moved.\n firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n /// Move the cursor to this node's last child.\n lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n /// Move the cursor to the first child that ends after `pos`.\n childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n /// Move to the last child that starts before `pos`.\n childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n /// Move the cursor to the child around `pos`. If side is -1 the\n /// child may end at that position, when 1 it may start there. This\n /// will also enter [overlaid](#common.MountedTree.overlay)\n /// [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n /// set to false.\n enter(pos, side, mode = this.mode) {\n if (!this.buffer)\n return this.yield(this._tree.enter(pos, side, mode));\n return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n }\n /// Move to the node's parent node, if this isn't the top node.\n parent() {\n if (!this.buffer)\n return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n if (this.stack.length)\n return this.yieldBuf(this.stack.pop());\n let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n this.buffer = null;\n return this.yieldNode(parent);\n }\n /// @internal\n sibling(dir) {\n if (!this.buffer)\n return !this._tree._parent ? false\n : this.yield(this._tree.index < 0 ? null\n : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n let { buffer } = this.buffer, d = this.stack.length - 1;\n if (dir < 0) {\n let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n if (this.index != parentStart)\n return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n }\n else {\n let after = buffer.buffer[this.index + 3];\n if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n return this.yieldBuf(after);\n }\n return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n }\n /// Move to this node's next sibling, if any.\n nextSibling() { return this.sibling(1); }\n /// Move to this node's previous sibling, if any.\n prevSibling() { return this.sibling(-1); }\n atLastNode(dir) {\n let index, parent, { buffer } = this;\n if (buffer) {\n if (dir > 0) {\n if (this.index < buffer.buffer.buffer.length)\n return false;\n }\n else {\n for (let i = 0; i < this.index; i++)\n if (buffer.buffer.buffer[i + 3] < this.index)\n return false;\n }\n ({ index, parent } = buffer);\n }\n else {\n ({ index, _parent: parent } = this._tree);\n }\n for (; parent; { index, _parent: parent } = parent) {\n if (index > -1)\n for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n let child = parent._tree.children[i];\n if ((this.mode & IterMode.IncludeAnonymous) ||\n child instanceof TreeBuffer ||\n !child.type.isAnonymous ||\n hasChild(child))\n return false;\n }\n }\n return true;\n }\n move(dir, enter) {\n if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n return true;\n for (;;) {\n if (this.sibling(dir))\n return true;\n if (this.atLastNode(dir) || !this.parent())\n return false;\n }\n }\n /// Move to the next node in a\n /// [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n /// traversal, going from a node to its first child or, if the\n /// current node is empty or `enter` is false, its next sibling or\n /// the next sibling of the first parent node that has one.\n next(enter = true) { return this.move(1, enter); }\n /// Move to the next node in a last-to-first pre-order traveral. A\n /// node is followed by its last child or, if it has none, its\n /// previous sibling or the previous sibling of the first parent\n /// node that has one.\n prev(enter = true) { return this.move(-1, enter); }\n /// Move the cursor to the innermost node that covers `pos`. If\n /// `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n /// it will enter nodes that start at `pos`.\n moveTo(pos, side = 0) {\n // Move up to a node that actually holds the position, if possible\n while (this.from == this.to ||\n (side < 1 ? this.from >= pos : this.from > pos) ||\n (side > -1 ? this.to <= pos : this.to < pos))\n if (!this.parent())\n break;\n // Then scan down into child nodes as far as possible\n while (this.enterChild(1, pos, side)) { }\n return this;\n }\n /// Get a [syntax node](#common.SyntaxNode) at the cursor's current\n /// position.\n get node() {\n if (!this.buffer)\n return this._tree;\n let cache = this.bufferNode, result = null, depth = 0;\n if (cache && cache.context == this.buffer) {\n scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n for (let c = cache; c; c = c._parent)\n if (c.index == index) {\n if (index == this.index)\n return c;\n result = c;\n depth = d + 1;\n break scan;\n }\n index = this.stack[--d];\n }\n }\n for (let i = depth; i < this.stack.length; i++)\n result = new BufferNode(this.buffer, result, this.stack[i]);\n return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n }\n /// Get the [tree](#common.Tree) that represents the current node, if\n /// any. Will return null when the node is in a [tree\n /// buffer](#common.TreeBuffer).\n get tree() {\n return this.buffer ? null : this._tree._tree;\n }\n /// Iterate over the current node and all its descendants, calling\n /// `enter` when entering a node and `leave`, if given, when leaving\n /// one. When `enter` returns `false`, any children of that node are\n /// skipped, and `leave` isn't called for it.\n iterate(enter, leave) {\n for (let depth = 0;;) {\n let mustLeave = false;\n if (this.type.isAnonymous || enter(this) !== false) {\n if (this.firstChild()) {\n depth++;\n continue;\n }\n if (!this.type.isAnonymous)\n mustLeave = true;\n }\n for (;;) {\n if (mustLeave && leave)\n leave(this);\n mustLeave = this.type.isAnonymous;\n if (this.nextSibling())\n break;\n if (!depth)\n return;\n this.parent();\n depth--;\n mustLeave = true;\n }\n }\n }\n /// Test whether the current node matches a given context\u2014a sequence\n /// of direct parent node names. Empty strings in the context array\n /// are treated as wildcards.\n matchContext(context) {\n if (!this.buffer)\n return matchNodeContext(this.node, context);\n let { buffer } = this.buffer, { types } = buffer.set;\n for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n if (d < 0)\n return matchNodeContext(this.node, context, i);\n let type = types[buffer.buffer[this.stack[d]]];\n if (!type.isAnonymous) {\n if (context[i] && context[i] != type.name)\n return false;\n i--;\n }\n }\n return true;\n }\n}\nfunction hasChild(tree) {\n return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n var _a;\n let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n let types = nodeSet.types;\n let contextHash = 0, lookAhead = 0;\n function takeNode(parentStart, minPos, children, positions, inRepeat) {\n let { id, start, end, size } = cursor;\n let lookAheadAtStart = lookAhead;\n while (size < 0) {\n cursor.next();\n if (size == -1 /* SpecialRecord.Reuse */) {\n let node = reused[id];\n children.push(node);\n positions.push(start - parentStart);\n return;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n contextHash = id;\n return;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n return;\n }\n else {\n throw new RangeError(`Unrecognized record size: ${size}`);\n }\n }\n let type = types[id], node, buffer;\n let startPos = start - parentStart;\n if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n // Small enough for a buffer, and no reused nodes inside\n let data = new Uint16Array(buffer.size - buffer.skip);\n let endPos = cursor.pos - buffer.size, index = data.length;\n while (cursor.pos > endPos)\n index = copyToBuffer(buffer.start, data, index);\n node = new TreeBuffer(data, end - buffer.start, nodeSet);\n startPos = buffer.start - parentStart;\n }\n else { // Make it a node\n let endPos = cursor.pos - size;\n cursor.next();\n let localChildren = [], localPositions = [];\n let localInRepeat = id >= minRepeatType ? id : -1;\n let lastGroup = 0, lastEnd = end;\n while (cursor.pos > endPos) {\n if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n if (cursor.end <= lastEnd - maxBufferLength) {\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart);\n lastGroup = localChildren.length;\n lastEnd = cursor.end;\n }\n cursor.next();\n }\n else {\n takeNode(start, endPos, localChildren, localPositions, localInRepeat);\n }\n }\n if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart);\n localChildren.reverse();\n localPositions.reverse();\n if (localInRepeat > -1 && lastGroup > 0) {\n let make = makeBalanced(type);\n node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n }\n else {\n node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end);\n }\n }\n children.push(node);\n positions.push(startPos);\n }\n function makeBalanced(type) {\n return (children, positions, length) => {\n let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n if (!lastI && last.type == type && last.length == length)\n return last;\n if (lookAheadProp = last.prop(NodeProp.lookAhead))\n lookAhead = positions[lastI] + last.length + lookAheadProp;\n }\n return makeTree(type, children, positions, length, lookAhead);\n };\n }\n function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead) {\n let localChildren = [], localPositions = [];\n while (children.length > i) {\n localChildren.push(children.pop());\n localPositions.push(positions.pop() + base - from);\n }\n children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to));\n positions.push(from - base);\n }\n function makeTree(type, children, positions, length, lookAhead = 0, props) {\n if (contextHash) {\n let pair = [NodeProp.contextHash, contextHash];\n props = props ? [pair].concat(props) : [pair];\n }\n if (lookAhead > 25) {\n let pair = [NodeProp.lookAhead, lookAhead];\n props = props ? [pair].concat(props) : [pair];\n }\n return new Tree(type, children, positions, length, props);\n }\n function findBufferSize(maxSize, inRepeat) {\n // Scan through the buffer to find previous siblings that fit\n // together in a TreeBuffer, and don't contain any reused nodes\n // (which can't be stored in a buffer).\n // If `inRepeat` is > -1, ignore node boundaries of that type for\n // nesting, but make sure the end falls either at the start\n // (`maxSize`) or before such a node.\n let fork = cursor.fork();\n let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n let result = { size: 0, start: 0, skip: 0 };\n scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n let nodeSize = fork.size;\n // Pretend nested repeat nodes of the same type don't exist\n if (fork.id == inRepeat && nodeSize >= 0) {\n // Except that we store the current state as a valid return\n // value.\n result.size = size;\n result.start = start;\n result.skip = skip;\n skip += 4;\n size += 4;\n fork.next();\n continue;\n }\n let startPos = fork.pos - nodeSize;\n if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n break;\n let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n let nodeStart = fork.start;\n fork.next();\n while (fork.pos > startPos) {\n if (fork.size < 0) {\n if (fork.size == -3 /* SpecialRecord.ContextChange */)\n localSkipped += 4;\n else\n break scan;\n }\n else if (fork.id >= minRepeatType) {\n localSkipped += 4;\n }\n fork.next();\n }\n start = nodeStart;\n size += nodeSize;\n skip += localSkipped;\n }\n if (inRepeat < 0 || size == maxSize) {\n result.size = size;\n result.start = start;\n result.skip = skip;\n }\n return result.size > 4 ? result : undefined;\n }\n function copyToBuffer(bufferStart, buffer, index) {\n let { id, start, end, size } = cursor;\n cursor.next();\n if (size >= 0 && id < minRepeatType) {\n let startIndex = index;\n if (size > 4) {\n let endPos = cursor.pos - (size - 4);\n while (cursor.pos > endPos)\n index = copyToBuffer(bufferStart, buffer, index);\n }\n buffer[--index] = startIndex;\n buffer[--index] = end - bufferStart;\n buffer[--index] = start - bufferStart;\n buffer[--index] = id;\n }\n else if (size == -3 /* SpecialRecord.ContextChange */) {\n contextHash = id;\n }\n else if (size == -4 /* SpecialRecord.LookAhead */) {\n lookAhead = id;\n }\n return index;\n }\n let children = [], positions = [];\n while (cursor.pos > 0)\n takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1);\n let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n return 1;\n let size = nodeSizeCache.get(node);\n if (size == null) {\n size = 1;\n for (let child of node.children) {\n if (child.type != balanceType || !(child instanceof Tree)) {\n size = 1;\n break;\n }\n size += nodeSize(balanceType, child);\n }\n nodeSizeCache.set(node, size);\n }\n return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n let total = 0;\n for (let i = from; i < to; i++)\n total += nodeSize(balanceType, children[i]);\n let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n let localChildren = [], localPositions = [];\n function divide(children, positions, from, to, offset) {\n for (let i = from; i < to;) {\n let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n i++;\n for (; i < to; i++) {\n let nextSize = nodeSize(balanceType, children[i]);\n if (groupSize + nextSize >= maxChild)\n break;\n groupSize += nextSize;\n }\n if (i == groupFrom + 1) {\n if (groupSize > maxChild) {\n let only = children[groupFrom]; // Only trees can have a size > 1\n divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n continue;\n }\n localChildren.push(children[groupFrom]);\n }\n else {\n let length = positions[i - 1] + children[i - 1].length - groupStart;\n localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n }\n localPositions.push(groupStart + offset - start);\n }\n }\n divide(children, positions, from, to, 0);\n return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/// Provides a way to associate values with pieces of trees. As long\n/// as that part of the tree is reused, the associated values can be\n/// retrieved from an updated tree.\nclass NodeWeakMap {\n constructor() {\n this.map = new WeakMap();\n }\n setBuffer(buffer, index, value) {\n let inner = this.map.get(buffer);\n if (!inner)\n this.map.set(buffer, inner = new Map);\n inner.set(index, value);\n }\n getBuffer(buffer, index) {\n let inner = this.map.get(buffer);\n return inner && inner.get(index);\n }\n /// Set the value for this syntax node.\n set(node, value) {\n if (node instanceof BufferNode)\n this.setBuffer(node.context.buffer, node.index, value);\n else if (node instanceof TreeNode)\n this.map.set(node.tree, value);\n }\n /// Retrieve value for this syntax node, if it exists in the map.\n get(node) {\n return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n }\n /// Set the value for the node that a cursor currently points to.\n cursorSet(cursor, value) {\n if (cursor.buffer)\n this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n else\n this.map.set(cursor.tree, value);\n }\n /// Retrieve the value for the node that a cursor currently points\n /// to.\n cursorGet(cursor) {\n return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n }\n}\n\n/// Tree fragments are used during [incremental\n/// parsing](#common.Parser.startParse) to track parts of old trees\n/// that can be reused in a new parse. An array of fragments is used\n/// to track regions of an old tree whose nodes might be reused in new\n/// parses. Use the static\n/// [`applyChanges`](#common.TreeFragment^applyChanges) method to\n/// update fragments for document changes.\nclass TreeFragment {\n /// Construct a tree fragment. You'll usually want to use\n /// [`addTree`](#common.TreeFragment^addTree) and\n /// [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n /// calling this directly.\n constructor(\n /// The start of the unchanged range pointed to by this fragment.\n /// This refers to an offset in the _updated_ document (as opposed\n /// to the original tree).\n from, \n /// The end of the unchanged range.\n to, \n /// The tree that this fragment is based on.\n tree, \n /// The offset between the fragment's tree and the document that\n /// this fragment can be used against. Add this when going from\n /// document to tree positions, subtract it to go from tree to\n /// document positions.\n offset, openStart = false, openEnd = false) {\n this.from = from;\n this.to = to;\n this.tree = tree;\n this.offset = offset;\n this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n }\n /// Whether the start of the fragment represents the start of a\n /// parse, or the end of a change. (In the second case, it may not\n /// be safe to reuse some nodes at the start, depending on the\n /// parsing algorithm.)\n get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n /// Whether the end of the fragment represents the end of a\n /// full-document parse, or the start of a change.\n get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n /// Create a set of fragments from a freshly parsed tree, or update\n /// an existing set of fragments by replacing the ones that overlap\n /// with a tree with content from the new tree. When `partial` is\n /// true, the parse is treated as incomplete, and the resulting\n /// fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n /// true.\n static addTree(tree, fragments = [], partial = false) {\n let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n for (let f of fragments)\n if (f.to > tree.length)\n result.push(f);\n return result;\n }\n /// Apply a set of edits to an array of fragments, removing or\n /// splitting fragments as necessary to remove edited ranges, and\n /// adjusting offsets for fragments that moved.\n static applyChanges(fragments, changes, minGap = 128) {\n if (!changes.length)\n return fragments;\n let result = [];\n let fI = 1, nextF = fragments.length ? fragments[0] : null;\n for (let cI = 0, pos = 0, off = 0;; cI++) {\n let nextC = cI < changes.length ? changes[cI] : null;\n let nextPos = nextC ? nextC.fromA : 1e9;\n if (nextPos - pos >= minGap)\n while (nextF && nextF.from < nextPos) {\n let cut = nextF;\n if (pos >= cut.from || nextPos <= cut.to || off) {\n let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n }\n if (cut)\n result.push(cut);\n if (nextF.to > nextPos)\n break;\n nextF = fI < fragments.length ? fragments[fI++] : null;\n }\n if (!nextC)\n break;\n pos = nextC.toA;\n off = nextC.toA - nextC.toB;\n }\n return result;\n }\n}\n/// A superclass that parsers should extend.\nclass Parser {\n /// Start a parse, returning a [partial parse](#common.PartialParse)\n /// object. [`fragments`](#common.TreeFragment) can be passed in to\n /// make the parse incremental.\n ///\n /// By default, the entire input is parsed. You can pass `ranges`,\n /// which should be a sorted array of non-empty, non-overlapping\n /// ranges, to parse only those ranges. The tree returned in that\n /// case will start at `ranges[0].from`.\n startParse(input, fragments, ranges) {\n if (typeof input == \"string\")\n input = new StringInput(input);\n ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n return this.createParse(input, fragments || [], ranges);\n }\n /// Run a full parse, returning the resulting tree.\n parse(input, fragments, ranges) {\n let parse = this.startParse(input, fragments, ranges);\n for (;;) {\n let done = parse.advance();\n if (done)\n return done;\n }\n }\n}\nclass StringInput {\n constructor(string) {\n this.string = string;\n }\n get length() { return this.string.length; }\n chunk(from) { return this.string.slice(from); }\n get lineChunks() { return false; }\n read(from, to) { return this.string.slice(from, to); }\n}\n\n/// Create a parse wrapper that, after the inner parse completes,\n/// scans its tree for mixed language regions with the `nest`\n/// function, runs the resulting [inner parses](#common.NestedParse),\n/// and then [mounts](#common.NodeProp^mounted) their results onto the\n/// tree.\nfunction parseMixed(nest) {\n return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n constructor(parser, parse, overlay, target, ranges) {\n this.parser = parser;\n this.parse = parse;\n this.overlay = overlay;\n this.target = target;\n this.ranges = ranges;\n if (!ranges.length || ranges.some(r => r.from >= r.to))\n throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n }\n}\nclass ActiveOverlay {\n constructor(parser, predicate, mounts, index, start, target, prev) {\n this.parser = parser;\n this.predicate = predicate;\n this.mounts = mounts;\n this.index = index;\n this.start = start;\n this.target = target;\n this.prev = prev;\n this.depth = 0;\n this.ranges = [];\n }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n constructor(base, nest, input, fragments, ranges) {\n this.nest = nest;\n this.input = input;\n this.fragments = fragments;\n this.ranges = ranges;\n this.inner = [];\n this.innerDone = 0;\n this.baseTree = null;\n this.stoppedAt = null;\n this.baseParse = base;\n }\n advance() {\n if (this.baseParse) {\n let done = this.baseParse.advance();\n if (!done)\n return null;\n this.baseParse = null;\n this.baseTree = done;\n this.startInner();\n if (this.stoppedAt != null)\n for (let inner of this.inner)\n inner.parse.stopAt(this.stoppedAt);\n }\n if (this.innerDone == this.inner.length) {\n let result = this.baseTree;\n if (this.stoppedAt != null)\n result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n return result;\n }\n let inner = this.inner[this.innerDone], done = inner.parse.advance();\n if (done) {\n this.innerDone++;\n // This is a somewhat dodgy but super helpful hack where we\n // patch up nodes created by the inner parse (and thus\n // presumably not aliased anywhere else) to hold the information\n // about the inner parse.\n let props = Object.assign(Object.create(null), inner.target.props);\n props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n inner.target.props = props;\n }\n return null;\n }\n get parsedPos() {\n if (this.baseParse)\n return 0;\n let pos = this.input.length;\n for (let i = this.innerDone; i < this.inner.length; i++) {\n if (this.inner[i].ranges[0].from < pos)\n pos = Math.min(pos, this.inner[i].parse.parsedPos);\n }\n return pos;\n }\n stopAt(pos) {\n this.stoppedAt = pos;\n if (this.baseParse)\n this.baseParse.stopAt(pos);\n else\n for (let i = this.innerDone; i < this.inner.length; i++)\n this.inner[i].parse.stopAt(pos);\n }\n startInner() {\n let fragmentCursor = new FragmentCursor(this.fragments);\n let overlay = null;\n let covered = null;\n let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n scan: for (let nest, isCovered; this.stoppedAt == null || cursor.from < this.stoppedAt;) {\n let enter = true, range;\n if (fragmentCursor.hasNode(cursor)) {\n if (overlay) {\n let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n if (match)\n for (let r of match.mount.overlay) {\n let from = r.from + match.pos, to = r.to + match.pos;\n if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n overlay.ranges.push({ from, to });\n }\n }\n enter = false;\n }\n else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n enter = isCovered != 2 /* Cover.Full */;\n }\n else if (!cursor.type.isAnonymous && cursor.from < cursor.to && (nest = this.nest(cursor, this.input))) {\n if (!cursor.tree)\n materialize(cursor);\n let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n if (typeof nest.overlay == \"function\") {\n overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n }\n else {\n let ranges = punchRanges(this.ranges, nest.overlay || [new Range(cursor.from, cursor.to)]);\n if (ranges.length)\n this.inner.push(new InnerParse(nest.parser, nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges));\n if (!nest.overlay)\n enter = false;\n else if (ranges.length)\n covered = { ranges, depth: 0, prev: covered };\n }\n }\n else if (overlay && (range = overlay.predicate(cursor))) {\n if (range === true)\n range = new Range(cursor.from, cursor.to);\n if (range.from < range.to)\n overlay.ranges.push(range);\n }\n if (enter && cursor.firstChild()) {\n if (overlay)\n overlay.depth++;\n if (covered)\n covered.depth++;\n }\n else {\n for (;;) {\n if (cursor.nextSibling())\n break;\n if (!cursor.parent())\n break scan;\n if (overlay && !--overlay.depth) {\n let ranges = punchRanges(this.ranges, overlay.ranges);\n if (ranges.length)\n this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges));\n overlay = overlay.prev;\n }\n if (covered && !--covered.depth)\n covered = covered.prev;\n }\n }\n }\n }\n}\nfunction checkCover(covered, from, to) {\n for (let range of covered) {\n if (range.from >= to)\n break;\n if (range.to > from)\n return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n }\n return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n if (startI < endI) {\n let from = buf.buffer[startI + 1];\n nodes.push(buf.slice(startI, endI, from));\n positions.push(from - off);\n }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n let { node } = cursor, depth = 0;\n // Scan up to the nearest tree\n do {\n cursor.parent();\n depth++;\n } while (!cursor.tree);\n // Find the index of the buffer in that tree\n let i = 0, base = cursor.tree, off = 0;\n for (;; i++) {\n off = base.positions[i] + cursor.from;\n if (off <= node.from && off + base.children[i].length >= node.to)\n break;\n }\n let buf = base.children[i], b = buf.buffer;\n // Split a level in the buffer, putting the nodes before and after\n // the child that contains `node` into new buffers.\n function split(startI, endI, type, innerOffset, length) {\n let i = startI;\n while (b[i + 2] + off <= node.from)\n i = b[i + 3];\n let children = [], positions = [];\n sliceBuf(buf, startI, i, children, positions, innerOffset);\n let from = b[i + 1], to = b[i + 2];\n let isTarget = from + off == node.from && to + off == node.to && b[i] == node.type.id;\n children.push(isTarget ? node.toTree() : split(i + 4, b[i + 3], buf.set.types[b[i]], from, to - from));\n positions.push(from - innerOffset);\n sliceBuf(buf, b[i + 3], endI, children, positions, innerOffset);\n return new Tree(type, children, positions, length);\n }\n base.children[i] = split(0, b.length, NodeType.none, 0, buf.length);\n // Move the cursor back to the target node\n for (let d = 0; d <= depth; d++)\n cursor.childAfter(node.from);\n}\nclass StructureCursor {\n constructor(root, offset) {\n this.offset = offset;\n this.done = false;\n this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n }\n // Move to the first node (in pre-order) that starts at or after `pos`.\n moveTo(pos) {\n let { cursor } = this, p = pos - this.offset;\n while (!this.done && cursor.from < p) {\n if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n else if (!cursor.next(false))\n this.done = true;\n }\n }\n hasNode(cursor) {\n this.moveTo(cursor.from);\n if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n for (let tree = this.cursor.tree;;) {\n if (tree == cursor.tree)\n return true;\n if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n tree = tree.children[0];\n else\n break;\n }\n }\n return false;\n }\n}\nclass FragmentCursor {\n constructor(fragments) {\n var _a;\n this.fragments = fragments;\n this.curTo = 0;\n this.fragI = 0;\n if (fragments.length) {\n let first = this.curFrag = fragments[0];\n this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n this.inner = new StructureCursor(first.tree, -first.offset);\n }\n else {\n this.curFrag = this.inner = null;\n }\n }\n hasNode(node) {\n while (this.curFrag && node.from >= this.curTo)\n this.nextFrag();\n return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n }\n nextFrag() {\n var _a;\n this.fragI++;\n if (this.fragI == this.fragments.length) {\n this.curFrag = this.inner = null;\n }\n else {\n let frag = this.curFrag = this.fragments[this.fragI];\n this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n this.inner = new StructureCursor(frag.tree, -frag.offset);\n }\n }\n findMounts(pos, parser) {\n var _a;\n let result = [];\n if (this.inner) {\n this.inner.cursor.moveTo(pos, 1);\n for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n if (mount && mount.parser == parser) {\n for (let i = this.fragI; i < this.fragments.length; i++) {\n let frag = this.fragments[i];\n if (frag.from >= pos.to)\n break;\n if (frag.tree == this.curFrag.tree)\n result.push({\n frag,\n pos: pos.from - frag.offset,\n mount\n });\n }\n }\n }\n }\n return result;\n }\n}\nfunction punchRanges(outer, ranges) {\n let copy = null, current = ranges;\n for (let i = 1, j = 0; i < outer.length; i++) {\n let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n for (; j < current.length; j++) {\n let r = current[j];\n if (r.from >= gapTo)\n break;\n if (r.to <= gapFrom)\n continue;\n if (!copy)\n current = copy = ranges.slice();\n if (r.from < gapFrom) {\n copy[j] = new Range(r.from, gapFrom);\n if (r.to > gapTo)\n copy.splice(j + 1, 0, new Range(gapTo, r.to));\n }\n else if (r.to > gapTo) {\n copy[j--] = new Range(gapTo, r.to);\n }\n else {\n copy.splice(j--, 1);\n }\n }\n }\n return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n let result = [];\n for (;;) {\n let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n if (inA != inB) {\n let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n if (start < end)\n result.push(new Range(start, end));\n }\n pos = Math.min(nextA, nextB);\n if (pos == 1e9)\n break;\n if (nextA == pos) {\n if (!inA)\n inA = true;\n else {\n inA = false;\n iA++;\n }\n }\n if (nextB == pos) {\n if (!inB)\n inB = true;\n else {\n inB = false;\n iB++;\n }\n }\n }\n return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n let result = [];\n for (let { pos, mount, frag } of mounts) {\n let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n if (mount.overlay) {\n let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n let changes = findCoverChanges(ranges, overlay, from, to);\n for (let i = 0, pos = from;; i++) {\n let last = i == changes.length, end = last ? to : changes[i].from;\n if (end > pos)\n result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n if (last)\n break;\n pos = changes[i].to;\n }\n }\n else {\n result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n }\n }\n return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n", "import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/// A parse stack. These are used internally by the parser to track\n/// parsing progress. They also provide some properties and methods\n/// that external code such as a tokenizer can use to get information\n/// about the parse state.\nclass Stack {\n /// @internal\n constructor(\n /// The parse that this stack is part of @internal\n p, \n /// Holds state, input pos, buffer index triplets for all but the\n /// top state @internal\n stack, \n /// The current parse state @internal\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /// @internal\n reducePos, \n /// The input position up to which this stack has parsed.\n pos, \n /// The dynamic score of the stack, including dynamic precedence\n /// and error-recovery penalties\n /// @internal\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /// @internal\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /// @internal\n bufferBase, \n /// @internal\n curContext, \n /// @internal\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /// @internal\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /// @internal\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /// @internal\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /// The stack's current [context](#lr.ContextTracker) value, if\n /// any. Its type will depend on the context tracker's type\n /// parameter, or it will be `null` if there is no context\n /// tracker.\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /// @internal\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /// @internal\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case\u2014they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /// @internal\n storeNode(term, start, end, size = 4, isReduce = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let cur = this, top = this.buffer.length;\n if (top == 0 && cur.parent) {\n top = cur.bufferBase - cur.parent.bufferBase;\n cur = cur.parent;\n }\n if (top > 0 && cur.buffer[top - 4] == 0 /* Term.Err */ && cur.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (cur.buffer[top - 2] >= start) {\n cur.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!isReduce || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && this.buffer[index - 4] != 0 /* Term.Err */)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /// @internal\n shift(action, next, nextEnd) {\n let start = this.pos;\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n if (nextEnd > this.pos || next <= parser.maxNode) {\n this.pos = nextEnd;\n if (!parser.stateFlag(nextState, 1 /* StateFlag.Skipped */))\n this.reducePos = nextEnd;\n }\n this.pushState(nextState, start);\n this.shiftContext(next, start);\n if (next <= parser.maxNode)\n this.buffer.push(next, start, nextEnd, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = nextEnd;\n this.shiftContext(next, start);\n if (next <= this.p.parser.maxNode)\n this.buffer.push(next, start, nextEnd, 4);\n }\n }\n // Apply an action\n /// @internal\n apply(action, next, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /// @internal\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /// @internal\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /// @internal\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /// Check if the given term would be able to be shifted (optionally\n /// after some reductions) on this stack. This can be useful for\n /// external tokenizers that want to make sure they only provide a\n /// given token when it applies.\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /// @internal\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /// @internal\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /// Try to scan through the automaton to find some kind of reduction\n /// that can be applied. Used when the regular ForcedReduce field\n /// isn't a valid action. @internal\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /// @internal\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /// Check whether this state has no further actions (assumed to be a direct descendant of the\n /// top state, since any other states must be able to continue\n /// somehow). @internal\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /// Restart the stack (put it back in its start state). Only safe\n /// when this.stack.length == 3 (state is directly below the top\n /// state). @internal\n restart() {\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /// @internal\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /// Get the parser used by this stack.\n get parser() { return this.p.parser; }\n /// Test whether a given dialect (by numeric ID, as exported from\n /// the terms file) is enabled.\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /// @internal\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /// @internal\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /// @internal\n setLookAhead(lookAhead) {\n if (lookAhead > this.lookAhead) {\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n }\n }\n /// @internal\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\nvar Recover;\n(function (Recover) {\n Recover[Recover[\"Insert\"] = 200] = \"Insert\";\n Recover[Recover[\"Delete\"] = 190] = \"Delete\";\n Recover[Recover[\"Reduce\"] = 100] = \"Reduce\";\n Recover[Recover[\"MaxNext\"] = 4] = \"MaxNext\";\n Recover[Recover[\"MaxInsertStackDepth\"] = 300] = \"MaxInsertStackDepth\";\n Recover[Recover[\"DampenInsertStackDepth\"] = 120] = \"DampenInsertStackDepth\";\n Recover[Recover[\"MinBigReduction\"] = 2000] = \"MinBigReduction\";\n})(Recover || (Recover = {}));\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/// [Tokenizers](#lr.ExternalTokenizer) interact with the input\n/// through this interface. It presents the input as a stream of\n/// characters, tracking lookahead and hiding the complexity of\n/// [ranges](#common.Parser.parse^ranges) from tokenizer code.\nclass InputStream {\n /// @internal\n constructor(\n /// @internal\n input, \n /// @internal\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /// @internal\n this.chunk = \"\";\n /// @internal\n this.chunkOff = 0;\n /// Backup chunk\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /// The character code of the next code unit in the input, or -1\n /// when the stream is at the end of the input.\n this.next = -1;\n /// @internal\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /// @internal\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /// @internal\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /// Look at a code unit near the stream position. `.peek(0)` equals\n /// `.next`, `.peek(-1)` gives you the previous character, and so\n /// on.\n ///\n /// Note that looking around during tokenizing creates dependencies\n /// on potentially far-away content, which may reduce the\n /// effectiveness incremental parsing\u2014when looking forward\u2014or even\n /// cause invalid reparses when looking backward more than 25 code\n /// units, since the library does not track lookbehind.\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /// Accept a token. By default, the end of the token is set to the\n /// current stream position, but you can pass an offset (relative to\n /// the stream position) to change that.\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /// Move the stream forward N (defaults to 1) code units. Returns\n /// the new value of [`next`](#lr.InputStream.next).\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /// @internal\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /// @internal\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/// @internal\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/// @hide\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/// `@external tokens` declarations in the grammar should resolve to\n/// an instance of this class.\nclass ExternalTokenizer {\n /// Create a tokenizer. The first argument is the function that,\n /// given an input stream, scans for the types of tokens it\n /// recognizes at the stream's position, and calls\n /// [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n /// one.\n constructor(\n /// @internal\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */ && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nvar Safety;\n(function (Safety) {\n Safety[Safety[\"Margin\"] = 25] = \"Margin\";\n})(Safety || (Safety = {}));\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Safety.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Safety.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Safety.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nvar Rec;\n(function (Rec) {\n Rec[Rec[\"Distance\"] = 5] = \"Distance\";\n Rec[Rec[\"MaxRemainingPerStep\"] = 3] = \"MaxRemainingPerStep\";\n // When two stacks have been running independently long enough to\n // add this many elements to their buffers, prune one.\n Rec[Rec[\"MinBufferLengthPrune\"] = 500] = \"MinBufferLengthPrune\";\n Rec[Rec[\"ForceReduceLimit\"] = 10] = \"ForceReduceLimit\";\n // Once a stack reaches this depth (in .stack.length) force-reduce\n // it back to CutTo to avoid creating trees that overflow the stack\n // on recursive traversal.\n Rec[Rec[\"CutDepth\"] = 15000] = \"CutDepth\";\n Rec[Rec[\"CutTo\"] = 9000] = \"CutTo\";\n Rec[Rec[\"MaxLeftAssociativeReductionCount\"] = 300] = \"MaxLeftAssociativeReductionCount\";\n // The maximum number of non-recovering stacks to explore (to avoid\n // getting bogged down with exponentially multiplying stacks in\n // ambiguous content)\n Rec[Rec[\"MaxStackCount\"] = 12] = \"MaxStackCount\";\n})(Rec || (Rec = {}));\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // \u2654, \u2655, \u2656, \u2657, \u2658, \u2659, \u2660, \u2661, \u2662, \u2663, \u2664, \u2665, \u2666, \u2667\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished)\n return this.stackToTree(finished);\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished)\n return this.stackToTree(finished.forceAll());\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */)\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 15000 /* Rec.CutDepth */) {\n while (stack.stack.length > 9000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n localStack.apply(action, term, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; force.forceReduce() && j < 10 /* Rec.ForceReduceLimit */; j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < stack.score) {\n finished = stack;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/// Context trackers are used to track stateful context (such as\n/// indentation in the Python grammar, or parent elements in the XML\n/// grammar) needed by external tokenizers. You declare them in a\n/// grammar file as `@context exportName from \"module\"`.\n///\n/// Context values should be immutable, and can be updated (replaced)\n/// on shift or reduce actions.\n///\n/// The export used in a `@context` declaration should be of this\n/// type.\nclass ContextTracker {\n /// Define a context tracker.\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/// Holds the parse tables for a given grammar, as generated by\n/// `lezer-generator`, and provides [methods](#common.Parser) to parse\n/// content with.\nclass LRParser extends Parser {\n /// @internal\n constructor(spec) {\n super();\n /// @internal\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /// Get a goto table entry @internal\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /// Check if this state has an action for a given terminal @internal\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /// @internal\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /// @internal\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /// @internal\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /// @internal\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /// Get the states that can follow this one through shift actions or\n /// goto jumps. @internal\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /// Configure the parser. Returns a new parser instance that has the\n /// given settings modified. Settings not provided in `config` are\n /// kept from the original parser.\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /// Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n /// are registered for this parser.\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /// Returns the name associated with a given term. This will only\n /// work for all terms when the parser was generated with the\n /// `--names` option. By default, only the names of tagged terms are\n /// stored.\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /// The eof term id is always allocated directly after the node\n /// types. @internal\n get eofTerm() { return this.maxNode + 1; }\n /// The type of top node produced by the parser.\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /// @internal\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /// @internal\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /// Used by the output of the parser generator. Not available to\n /// user code. @hide\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n", "// This file was generated by lezer-generator. You probably shouldn't edit it.\nimport { LRParser } from \"@lezer/lr\";\nexport const parser = LRParser.deserialize({\n version: 14,\n states: \"%QOVQPOOOOQO'#C_'#C_O_QQO'#C^OOQO'#DO'#DOOvQQO'#C|OOQO'#DR'#DROVQPO'#CuOOQO'#C}'#C}QOQPOOOOQO'#C`'#C`O!UQQO,58xO!dQPO,59VOVQPO,59]OVQPO,59_O!iQPO,59hO!nQQO,59aOOQO'#DQ'#DQOOQO1G.d1G.dO!UQQO1G.qO!yQQO1G.wOOQO1G.y1G.yOOQO'#Cw'#CwOOQO1G/S1G/SOOQO1G.{1G.{O#[QPO'#CnO#dQPO7+$]O!UQQO'#CxO#iQPO,59YOOQO<<Gw<<GwOOQO,59d,59dOOQO-E6v-E6v\",\n stateData: \"#q~OoOS~OsPOvUO~OTXOUXOVXOWXOXXOYXO`ZO~Of[Oh]Oj^OmpX~OZ`O[`O]`O^`O~OabO~OseO~Of[Oh]OwgO~Oh]Ofeijeimeiwei~OcjOdbX~OdlO~OcjOdba~O\",\n goto: \"#YvPPw}!TPPPPPPPPPPwPP!WPP!ZP!ZP!aP!g!jPPP!p!s!aP#P!aXROU[]XQOU[]RYQRibXTOU[]XVOU[]Rf^QkhRnkRWOQSOQ_UQc[Rd]QaYQhbRmj\",\n nodeNames: \"\u26A0 Filter ColumnValueExpression Column Operator Eq NotEq Gt Lt Starts Ends Number String True False ColumnSetExpression In LBrack Values Comma RBrack AndExpression And OrExpression Or ParenthesizedExpression As FilterName\",\n maxTerm: 39,\n skippedNodes: [0],\n repeatNodeCount: 1,\n tokenData: \"6p~RnXY#PYZ#P]^#Ppq#Pqr#brs#mxy$eyz$j|}$o!O!P$t!Q![%S!^!_%_!_!`%d!`!a%i!c!}%n!}#O&V#P#Q&[#R#S%n#T#U&a#U#X%n#X#Y(w#Y#Z+]#Z#]%n#]#^.]#^#c%n#c#d/e#d#g%n#g#h0m#h#i4[#i#o%n~#USo~XY#PYZ#P]^#Ppq#P~#eP!_!`#h~#mOU~~#pWOX#mZ]#m^r#mrs$Ys#O#m#P;'S#m;'S;=`$_<%lO#m~$_O[~~$bP;=`<%l#m~$jOv~~$oOw~~$tOc~~$wP!Q![$z~%PPZ~!Q![$z~%XQZ~!O!P$t!Q![%S~%dOW~~%iOT~~%nOV~P%sUsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n~&[Oa~~&aOd~R&fYsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c'U#c#g%n#g#h(^#h#o%nR'ZWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X's#X#o%nR'zUfQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(eUjQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR(|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c)f#c#o%nR)kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#W%n#W#X*T#X#o%nR*YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h*r#h#o%nR*yUYQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR+bVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U+w#U#o%nR+|WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#`%n#`#a,f#a#o%nR,kWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h-T#h#o%nR-YWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y-r#Y#o%nR-yU^QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR.bWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#b%n#b#c.z#c#o%nR/RU`QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR/jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g0S#g#o%nR0ZUhQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR0rWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i1[#i#o%nR1aVsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#U1v#U#o%nR1{WsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g2e#g#o%nR2jWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#h%n#h#i3S#i#o%nR3XWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#g%n#g#h3q#h#o%nR3xUXQsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%nR4aWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#f%n#f#g4y#g#o%nR5OWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#i%n#i#j5h#j#o%nR5mWsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#X%n#X#Y6V#Y#o%nR6^U]QsP}!O%n!O!P%n!Q![%n!c!}%n#R#S%n#T#o%n\",\n tokenizers: [0, 1],\n topRules: {\"Filter\":[0,1]},\n tokenPrec: 0\n})\n", "import { Tree } from \"@lezer/common\";\nimport {\n Filter,\n FilterCombinatorOp,\n MultipleValueFilterClauseOp,\n SingleValueFilterClauseOp,\n} from \"@vuu-ui/vuu-filter-types\";\nimport {\n isMultiClauseFilter,\n isMultiValueFilter,\n isSingleValueFilter,\n} from \"@vuu-ui/vuu-utils\";\n\nclass FilterExpression {\n public name: string | undefined;\n #filter: Partial<Filter> | undefined = undefined;\n\n setFilterCombinatorOp(op: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter) && filter.op === op) {\n return;\n } else {\n this.#filter = {\n op: op as FilterCombinatorOp,\n filters: [this.#filter as Filter],\n };\n }\n }\n\n add(filter: Partial<Filter>) {\n if (this.#filter === undefined) {\n this.#filter = filter;\n } else if (isMultiClauseFilter(this.#filter)) {\n this.#filter.filters.push(filter as Filter);\n } else {\n throw Error(`Invalid filter passed to FilterExpression`);\n }\n }\n\n setColumn(column: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setColumn(column, target);\n }\n } else if (filter) {\n filter.column = column;\n }\n }\n setOp(value: string, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setOp(value, target);\n }\n } else if (filter) {\n filter.op = value as\n | SingleValueFilterClauseOp\n | MultipleValueFilterClauseOp;\n }\n }\n setValue(value: string | number | boolean, filter = this.#filter) {\n if (isMultiClauseFilter(filter)) {\n const target = filter.filters.at(-1);\n if (target) {\n this.setValue(value, target);\n }\n } else if (isMultiValueFilter(filter)) {\n filter.values ??= [];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n filter.values.push(value);\n } else if (isSingleValueFilter(filter)) {\n filter.value = value;\n }\n }\n\n toJSON(filter = this.#filter) {\n if (this.name) {\n return {\n ...filter,\n name: this.name,\n };\n } else {\n return filter;\n }\n }\n}\n\nexport const walkTree = (tree: Tree, source: string) => {\n const filterExpression = new FilterExpression();\n const cursor = tree.cursor();\n do {\n const { name, from, to } = cursor;\n switch (name) {\n case \"ColumnValueExpression\":\n filterExpression.add({});\n break;\n case \"ColumnSetExpression\":\n filterExpression.add({ op: \"in\" });\n break;\n\n case \"Or\":\n case \"And\":\n filterExpression.setFilterCombinatorOp(source.substring(from, to));\n break;\n\n case \"Column\":\n filterExpression.setColumn(source.substring(from, to));\n break;\n\n case \"Operator\":\n filterExpression.setOp(source.substring(from, to));\n break;\n\n case \"String\":\n filterExpression.setValue(source.substring(from + 1, to - 1));\n break;\n\n case \"Number\":\n filterExpression.setValue(parseFloat(source.substring(from, to)));\n break;\n\n case \"True\":\n filterExpression.setValue(true);\n break;\n\n case \"False\":\n filterExpression.setValue(false);\n break;\n\n case \"FilterName\":\n filterExpression.name = source.substring(from, to);\n break;\n\n default:\n }\n } while (cursor.next());\n\n return filterExpression.toJSON();\n};\n", "import { Filter } from \"@vuu-ui/vuu-filter-types\";\nimport { parser } from \"./generated/filter-parser\";\nimport { walkTree } from \"./FilterTreeWalker\";\n\nconst strictParser = parser.configure({ strict: true });\n\nexport const parseFilter = (filterQuery: string): Filter => {\n const parseTree = strictParser.parse(filterQuery);\n const filter = walkTree(parseTree, filterQuery) as Filter;\n return filter;\n};\n", "import {\n DataSource,\n DataSourceVisualLinkCreatedMessage,\n MenuRpcResponse,\n ViewportRpcResponse,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInRPCEditResponse,\n} from \"@vuu-ui/vuu-data\";\nimport {\n ContextMenuItemDescriptor,\n DataSourceRow,\n MenuActionHandler,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { getFilterPredicate } from \"@vuu-ui/vuu-filter-parser\";\nimport {\n ClientToServerMenuCellRPC,\n ClientToServerMenuRowRPC,\n ClientToServerMenuRPC,\n LinkDescriptorWithLabel,\n VuuMenu,\n VuuMenuContext,\n VuuMenuItem,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n ColumnMap,\n getRowRecord,\n isGroupMenuItemDescriptor,\n metadataKeys,\n} from \"@vuu-ui/vuu-utils\";\nimport type { MenuActionClosePopup } from \"@vuu-ui/vuu-popups\";\nimport { useCallback } from \"react\";\n\nexport const addRowsFromInstruments = \"addRowsFromInstruments\";\n\nexport interface VuuCellMenuItem extends VuuMenuItem {\n rowKey: string;\n field: string;\n value: VuuRowDataItemType;\n}\nexport interface VuuRowMenuItem extends VuuMenuItem {\n rowKey: string;\n row: { [key: string]: VuuRowDataItemType };\n}\n\nconst { KEY } = metadataKeys;\n\nconst NO_CONFIG: MenuActionConfig = {};\n\nconst isMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenuItem =>\n \"rpcName\" in menu;\n\nconst isGroupMenuItem = (menu: VuuMenuItem | VuuMenu): menu is VuuMenu =>\n \"menus\" in menu;\n\nconst isRoot = (menu: VuuMenu) => menu.name === \"ROOT\";\n\nconst isCellMenu = (options: VuuMenuItem): options is VuuCellMenuItem =>\n options.context === \"cell\";\nconst isRowMenu = (options: VuuMenuItem): options is VuuRowMenuItem =>\n options.context === \"row\";\nconst isSelectionMenu = (options: VuuMenuItem): options is VuuMenuItem =>\n options.context === \"selected-rows\";\n\nconst vuuContextCompatibleWithTableLocation = (\n uiLocation: \"grid\" | \"header\" | \"filter\",\n vuuContext: VuuMenuContext,\n selectedRowCount = 0\n) => {\n switch (uiLocation) {\n case \"grid\":\n if (vuuContext === \"selected-rows\") {\n return selectedRowCount > 0;\n } else {\n return true;\n }\n case \"header\":\n return vuuContext === \"grid\";\n default:\n return false;\n }\n};\n\nconst gridRowMeetsFilterCriteria = (\n context: VuuMenuContext,\n row: DataSourceRow,\n selectedRows: DataSourceRow[],\n filter: string,\n columnMap: ColumnMap\n): boolean => {\n if (context === \"cell\" || context === \"row\") {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return filterPredicate(row);\n } else if (context === \"selected-rows\") {\n if (selectedRows.length === 0) {\n return false;\n } else {\n const filterPredicate = getFilterPredicate(columnMap, filter);\n return selectedRows.every(filterPredicate);\n }\n }\n return true;\n};\n\nconst getMenuRpcRequest = (\n options: VuuMenuItem\n): Omit<ClientToServerMenuRPC, \"vpId\"> => {\n const { rpcName } = options;\n if (isCellMenu(options)) {\n return {\n field: options.field,\n rowKey: options.rowKey,\n rpcName,\n value: options.value,\n type: \"VIEW_PORT_MENU_CELL_RPC\",\n } as Omit<ClientToServerMenuCellRPC, \"vpId\">;\n } else if (isRowMenu(options)) {\n return {\n rowKey: options.rowKey,\n row: options.row,\n rpcName,\n type: \"VIEW_PORT_MENU_ROW_RPC\",\n } as Omit<ClientToServerMenuRowRPC, \"vpId\">;\n } else if (isSelectionMenu(options)) {\n return {\n rpcName,\n type: \"VIEW_PORT_MENUS_SELECT_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n } else {\n return {\n rpcName,\n type: \"VIEW_PORT_MENU_TABLE_RPC\",\n } as Omit<ClientToServerMenuRPC, \"vpId\">;\n }\n};\n\nexport type VuuMenuActionHandler = (type: string, options: unknown) => boolean;\n\nexport interface ViewServerHookResult {\n buildViewserverMenuOptions: MenuBuilder;\n handleMenuAction: MenuActionHandler;\n}\n\nexport interface MenuActionConfig {\n vuuMenu?: VuuMenu;\n visualLink?: DataSourceVisualLinkCreatedMessage;\n visualLinks?: LinkDescriptorWithLabel[];\n}\n\nexport type RpcResponseHandler = (\n response:\n | MenuRpcResponse\n | VuuUIMessageInRPCEditReject\n | VuuUIMessageInRPCEditResponse\n | ViewportRpcResponse\n) => void;\n\nexport interface VuuMenuActionHookProps {\n /**\n * By default, vuuMenuActions will be handled automatically. When activated, a\n * message will be sent to server and response will be handled here too.\n * This prop allows client to provide a custom handler for a menu Item. This will\n * take priority and if handler returns true, no further processing for the menu\n * item will be handled by Vuu. This can also be used to prevent an item from being\n * actioned, even when no custom handling is intended. If the handler returns false,\n * Vuu will process the menuItem.\n */\n clientSideMenuActionHandler?: VuuMenuActionHandler;\n dataSource: DataSource;\n menuActionConfig?: MenuActionConfig;\n onRpcResponse?: RpcResponseHandler;\n}\n\ntype TableMenuLocation = \"grid\" | \"header\" | \"filter\";\n\nconst isTableLocation = (location: string): location is TableMenuLocation =>\n [\"grid\", \"header\", \"filter\"].includes(location);\n\nexport type VuuServerMenuOptions = {\n columnMap: ColumnMap;\n columnName: string;\n row: DataSourceRow;\n selectedRows: DataSourceRow[];\n viewport: string;\n};\n\nconst hasFilter = ({ filter }: VuuMenuItem) =>\n typeof filter === \"string\" && filter.length > 0;\n\nconst getMenuItemOptions = (\n menu: VuuMenuItem,\n options: VuuServerMenuOptions\n): VuuMenuItem => {\n switch (menu.context) {\n case \"cell\":\n return {\n ...menu,\n field: options.columnName,\n rowKey: options.row[KEY],\n value: options.row[options.columnMap[options.columnName]],\n } as VuuCellMenuItem;\n case \"row\":\n return {\n ...menu,\n row: getRowRecord(options.row, options.columnMap),\n rowKey: options.row[KEY],\n } as VuuRowMenuItem;\n default:\n return menu;\n }\n};\n\nconst menuShouldBeRenderedInThisContext = (\n menuItem: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions\n): boolean => {\n if (isGroupMenuItem(menuItem)) {\n return menuItem.menus.some((childMenu) =>\n menuShouldBeRenderedInThisContext(childMenu, tableLocation, options)\n );\n }\n if (\n !vuuContextCompatibleWithTableLocation(\n tableLocation,\n menuItem.context,\n options.selectedRows?.length\n )\n ) {\n return false;\n }\n\n if (tableLocation === \"grid\" && hasFilter(menuItem)) {\n return gridRowMeetsFilterCriteria(\n menuItem.context,\n options.row,\n options.selectedRows,\n menuItem.filter,\n options.columnMap\n );\n }\n\n if (isCellMenu(menuItem) && menuItem.field !== \"*\") {\n return menuItem.field === options.columnName;\n }\n\n return true;\n};\n\nconst buildMenuDescriptor = (\n menu: VuuMenu | VuuMenuItem,\n tableLocation: TableMenuLocation,\n options: VuuServerMenuOptions\n): ContextMenuItemDescriptor | undefined => {\n if (menuShouldBeRenderedInThisContext(menu, tableLocation, options)) {\n if (isMenuItem(menu)) {\n return {\n label: menu.name,\n action: \"MENU_RPC_CALL\",\n options: getMenuItemOptions(menu, options),\n };\n } else {\n const children = menu.menus\n .map((childMenu) =>\n buildMenuDescriptor(childMenu, tableLocation, options)\n )\n .filter(\n (childMenu) => childMenu !== undefined\n ) as ContextMenuItemDescriptor[];\n if (children.length > 0) {\n return {\n label: menu.name,\n children,\n };\n }\n }\n }\n};\n\nexport const useVuuMenuActions = ({\n clientSideMenuActionHandler,\n dataSource,\n menuActionConfig = NO_CONFIG,\n onRpcResponse,\n}: VuuMenuActionHookProps): ViewServerHookResult => {\n const buildViewserverMenuOptions: MenuBuilder = useCallback(\n (location, options) => {\n const { links, menu } = dataSource;\n const { visualLink } = menuActionConfig;\n const descriptors: ContextMenuItemDescriptor[] = [];\n\n if (location === \"grid\" && links && !visualLink) {\n links.forEach((linkDescriptor: LinkDescriptorWithLabel) => {\n const { link, label: linkLabel } = linkDescriptor;\n const label = linkLabel ? linkLabel : link.toTable;\n descriptors.push({\n label: `Link to ${label}`,\n action: \"link-table\",\n options: linkDescriptor,\n });\n });\n }\n\n if (menu && isTableLocation(location)) {\n const menuDescriptor = buildMenuDescriptor(\n menu,\n location,\n options as VuuServerMenuOptions\n );\n if (isRoot(menu) && isGroupMenuItemDescriptor(menuDescriptor)) {\n descriptors.push(...menuDescriptor.children);\n } else if (menuDescriptor) {\n descriptors.push(menuDescriptor);\n }\n }\n\n return descriptors;\n },\n [dataSource, menuActionConfig]\n );\n\n const handleMenuAction = useCallback(\n ({ menuId, options }: MenuActionClosePopup) => {\n if (clientSideMenuActionHandler?.(menuId, options)) {\n return true;\n } else if (menuId === \"MENU_RPC_CALL\") {\n const rpcRequest = getMenuRpcRequest(options as unknown as VuuMenuItem);\n dataSource.menuRpcCall(rpcRequest).then((rpcResponse) => {\n if (onRpcResponse && rpcResponse) {\n onRpcResponse && onRpcResponse(rpcResponse);\n }\n });\n return true;\n } else if (menuId === \"link-table\") {\n // return dataSource.createLink(options as LinkDescriptorWithLabel), true;\n return (\n (dataSource.visualLink = options as LinkDescriptorWithLabel), true\n );\n } else {\n console.log(\n `useViewServer handleMenuAction, can't handle action type ${menuId}`\n );\n }\n\n return false;\n },\n [clientSideMenuActionHandler, dataSource, onRpcResponse]\n );\n\n return {\n buildViewserverMenuOptions,\n handleMenuAction,\n };\n};\n", "import { getServerAPI, TableSchema } from \"@vuu-ui/vuu-data\";\nimport { VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\n\nexport const useVuuTables = () => {\n const [tables, setTables] = useState<Map<string, TableSchema> | undefined>();\n\n const buildTables = useCallback((schemas: TableSchema[]) => {\n const vuuTables = new Map<string, TableSchema>();\n schemas.forEach((schema) => {\n vuuTables.set(schema.table.table, schema);\n });\n return vuuTables;\n }, []);\n\n useEffect(() => {\n async function fetchTableMetadata() {\n console.log(\"GET TABLE LIST\");\n const server = await getServerAPI();\n const { tables } = await server.getTableList();\n const tableSchemas = buildTables(\n await Promise.all(\n tables.map((vuuTable) => server.getTableSchema(vuuTable))\n )\n );\n setTables(tableSchemas);\n }\n\n fetchTableMetadata();\n }, [buildTables]);\n\n return tables;\n};\n\nexport const getVuuTableSchema = (table: VuuTable) =>\n getServerAPI().then((server) => server.getTableSchema(table));\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 \"classnames\";\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, useId } from \"@vuu-ui/vuu-layout\";\nimport { Button } from \"@salt-ds/core\";\nimport cx from \"classnames\";\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 >\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 \"classnames\";\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 \"classnames\";\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 [allowClose, allowRename, controlledComponentId, index]\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 />\n );\n};\n", "import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport cx from \"classnames\";\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", "import { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { isValidNumber } from \"@vuu-ui/vuu-utils\";\nimport { Input, InputProps } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport {\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n SyntheticEvent,\n useCallback,\n} from \"react\";\nimport { Tooltip, useTooltip } from \"@vuu-ui/vuu-popups\";\nimport { useId } from \"@vuu-ui/vuu-layout\";\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"],
|
|
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", "isLeaf", "children", "isValidElement", "toCollectionItem", "useCallback", "useEffect", "useRef", "measurements", "dimensions", "useRef", "useCallback", "target", "useEffect", "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", "useControlled", "useLayoutEffectSkipFirst", "useCallback", "useRef", "useState", "itemToString", "useRef", "useControlled", "useState", "useCallback", "selected", "_a", "value", "useLayoutEffectSkipFirst", "cx", "jsx", "classBase", "cx", "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", "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", "RemoteDataSource", "useCallback", "useEffect", "useMemo", "useRef", "useState", "RemoteDataSource", "useCallback", "cx", "useCallback", "useEffect", "useRef", "useState", "Button", "useMemo", "jsx", "jsxs", "cx", "jsx", "jsxs", "Button", "jsx", "jsxs", "React", "useEffect", "useState", "cx", "Fragment", "jsx", "jsxs", "useCallback", "cx", "jsx", "React", "useEffect", "registerComponent", "React", "Fragment", "jsx", "jsxs", "error", "jsx", "jsx", "useEffect", "React", "registerComponent", "useEffect", "useState", "Input", "Button", "FormField", "FormFieldLabel", "jsx", "jsxs", "classBase", "React", "useCallback", "useContext", "useEffect", "useRef", "useState", "jsx", "React", "Fragment", "jsx", "jsxs", "memo", "jsx", "jsxs", "VuuLogo", "cx", "useCallback", "useState", "jsx", "jsxs", "createContext", "isValidElement", "cloneElement", "useContext", "cx", "jsx", "_a", "isValidElement", "cloneElement", "cx", "useContext", "jsx", "jsx", "jsxs", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cx", "useIdMemo", "Button", "isValidNumber", "jsx", "jsxs", "DraggableLayout", "loadingApplicationJson", "cx", "useCallback", "useEffect", "useRef", "Button", "cx", "useCallback", "useMemo", "useLayoutProviderDispatch", "jsx", "jsxs", "useMemo", "cx", "jsx", "jsx", "jsxs", "DraggableLayout", "Flexbox", "View", "useCallback", "useRef", "useState", "jsx", "jsxs", "jsx", "jsxs", "createContext", "useContext", "jsx", "cx", "useControlled", "useCallback", "jsx", "jsxs", "buildColumnMap", "useMemo", "useState", "useCallback", "useEffect", "useState", "useCallback", "useEffect", "useState", "ConnectionManager", "useCallback", "IterMode", "_a", "r", "children", "positions", "node", "buffer", "data", "length", "lookAhead", "pair", "nodeSize", "from", "to", "r", "Stack", "cx", "_a", "parser", "i", "Recover", "r", "Safety", "parser", "Rec", "Stack", "r", "i", "_a", "metadataKeys", "useCallback", "metadataKeys", "useCallback", "useEffect", "useState", "useCallback", "useMemo", "useState", "dataSource", "RemoteDataSource", "jsx", "jsxs", "classBase", "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", "TreeNode", "Tree", "forwardRef", "_a", "useId", "useRef", "selected", "sourceItems", "id", "useViewportTracking", "closestListItemIndex", "groupSelectionEnabled", "cx", "useForkRef", "isValidNumber", "Input", "cx", "forwardRef", "useCallback", "useId", "Fragment", "jsx", "jsxs", "classBase", "forwardRef", "VuuInput", "useId", "useCallback", "isValidNumber", "Input", "cx"]
|
|
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", "isLeaf", "children", "isValidElement", "toCollectionItem", "useCallback", "useEffect", "useRef", "measurements", "dimensions", "useRef", "useCallback", "target", "useEffect", "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", "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", "useControlled", "useLayoutEffectSkipFirst", "useCallback", "useRef", "useState", "itemToString", "useRef", "useControlled", "useState", "useCallback", "selected", "_a", "value", "useLayoutEffectSkipFirst", "cx", "jsx", "classBase", "cx", "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", "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", "RemoteDataSource", "useCallback", "useEffect", "useMemo", "useRef", "useState", "RemoteDataSource", "useCallback", "cx", "useCallback", "useEffect", "useRef", "useState", "Button", "useMemo", "jsx", "jsxs", "cx", "jsx", "jsxs", "Button", "jsx", "jsxs", "React", "useEffect", "useState", "cx", "Fragment", "jsx", "jsxs", "useCallback", "cx", "jsx", "React", "useEffect", "registerComponent", "React", "Fragment", "jsx", "jsxs", "error", "jsx", "jsx", "useEffect", "React", "registerComponent", "useEffect", "useState", "Input", "Button", "FormField", "FormFieldLabel", "jsx", "jsxs", "classBase", "React", "useCallback", "useContext", "useEffect", "useRef", "useState", "jsx", "React", "Fragment", "jsx", "jsxs", "memo", "jsx", "jsxs", "VuuLogo", "cx", "useCallback", "useState", "jsx", "jsxs", "createContext", "isValidElement", "cloneElement", "useContext", "cx", "jsx", "_a", "isValidElement", "cloneElement", "cx", "useContext", "jsx", "jsx", "jsxs", "useCallback", "useEffect", "useMemo", "useRef", "useState", "cx", "useIdMemo", "Button", "isValidNumber", "jsx", "jsxs", "DraggableLayout", "loadingApplicationJson", "cx", "useCallback", "useEffect", "useRef", "Button", "cx", "useCallback", "useMemo", "useLayoutProviderDispatch", "jsx", "jsxs", "useMemo", "cx", "jsx", "jsx", "jsxs", "DraggableLayout", "Flexbox", "View", "useCallback", "useRef", "useState", "jsx", "jsxs", "jsx", "jsxs", "createContext", "useContext", "jsx", "cx", "useControlled", "useCallback", "jsx", "jsxs", "buildColumnMap", "useMemo", "useState", "useCallback", "useEffect", "useState", "useCallback", "useEffect", "useState", "ConnectionManager", "useCallback", "IterMode", "_a", "r", "children", "positions", "node", "buffer", "data", "length", "lookAhead", "pair", "nodeSize", "from", "to", "r", "Stack", "cx", "_a", "parser", "i", "Recover", "r", "Safety", "parser", "Rec", "Stack", "r", "i", "_a", "metadataKeys", "useCallback", "metadataKeys", "useCallback", "useEffect", "useState", "useCallback", "useMemo", "useState", "dataSource", "RemoteDataSource", "jsx", "jsxs", "classBase", "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", "TreeNode", "Tree", "forwardRef", "_a", "useId", "useRef", "selected", "sourceItems", "id", "useViewportTracking", "closestListItemIndex", "groupSelectionEnabled", "cx", "useForkRef", "isValidNumber", "Input", "cx", "forwardRef", "useCallback", "useId", "Fragment", "jsx", "jsxs", "classBase", "forwardRef", "VuuInput", "useId", "useCallback", "isValidNumber", "Input", "cx"]
|
|
7
7
|
}
|