@vuu-ui/vuu-ui-controls 0.8.21 → 0.8.22-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/cjs/index.js +12125 -6
- package/cjs/index.js.map +2 -2
- package/esm/index.js +12233 -6
- package/esm/index.js.map +2 -2
- package/index.css +1366 -1
- package/index.css.map +3 -3
- package/package.json +7 -7
- package/LICENSE +0 -201
package/esm/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-ui-controls/src/calendar/Calendar.tsx", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarNavigation.tsx", "../../../packages/vuu-ui-controls/src/dropdown/DropdownBase.tsx", "../../../packages/vuu-ui-controls/src/utils/escapeRegExp.ts", "../../../packages/vuu-ui-controls/src/utils/forwardCallbackProps.ts", "../../../packages/vuu-ui-controls/src/dropdown/useDropdownBase.ts", "../../../packages/vuu-ui-controls/src/common-hooks/collectionProvider.tsx", "../../../packages/vuu-ui-controls/src/common-hooks/isPlainObject.ts", "../../../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/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/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/dragDropTypes.ts", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropProvider.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useGlobalDragDrop.ts", "../../../packages/vuu-ui-controls/src/drag-drop/DragDropState.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDrop.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/Draggable.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/drop-target-utils.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useAutoScroll.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropCopy.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropIndicator.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDropIndicator.ts", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDropNaturalMovement.tsx", "../../../packages/vuu-ui-controls/src/drag-drop/useDragDisplacers.ts", "../../../packages/vuu-ui-controls/src/list/useListDrop.ts", "../../../packages/vuu-ui-controls/src/list/useListHeight.ts", "../../../packages/vuu-ui-controls/src/list/useScrollPosition.ts", "../../../packages/vuu-ui-controls/src/list/VirtualizedList.tsx", "../../../packages/vuu-ui-controls/src/list/useVirtualization.ts", "../../../packages/vuu-ui-controls/src/list/keyset.ts", "../../../packages/vuu-ui-controls/src/list/RadioIcon.tsx", "../../../packages/vuu-ui-controls/src/dropdown/useDropdown.ts", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarContext.tsx", "../../../node_modules/@internationalized/date/node_modules/@swc/helpers/esm/_check_private_redeclaration.js", "../../../node_modules/@internationalized/date/node_modules/@swc/helpers/esm/_class_private_field_init.js", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/index.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/CalendarDate.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/manipulation.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/conversion.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/GregorianCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/utils.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/queries.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/weekStartData.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/string.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/JapaneseCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/BuddhistCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/TaiwanCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/PersianCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/IndianCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/IslamicCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/HebrewCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/calendars/EthiopicCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/createCalendar.ts", "../../../node_modules/@internationalized/date/dist/packages/@internationalized/date/src/DateFormatter.ts", "../../../packages/vuu-ui-controls/src/calendar/internal/utils.ts", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarWeekHeader.tsx", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarCarousel.tsx", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarMonth.tsx", "../../../packages/vuu-ui-controls/src/calendar/internal/CalendarDay.tsx", "../../../packages/vuu-ui-controls/src/calendar/useCalendarDay.ts", "../../../packages/vuu-ui-controls/src/calendar/internal/useFocusManagement.ts", "../../../packages/vuu-ui-controls/src/calendar/useSelection.ts", "../../../packages/vuu-ui-controls/src/calendar/useCalendar.ts", "../../../packages/vuu-ui-controls/src/combo-box/ComboBox.tsx", "../../../packages/vuu-ui-controls/src/list/ChevronIcon.tsx", "../../../packages/vuu-ui-controls/src/combo-box/useCombobox.ts", "../../../packages/vuu-ui-controls/src/cycle-state-button/CycleStateButton.tsx", "../../../packages/vuu-ui-controls/src/date-picker/DatePicker.tsx", "../../../packages/vuu-ui-controls/src/date-picker/input/DatePickerInput.tsx", "../../../packages/vuu-ui-controls/src/date-picker/internal/CalendarIconButton.tsx", "../../../packages/vuu-ui-controls/src/date-picker/useBaseDatePicker.ts", "../../../packages/vuu-ui-controls/src/date-picker/useBaseDatePickerDropdown.ts", "../../../packages/vuu-ui-controls/src/date-picker/DateRangePicker.tsx", "../../../packages/vuu-ui-controls/src/date-picker/input/DateRangePickerInput.tsx", "../../../packages/vuu-ui-controls/src/editable/editable-utils.ts", "../../../packages/vuu-ui-controls/src/editable/useEditableText.ts", "../../../packages/vuu-ui-controls/src/editable-label/EditableLabel.tsx", "../../../packages/vuu-ui-controls/src/expando-input/ExpandoInput.tsx", "../../../packages/vuu-ui-controls/src/vuu-input/VuuInput.tsx", "../../../packages/vuu-ui-controls/src/inputs/Checkbox.tsx", "../../../packages/vuu-ui-controls/src/inputs/RadioButton.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/InstrumentPicker.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/SearchCell.tsx", "../../../packages/vuu-ui-controls/src/instrument-picker/useInstrumentPicker.ts", "../../../packages/vuu-ui-controls/src/instrument-search/InstrumentSearch.tsx", "../../../packages/vuu-ui-controls/src/instrument-search/SearchCell.tsx", "../../../packages/vuu-ui-controls/src/instrument-search/useInstrumentSearch.ts", "../../../packages/vuu-ui-controls/src/price-ticker/PriceTicker.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/Tabstrip.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/useTabstrip.ts", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenuOptions.ts", "../../../packages/vuu-ui-controls/src/tabstrip/tabstrip-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useAnimatedSelectionThumb.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useKeyboardNavigation.ts", "../../../packages/vuu-ui-controls/src/tabstrip/useSelection.ts", "../../../packages/vuu-ui-controls/src/tabstrip/Tab.tsx", "../../../packages/vuu-ui-controls/src/tabstrip/TabMenu.tsx", "../../../packages/vuu-ui-controls/src/tree/Tree.tsx", "../../../packages/vuu-ui-controls/src/tree/list-dom-utils.ts", "../../../packages/vuu-ui-controls/src/tree/use-items-with-ids.ts", "../../../packages/vuu-ui-controls/src/tree/use-selection.ts", "../../../packages/vuu-ui-controls/src/tree/use-viewport-tracking.ts", "../../../packages/vuu-ui-controls/src/tree/useTree.ts", "../../../packages/vuu-ui-controls/src/tree/use-keyboard-navigation.ts", "../../../packages/vuu-ui-controls/src/tree/hierarchical-data-utils.ts", "../../../packages/vuu-ui-controls/src/tree/key-code.ts", "../../../packages/vuu-ui-controls/src/tree/use-hierarchical-data.ts", "../../../packages/vuu-ui-controls/src/tree/use-collapsible-groups.ts", "../../../packages/vuu-ui-controls/src/tree/use-tree-keyboard-navigation.ts"],
|
|
4
4
|
"sourcesContent": ["import { forwardRef, useCallback } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n CalendarNavigation,\n CalendarNavigationProps,\n} from \"./internal/CalendarNavigation\";\nimport { CalendarWeekHeader } from \"./internal/CalendarWeekHeader\";\nimport {\n CalendarCarousel,\n CalendarCarouselProps,\n} from \"./internal/CalendarCarousel\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport { useCalendar, useCalendarProps } from \"./useCalendar\";\n\nimport \"./Calendar.css\";\n\nexport type CalendarProps = useCalendarProps & {\n className?: string;\n renderDayContents?: CalendarCarouselProps[\"renderDayContents\"];\n hideYearDropdown?: CalendarNavigationProps[\"hideYearDropdown\"];\n TooltipProps?: CalendarCarouselProps[\"TooltipProps\"];\n hideOutOfRangeDates?: CalendarCarouselProps[\"hideOutOfRangeDates\"];\n};\n\nconst withBaseName = makePrefixer(\"saltCalendar\");\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(props, ref) {\n const {\n className,\n renderDayContents,\n hideYearDropdown,\n TooltipProps,\n ...rest\n } = props;\n\n const { state, helpers } = useCalendar({ hideYearDropdown, ...rest });\n\n const { setCalendarFocused } = helpers;\n\n const handleFocus = useCallback(() => {\n setCalendarFocused(true);\n }, [setCalendarFocused]);\n\n const handleBlur = useCallback(() => {\n setCalendarFocused(false);\n }, [setCalendarFocused]);\n\n return (\n <CalendarContext.Provider\n value={{\n state,\n helpers,\n }}\n >\n <div\n className={clsx(withBaseName(), className)}\n role=\"application\"\n ref={ref}\n >\n <CalendarNavigation hideYearDropdown={hideYearDropdown} />\n <CalendarWeekHeader />\n <CalendarCarousel\n onFocus={handleFocus}\n onBlur={handleBlur}\n renderDayContents={renderDayContents}\n TooltipProps={TooltipProps}\n />\n </div>\n </CalendarContext.Provider>\n );\n }\n);\n", "import {\n Button,\n ButtonProps,\n makePrefixer,\n Tooltip,\n useId,\n} from \"@salt-ds/core\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n ComponentPropsWithRef,\n forwardRef,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { Dropdown, DropdownProps } from \"../../dropdown\";\nimport { ListItem, ListItemType } from \"../../list\";\n\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport \"./CalendarNavigation.css\";\nimport { DateValue, isSameMonth, isSameYear } from \"@internationalized/date\";\nimport { formatDate, monthDiff, monthsForLocale } from \"./utils\";\nimport { SingleSelectionHandler } from \"../../common-hooks\";\n\ntype DropdownItem = {\n value: DateValue;\n disabled?: boolean;\n};\n\ntype dateDropdownProps = DropdownProps<DropdownItem>;\n\nexport interface CalendarNavigationProps extends ComponentPropsWithRef<\"div\"> {\n MonthDropdownProps?: dateDropdownProps;\n YearDropdownProps?: dateDropdownProps;\n onMonthSelect?: dateDropdownProps[\"onChange\"];\n onYearSelect?: dateDropdownProps[\"onChange\"];\n onNavigateNext?: ButtonProps[\"onClick\"];\n onNavigatePrevious?: ButtonProps[\"onClick\"];\n hideYearDropdown?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarNavigation\");\n\nfunction useCalendarNavigation() {\n const {\n state: { visibleMonth, minDate, maxDate },\n helpers: {\n setVisibleMonth,\n isDayVisible,\n isOutsideAllowedYears,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext();\n\n const moveToNextMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.add({ months: 1 }));\n };\n\n const moveToPreviousMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.subtract({ months: 1 }));\n };\n\n const moveToMonth = (event: SyntheticEvent, month: DateValue) => {\n let newMonth = month;\n\n if (!isOutsideAllowedYears(newMonth)) {\n if (isOutsideAllowedMonths(newMonth)) {\n // If month is navigable we should move to the closest navigable month\n const navigableMonths = monthsForLocale(visibleMonth).filter(\n (n) => !isOutsideAllowedMonths(n)\n );\n newMonth = navigableMonths.reduce((closestMonth, currentMonth) =>\n Math.abs(monthDiff(currentMonth, newMonth)) <\n Math.abs(monthDiff(closestMonth, newMonth))\n ? currentMonth\n : closestMonth\n );\n }\n setVisibleMonth(event, newMonth);\n }\n };\n\n const months = monthsForLocale(visibleMonth).map((month) => {\n return { value: month, disabled: isOutsideAllowedMonths(month) };\n });\n\n const years = [-2, -1, 0, 1, 2]\n .map((delta) => ({ value: visibleMonth.add({ years: delta }) }))\n .filter(({ value }) => !isOutsideAllowedYears(value));\n\n const selectedMonth = months.find((item: DropdownItem) =>\n isSameMonth(item.value, visibleMonth)\n );\n const selectedYear = years.find((item: DropdownItem) =>\n isSameYear(item.value, visibleMonth)\n );\n\n const canNavigatePrevious = !(minDate && isDayVisible(minDate));\n const canNavigateNext = !(maxDate && isDayVisible(maxDate));\n\n return {\n moveToNextMonth,\n moveToPreviousMonth,\n moveToMonth,\n visibleMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n selectedMonth,\n selectedYear,\n };\n}\n\nconst ListItemWithTooltip: ListItemType<DropdownItem> = ({\n item,\n label,\n ...props\n}) => (\n <Tooltip\n placement=\"right\"\n disabled={!item?.disabled}\n content=\"This month is out of range\"\n >\n <ListItem {...props}>{label}</ListItem>\n </Tooltip>\n);\n\nexport const CalendarNavigation = forwardRef<\n HTMLDivElement,\n CalendarNavigationProps\n>(function CalendarNavigation(props, ref) {\n const {\n className,\n MonthDropdownProps,\n YearDropdownProps,\n hideYearDropdown,\n ...rest\n } = props;\n\n const {\n moveToPreviousMonth,\n moveToNextMonth,\n moveToMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n visibleMonth,\n selectedMonth,\n selectedYear,\n } = useCalendarNavigation();\n\n const handleNavigatePrevious: MouseEventHandler<HTMLButtonElement> = (\n event\n ) => {\n moveToPreviousMonth(event);\n };\n\n const handleNavigateNext: MouseEventHandler<HTMLButtonElement> = (event) => {\n moveToNextMonth(event);\n };\n\n const handleMonthSelect: SingleSelectionHandler<DropdownItem> = (\n event,\n month\n ) => {\n if (month && event) {\n moveToMonth(event, month.value);\n }\n };\n\n const handleYearSelect: SingleSelectionHandler<DropdownItem> = (\n event,\n year\n ) => {\n if (year && event) {\n moveToMonth(event, year.value);\n }\n };\n\n const monthDropdownId = useId(MonthDropdownProps?.id) || \"\";\n const monthDropdownLabelledBy = clsx(\n MonthDropdownProps?.[\"aria-labelledby\"],\n // TODO need a prop on Dropdown to allow buttonId to be passed, should not make assumptions about internal\n // id assignment like this\n `${monthDropdownId}-control`\n );\n\n const yearDropdownId = useId(YearDropdownProps?.id) || \"\";\n const yearDropdownLabelledBy = clsx(\n YearDropdownProps?.[\"aria-labelledby\"],\n `${yearDropdownId}-control`\n );\n\n const defaultItemToMonth = (date: DropdownItem) => {\n if (hideYearDropdown) {\n return formatDate(date.value, { month: \"long\" });\n }\n return formatDate(date.value, { month: \"short\" });\n };\n\n const defaultItemToYear = (date: DropdownItem) => {\n return formatDate(date.value, { year: \"numeric\" });\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"hideYearDropdown\")]: hideYearDropdown },\n className\n )}\n ref={ref}\n {...rest}\n >\n <Tooltip\n placement=\"top\"\n disabled={canNavigatePrevious}\n content=\"Past dates are out of range\"\n >\n <Button\n disabled={!canNavigatePrevious}\n variant=\"secondary\"\n onClick={handleNavigatePrevious}\n className={withBaseName(\"previousButton\")}\n focusableWhenDisabled={true}\n >\n <ChevronLeftIcon\n aria-label={`Previous Month, ${formatDate(\n visibleMonth.subtract({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n <Dropdown<DropdownItem>\n source={months}\n id={monthDropdownId}\n aria-labelledby={monthDropdownLabelledBy}\n aria-label=\"Month Dropdown\"\n {...MonthDropdownProps}\n ListItem={ListItemWithTooltip}\n selected={selectedMonth}\n itemToString={defaultItemToMonth}\n onSelectionChange={handleMonthSelect}\n fullWidth\n />\n {!hideYearDropdown && (\n <Dropdown<DropdownItem>\n source={years}\n id={yearDropdownId}\n aria-labelledby={yearDropdownLabelledBy}\n aria-label=\"Year Dropdown\"\n {...YearDropdownProps}\n ListItem={ListItemWithTooltip}\n selected={selectedYear}\n onSelectionChange={handleYearSelect}\n itemToString={defaultItemToYear}\n fullWidth\n />\n )}\n <Tooltip\n placement=\"top\"\n disabled={canNavigateNext}\n content=\"Future dates are out of range\"\n >\n <Button\n disabled={!canNavigateNext}\n variant=\"secondary\"\n onClick={handleNavigateNext}\n className={withBaseName(\"nextButton\")}\n focusableWhenDisabled={true}\n >\n <ChevronRightIcon\n aria-label={`Next Month, ${formatDate(\n visibleMonth.add({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n </div>\n );\n});\n", "import { PopupComponent as Popup, Portal } from \"@vuu-ui/vuu-popups\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { Children, cloneElement, forwardRef, useRef } from \"react\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdownBase } from \"./useDropdownBase\";\n\nimport \"./Dropdown.css\";\n\n// Any component may be passed as our trigger or popup component.\n// Define the common props that we will act on, if present,\n// so we can type them.\nexport type MaybeChildProps = {\n className?: string;\n id?: string;\n role?: string;\n width: number | string;\n};\n\nconst classBase = \"vuuDropdown\";\n\nexport const DropdownBase = forwardRef<HTMLDivElement, DropdownBaseProps>(\n function Dropdown(\n {\n PopupProps,\n \"aria-labelledby\": ariaLabelledByProp,\n children,\n className: classNameProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id: idProp,\n isOpen: isOpenProp,\n onKeyDown,\n onOpenChange,\n openKeys,\n openOnFocus,\n placement = \"below-full-width\",\n popupWidth,\n width,\n ...htmlAttributes\n },\n forwardedRef\n ) {\n const rootRef = useRef<HTMLDivElement>(null);\n const className = cx(classBase, classNameProp, {\n [`${classBase}-fullWidth`]: fullWidth,\n [`${classBase}-disabled`]: disabled,\n });\n const [trigger, popupComponent] = Children.toArray(\n children\n ) as JSX.Element[];\n const id = useId(idProp);\n\n const { componentProps, isOpen, popupComponentRef, triggerProps } =\n useDropdownBase({\n ariaLabelledBy: ariaLabelledByProp,\n defaultIsOpen,\n disabled,\n fullWidth,\n id,\n isOpen: isOpenProp,\n onOpenChange,\n onKeyDown,\n openKeys,\n openOnFocus,\n popupComponent,\n popupWidth,\n rootRef,\n width,\n });\n\n const getTriggerComponent = () => {\n const {\n id: defaultId,\n role: defaultRole,\n ...restTriggerProps\n } = triggerProps;\n\n const {\n id = defaultId,\n role = defaultRole,\n ...ownProps\n } = trigger.props as MaybeChildProps;\n\n return cloneElement(\n trigger,\n forwardCallbackProps(ownProps, {\n ...restTriggerProps,\n id,\n role,\n })\n );\n };\n\n const getPopupComponent = () => {\n const { id: defaultId, width, ...restComponentProps } = componentProps;\n const {\n className,\n id = defaultId,\n width: ownWidth,\n ...ownProps\n } = popupComponent.props as MaybeChildProps;\n\n return cloneElement(popupComponent, {\n ...ownProps,\n ...restComponentProps,\n className: cx(className, `${classBase}-popup-component`),\n id,\n ref: popupComponentRef,\n width: placement.endsWith(\"full-width\") ? \"auto\" : ownWidth ?? width,\n });\n };\n\n const ref = useForkRef(rootRef, forwardedRef);\n\n return (\n <div {...htmlAttributes} className={className} id={idProp} ref={ref}>\n {getTriggerComponent()}\n {isOpen && (\n <Portal>\n <Popup\n {...PopupProps}\n anchorElement={rootRef}\n placement={placement}\n >\n {getPopupComponent()}\n </Popup>\n </Portal>\n )}\n </div>\n );\n }\n);\n", "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 { 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 { 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", "export const isPlainObject = (obj: unknown) =>\n Object.prototype.toString.call(obj) === \"[object Object]\";\n", "import { isPlainObject } from \"./isPlainObject\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type ItemToStringFunction = (item: any) => string;\n\nexport function itemToString(item: unknown): string {\n if (typeof item === \"string\") {\n return item;\n } else if (!isPlainObject(item)) {\n return String(item);\n }\n\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) {\n return String((item as { label?: string }).label);\n }\n\n console.warn(\n [\n \"itemToString: you've likely forgotten to set the label prop on the item object.\",\n \"You can also provide your own `itemToString` implementation.\",\n ].join(\"\\n\")\n );\n\n return \"\";\n}\n", "import { useCallback, useMemo, useRef, useState, isValidElement } from \"react\";\nimport {\n CollectionItem,\n CollectionIndexer,\n CollectionHookProps,\n CollectionHookResult,\n} from \"./collectionTypes\";\nimport {\n isHeader,\n isGroupNode,\n childItems,\n countChildItems,\n FilterPredicate,\n getDefaultFilter,\n getDefaultFilterRegex,\n isDisabled,\n isFocusable,\n isParentPath,\n replaceCollectionItem,\n sourceItems,\n} from \"../list/common-hooks/utils\";\nimport { itemToString as defaultItemToString } from \"./itemToString\";\n\nimport { useCollection } from \"./collectionProvider\";\n\nconst defaultCollectionOptions = {};\n\nexport const useCollectionItems = <Item>({\n children,\n id: idRoot,\n options = defaultCollectionOptions,\n // revealSelected = false,\n source,\n}: CollectionHookProps<Item>): CollectionHookResult<Item> => {\n const { getItemId } = options;\n const [, forceUpdate] = useState<unknown>(null);\n const inheritedCollectionHook = useCollection<Item>();\n const dataRef = useRef<CollectionItem<Item>[]>([]);\n const flattenedDataRef = useRef<CollectionItem<Item>[]>([]);\n const EMPTY_COLLECTION: CollectionItem<Item>[] = useMemo(() => [], []);\n const filterPattern = useRef<string>(options.filterPattern ?? \"\");\n const disableFilter = options.disableFilter ?? false;\n\n // destructure individual option values so we can safely reference them in dependency arrays\n const {\n getFilterRegex = getDefaultFilterRegex,\n noChildrenLabel,\n itemToString = defaultItemToString,\n } = options;\n\n const isExpanded = useCallback(() => {\n // We can't do this here because itemToId won't work until we complete this phase\n // if (Array.isArray(revealSelected)) {\n // const selectedIds = revealSelected.map(itemToId);\n // return selectedIds.some((id) => isParentPath(path, id));\n // }\n return options.defaultExpanded || false;\n }, [options.defaultExpanded]);\n\n const addMetadataToItems = useCallback(\n <Item>(\n items: CollectionItem<Item>[],\n indexer: CollectionIndexer,\n level = 1,\n path = \"\",\n results: CollectionItem<Item>[] = [],\n flattenedCollection: CollectionItem<Item>[] = [],\n flattenedSource: (Item | null)[] = []\n ): [CollectionItem<Item>[], (Item | null)[], CollectionItem<Item>[]] => {\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && options.collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && options.collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `item-${i}`;\n // getItemId is backward compatible with earlier List implementation.\n // It is not appropriate for a nested source structure, where index\n // will not always be an absolute offset.\n const id =\n item.id ?? (getItemId ? getItemId(i) : `${idRoot}-${childPath}`);\n\n const expanded = nonCollapsible\n ? undefined\n : item.expanded ?? isExpanded();\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: CollectionItem<Item> = {\n ...item,\n childNodes: undefined,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n description: item.description,\n disabled: isDisabled(item.value),\n focusable: isFocusable(item.value) ? undefined : false,\n id,\n index: indexer.value,\n expanded,\n level,\n };\n results.push(normalisedItem);\n flattenedCollection.push(normalisedItem);\n flattenedSource.push(items[i].value);\n\n indexer.value += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [children] = addMetadataToItems<Item>(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedCollection,\n flattenedSource\n );\n normalisedItem.childNodes = children;\n }\n });\n return [results, flattenedSource, flattenedCollection];\n },\n [options.collapsibleHeaders, getItemId, idRoot, isExpanded]\n );\n\n const getFilter = useCallback(() => {\n if (filterPattern.current && !disableFilter) {\n return getDefaultFilter(filterPattern.current, getFilterRegex);\n } else {\n return null;\n }\n }, [disableFilter, getFilterRegex]);\n\n const collectVisibleItems = useCallback(\n (\n items: CollectionItem<Item>[],\n filter: null | FilterPredicate = getFilter(),\n results: CollectionItem<Item>[] = [],\n idx: { value: number } = { value: 0 }\n ): CollectionItem<Item>[] => {\n let skipToNextHeader = false;\n for (const item of items) {\n if (!(skipToNextHeader && !isHeader(item))) {\n if (\n item.value !== null &&\n (filter === null || filter(itemToString(item.value)))\n ) {\n results[idx.value] = item;\n idx.value += 1;\n }\n skipToNextHeader = false;\n if (isHeader(item) && item.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(item)) {\n if (item.expanded !== false && item.childNodes) {\n collectVisibleItems(item.childNodes, filter, results, idx);\n }\n }\n }\n }\n return results;\n },\n [getFilter, itemToString]\n );\n\n // Stage 1 - convert source or children to CollectionItems.\n const partialCollectionItems = useMemo(() => {\n return inheritedCollectionHook\n ? EMPTY_COLLECTION\n : sourceItems<Item>(source, { itemToString, noChildrenLabel }) ||\n childItems(children) ||\n [];\n }, [\n inheritedCollectionHook,\n EMPTY_COLLECTION,\n source,\n itemToString,\n noChildrenLabel,\n children,\n ]);\n\n // Stage 2 - extend the collectionItems with additional metadata\n const [collectionItems, flattenedSource, flattenedCollection] = useMemo(\n () =>\n inheritedCollectionHook\n ? [EMPTY_COLLECTION, EMPTY_COLLECTION, EMPTY_COLLECTION]\n : // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n addMetadataToItems<Item>(partialCollectionItems, { value: 0 }),\n [\n EMPTY_COLLECTION,\n addMetadataToItems,\n inheritedCollectionHook,\n partialCollectionItems,\n ]\n );\n flattenedDataRef.current = flattenedCollection;\n\n // Stage 3 prepare the list of visible items, this is what will be rendered\n useMemo(\n () =>\n inheritedCollectionHook\n ? EMPTY_COLLECTION\n : (dataRef.current = collectVisibleItems(collectionItems)),\n [\n EMPTY_COLLECTION,\n collectVisibleItems,\n collectionItems,\n inheritedCollectionHook,\n ]\n );\n\n const collectionItemsRef = useRef(collectionItems);\n\n const setFilterPattern = useCallback(\n (pattern = \"\") => {\n if (typeof pattern === \"string\") {\n filterPattern.current = pattern;\n dataRef.current = collectVisibleItems(collectionItems);\n forceUpdate({});\n }\n },\n [collectionItems, collectVisibleItems]\n );\n\n const itemById = useCallback(\n (\n id: string,\n target: CollectionItem<Item>[] = collectionItems\n ): Item | never => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n //TODO do we need the flattered source at all ?\n return flattenedSource?.[sourceWithId.index!] as Item;\n } else if (sourceWithId) {\n return itemById(id, sourceWithId.childNodes);\n }\n throw Error(`useCollectionData itemById, id ${id} not found `);\n },\n [flattenedSource, collectionItems]\n );\n\n const indexOfItemById = useCallback(\n (\n id: string,\n target: CollectionItem<Item>[] = collectionItems\n ): number | never => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n const idx = sourceWithId ? dataRef.current.indexOf(sourceWithId) : -1;\n if (idx !== -1) {\n return idx;\n }\n throw Error(`useCollectionData indexOfItemById, id ${id} not found `);\n },\n [collectionItems]\n );\n\n const toCollectionItem = useCallback(\n (item: Item): CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n isValidElement(i.value) ? i.label === item : i.value === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n throw Error(`useCollectionData toCollectionItem, item not found `);\n },\n []\n );\n\n // TODO types need more work, these are correct but we\n // don't really want references to Selection in here\n const itemToCollectionItem = useCallback(\n (sel: Item) => {\n if (sel === null) {\n return null;\n } else if (Array.isArray(sel)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of sel) {\n const collectionItem = toCollectionItem(item);\n result.push(collectionItem);\n }\n return result;\n } else if (sel !== undefined) {\n return toCollectionItem(sel as Item);\n }\n\n return undefined;\n },\n [toCollectionItem]\n );\n\n const itemToCollectionItemId = useCallback(\n (sel) => {\n if (sel === undefined) {\n return undefined;\n }\n\n const selectedCollectionItem = itemToCollectionItem(sel);\n if (Array.isArray(selectedCollectionItem)) {\n return selectedCollectionItem.map((i) => i.id);\n } else if (selectedCollectionItem) {\n return [selectedCollectionItem.id];\n } else {\n return [];\n }\n },\n [itemToCollectionItem]\n );\n\n const stringToCollectionItem = useCallback(\n (value: string | null | undefined) => {\n const toCollectionItem = (\n item: string\n ): undefined | CollectionItem<Item> | never => {\n // TODO what about Tree structures, we need to search flattened source\n const collectionItem = flattenedDataRef.current.find((i) =>\n // const collectionItem = collectionItemsRef.current.find((i) =>\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n isValidElement(i.value)\n ? i.label === item\n : i.value !== null && itemToString(i.value) === item\n );\n if (collectionItem) {\n return collectionItem;\n }\n };\n\n if (value === null) {\n return null;\n } else if (Array.isArray(value)) {\n const result: CollectionItem<Item>[] = [];\n for (const item of value) {\n const collectionItem = toCollectionItem(item);\n if (collectionItem) {\n result.push(collectionItem);\n }\n }\n return result;\n } else if (value !== undefined) {\n return toCollectionItem(value);\n }\n\n return undefined;\n },\n [itemToString]\n );\n\n const itemToId = useCallback((item: Item): string => {\n for (const collectionItem of collectionItemsRef.current) {\n if (item === collectionItem.value) {\n return collectionItem.id;\n }\n }\n throw Error(\"useCollectionData itemToId, item not found\");\n }, []);\n\n const collapseGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem(\n collectionItemsRef.current,\n item.id,\n {\n expanded: false,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n const expandGroupItem = useCallback(\n (item: CollectionItem<Item>) => {\n collectionItemsRef.current = replaceCollectionItem<Item>(\n collectionItemsRef.current,\n item.id,\n {\n expanded: true,\n }\n );\n dataRef.current = collectVisibleItems(collectionItemsRef.current);\n forceUpdate({});\n },\n [collectVisibleItems]\n );\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return (\n inheritedCollectionHook || {\n collapseGroupItem,\n data: dataRef.current,\n expandGroupItem, // why not toggle, or just rely on setdata ?\n setFilterPattern,\n indexOfItemById,\n itemById,\n itemToId,\n toCollectionItem,\n itemToCollectionItem,\n itemToCollectionItemId,\n stringToCollectionItem,\n }\n );\n};\n", "import { isValidElement, Children, ReactElement, ReactNode } from \"react\";\n\nimport {\n CollectionItem,\n CollectionOptions,\n SourceGroup,\n} from \"../../../common-hooks/collectionTypes\";\n// TODO how do we configure these\nimport { ListItemGroup } from \"../../ListItemGroup\";\nimport { ListItemHeader } from \"../../ListItemHeader\";\nimport { itemToString as defaultItemToString } from \"../../../common-hooks/itemToString\";\n\ntype NonFocusableElement = ReactElement<{ focusable: false }>;\ntype DisablableElement = ReactElement<{ disabled: boolean }>;\ntype SelectableElement = ReactElement<{ selectable: boolean }>;\n\nexport const sourceItemHasProp = (\n item: unknown,\n propertyName: string\n): boolean => {\n return (\n item !== null && Object.prototype.hasOwnProperty.call(item, propertyName)\n );\n};\n\nexport const isHeader = (item: unknown): boolean =>\n sourceItemHasProp(item, \"header\");\n\nexport const isGroupNode = (item: unknown): boolean =>\n sourceItemHasProp(item, \"childNodes\");\n\nconst childItemHasProp = (item: ReactElement, propertyName: string) => {\n return item && Object.prototype.hasOwnProperty.call(item.props, propertyName);\n};\n\nexport const isDisabled = (item: unknown): boolean => {\n if (isValidElement(item as DisablableElement)) {\n if (childItemHasProp(item as DisablableElement, \"disabled\")) {\n return (item as DisablableElement).props.disabled === true;\n }\n } else if (sourceItemHasProp(item, \"disabled\")) {\n return (item as { disabled: boolean }).disabled === true;\n }\n\n return false;\n};\n\nexport const isFocusable = (item: unknown): boolean => {\n if (isValidElement(item as NonFocusableElement)) {\n if (childItemHasProp(item as NonFocusableElement, \"focusable\")) {\n return (item as NonFocusableElement).props.focusable;\n }\n }\n return true;\n};\n\nexport const countChildItems = <Item>(\n item: CollectionItem<Item>,\n items: CollectionItem<Item>[],\n idx: number\n): number => {\n if (item.childNodes) {\n return item.childNodes.length;\n } else if (item.header) {\n let i = idx + 1;\n let count = 0;\n while (i < items.length && !items[i].header) {\n count++;\n i++;\n }\n return count;\n } else {\n return 0;\n }\n};\n\nexport const getChildLabel = (\n element: ReactElement<{\n children?: ReactNode;\n label?: string;\n title?: string;\n }>\n): string | undefined => {\n if (typeof element.props.children === \"string\") {\n return element.props.children;\n } else if (element.props.title) {\n return element.props.title;\n } else if (element.props.label) {\n return element.props.label;\n }\n};\n\nconst childIsHeader = (child: ReactElement) =>\n child.type === ListItemHeader || childItemHasProp(child, \"data-header\");\n\nexport const childIsGroup = (child: ReactElement): boolean =>\n child.type === ListItemGroup || childItemHasProp(child, \"data-group\");\n\nconst childIsSelectable = (child: ReactElement) => {\n if (childItemHasProp(child, \"selectable\")) {\n return (child as SelectableElement).props.selectable === true;\n } else {\n return !childIsGroup(child) && !childIsHeader(child);\n }\n};\n\nexport const getChildNodes = (\n element: ReactElement\n): CollectionItem<ReactElement>[] | undefined => {\n if (childIsGroup(element)) {\n const {\n props: { children },\n } = element as ReactElement<{ children?: ReactNode }>;\n if (typeof children !== \"string\") {\n return childItems(children);\n }\n }\n};\n\nconst mapReactElementChildren = (\n children: ReactNode,\n fn: (el: ReactElement) => CollectionItem<ReactElement>\n): CollectionItem<ReactElement>[] => {\n const childElements: CollectionItem<ReactElement>[] = [];\n Children.forEach(children, (child) => {\n if (isValidElement(child)) {\n childElements.push(fn(child));\n }\n });\n return childElements;\n};\n\ntype ListItemElementProps = {\n \"data-id\"?: string;\n disabled?: boolean;\n id?: string;\n \"data-expanded\"?: boolean;\n expanded?: boolean;\n};\n\ntype CollectionItemWithoutId<T> = Omit<CollectionItem<T>, \"id\">;\n\nexport const sourceItems = <T>(\n source?: ReadonlyArray<T>,\n options?: CollectionOptions<T>\n): CollectionItemWithoutId<T>[] | undefined => {\n if (Array.isArray(source)) {\n if (source.length === 0 && options?.noChildrenLabel) {\n return [\n {\n label: options.noChildrenLabel,\n value: null,\n },\n ];\n } else {\n return source.map(\n (item: { description?: string; expanded?: boolean }) =>\n ({\n childNodes: sourceItems(\n (item as unknown as SourceGroup<T>).childNodes,\n options\n ),\n description: item.description,\n expanded: item.expanded,\n value: item,\n label:\n options?.itemToString?.(item as T) ?? defaultItemToString(item),\n } as CollectionItemWithoutId<T>)\n );\n }\n } else if (source) {\n throw Error(\"list-child-items expects source to be an array\");\n }\n};\n\nexport const childItems = (\n children: ReactNode\n): CollectionItem<ReactElement>[] | undefined => {\n if (children) {\n return mapReactElementChildren(children, (child) => {\n const {\n \"data-id\": dataId,\n disabled,\n id = dataId,\n \"data-expanded\": dataExpanded,\n expanded = dataExpanded,\n } = (child as ReactElement<ListItemElementProps>).props;\n return {\n childNodes: getChildNodes(child),\n disabled,\n expanded,\n header: childIsHeader(child),\n id,\n label: getChildLabel(child),\n selectable: childIsSelectable(child),\n value: child,\n } as CollectionItem<ReactElement>;\n });\n }\n};\n\nconst PathSeparators = new Set<string>([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nexport const isParentPath = (parentPath: string, childPath: string): boolean =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nfunction isDescendantOf(basePath: string, targetPath: string) {\n if (!targetPath.startsWith(basePath)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(basePath.length));\n }\n}\n\nexport function replaceCollectionItem<Item>(\n nodes: CollectionItem<Item>[],\n id: string,\n props: Partial<CollectionItem<Item>>\n): CollectionItem<Item>[] {\n let childNodes: CollectionItem<Item>[];\n const newNodes: CollectionItem<Item>[] = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node.id, id) && node.childNodes) {\n childNodes = replaceCollectionItem<Item>(node.childNodes, id, props);\n return {\n ...node,\n childNodes,\n };\n } else {\n return node;\n }\n });\n\n return newNodes;\n}\n", "import { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemGroupProps extends HTMLAttributes<HTMLDivElement> {\n // children?: ListItemType | ListItemType[];\n children?: JSX.Element | JSX.Element[];\n label?: string;\n}\nexport const ListItemGroup = (_: ListItemGroupProps) => null;\n", "import { HTMLAttributes } from \"react\";\n\n// Purely used as markers, props will be extracted\nexport interface ListItemHeaderProps extends HTMLAttributes<HTMLDivElement> {\n label?: string;\n}\nexport const ListItemHeader = (_: ListItemHeaderProps) => null;\n", "import { escapeRegExp } from \"../../../utils\";\n\nexport type GetFilterRegex = (inputValue: string) => RegExp;\n\nexport type FilterPredicate = (item: string) => boolean;\n\nconst leftTrim = (value: string) =>\n value ? value.replace(/^\\s+/g, \"\") : value;\n\nexport const getDefaultFilterRegex: GetFilterRegex = (value) =>\n new RegExp(`(${escapeRegExp(leftTrim(value))})`, \"gi\");\n\nexport const getDefaultFilter =\n (inputValue = \"\", getFilterRegex: GetFilterRegex = getDefaultFilterRegex) =>\n (itemValue = \"\"): boolean =>\n Boolean(itemValue.length) &&\n Boolean(inputValue.length) &&\n itemValue.match(getFilterRegex(inputValue)) !== null;\n", "import { CollectionItem } from \"../../../common-hooks/collectionTypes\";\n\nexport function isSelected<Item>(\n selectedId: string | string[] | null,\n item: CollectionItem<Item>\n): boolean {\n const isSelected = Array.isArray(selectedId)\n ? selectedId.includes(item.id)\n : selectedId === item.id;\n return isSelected;\n}\n", "import {\n Dispatch,\n isValidElement,\n SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport interface UseControlledProps<T> {\n /**\n * Holds the component value when it's controlled.\n */\n controlled?: T;\n /**\n * The default value when uncontrolled.\n */\n default: T;\n /**\n * The component name displayed in warnings.\n */\n name: string;\n /**\n * The name of the state variable displayed in warnings.\n */\n state?: string;\n}\n\n/**\n * Copied from MUI (v5) useControlled hook with one additional returned value\n * @see https://github.com/mui-org/material-ui/blob/0979e6a54ba47c278d1f535953c0520a86349811/packages/material-ui-utils/src/useControlled.js\n */\nexport function useControlled<S>({\n controlled,\n default: defaultProp,\n name,\n state = \"value\",\n}: UseControlledProps<S>): [S, Dispatch<SetStateAction<S>>, boolean] {\n const { current: isControlled } = useRef(controlled !== undefined);\n const [valueState, setValue] = useState<S>(defaultProp);\n const value = controlled !== undefined ? controlled : valueState;\n const { current: defaultValue } = useRef(defaultProp);\n\n // console.log(\n // `%cuseControlled ${name} ${state}`,\n // `color: ${isControlled ? \"blue\" : \"black\"};font-weight: bold;`,\n // {\n // controlled,\n // defaultProp,\n // }\n // );\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (isControlled !== (controlled !== undefined)) {\n console.error(\n [\n `Salt: A component is changing the ${\n isControlled ? \"\" : \"un\"\n }controlled ${state} state of ${name} to be ${\n isControlled ? \"un\" : \"\"\n }controlled.`,\n \"Elements should not switch from uncontrolled to controlled (or vice versa).\",\n `Decide between using a controlled or uncontrolled ${name} ` +\n \"element for the lifetime of the component.\",\n \"The nature of the state is determined during the first render, it's considered controlled if the value is not `undefined`.\",\n \"More info: https://fb.me/react-controlled-components\",\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [state, name, controlled]);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error(\n [\n `Salt: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` +\n `To suppress this warning opt to use a controlled ${name}.`,\n ].join(\"\\n\")\n );\n }\n }\n return undefined;\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [JSON.stringify(defaultProp, ignoreReactElements)]);\n\n const setValueIfUncontrolled: Dispatch<SetStateAction<S>> = useCallback(\n (newValue) => {\n if (!isControlled) {\n setValue(newValue);\n }\n },\n [isControlled]\n );\n\n return [value, setValueIfUncontrolled, isControlled];\n}\n\n// Ignore ReactElements in JSON, they contain circular refs\nfunction ignoreReactElements<T>(key: string, value: T): T | null {\n return isValidElement(value) ? null : value;\n}\n", "import {\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\n\nexport const WidthHeight = [\"height\", \"width\"];\nexport const WidthOnly = [\"width\"];\nexport const HeightOnly = [\"height\"];\n\nexport type measurements<T = string | number> = {\n height?: T;\n clientHeight?: number;\n clientWidth?: number;\n contentHeight?: number;\n contentWidth?: number;\n scrollHeight?: number;\n scrollWidth?: number;\n width?: T;\n};\ntype measuredDimension = keyof measurements<number>;\n\nexport type ResizeHandler = (measurements: measurements<number>) => void;\n\ntype observedDetails = {\n onResize?: ResizeHandler;\n measurements: measurements<number>;\n};\nconst observedMap = new Map<HTMLElement, observedDetails>();\n\nconst getTargetSize = (\n element: HTMLElement,\n size: {\n height: number;\n width: number;\n contentHeight: number;\n contentWidth: number;\n },\n dimension: measuredDimension\n): number => {\n switch (dimension) {\n case \"height\":\n return size.height;\n case \"clientHeight\":\n return element.clientHeight;\n case \"clientWidth\":\n return element.clientWidth;\n case \"contentHeight\":\n return size.contentHeight;\n case \"contentWidth\":\n return size.contentWidth;\n case \"scrollHeight\":\n return Math.ceil(element.scrollHeight);\n case \"scrollWidth\":\n return Math.ceil(element.scrollWidth);\n case \"width\":\n return size.width;\n default:\n return 0;\n }\n};\n\n// TODO should we make this create-on-demand\nconst resizeObserver = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n for (const entry of entries) {\n const { target, borderBoxSize, contentBoxSize } = entry;\n const observedTarget = observedMap.get(target as HTMLElement);\n if (observedTarget) {\n const [{ blockSize: height, inlineSize: width }] = borderBoxSize;\n const [{ blockSize: contentHeight, inlineSize: contentWidth }] =\n contentBoxSize;\n const { onResize, measurements } = observedTarget;\n let sizeChanged = false;\n for (const [dimension, size] of Object.entries(measurements)) {\n const newSize = getTargetSize(\n target as HTMLElement,\n { height, width, contentHeight, contentWidth },\n dimension as measuredDimension\n );\n\n if (newSize !== size) {\n sizeChanged = true;\n measurements[dimension as measuredDimension] = newSize;\n }\n }\n if (sizeChanged) {\n // TODO only return measured sizes\n onResize && onResize(measurements);\n }\n }\n }\n});\n\n// TODO use an optional lag (default to false) to ask to fire onResize\n// with initial size\nexport function useResizeObserver(\n ref: RefObject<Element | HTMLElement | null>,\n dimensions: string[],\n onResize: ResizeHandler,\n reportInitialSize = false\n) {\n const dimensionsRef = useRef(dimensions);\n const target = ref.current as HTMLElement;\n\n const measure = useCallback((target: HTMLElement): measurements<number> => {\n const { width, height } = target.getBoundingClientRect();\n const { clientWidth: contentWidth, clientHeight: contentHeight } = target;\n return dimensionsRef.current.reduce(\n (map: { [key: string]: number }, dim) => {\n map[dim] = getTargetSize(\n target,\n { width, height, contentHeight, contentWidth },\n dim as measuredDimension\n );\n return map;\n },\n {}\n );\n }, []);\n\n // TODO use ref to store resizeHandler here\n // resize handler registered with REsizeObserver will never change\n // use ref to store user onResize callback here\n // resizeHandler will call user callback.current\n\n // Keep this effect separate in case user inadvertently passes different\n // dimensions or callback instance each time - we only ever want to\n // initiate new observation when ref changes.\n useLayoutEffect(() => {\n // const target = ref.current as HTMLElement;\n async function registerObserver() {\n // Create the map entry immediately. useEffect may fire below\n // before fonts are ready and attempt to update entry\n observedMap.set(target, { measurements: {} as measurements<number> });\n await document.fonts.ready;\n const observedTarget = observedMap.get(target);\n if (observedTarget) {\n const measurements = measure(target);\n observedTarget.measurements = measurements;\n resizeObserver.observe(target);\n if (reportInitialSize) {\n onResize(measurements);\n }\n } else {\n console.log(\n `%cuseResizeObserver an target expected to be under observation wa snot found. This warrants investigation`,\n \"font-weight:bold; color:red;\"\n );\n }\n }\n\n if (target) {\n // TODO might we want multiple callers to attach a listener to the same element ?\n if (observedMap.has(target)) {\n console.log(\n \"useResizeObserver attemping to observe same element twice\",\n { target }\n );\n // throw Error(\n // \"useResizeObserver attemping to observe same element twice\"\n // );\n }\n // TODO set a pending entry on map\n registerObserver();\n }\n return () => {\n if (target && observedMap.has(target)) {\n resizeObserver.unobserve(target);\n observedMap.delete(target);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [measure, target]);\n\n useEffect(() => {\n const target = ref.current as HTMLElement;\n const record = observedMap.get(target);\n if (record) {\n if (dimensionsRef.current !== dimensions) {\n dimensionsRef.current = dimensions;\n const measurements = measure(target);\n record.measurements = measurements;\n }\n // Might not have changed, but no harm ...\n record.onResize = onResize;\n }\n }, [dimensions, measure, ref, onResize]);\n}\n", "import { MouseEventHandler, RefObject, SyntheticEvent } from \"react\";\n\nexport type SelectionDisallowed = \"none\";\nexport type SingleSelectionStrategy = \"default\" | \"deselectable\";\nexport type MultiSelectionStrategy =\n | \"multiple\"\n | \"extended\"\n | \"extended-multi-range\";\n\n/**\n * SpecialKeyMultiple works as deselectable unless a special key\n * (default SHIFT) is also pressed, then it allows multiple selection.\n * Useful for column sorting, filters etc\n */\nexport type SpecialKeyMultipleSelection = \"multiple-special-key\";\n\nexport type SelectionStrategy =\n | SelectionDisallowed\n | SingleSelectionStrategy\n | MultiSelectionStrategy;\n\nexport const isSingleSelection = (\n s?: SelectionStrategy\n): s is SingleSelectionStrategy =>\n s === undefined || s === \"default\" || s === \"deselectable\";\n\nexport const isMultiSelection = (\n s?: SelectionStrategy\n): s is MultiSelectionStrategy =>\n s === \"multiple\" || s?.startsWith(\"extended\") === true;\n\nexport type SelectHandler<Item = string> = (\n event: SyntheticEvent,\n selectedItem: Item\n) => void;\n\nexport const selectionIsDisallowed = (\n selection?: SelectionStrategy | SpecialKeyMultipleSelection\n): selection is SelectionDisallowed => selection === \"none\";\n\nexport const allowMultipleSelection = (\n selectionStrategy: SelectionStrategy | SpecialKeyMultipleSelection,\n specialKey = false\n) =>\n selectionStrategy === \"multiple\" ||\n (selectionStrategy === \"multiple-special-key\" && specialKey);\n\nexport const deselectionIsAllowed = (\n selection?: SelectionStrategy | SpecialKeyMultipleSelection\n): selection is \"deselectable\" | MultiSelectionStrategy =>\n selection !== \"none\" && selection !== \"default\";\n\nexport const hasSelection = <Item = unknown>(selected?: Item[]) =>\n selected !== undefined && selected.length > 0;\n\nexport const getFirstSelectedItem = <Item = unknown>(selected: Item[]) =>\n selected[0];\n\ninterface SelectionProps {\n defaultSelected?: string[];\n onSelect?: SelectHandler;\n onSelectionChange?: MultiSelectionHandler;\n selected?: string[];\n selectionStrategy?: SelectionStrategy;\n}\n\nexport interface ListHandlers {\n onClick?: (event: React.MouseEvent) => void;\n onKeyDown?: (event: React.KeyboardEvent) => void;\n onKeyboardNavigation?: (\n event: React.KeyboardEvent,\n currentIndex: number\n ) => void;\n onMouseMove?: (event: React.MouseEvent) => void;\n}\nexport interface SelectionHookProps extends SelectionProps {\n containerRef: RefObject<HTMLElement>;\n disableSelection?: boolean;\n highlightedIndex: number;\n itemQuery: string;\n label?: string;\n onClick?: MouseEventHandler;\n selectionKeys?: string[];\n tabToSelect?: boolean;\n}\n\nexport interface SelectionHookResult {\n listHandlers: ListHandlers;\n selected: string[];\n setSelected: (selected: string[]) => void;\n}\n\n/**\n * evt is only null in the special case of a selection fired from a multi-select\n * host on tab or selection based on freeform text in combobox\n */\nexport type MultiSelectionHandler<Item = string> = (\n event: SyntheticEvent | null,\n selected: Item[]\n) => void;\n/**\n * evt is only null in the special case of freeform text in combobox\n */\nexport type SingleSelectionHandler<Item = string> = (\n event: SyntheticEvent | null,\n selected: Item\n) => void;\n\nexport type SelectionType<\n I,\n S extends SelectionStrategy\n> = S extends MultiSelectionStrategy ? I[] : I | null;\n\nexport interface ComponentSelectionProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> {\n defaultSelected?: S extends MultiSelectionStrategy ? Item[] : Item;\n onSelect?: SelectHandler<Item>;\n onSelectionChange?: S extends MultiSelectionStrategy\n ? MultiSelectionHandler<Item>\n : SingleSelectionHandler<Item>;\n selected?: SelectionType<Item, S>;\n selectionStrategy?: S;\n /**\n * The keyboard keys used to effect selection, defaults to SPACE and ENTER\n * TODO maybe this belongs on the SelectionProps interface ?\n */\n selectionKeys?: string[];\n}\n", "import {\n Dispatch,\n MutableRefObject,\n SetStateAction,\n useCallback,\n useRef,\n useState,\n} from \"react\";\n\nconst isSimpleStateValue = <T>(arg: SetStateAction<T>): arg is T =>\n typeof arg !== \"function\";\n\n// Keeps a ref value in sync with a state value\nexport const useStateRef = <T = string>(\n initialValue: T\n): [MutableRefObject<T>, Dispatch<SetStateAction<T>>] => {\n const [value, _setValue] = useState<T>(initialValue);\n const ref = useRef<T>(value);\n\n const setValue = useCallback<Dispatch<SetStateAction<T>>>((arg) => {\n if (isSimpleStateValue(arg)) {\n ref.current = arg;\n _setValue(arg);\n } else {\n const { current: prev } = ref;\n ref.current = arg(prev);\n _setValue(ref.current);\n }\n }, []);\n return [ref, setValue];\n};\n", "import { RefObject, useEffect, useRef } from \"react\";\nimport { CloseReason } from \"./dropdownTypes\";\n\nexport type ClickawayHook = (props: {\n popperRef: RefObject<HTMLElement>;\n rootRef: RefObject<HTMLElement>;\n isOpen: boolean;\n onClose: (reason: CloseReason) => void;\n}) => void;\n\ntype MouseEventHandler = (e: MouseEvent) => void;\ntype KeyboardEventHandler = (e: KeyboardEvent) => void;\n\nconst NO_HANDLERS: [MouseEventHandler?, KeyboardEventHandler?] = [];\n\nexport const useClickAway: ClickawayHook = ({\n popperRef,\n rootRef,\n isOpen,\n onClose,\n}) => {\n //TODO usePropBackedRef\n const openRef = useRef(isOpen);\n useEffect(() => {\n openRef.current = isOpen;\n }, [isOpen]);\n\n useEffect(() => {\n const [clickHandler, escapeKeyHandler] = isOpen\n ? [\n (evt: MouseEvent) => {\n const targetElement = evt.target as HTMLElement;\n if (\n !popperRef.current?.contains(targetElement) &&\n !rootRef.current?.contains(targetElement)\n ) {\n onClose(\"click-away\");\n }\n },\n (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n if (openRef.current) {\n onClose(\"Escape\");\n e.stopPropagation();\n }\n }\n },\n ]\n : NO_HANDLERS;\n\n if (clickHandler && escapeKeyHandler) {\n document.body.addEventListener(\"mousedown\", clickHandler, true);\n document.body.addEventListener(\"keydown\", escapeKeyHandler, true);\n }\n\n return () => {\n if (clickHandler && escapeKeyHandler) {\n document.body.removeEventListener(\"mousedown\", clickHandler, true);\n document.body.removeEventListener(\"keydown\", escapeKeyHandler, true);\n }\n };\n }, [isOpen, onClose, popperRef, rootRef]);\n};\n", "import { Button, ButtonProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { AriaAttributes, ForwardedRef, forwardRef } from \"react\";\n\nimport \"./DropdownButton.css\";\n\nexport interface DropdownButtonProps extends ButtonProps {\n /**\n * Replace the default Icon component\n */\n icon?: string;\n /**\n * Whether the dropdown button should hide role='option' via 'aria-hidden'\n */\n ariaHideOptionRole?: boolean;\n /**\n * If, `true`, the Dropdown button will occupy the full width of it's container\n */\n fullWidth?: boolean;\n /**\n * Is the dropdown list open\n */\n isOpen?: boolean;\n /**\n * Label for the dropdown button\n */\n label?: string;\n /**\n * Id for the label. This is needed for ARIA attributes.\n */\n labelId?: string;\n /**\n * When the dropdown is collapsed this value is set as aria-posinset on the span containing the selected value\n * **/\n posInSet?: number;\n /**\n * When the dropdown is collapsed this value is set as aria-setsize on the span containing the selected value\n * **/\n setSize?: number;\n /**\n *\n * **/\n labelAriaAttributes?: Pick<\n AriaAttributes,\n \"aria-posinset\" | \"aria-setsize\" | \"aria-selected\"\n >;\n}\n\nconst classBase = \"vuuDropdownButton\";\n\nexport const DropdownButton = forwardRef(function DropdownButton(\n {\n ariaHideOptionRole,\n className,\n disabled,\n icon = \"chevron-down\",\n isOpen,\n label,\n labelId,\n fullWidth,\n posInSet,\n setSize,\n labelAriaAttributes,\n ...rest\n }: DropdownButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n // FIXME: use polymorphic button\n // We don't want the 'button' tag to be shown in the DOM to trigger some accessibility testing\n // tool's false alarm on role of 'listbox'\n return (\n <Button\n className={cx(\n classBase,\n {\n [`${classBase}-fullWidth`]: fullWidth,\n },\n className\n )}\n disabled={disabled}\n variant=\"secondary\"\n {...rest}\n ref={ref}\n >\n <div className={`${classBase}-content`}>\n <span\n // 'hidden' so that screen reader won't be confused the additional 'option' which is just a label\n aria-hidden={ariaHideOptionRole ? \"true\" : undefined}\n {...labelAriaAttributes}\n className={`${classBase}-buttonLabel`}\n id={labelId}\n // 'option' role here is to suppress accessibility testing tool warning about 'listbox' missing children role.\n role=\"option\"\n >\n {label}\n </span>\n <span\n className={`${classBase}-buttonIcon`}\n data-icon={icon}\n aria-hidden=\"true\"\n />\n </div>\n </Button>\n );\n});\n", "import { useForkRef } from \"@salt-ds/core\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\n\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport {\n CollectionProvider,\n itemToString as defaultItemToString,\n SelectionStrategy,\n SelectionType,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { List, ListProps } from \"../list\";\nimport { forwardCallbackProps } from \"../utils\";\nimport { DropdownBase, MaybeChildProps } from \"./DropdownBase\";\nimport { DropdownButton } from \"./DropdownButton\";\nimport { DropdownBaseProps } from \"./dropdownTypes\";\nimport { useDropdown } from \"./useDropdown\";\n\nexport interface DropdownProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends DropdownBaseProps,\n Pick<\n ListProps<Item, S>,\n | \"ListItem\"\n | \"defaultSelected\"\n | \"itemToString\"\n | \"onSelect\"\n | \"onSelectionChange\"\n | \"selected\"\n | \"selectionStrategy\"\n | \"source\"\n | \"width\"\n > {\n // TODO There is overlap here between ListProps and top level List props\n ListProps?: Omit<ListProps<Item, S>, \"ListItem\" | \"itemToString\" | \"source\">;\n}\n\nexport const Dropdown = forwardRef(function Dropdown<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n \"aria-label\": ariaLabel,\n children,\n defaultIsOpen,\n defaultSelected,\n id: idProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: selectedProp,\n selectionStrategy,\n source,\n triggerComponent,\n ListItem,\n ListProps,\n width = 180,\n ...props\n }: DropdownProps<Item, S>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const forkedRef = useForkRef<HTMLDivElement>(rootRef, forwardedRef);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n itemToString,\n },\n });\n\n const {\n highlightedIndex,\n triggerLabel,\n listHandlers,\n listControlProps,\n selected,\n ...dropdownListHook\n } = useDropdown<Item, S>({\n collectionHook,\n defaultHighlightedIndex: ListProps?.defaultHighlightedIndex,\n defaultIsOpen,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n highlightedIndex: ListProps?.highlightedIndex,\n isOpen: isOpenProp,\n itemToString,\n listRef,\n onHighlight: ListProps?.onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n });\n\n const itemIdToItem = useCallback(\n (itemId: string | string[]) => {\n if (Array.isArray(itemId)) {\n const items = itemId.map((id) => collectionHook.itemById(id));\n return items as SelectionType<Item, S>;\n } else {\n return collectionHook.itemById(itemId) as SelectionType<Item, S>;\n }\n },\n [collectionHook]\n );\n\n const getTriggerComponent = () => {\n const ariaProps = {\n \"aria-activedescendant\": dropdownListHook.isOpen\n ? listControlProps?.[\"aria-activedescendant\"]\n : undefined,\n \"aria-label\": ariaLabel,\n };\n if (triggerComponent) {\n const ownProps = triggerComponent.props as MaybeChildProps;\n return cloneElement(\n triggerComponent,\n forwardCallbackProps(ownProps, {\n ...(dropdownListHook.isOpen ? listControlProps : {}),\n ...ariaProps,\n })\n );\n } else {\n return (\n <DropdownButton\n label={triggerLabel}\n {...(dropdownListHook.isOpen ? listControlProps : {})}\n {...ariaProps}\n />\n );\n }\n };\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n id={id}\n isOpen={dropdownListHook.isOpen}\n onOpenChange={dropdownListHook.onOpenChange}\n placement={\n ListProps?.width === undefined ? \"below-full-width\" : \"below\"\n }\n ref={forkedRef}\n width={width}\n >\n {getTriggerComponent()}\n <List<Item, S>\n ListItem={ListItem}\n itemToString={itemToString}\n {...ListProps}\n highlightedIndex={highlightedIndex}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n onSelect={onSelect}\n ref={listRef}\n selected={selected === undefined ? undefined : itemIdToItem(selected)}\n selectionStrategy={selectionStrategy}\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, S extends SelectionStrategy = \"default\">(\n props: DropdownProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<DropdownProps<Item>>;\n", "import React from \"react\";\n\nfunction union<T>(set1: Set<T>, ...sets: Set<T>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Home = \"Home\";\nexport const End = \"End\";\nexport const PageUp = \"PageUp\";\nexport const PageDown = \"PageDown\";\nexport const Space = \" \";\n\nconst actionKeys = new Set([\"Enter\", \"Delete\", \" \"]);\nconst focusKeys = new Set([\"Tab\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst navigationKeys = new Set([\n Home,\n End,\n PageUp,\n PageDown,\n ArrowDown,\n ArrowUp,\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n navigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: React.KeyboardEvent): boolean => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n return evt.key.length === 1 && !evt.ctrlKey && !evt.metaKey && !evt.altKey;\n};\n\nexport const isNavigationKey = ({ key }: React.KeyboardEvent): boolean => {\n return navigationKeys.has(key);\n};\n", "import { MouseEvent, useCallback } from \"react\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./keyUtils\";\nimport { ListHandlers } from \"../../common-hooks\";\nimport {\n CollectionHookResult,\n CollectionItem,\n} from \"../../common-hooks/collectionTypes\";\n\nconst NO_HANDLERS = {};\nconst canToggleItem = (item: CollectionItem<unknown>) =>\n Array.isArray(item.childNodes);\n// TODO how do we determine this and where does this function belong = in the collectionHook ?\nconst canSelectItem = (_: CollectionItem<unknown>) => true;\n\nconst toggleIconClicked = (el: HTMLElement) => {\n const closestToggle = el.closest(\n \"[data-toggle],[aria-expanded]\"\n ) as HTMLElement;\n return closestToggle.dataset.toggle === \"true\";\n};\n\ninterface CollapsibleHookProps<Item> {\n collapsibleHeaders?: boolean;\n collectionHook: CollectionHookResult<Item>;\n highlightedIdx: number;\n onToggle?: (node: Item) => void;\n}\n\ninterface CollapsibleHookResult<Item> {\n onClick?: ListHandlers[\"onClick\"];\n onKeyDown?: ListHandlers[\"onKeyDown\"];\n}\n\nexport const useCollapsibleGroups = <Item>({\n collapsibleHeaders,\n collectionHook,\n highlightedIdx,\n onToggle,\n}: CollapsibleHookProps<Item>): CollapsibleHookResult<Item> => {\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded === false && item.value) {\n e.preventDefault();\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const item = collectionHook.data[highlightedIdx];\n if (item) {\n if (item.expanded && item.value) {\n e.preventDefault();\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent<HTMLElement>) => {\n console.log(`useCollapsibleGroups idx=${highlightedIdx}`);\n const item = collectionHook.data[highlightedIdx];\n console.log(evt.target, evt.currentTarget);\n if (\n item &&\n canToggleItem(item) &&\n (!canSelectItem(item) || toggleIconClicked(evt.target as HTMLElement))\n ) {\n evt.stopPropagation();\n evt.preventDefault();\n if (item.expanded === false && item.value) {\n collectionHook.expandGroupItem(item);\n onToggle?.(item.value);\n } else if (item.expanded === true && item.value) {\n collectionHook.collapseGroupItem(item);\n onToggle?.(item.value);\n }\n }\n },\n [\n collectionHook.collapseGroupItem,\n collectionHook.data,\n collectionHook.expandGroupItem,\n highlightedIdx,\n ]\n );\n\n /**\n * These are List handlers, so we will not have reference to the actual node\n * element. We must rely on highlightedIdx to tell us which node is interactive.\n */\n const listHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n };\n\n return collapsibleHeaders ? listHandlers : NO_HANDLERS;\n};\n", "export const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl?: HTMLElement) {\n if (listItemEl) {\n let idx: string | null | undefined = listItemEl.dataset.index;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if ((idx = listItemEl.ariaPosInSet)) {\n return parseInt(idx, 10) - 1;\n }\n }\n return -1;\n}\n\nexport const listItemId = (el: HTMLElement | null) => el?.id;\n\nconst closestListItem = (el: HTMLElement) =>\n el.closest(\"[data-index],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import {\n ForwardedRef,\n MutableRefObject,\n useImperativeHandle,\n useMemo,\n} from \"react\";\nimport {\n CollectionHookResult,\n CollectionItem,\n} from \"../../common-hooks/collectionTypes\";\n\nexport interface ScrollingAPI<Item> {\n scrollToIndex: (itemIndex: number) => void;\n scrollToItem: (item: Item) => void;\n scrollTo: (scrollOffset: number) => void;\n}\n\nexport interface ScrollingAPIHook<Item> {\n collectionHook: CollectionHookResult<Item>;\n forwardedRef?: ForwardedRef<ScrollingAPI<Item>>;\n scrollableRef: MutableRefObject<HTMLElement | null>;\n scrollIntoView?: (item: CollectionItem<Item>) => void;\n}\n\nconst noScrolling: ScrollingAPI<unknown> = {\n scrollToIndex: () => undefined,\n scrollToItem: () => undefined,\n scrollTo: () => undefined,\n};\n\nexport const useImperativeScrollingAPI = <Item>({\n collectionHook,\n forwardedRef,\n scrollableRef,\n scrollIntoView,\n}: ScrollingAPIHook<Item>) => {\n const scrollHandles: ScrollingAPI<Item> = useMemo(\n () => ({\n scrollToIndex: (itemIndex: number) => {\n const collectionItem = collectionHook.data[itemIndex];\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollToItem: (item: Item) => {\n const collectionItem = collectionHook.toCollectionItem(item);\n if (collectionItem) {\n scrollIntoView?.(collectionItem);\n }\n },\n scrollTo: (scrollOffset: number) => {\n if (scrollableRef?.current) {\n scrollableRef.current.scrollTop = scrollOffset;\n }\n },\n }),\n [collectionHook, scrollIntoView, scrollableRef]\n );\n\n useImperativeHandle(\n forwardedRef,\n () => {\n if (scrollableRef.current) {\n return scrollHandles;\n } else {\n return noScrolling;\n }\n },\n [scrollHandles, scrollableRef]\n );\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n End,\n Home,\n isCharacterKey,\n isNavigationKey,\n PageDown,\n PageUp,\n} from \"./keyUtils\";\nimport {\n NavigationHookProps,\n NavigationHookResult,\n getFirstSelectedItem,\n hasSelection,\n} from \"../../common-hooks\";\nimport { getElementByDataIndex, isValidNumber } from \"@vuu-ui/vuu-utils\";\n\nexport const LIST_FOCUS_VISIBLE = -2;\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === End) {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst getIndexOfSelectedItem = (selected?: string[]) => {\n const selectedItemId = Array.isArray(selected)\n ? getFirstSelectedItem(selected)\n : undefined;\n if (selectedItemId) {\n const el = document.getElementById(selectedItemId) as HTMLElement;\n if (el) {\n const index = parseInt(el.dataset.index ?? \"-1\");\n if (isValidNumber(index)) {\n return index;\n }\n }\n }\n return -1;\n};\n\nconst getStartIdx = (\n key: string,\n idx: number,\n selectedIdx: number,\n length: number\n) => {\n if (key === End) {\n return length;\n } else if (key === Home) {\n return -1;\n } else if (idx !== -1) {\n return idx;\n } else {\n return selectedIdx;\n }\n};\n\nconst pageDown = (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n itemCount: number,\n index: number\n): number | undefined => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight, scrollHeight } = containerEl;\n const lastIndexPosition = itemCount - 1;\n const newScrollTop = Math.min(\n scrollTop + clientHeight,\n scrollHeight - clientHeight\n );\n if (newScrollTop !== scrollTop && index < lastIndexPosition) {\n containerEl.scrollTo(0, newScrollTop);\n // Might need to do this in a timeout, in case virtualized content has rendered\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx += 1;\n nextRect = getElementByDataIndex(\n containerEl,\n nextIdx,\n true\n ).getBoundingClientRect();\n } while (nextRect.top < itemTop && nextIdx < lastIndexPosition);\n return nextIdx;\n }\n};\n\nconst pageUp = async (\n containerEl: HTMLElement,\n itemEl: HTMLElement,\n index: number\n): Promise<number | undefined> => {\n const { top: itemTop } = itemEl.getBoundingClientRect();\n const { scrollTop, clientHeight } = containerEl;\n const newScrollTop = Math.max(scrollTop - clientHeight, 0);\n if (newScrollTop !== scrollTop && index > 0) {\n containerEl.scrollTo(0, newScrollTop);\n return new Promise((resolve) => {\n // We must defer this operation until after render. If Items are virtualized.\n // we need to allow them to be rendered.\n requestAnimationFrame(() => {\n let nextIdx = index;\n let nextRect;\n do {\n nextIdx -= 1;\n nextRect = getElementByDataIndex(\n containerEl,\n nextIdx,\n true\n ).getBoundingClientRect();\n } while (nextRect.top > itemTop && nextIdx > 0);\n resolve(nextIdx);\n });\n });\n }\n};\n\n// const isLeaf = <Item>(item: CollectionItem<Item>): boolean =>\n// !item.header && !item.childNodes;\nconst isLeaf = (element?: HTMLElement) => element !== undefined;\n// const isFocusable = <Item>(item: CollectionItem<Item>) =>\n// isLeaf(item) || item.expanded !== undefined;\n// TODO read dom element and check for leaf item or toggleable group\nconst isFocusable = (container: HTMLElement, index: number) => {\n const targetEl = getElementByDataIndex(container, index);\n return isLeaf(targetEl);\n};\n\nexport const useKeyboardNavigation = ({\n containerRef,\n defaultHighlightedIndex = -1,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n itemCount,\n onHighlight,\n onKeyboardNavigation,\n restoreLastFocus,\n selected,\n // TODO\n viewportItemCount,\n}: NavigationHookProps): NavigationHookResult => {\n const lastFocus = useRef(-1);\n const [, forceRender] = useState({});\n const [highlightedIndex, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIndexProp,\n default: defaultHighlightedIndex,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx: number, fromKeyboard = false) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n if (fromKeyboard) {\n lastFocus.current = idx;\n }\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextPageItemIdx = useCallback(\n async (\n key: \"PageDown\" | \"PageUp\" | \"Home\" | \"End\",\n index: number\n ): Promise<number> => {\n const itemEl = getElementByDataIndex(containerRef.current, index, true);\n let result: number | undefined;\n if (itemEl) {\n const { current: containerEl } = containerRef;\n if (itemEl && containerEl) {\n result =\n key === PageDown\n ? pageDown(containerEl, itemEl, itemCount, index)\n : await pageUp(containerEl, itemEl, index);\n }\n }\n return result ?? index;\n },\n [containerRef, itemCount]\n );\n\n const nextFocusableItemIdx = useCallback(\n (key = ArrowDown, idx: number = key === ArrowDown ? -1 : itemCount) => {\n //TODO we don't seem to have selectedhere first time after selection\n if (itemCount === 0) {\n return -1;\n } else {\n const isEnd = key === \"End\";\n const isHome = key === \"Home\";\n // The start index is generally the highlightedIdx (passed in as idx).\n // We don't need it for Home and End navigation.\n // Special case where we have selection, but no highlighting - begin\n // navigation from selected item.\n const indexOfSelectedItem =\n isEnd || isHome || idx === -1 ? -1 : getIndexOfSelectedItem(selected);\n const startIdx = getStartIdx(key, idx, indexOfSelectedItem, itemCount);\n let nextIdx = nextItemIdx(itemCount, key, startIdx);\n\n const { current: container } = containerRef;\n // Guard against returning zero, when first item is a header or group\n if (\n nextIdx === 0 &&\n key === ArrowUp &&\n container &&\n !isFocusable(container, 0)\n ) {\n return idx;\n }\n // TODO this is causing an infinite loop in some scenarios\n while (\n (((key === ArrowDown || isHome) && nextIdx < itemCount) ||\n ((key === ArrowUp || isEnd) && nextIdx > 0)) &&\n container &&\n !isFocusable(container, nextIdx)\n ) {\n nextIdx = nextItemIdx(itemCount, key, nextIdx);\n }\n return nextIdx;\n }\n },\n [containerRef, itemCount, selected]\n );\n\n // does this belong here or should it be a method passed in?\n const keyboardNavigation = useRef(false);\n const ignoreFocus = useRef<boolean>(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(() => {\n // Ignore focus if mouse has been used\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else {\n // If mouse wan't used, then keyboard must have been\n keyboardNavigation.current = true;\n if (itemCount === 0) {\n setHighlightedIndex(LIST_FOCUS_VISIBLE);\n } else if (highlightedIndex !== -1) {\n // We need to force a render here. We're not changing the highlightedIdx, but we want to\n // make sure we render with the correct focusVisible value. We don't store focusVisible\n // in state, as there are places where we would double render, as highlightedIdx also changes.\n forceRender({});\n } else if (restoreLastFocus) {\n if (lastFocus.current !== -1) {\n setHighlightedIndex(lastFocus.current);\n } else {\n const selectedItemIdx = getIndexOfSelectedItem(selected);\n if (selectedItemIdx !== -1) {\n setHighlightedIndex(selectedItemIdx);\n } else {\n setHighlightedIndex(0);\n }\n }\n } else if (hasSelection(selected)) {\n const selectedItemIdx = getIndexOfSelectedItem(selected);\n setHighlightedIndex(selectedItemIdx);\n } else if (disableHighlightOnFocus !== true) {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }\n }, [\n disableHighlightOnFocus,\n highlightedIndex,\n itemCount,\n nextFocusableItemIdx,\n restoreLastFocus,\n selected,\n setHighlightedIndex,\n ]);\n\n const navigateChildItems = useCallback(\n async (e: KeyboardEvent) => {\n const nextIdx =\n e.key === PageDown || e.key === PageUp\n ? await nextPageItemIdx(e.key, highlightedIndex)\n : nextFocusableItemIdx(e.key, highlightedIndex);\n\n if (nextIdx !== highlightedIndex) {\n setHighlightedIndex(nextIdx, true);\n }\n // Users may need to know that a Keyboard navigation event has been handled\n // even if no actual navigation was effected. e.g. fine-grained control\n // over aria-activedescendant requires this.\n onKeyboardNavigation?.(e, nextIdx);\n },\n [\n highlightedIndex,\n nextFocusableItemIdx,\n nextPageItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (itemCount > 0 && isNavigationKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n keyboardNavigation.current = true;\n void navigateChildItems(e);\n } else if (isCharacterKey(e)) {\n keyboardNavigation.current = true;\n }\n },\n [itemCount, navigateChildItems]\n );\n\n const containerProps = useMemo(() => {\n return {\n onBlur: (e: FocusEvent) => {\n //TODO no direct ref to List\n const sourceTarget = (e.target as HTMLElement).closest(\".vuuList\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n keyboardNavigation.current = false;\n setHighlightedIdx(-1);\n if (!restoreLastFocus) {\n lastFocus.current = -1;\n }\n }\n },\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyboardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n onMouseMove: () => {\n if (keyboardNavigation.current) {\n keyboardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyboardNavigation.current = false;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n };\n }, [\n handleFocus,\n handleKeyDown,\n restoreLastFocus,\n setHighlightedIdx,\n setHighlightedIndex,\n ]);\n\n return {\n focusVisible: keyboardNavigation.current ? highlightedIndex : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIndex,\n setHighlightedIndex,\n keyboardNavigation,\n containerProps,\n setIgnoreFocus,\n };\n};\n", "import {\n getElementByDataIndex,\n getElementDataIndex,\n isSelectableElement,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport {\n SelectionHookProps,\n SelectionHookResult,\n selectionIsDisallowed,\n} from \"./selectionTypes\";\nimport { useControlled } from \"./useControlled\";\n\nexport const CHECKBOX = \"checkbox\";\n\nexport const GROUP_SELECTION_NONE = \"none\";\nexport const GROUP_SELECTION_SINGLE = \"single\";\nexport const GROUP_SELECTION_CASCADE = \"cascade\";\n\nexport type GroupSelectionMode = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nexport const groupSelectionEnabled = (\n groupSelection: GroupSelectionMode\n): boolean => groupSelection && groupSelection !== GROUP_SELECTION_NONE;\n\nexport const useSelection = ({\n containerRef,\n defaultSelected,\n disableSelection = false,\n // groupSelection = GROUP_SELECTION_NONE,\n highlightedIndex,\n itemQuery,\n onClick,\n // label,\n onSelect,\n onSelectionChange,\n selected: selectedProp,\n selectionStrategy,\n selectionKeys = defaultSelectionKeys,\n tabToSelect,\n}: SelectionHookProps): SelectionHookResult => {\n const isDeselectable = selectionStrategy === \"deselectable\";\n const isMultipleSelect = selectionStrategy === \"multiple\";\n const isExtendedSelect = selectionStrategy === \"extended\";\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const [selected, setSelected] = useControlled<string[]>({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"UseSelection\",\n state: \"selected\",\n });\n\n // console.log(\n // `useSelection\n // defaultSelected ${JSON.stringify(defaultSelected)}\n // selectedProp ${JSON.stringify(selectedProp)}\n // selected ${JSON.stringify(selected)}`\n // );\n\n const isItemSelected = useCallback(\n (itemId: string) => selected.includes(itemId),\n [selected]\n );\n\n const selectDeselectable = useCallback(\n (itemId: string) => (isItemSelected(itemId) ? [] : [itemId]),\n [isItemSelected]\n );\n const selectMultiple = useCallback(\n (itemId: string) => {\n const nextItems = isItemSelected(itemId)\n ? (selected as string[]).filter((i) => i !== itemId)\n : (selected as string[]).concat(itemId);\n nextItems.sort();\n return nextItems;\n },\n [isItemSelected, selected]\n );\n const selectRange = useCallback(\n (idx: number, preserveExistingSelection?: boolean) => {\n const currentSelection = preserveExistingSelection\n ? (selected as string[])\n : ([] as string[]);\n\n const [lastSelectedItemId] = (selected as string[]).slice(-1);\n const lastSelectedItemIndex = lastSelectedItemId\n ? getElementDataIndex(document.getElementById(lastSelectedItemId))\n : 0;\n\n const startRegion = Math.min(idx, lastSelectedItemIndex);\n const endRegion = Math.max(idx, lastSelectedItemIndex);\n\n const container = containerRef.current as HTMLElement;\n const allItems = Array.from(\n container.querySelectorAll(itemQuery)\n ) as HTMLElement[];\n const rangeSelection = allItems\n .slice(startRegion, endRegion + 1)\n .map((el) => el.id);\n // concat the current selection with a new selection and remove duplicates for overlaps\n const nextItems = [...new Set([...currentSelection, ...rangeSelection])];\n nextItems.sort();\n return nextItems;\n },\n [containerRef, itemQuery, selected]\n );\n\n const selectItemAtIndex = useCallback(\n (\n evt: SyntheticEvent,\n idx: number,\n rangeSelect: boolean,\n preserveExistingSelection?: boolean\n ) => {\n const { current: container } = containerRef;\n const { id } = getElementByDataIndex(container, idx, true);\n\n let newSelected;\n if (isMultipleSelect) {\n newSelected = selectMultiple(id);\n } else if (isExtendedSelect) {\n if (preserveExistingSelection && !rangeSelect) {\n newSelected = selectMultiple(id);\n } else if (rangeSelect) {\n newSelected = selectRange(idx, preserveExistingSelection);\n } else {\n newSelected = [id];\n }\n } else if (isDeselectable) {\n newSelected = selectDeselectable(id);\n } else {\n newSelected = [id];\n }\n\n if (newSelected !== selected) {\n setSelected(newSelected);\n }\n\n // We fire onSelect irrespective of whether selection changes\n onSelect?.(evt, id);\n\n if (newSelected !== selected) {\n if (onSelectionChange) {\n onSelectionChange(evt, newSelected);\n }\n }\n },\n [\n containerRef,\n isMultipleSelect,\n isExtendedSelect,\n isDeselectable,\n selected,\n onSelect,\n selectMultiple,\n selectRange,\n selectDeselectable,\n setSelected,\n onSelectionChange,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, highlightedIndex);\n if (isSelectableElement(element)) {\n if (isSelectionEvent(evt) || (tabToSelect && evt.key === \"Tab\")) {\n // We do not inhibit Tab behaviour, if we are selecting on Tab then we apply\n // selection as a side effect of the Tab, not as a replacement for Tabbing.\n if (evt.key !== \"Tab\") {\n evt.preventDefault();\n }\n selectItemAtIndex(\n evt,\n highlightedIndex,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIndex;\n }\n }\n }\n },\n [\n highlightedIndex,\n containerRef,\n isSelectionEvent,\n tabToSelect,\n selectItemAtIndex,\n isExtendedSelect,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (isExtendedSelect && evt.shiftKey) {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, currentIndex);\n if (isSelectableElement(element)) {\n selectItemAtIndex(evt, currentIndex, true);\n }\n }\n },\n [isExtendedSelect, containerRef, selectItemAtIndex]\n );\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n const { current: container } = containerRef;\n const element = getElementByDataIndex(container, highlightedIndex);\n if (!disableSelection && isSelectableElement(element)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIndex,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (isExtendedSelect) {\n lastActive.current = highlightedIndex;\n }\n }\n onClick?.(evt);\n },\n [\n containerRef,\n highlightedIndex,\n disableSelection,\n onClick,\n selectItemAtIndex,\n isExtendedSelect,\n ]\n );\n\n const listHandlers = selectionIsDisallowed(selectionStrategy)\n ? {\n onClick,\n }\n : {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n return {\n listHandlers,\n selected,\n setSelected,\n };\n};\n", "import { useCallback, useRef } from \"react\";\nimport { isCharacterKey, Space } from \"./keyUtils\";\nimport { CollectionItem } from \"../../common-hooks/collectionTypes\";\n\ninterface TypeaheadHookProps<Item> {\n disableTypeToSelect?: boolean;\n highlightedIdx: number;\n highlightItemAtIndex: (idx: number) => void;\n applyIncrementalSearch?: boolean;\n typeToNavigate: boolean;\n items: CollectionItem<Item>[];\n}\n\ninterface TypeaheadHookResult {\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nexport const useTypeahead = <Item>({\n disableTypeToSelect,\n highlightedIdx,\n highlightItemAtIndex,\n typeToNavigate,\n items,\n applyIncrementalSearch = true,\n}: TypeaheadHookProps<Item>): TypeaheadHookResult => {\n const keyDownTimer = useRef<number | null>(null);\n const searchChars = useRef(\"\");\n const startIdx = useRef(-1);\n\n const applySearch = useCallback(\n (intermediateSearch?: true | undefined) => {\n if (intermediateSearch || !applyIncrementalSearch) {\n const regex = new RegExp(`^${searchChars.current}`, \"i\");\n let idx = items.findIndex(\n ({ label }, i) => i > startIdx.current && regex.test(label!)\n );\n if (idx === -1) {\n idx = items.findIndex(\n ({ label }, i) => i <= startIdx.current && regex.test(label!)\n );\n }\n if (idx !== -1) {\n highlightItemAtIndex(idx);\n }\n } else {\n searchChars.current = \"\";\n keyDownTimer.current = null;\n startIdx.current = -1;\n }\n },\n [applyIncrementalSearch, highlightItemAtIndex, items]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const searchInProgress = startIdx.current !== -1;\n if (isCharacterKey(e) || (searchInProgress && e.key === Space)) {\n if (typeToNavigate) {\n e.preventDefault();\n e.stopPropagation();\n // If we type the same key repeatedly, we cycle through the matches\n if (startIdx.current === -1 || e.key === searchChars.current) {\n startIdx.current = highlightedIdx;\n }\n if (keyDownTimer.current !== null) {\n clearTimeout(keyDownTimer.current);\n keyDownTimer.current = null;\n }\n if (e.key !== searchChars.current) {\n searchChars.current += e.key;\n }\n if (applyIncrementalSearch) {\n applySearch(true);\n }\n // keyDownTimer.current = window.setTimeout(applySearch, 100);\n keyDownTimer.current = window.setTimeout(() => {\n applySearch();\n }, 100);\n }\n }\n },\n [typeToNavigate, applyIncrementalSearch, highlightedIdx, applySearch]\n );\n\n return {\n onKeyDown: disableTypeToSelect ? undefined : handleKeyDown,\n };\n};\n", "import { MutableRefObject, RefObject, useCallback, useRef } from \"react\";\nimport { CollectionItem } from \"../../common-hooks/collectionTypes\";\nimport { ResizeHandler, useResizeObserver } from \"../../common-hooks\";\nimport { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\n\nconst HeightOnly = [\"height\"];\nconst HeightWithScroll = [\"height\", \"scrollHeight\"];\nconst EMPTY_ARRAY: any[] = [];\n\nconst ObservedDimensions = {\n containerOnly: [HeightWithScroll, EMPTY_ARRAY],\n withContent: [HeightOnly, HeightOnly],\n};\nconst getObservedDimensions = (containerOnly: boolean) =>\n containerOnly\n ? ObservedDimensions.containerOnly\n : ObservedDimensions.withContent;\n\nconst NULL_REF = { current: null };\n\nconst getItemTop = (\n element: HTMLElement,\n offsetContainer: HTMLElement | null\n) => {\n const { transform = \"none\" } = getComputedStyle(element);\n if (transform.startsWith(\"matrix\")) {\n const pos = transform.lastIndexOf(\",\");\n return parseInt(transform.slice(pos + 1));\n } else {\n let offsetParent = element.offsetParent as HTMLElement;\n if (offsetParent === offsetContainer || offsetContainer === null) {\n return element.offsetTop;\n } else {\n let top = element.offsetTop;\n while (offsetParent !== null && offsetParent !== offsetContainer) {\n top += offsetParent.offsetTop;\n offsetParent = offsetParent.offsetParent as HTMLElement;\n }\n return top;\n }\n }\n};\n\nexport interface ViewportTrackingProps<Item> {\n containerRef: RefObject<HTMLElement>;\n contentRef?: RefObject<HTMLElement>;\n highlightedIdx?: number;\n indexPositions: CollectionItem<Item>[];\n stickyHeaders?: boolean;\n}\n\nexport interface ViewportTrackingResult<Item> {\n isScrolling: MutableRefObject<boolean>;\n scrollIntoView: (item: CollectionItem<Item>) => void;\n}\n\nexport const useViewportTracking = <Item>({\n containerRef,\n contentRef = NULL_REF,\n highlightedIdx = -1,\n indexPositions,\n stickyHeaders = false,\n}: ViewportTrackingProps<Item>): ViewportTrackingResult<Item> => {\n const scrolling = useRef<boolean>(false);\n const viewport = useRef({\n height: 0,\n contentHeight: 0,\n });\n\n const scrollTo = useCallback((scrollPos: number) => {\n scrolling.current = true;\n if (containerRef.current) {\n containerRef.current.scrollTop = scrollPos;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }, []);\n\n const scrollToStart = useCallback(() => scrollTo(0), [scrollTo]);\n\n const scrollToEnd = useCallback(() => {\n scrollTo(viewport.current.contentHeight - viewport.current.height);\n }, [scrollTo]);\n\n const scrollIntoViewIfNeeded = useCallback(\n (item: CollectionItem<Item>) => {\n const offsetContainer = contentRef.current || containerRef.current;\n if (item.id) {\n const el = document.getElementById(item.id);\n if (el && containerRef.current) {\n const { height: viewportHeight } = viewport.current;\n const targetEl =\n el.ariaExpanded && el.firstChild\n ? (el.firstChild as HTMLElement)\n : el;\n const headerHeight = stickyHeaders ? 36 : 0;\n const itemTop = getItemTop(targetEl, offsetContainer);\n const itemHeight = targetEl.offsetHeight;\n const { scrollTop } = containerRef.current;\n const viewportStart = scrollTop + headerHeight;\n const viewportEnd = viewportStart + viewportHeight - headerHeight;\n\n if (itemTop + itemHeight > viewportEnd || itemTop < viewportStart) {\n const newScrollTop =\n itemTop + itemHeight > viewportEnd\n ? scrollTop + (itemTop + itemHeight) - viewportEnd\n : itemTop - headerHeight;\n\n scrollTo(newScrollTop);\n }\n }\n }\n },\n [containerRef, contentRef, scrollTo, stickyHeaders]\n );\n\n useIsomorphicLayoutEffect(() => {\n const { height, contentHeight } = viewport.current;\n const item = indexPositions[highlightedIdx];\n if (contentHeight > height && item) {\n const [firstItem] = indexPositions;\n const [lastItem] = indexPositions.slice(-1);\n if (item === firstItem) {\n scrollToStart();\n } else if (item === lastItem) {\n scrollToEnd();\n } else {\n scrollIntoViewIfNeeded(indexPositions[highlightedIdx]);\n }\n }\n }, [\n highlightedIdx,\n indexPositions,\n scrollIntoViewIfNeeded,\n scrollToEnd,\n scrollToStart,\n ]);\n\n const onContainerResize: ResizeHandler = useCallback(\n ({ height, scrollHeight }) => {\n if (typeof height === \"number\") {\n viewport.current.height = height;\n }\n if (typeof scrollHeight === \"number\") {\n viewport.current.contentHeight = scrollHeight;\n }\n },\n []\n );\n\n const onContentResize: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n viewport.current.contentHeight = height;\n }\n }, []);\n\n // If we only have a container, then we will observe its height and scrollHeight,\n // contentRef will be null, so second call to observer will observe nothing.\n // If we have both container and content, then we observe the height of each.\n const [containerDimensions, contentDimensions] = getObservedDimensions(\n contentRef === NULL_REF\n );\n useResizeObserver(containerRef, containerDimensions, onContainerResize, true);\n useResizeObserver(contentRef, contentDimensions, onContentResize, true);\n\n return {\n isScrolling: scrolling,\n scrollIntoView: scrollIntoViewIfNeeded,\n };\n};\n", "import { makePrefixer } from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\nimport { escapeRegExp } from \"../utils\";\n\nimport \"./Highlighter.css\";\n\nconst withBaseName = makePrefixer(\"saltHighlighter\");\n\nexport interface HighlighterProps {\n matchPattern?: RegExp | string;\n text?: string;\n}\n\nexport const Highlighter = (\n props: HighlighterProps\n): ReactElement<HighlighterProps> => {\n const { matchPattern, text = \"\" } = props;\n\n const matchRegex =\n typeof matchPattern === \"string\"\n ? new RegExp(`(${escapeRegExp(matchPattern)})`, \"gi\")\n : matchPattern;\n\n if (matchRegex === undefined) {\n return <>{text}</>;\n }\n return (\n <span>\n {text.split(matchRegex).map((part, index) =>\n part.match(matchRegex) ? (\n <strong\n className={withBaseName(\"highlight\")}\n key={`${index}-${part}`}\n >\n {part}\n </strong>\n ) : (\n part\n )\n )}\n </span>\n );\n};\n", "import { ForwardedRef, forwardRef, HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\nimport { ListItemProps, ListItemType } from \"./listTypes\";\nimport { Highlighter } from \"./Highlighter\";\nimport { CheckboxIcon } from \"./CheckboxIcon\";\n\nimport \"./ListItem.css\";\n\nconst classBase = \"vuuListItem\";\n\n// A dummy ListItem rendered once and not visible. We measure this to\n// determine height of ListItem and monitor it for size changes (in\n// case of runtime density switch). This allows ListItem height to\n// be controlled purely through CSS.\nexport const ListItemProxy = forwardRef(function ListItemNextProxy(\n {\n height,\n ...htmlAttributes\n }: HTMLAttributes<HTMLDivElement> & {\n height?: number;\n },\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n {...htmlAttributes}\n aria-hidden\n className={cx(classBase, `${classBase}-proxy`)}\n ref={forwardedRef}\n style={{ height }}\n />\n );\n});\n\n// Note: the memo is effective if List label is passed as simple string\n// If children are used, it is the responsibility of caller to memoise\n// these if performance on highlight is perceived to be an issue.\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n function ListItem(\n {\n children,\n className: classNameProp,\n disabled,\n tabIndex,\n item,\n itemHeight,\n itemTextHighlightPattern,\n label,\n selectable: _notUsed,\n selected,\n showCheckbox,\n style: styleProp,\n ...props\n },\n forwardedRef\n ) {\n const className = cx(classBase, classNameProp, {\n vuuDisabled: disabled,\n [`${classBase}-checkbox`]: showCheckbox,\n });\n const style =\n itemHeight !== undefined\n ? {\n ...styleProp,\n height: itemHeight,\n }\n : styleProp;\n\n return (\n <div\n className={className}\n {...props}\n aria-disabled={disabled || undefined}\n aria-selected={selected || undefined}\n ref={forwardedRef}\n style={style}\n >\n {showCheckbox && <CheckboxIcon aria-hidden checked={selected} />}\n {children && typeof children !== \"string\" ? (\n children\n ) : itemTextHighlightPattern == null ? (\n <span className={`${classBase}-textWrapper`}>\n {label || children}\n </span>\n ) : (\n <Highlighter\n matchPattern={itemTextHighlightPattern}\n text={label || (children as string)}\n />\n )}\n </div>\n );\n }\n) as ListItemType;\n", "// TODO why do we need explicit React import - its not needed anywhere else\n// but we see a 'React is not defined' issue in showcase without it\nimport React, { HTMLAttributes } from \"react\";\nimport cx from \"clsx\";\n\nimport \"./CheckboxIcon.css\";\n\nconst classBase = \"vuuCheckboxIcon\";\n\nexport interface CheckboxIconProps extends HTMLAttributes<HTMLSpanElement> {\n checked?: boolean;\n disabled?: boolean;\n}\nexport const CheckboxIcon = ({\n checked = false,\n disabled = false,\n ...htmlAttributes\n}: CheckboxIconProps) => (\n <span\n {...htmlAttributes}\n className={cx(classBase, {\n [`${classBase}-checked-${disabled ? \"disabled\" : \"enabled\"}`]: checked,\n })}\n />\n);\n", "import { MeasuredContainer, MeasuredSize } from \"@vuu-ui/vuu-layout\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n cloneElement,\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactElement,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n CollectionIndexer,\n CollectionItem,\n itemToString as defaultItemToString,\n SelectionStrategy,\n} from \"../common-hooks\";\nimport {\n isSelected,\n LIST_FOCUS_VISIBLE,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListItemProps, ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { useListHeight } from \"./useListHeight\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst classBase = \"vuuList\";\n\nexport const List = forwardRef(function List<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n ListItem = DefaultListItem,\n ListPlaceholder,\n allowDragDrop,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n focusVisible: focusVisibleProp,\n getItemHeight: getItemHeightProp,\n getItemId,\n height,\n highlightedIndex: highlightedIndexProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString = defaultItemToString,\n listHandlers: listHandlersProp,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n checkable = selectionStrategy === \"multiple\",\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabIndex = 0,\n tabToSelect,\n ...htmlAttributes\n }: ListProps<Item, S>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const containerRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const contentContainerRef = useRef<HTMLDivElement>(null);\n const [size, setSize] = useState<MeasuredSize | undefined>();\n const handleResize = useCallback((size: MeasuredSize) => {\n setSize(size);\n }, []);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n // Add Group ChildTypes to options\n getItemId,\n itemToString,\n },\n });\n\n const {\n listClientHeight,\n computedListHeight,\n listItemHeight,\n rowHeightProxyRef,\n } = useListHeight({\n displayedItemCount,\n getItemHeight: getItemHeightProp,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef: containerRef,\n size,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize:\n // TODO whats the right way to handle string values - ie percentages\n listClientHeight ?? computedListHeight ?? size?.height ?? 0,\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n const {\n draggable,\n draggedItemIndex,\n dropIndicator,\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n listItemHeaderHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, S>({\n allowDragDrop,\n collapsibleHeaders,\n collectionHook,\n containerRef,\n contentRef: contentContainerRef,\n defaultHighlightedIndex,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label: \"List\",\n listHandlers: listHandlersProp, // should this be in context ?\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n scrollContainerRef,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: containerRef,\n scrollIntoView,\n });\n\n // focusVisible passes as a prop takes precedence\n const appliedFocusVisible = focusVisibleProp ?? focusVisible;\n\n const createHeader: (\n idx: { value: number },\n headerId: string,\n title: string,\n expanded?: boolean\n ) => ReactElement = function createHeader(idx, headerId, title, expanded) {\n const header = (\n <ListItem\n {...listItemHeaderHandlers}\n className={cx(`${classBase}Header`, {\n focusVisible: collapsibleHeaders && appliedFocusVisible === idx.value,\n })}\n aria-expanded={expanded}\n data-index={collapsibleHeaders ? idx.value : undefined}\n data-highlighted={idx.value === highlightedIndex || undefined}\n data-sticky={stickyHeaders}\n data-selectable={false}\n id={headerId}\n itemHeight={getItemHeight(idx.value)}\n key={`header-${idx.value}`}\n label={title}\n // role=\"presentation\"\n />\n );\n idx.value += 1;\n return header;\n };\n\n const getItemHeight =\n getItemHeightProp === undefined ? () => itemHeightProp : getItemHeightProp;\n\n function renderCollectionItem(\n list: ReactElement[],\n item: CollectionItem<Item>,\n idx: { value: number }\n ) {\n // Note, a number of these props are specific to ListItem. What if user\n // implements a custom ListItem but neglects to handle all these props.\n // Is that on them ?\n const { disabled, value, id: itemId, label } = item;\n const isChildItem = isValidElement(value);\n const listItemProps: ListItemProps<Item> & {\n key: string;\n \"data-index\": number;\n } = {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore until we refactor this whole section\n className: cx(value?.props?.className, {\n vuuHighlighted: idx.value === highlightedIndex,\n vuuFocusVisible: appliedFocusVisible === idx.value,\n [`vuuDraggable-dragAway`]: draggedItemIndex === idx.value,\n }),\n disabled: disabled || listDisabled,\n id: itemId,\n item: isChildItem ? undefined : item?.value ?? undefined,\n itemHeight: getItemHeight(idx.value),\n itemTextHighlightPattern,\n key: itemId,\n \"data-index\": idx.value,\n label,\n role: \"option\",\n selected: isSelected<Item>(selected, item),\n showCheckbox: checkable,\n };\n list.push(\n isChildItem ? (\n cloneElement(value, listItemProps)\n ) : (\n <ListItem {...listItemProps} />\n )\n );\n\n idx.value += 1;\n }\n\n const addGroup: (\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) => void = function addGroup(\n list: ReactElement[],\n items: CollectionItem<Item>[],\n idx: { value: number }\n ) {\n const { count = 0, id, expanded, label = \"\" } = items[idx.value];\n const header = createHeader(idx, id, label, expanded);\n const childItems: ReactElement | ReactElement[] =\n expanded !== false\n ? [header].concat(\n renderCollectionItems(items, idx, idx.value + count) || []\n )\n : header;\n\n list.push(\n <div key={id} role=\"group\">\n {childItems}\n </div>\n );\n };\n\n const renderCollectionItems = (\n items: CollectionItem<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = items.length\n ): ReactElement[] | undefined => {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = items[idx.value];\n if (item.header) {\n listItems.push(\n createHeader(idx, item.id, item.label!, item.expanded === false)\n );\n } else if (item.childNodes) {\n addGroup(listItems, items, idx);\n } else {\n renderCollectionItem(listItems, item, idx);\n }\n }\n return listItems;\n };\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={`${classBase}-empty-message`}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const isEmpty = collectionHook.data.length === 0;\n\n const renderContent = () => {\n if (!isEmpty) {\n // const itemsToRender =\n // typeof draggedItemIndex === \"number\" && draggedItemIndex >= 0\n // ? collectionHook.data.filter((d) => d.index !== draggedItemIndex)\n // : collectionHook.data;\n const itemsToRender = collectionHook.data;\n\n return renderCollectionItems(itemsToRender);\n } else {\n renderEmpty();\n }\n };\n const contentHeight = \"auto\";\n const sizeStyles = {\n \"--list-borderWidth\":\n \"var(--vuuList-borderWidth, var(--salt-size-border, 0))\",\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n \"--computed-list-height\":\n computedListHeight === undefined ? undefined : `${computedListHeight}px`,\n minWidth,\n minHeight,\n maxWidth,\n maxHeight,\n };\n return (\n <MeasuredContainer\n aria-multiselectable={\n selectionStrategy === \"multiple\" ||\n selectionStrategy === \"extended\" ||\n selectionStrategy === \"extended-multi-range\" ||\n undefined\n }\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={cx(classBase, className, {\n [`${classBase}-collapsible`]: collapsibleHeaders,\n [`${classBase}-contentSized`]: computedListHeight !== undefined,\n [`${classBase}-empty`]: isEmpty,\n vuuFocusVisible: highlightedIndex === LIST_FOCUS_VISIBLE,\n })}\n height={computedListHeight ?? height}\n id={`${id}`}\n onResize={handleResize}\n ref={useForkRef<HTMLDivElement>(containerRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : tabIndex}\n >\n <ListItemProxy ref={rowHeightProxyRef} height={itemHeightProp} />\n {collectionHook.data.length === 0 && ListPlaceholder !== undefined ? (\n <>\n <ListPlaceholder />\n </>\n ) : (\n <div className={`${classBase}-viewport`} ref={scrollContainerRef}>\n <div\n className={`${classBase}-scrollingContentContainer`}\n ref={contentContainerRef}\n style={{ height: contentHeight }}\n >\n {renderContent()}\n {dropIndicator}\n {draggable}\n </div>\n </div>\n )}\n </MeasuredContainer>\n );\n}) as <Item = string, S extends SelectionStrategy = \"default\">(\n props: ListProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ListProps<Item>>;\n", "import { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent,\n RefObject,\n useCallback,\n useMemo,\n useRef,\n} from \"react\";\nimport {\n hasSelection,\n isMultiSelection,\n isSingleSelection,\n ListHandlers,\n MultiSelectionHandler,\n SelectHandler,\n SelectionStrategy,\n SingleSelectionHandler,\n} from \"../common-hooks\";\nimport { DragStartHandler, useDragDrop as useDragDrop } from \"../drag-drop\";\nimport {\n closestListItemIndex,\n useCollapsibleGroups,\n useKeyboardNavigation,\n useSelection,\n useTypeahead,\n useViewportTracking,\n} from \"./common-hooks\";\n\nimport { ListControlProps, ListHookProps, ListHookResult } from \"./listTypes\";\nimport { useListDrop } from \"./useListDrop\";\n\nexport const useList = <Item, S extends SelectionStrategy>({\n allowDragDrop = false,\n collapsibleHeaders,\n collectionHook: dataHook,\n containerRef,\n contentRef,\n defaultHighlightedIndex,\n defaultSelected,\n disabled,\n disableAriaActiveDescendant,\n disableHighlightOnFocus,\n disableTypeToSelect,\n highlightedIndex: highlightedIndexProp,\n id,\n label = \"\",\n listHandlers: listHandlersProp,\n onClick: onClickProp,\n onDragStart,\n onDrop,\n onHighlight,\n onKeyboardNavigation,\n onKeyDown,\n onMoveListItem,\n onSelect,\n onSelectionChange,\n restoreLastFocus,\n scrollContainerRef,\n selected,\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n viewportRange,\n}: ListHookProps<Item, S>): ListHookResult<Item> => {\n const lastSelection = useRef<string[] | undefined>(\n selected || defaultSelected\n );\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIndex: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIndex);\n onKeyboardNavigation?.(evt, nextIndex);\n };\n\n // console.log(\n // `useList ${label}\n // defaultSelected ${JSON.stringify(defaultSelected)}\n // selectedProp ${JSON.stringify(selected)} `\n // );\n\n // TODO where do these belong ?\n const handleSelect = useCallback<SelectHandler>(\n (evt, selectedId) => {\n if (onSelect) {\n if (selectedId !== null) {\n onSelect(evt, dataHook.itemById(selectedId));\n }\n }\n },\n [dataHook, onSelect]\n );\n\n const scrollContainer = useMemo<RefObject<HTMLElement>>(() => {\n if (scrollContainerRef) {\n return scrollContainerRef;\n } else {\n return {\n current:\n containerRef.current?.querySelector(\".vuuList-scrollContainer\") ??\n null,\n };\n }\n }, [containerRef, scrollContainerRef]);\n\n const handleSelectionChange = useCallback<MultiSelectionHandler>(\n (evt, selected) => {\n // TODO what about empty selection\n if (onSelectionChange) {\n if (isSingleSelection(selectionStrategy)) {\n const [selectedItem] = selected;\n (onSelectionChange as SingleSelectionHandler<Item>)(\n evt,\n dataHook.itemById(selectedItem)\n );\n } else if (isMultiSelection(selectionStrategy)) {\n const selectedItems = selected.map((id) => dataHook.itemById(id));\n (onSelectionChange as MultiSelectionHandler<Item>)(\n evt,\n selectedItems\n );\n }\n }\n },\n [dataHook, onSelectionChange, selectionStrategy]\n );\n\n const {\n highlightedIndex,\n containerProps: {\n onKeyDown: navigationKeyDown,\n onMouseMove: navigationMouseMove,\n ...navigationControlProps\n },\n setHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation({\n containerRef: scrollContainer,\n defaultHighlightedIndex,\n disableHighlightOnFocus,\n highlightedIndex: highlightedIndexProp,\n itemCount: dataHook.data.length,\n label,\n onHighlight,\n onKeyboardNavigation: handleKeyboardNavigation,\n restoreLastFocus,\n selected: lastSelection.current,\n viewportItemCount: 10,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders,\n highlightedIdx: highlightedIndex,\n collectionHook: dataHook,\n });\n\n const handleDragStart = useCallback<DragStartHandler>(\n (dragDropState) => {\n setHighlightedIndex(-1);\n onDragStart?.(dragDropState);\n },\n [onDragStart, setHighlightedIndex]\n );\n\n const selectionHook = useSelection({\n containerRef,\n defaultSelected,\n highlightedIndex: highlightedIndex,\n itemQuery: \".vuuListItem\",\n label: `${label}:useList`,\n onClick: onClickProp,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n selected,\n selectionStrategy,\n selectionKeys,\n tabToSelect,\n });\n\n const { handleDrop, onDropSettle } = useListDrop<Item>({\n dataHook,\n onDrop,\n onMoveListItem,\n selected: selectionHook.selected,\n setHighlightedIndex,\n setSelected: selectionHook.setSelected,\n });\n\n const { setSelected } = selectionHook;\n useLayoutEffectSkipFirst(() => {\n if (hasSelection(lastSelection.current)) {\n setSelected([]);\n }\n }, [selected, dataHook.data, setSelected]);\n\n const {\n onMouseDown,\n isDragging,\n isScrolling: isDragDropScrolling,\n ...dragDropHook\n } = useDragDrop({\n allowDragDrop,\n draggableClassName: \"list-item\",\n orientation: \"vertical\",\n containerRef,\n id,\n itemQuery: \".vuuListItem\",\n onDragStart: handleDragStart,\n onDrop: handleDrop,\n onDropSettle,\n viewportRange,\n });\n\n const { onKeyDown: typeaheadOnKeyDown } = useTypeahead<Item>({\n disableTypeToSelect,\n highlightedIdx: highlightedIndex,\n highlightItemAtIndex: setHighlightedIndex,\n typeToNavigate: true,\n items: dataHook.data,\n });\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (!evt.defaultPrevented) {\n typeaheadOnKeyDown?.(evt);\n }\n // We still let the keyboard navigation hook process the event even\n // if it has been handled by the typeahead hook. That is so it can\n // correctly manage the focusVisible state.\n navigationKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook?.onKeyDown?.(evt);\n }\n\n if (!evt.defaultPrevented) {\n onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook,\n navigationKeyDown,\n onKeyDown,\n selectionHook.listHandlers,\n typeaheadOnKeyDown,\n ]\n );\n\n // This is only appropriate when we are directly controlling a List,\n // not when a control is manipulating the list\n const { isScrolling: isViewportScrolling, scrollIntoView } =\n useViewportTracking({\n containerRef: scrollContainer,\n contentRef,\n highlightedIdx: highlightedIndex,\n indexPositions: dataHook.data,\n stickyHeaders,\n });\n\n const isScrolling =\n isViewportScrolling.current || isDragDropScrolling.current;\n\n const handleMouseMove = useCallback(\n (evt: MouseEvent) => {\n if (!isScrolling && !disabled && !isDragging) {\n navigationMouseMove();\n const idx = closestListItemIndex(evt.target as HTMLElement);\n if (idx !== -1 && idx !== highlightedIndex) {\n const item = dataHook.data[idx];\n if (!item || item.disabled) {\n setHighlightedIndex(-1);\n } else {\n setHighlightedIndex(idx);\n }\n }\n }\n },\n [\n isDragging,\n isScrolling,\n disabled,\n setHighlightedIndex,\n navigationMouseMove,\n highlightedIndex,\n dataHook.data,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIndex === undefined ||\n highlightedIndex === -1 ||\n disableAriaActiveDescendant\n ? undefined\n : dataHook.data[highlightedIndex]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n // controlProps ?\n const listControlProps: ListControlProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: navigationControlProps.onBlur,\n onFocus: navigationControlProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: onMouseDown,\n onMouseDownCapture: navigationControlProps.onMouseDownCapture,\n onMouseLeave: navigationControlProps.onMouseLeave,\n };\n\n const listHandlers: ListHandlers = listHandlersProp || {\n onClick: selectionHook.listHandlers.onClick,\n // MouseEnter would be much better for this. There is a bug in Cypress\n // wheby it emits spurious MouseEnter (and MouseOver) events around\n // keypress events, which break many tests.\n onMouseMove: handleMouseMove,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n controlledHighlighting: keyboardHook.controlledHighlighting,\n highlightedIndex,\n keyboardNavigation: keyboardHook.keyboardNavigation,\n listHandlers,\n listItemHeaderHandlers: collapsibleHook,\n listControlProps,\n scrollIntoView,\n //TODO given that we firs onSelect and onSelectionCHange with Item(s), should we return Item(s) here ?\n selected: selectionHook.selected,\n setHighlightedIndex,\n setIgnoreFocus: keyboardHook.setIgnoreFocus,\n setSelected: selectionHook.setSelected,\n ...dragDropHook,\n };\n};\n", "import { MouseEventHandler, RefObject } from \"react\";\nimport { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { DragDropState } from \"./DragDropState\";\n\n//-----------------------------------\n// From useScrollPosition in List\nexport type ViewportRange = {\n atEnd: boolean;\n atStart: boolean;\n from: number;\n to: number;\n};\n\n// From overflow types - probably don't need\ntype dimension = \"width\" | \"height\" | \"scrollWidth\" | \"scrollHeight\";\n\ntype dimensions = {\n size: dimension;\n depth: dimension;\n scrollDepth: dimension;\n};\n\nexport type dimensionsType = {\n horizontal: dimensions;\n vertical: dimensions;\n};\n\n//-----------------------------------\n\nexport type dragStrategy =\n | \"drop-indicator\"\n | \"natural-movement\"\n | \"drag-copy\"\n | \"drop-only\";\n\nexport type Direction = \"fwd\" | \"bwd\";\nexport const FWD: Direction = \"fwd\";\nexport const BWD: Direction = \"bwd\";\n\nexport interface MousePosition {\n clientX: number;\n clientY: number;\n}\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 \"./dragDropTypes\";\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 dragDropStateRef.current = dragDropState;\n document.addEventListener(\"mousemove\", dragMouseMoveHandler, false);\n document.addEventListener(\"mouseup\", dragMouseUpHandler, false);\n\n return true;\n },\n [dragMouseMoveHandler, dragMouseUpHandler]\n );\n\n return {\n measuredDropTargetsRef,\n resumeDrag,\n };\n};\n", "import { MouseOffset, MousePosition } from \"./dragDropTypes\";\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(mousePosition: MousePosition, dragElement: HTMLElement) {\n this.initialDragElement = dragElement;\n this.mouseOffset = this.getMouseOffset(mousePosition, 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(\n mousePosition: MousePosition,\n dragElement: HTMLElement\n ) {\n const { clientX, clientY } = mousePosition;\n const draggableRect = dragElement.getBoundingClientRect();\n\n return {\n x: clientX - draggableRect.left,\n y: clientY - draggableRect.top,\n };\n }\n}\n", "import { isOverflowElement } from \"@vuu-ui/vuu-layout\";\nimport { dispatchCustomEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n MouseEventHandler,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useDragDropProvider } from \"./DragDropProvider\";\nimport { DragDropState } from \"./DragDropState\";\nimport {\n DragDropHook,\n DropHandler,\n InternalDragDropProps,\n InternalDragHookResult,\n MouseOffset,\n MousePosition,\n} from \"./dragDropTypes\";\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 \"./useDragDropNaturalMovement\";\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 useDragDrop: 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\n /** save this on mousedown. We cannot rely on the target of mousemove being same element*/\n const mousedownElementRef = useRef<HTMLElement | null>(null);\n\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 (mousePosition: MousePosition) => {\n const { current: container } = containerRef;\n const { current: target } = mousedownElementRef;\n const dragElement = getDraggableElement(target, itemQuery);\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 mousePosition,\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 mousedownElementRef.current = null;\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 { current: mouseDownPosition } = startPosRef;\n const { CLIENT_POS, POS } = dimensions(orientation);\n const { [CLIENT_POS]: clientPos } = evt;\n const mouseMoveDistance = Math.abs(clientPos - mouseDownPosition[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 const mousePosition = {\n clientX: mouseDownPosition.x,\n clientY: mouseDownPosition.y,\n };\n dragStart(mousePosition);\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 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 mousedownElementRef.current = evt.target as HTMLElement;\n\n const mousePosition = {\n clientX,\n clientY,\n };\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(mousePosition);\n }, 500);\n }\n },\n [containerRef, dragStart, preDragMouseMoveHandler, preDragMouseUpHandler]\n );\n\n const { current: settlingItem } = settlingItemRef;\n useLayoutEffect(() => {\n if (settlingItem && containerRef.current) {\n const dropPos = dropPosRef.current;\n const droppedItem = containerRef.current.querySelector(\n `${itemQuery}[data-index=\"${dropPos}\"]`\n );\n if (droppedItem) {\n droppedItem.classList.add(\"vuuDropTarget-settling\");\n requestAnimationFrame(() => {\n const { top: targetTop, left: targetLeft } =\n droppedItem.getBoundingClientRect();\n // If the droppedItem is already exactly in the drop position, we can just\n // terminate the drag here and now. Most likely, though, it is out by a few\n // pixels. We animate the dragged item into the final resting place before\n // terminating the drag.\n const style = getComputedStyle(settlingItem);\n const currentLeft = parseInt(style.getPropertyValue(\"left\"));\n const currentTop = parseInt(style.getPropertyValue(\"top\"));\n if (currentLeft !== targetLeft || currentTop !== targetTop) {\n settlingItem.classList.add(\"vuuDraggable-settling\");\n settlingItem.style.top = `${targetTop}px`;\n settlingItem.style.left = `${targetLeft}px`;\n } else {\n terminateDrag();\n }\n });\n }\n // settlingItemRef.current = null;\n }\n }, [containerRef, itemQuery, settlingItem, terminateDrag]);\n\n useEffect(() => {\n if (id && (isDragSource || isDropTarget)) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore TODO drah drop WIP\n register(id, allowDragDrop === \"drop-only\" ? false : resumeDrag, onDrop);\n }\n }, [\n allowDragDrop,\n id,\n isDragSource,\n isDropTarget,\n onDrop,\n register,\n resumeDrag,\n ]);\n\n return {\n ...dragResult,\n ...draggableStatus,\n isScrolling,\n onMouseDown:\n allowDragDrop && allowDragDrop !== \"drop-only\"\n ? mouseDownHandler\n : undefined,\n };\n};\n", "import { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n CSSProperties,\n forwardRef,\n HTMLAttributes,\n MutableRefObject,\n RefCallback,\n TransitionEventHandler,\n useCallback,\n useMemo,\n} from \"react\";\nimport { PopupComponent as Popup, Portal } from \"@vuu-ui/vuu-popups\";\n\nimport \"./Draggable.css\";\n\nconst makeClassNames = (classNames: string) =>\n classNames.split(\" \").map((className) => `vuuDraggable-${className}`);\n\nexport interface DraggableProps extends HTMLAttributes<HTMLDivElement> {\n wrapperClassName: string;\n element: HTMLElement;\n onDropped?: () => void;\n onTransitionEnd?: TransitionEventHandler;\n scale?: number;\n style: CSSProperties;\n}\n\nexport const Draggable = forwardRef<HTMLDivElement, DraggableProps>(\n function Draggable(\n { wrapperClassName, element, onDropped, onTransitionEnd, style, scale = 1 },\n forwardedRef\n ) {\n const handleVuuDrop = useCallback(() => {\n onDropped?.();\n }, [onDropped]);\n\n const callbackRef = useCallback<RefCallback<HTMLDivElement>>(\n (el: HTMLDivElement) => {\n if (el) {\n el.innerHTML = \"\";\n el.appendChild(element);\n if (scale !== 1) {\n el.style.transform = `scale(${scale},${scale})`;\n }\n el.addEventListener(\"vuu-dropped\", handleVuuDrop);\n }\n },\n [element, handleVuuDrop, scale]\n );\n const forkedRef = useForkRef<HTMLDivElement>(forwardedRef, callbackRef);\n\n const position = useMemo(\n () => ({\n left: 0,\n top: 0,\n }),\n []\n );\n\n return (\n <Portal>\n <Popup\n anchorElement={{ current: document.body }}\n placement=\"absolute\"\n position={position}\n >\n <div\n className={cx(\"vuuDraggable\", ...makeClassNames(wrapperClassName))}\n ref={forkedRef}\n onTransitionEnd={onTransitionEnd}\n style={style}\n />\n </Popup>\n </Portal>\n );\n }\n);\n\n// const colors = [\"black\", \"red\", \"green\", \"yellow\"];\n// let color_idx = 0;\nexport const createDragSpacer = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-spacer\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n\nexport const createDropIndicatorPosition = (): HTMLElement => {\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicatorPosition\";\n return spacer;\n};\n\nexport const createDropIndicator = (\n transitioning?: MutableRefObject<boolean>\n): HTMLElement => {\n // const idx = color_idx++ % 4;\n const spacer = document.createElement(\"div\");\n spacer.className = \"vuuDraggable-dropIndicator\";\n if (transitioning) {\n spacer.addEventListener(\"transitionend\", () => {\n transitioning.current = false;\n });\n }\n return spacer;\n};\n", "import { orientationType } from \"@vuu-ui/vuu-utils\";\nimport { ViewportRange } from \"./dragDropTypes\";\nimport { Direction, Rect } from \"./dragDropTypes\";\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 \"./dragDropTypes\";\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 \"./dragDropTypes\";\nimport { useDropIndicator } from \"./useDropIndicator\";\n\nimport {\n dimensions,\n getItemById,\n MeasuredDropTarget,\n measureDropTargets,\n getNextDropTarget,\n dropZone,\n removeDraggedItem,\n} from \"./drop-target-utils\";\n\nimport { createDropIndicator, Draggable } from \"./Draggable\";\n\nconst NOT_OVERFLOWED = ':not([data-overflowed=\"true\"])';\nconst NOT_HIDDEN = ':not([aria-hidden=\"true\"])';\n\nexport const useDragDropIndicator = ({\n 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 \"./dragDropTypes\";\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 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 \"./dragDropTypes\";\nimport { createDragSpacer as createDragDisplacer } from \"./Draggable\";\nimport {\n MeasuredDropTarget,\n mutateDropTargetsSwitchDropTargetPosition,\n} from \"./drop-target-utils\";\n\nexport type DragDisplacersHookResult = {\n displaceItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n displaceLastItem: (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition?: boolean,\n direction?: Direction | \"static\",\n orientation?: \"horizontal\" | \"vertical\"\n ) => void;\n clearSpacers: (useAnimation?: boolean) => void;\n};\n\nexport type DragDisplacersHook = (\n orientation: orientationType\n) => DragDisplacersHookResult;\n/**\n * Manage a pair of displacer elements to smoothly display a moving gap between\n * list items of any kind. Designed to be used in a drag drop operation. The 'static'\n * direction option should be used at drag start or following scroll.\n */\nexport const useDragDisplacers: DragDisplacersHook = (\n orientation = \"horizontal\"\n) => {\n const animationFrame = useRef(0);\n const transitioning = useRef(false);\n\n const spacers = useMemo(\n // We only need to listen for transition end on one of the spacers\n () => [createDragDisplacer(transitioning), createDragDisplacer()],\n []\n );\n\n const animateTransition = useCallback(\n (size: number, propertyName = \"width\") => {\n const [spacer1, spacer2] = spacers;\n animationFrame.current = requestAnimationFrame(() => {\n transitioning.current = true;\n spacer1.style.cssText = `${propertyName}: 0px`;\n spacer2.style.cssText = `${propertyName}: ${size}px`;\n spacers[0] = spacer2;\n spacers[1] = spacer1;\n });\n },\n [spacers]\n );\n\n const clearSpacers = useCallback(\n (useTransition = false) => {\n if (useTransition === true) {\n const [spacer] = spacers;\n const cleanup = () => {\n spacer.removeEventListener(\"transitionend\", cleanup);\n clearSpacers();\n };\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n spacer.addEventListener(\"transitionend\", cleanup);\n animateTransition(0, propertyName);\n } else {\n spacers.forEach((spacer) => spacer.remove());\n }\n },\n [animateTransition, orientation, spacers]\n );\n\n const cancelAnyPendingAnimation = useCallback(() => {\n if (animationFrame.current) {\n cancelAnimationFrame(animationFrame.current);\n animationFrame.current = 0;\n }\n }, []);\n\n const displaceItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\"\n ) => {\n if (dropTarget) {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n cancelAnyPendingAnimation();\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n if (direction === \"fwd\") {\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.after(spacer1);\n dropTarget.element.before(spacer2);\n }\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else if (direction === \"static\") {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.before(spacer1);\n } else {\n throw Error(\n \"useDragDisplacers currently only supports noTransition for static displacement\"\n );\n }\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n }\n },\n [\n animateTransition,\n cancelAnyPendingAnimation,\n clearSpacers,\n orientation,\n spacers,\n ]\n );\n const displaceLastItem = useCallback(\n (\n dropTargets: MeasuredDropTarget[],\n dropTarget: MeasuredDropTarget,\n size: number,\n useTransition = false,\n direction: Direction | \"static\" = \"static\"\n ) => {\n const propertyName = orientation === \"horizontal\" ? \"width\" : \"height\";\n const [spacer1, spacer2] = spacers;\n\n cancelAnyPendingAnimation();\n\n if (useTransition) {\n if (transitioning.current) {\n clearSpacers();\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n spacer2.style.cssText = `${propertyName}: 0px`;\n dropTarget.element.before(spacer1);\n dropTarget.element.after(spacer2);\n } else {\n if (direction === \"fwd\") {\n dropTarget.element.after(spacer2);\n } else {\n dropTarget.element.before(spacer2);\n }\n }\n animateTransition(size, propertyName);\n } else {\n spacer1.style.cssText = `${propertyName}: ${size}px`;\n dropTarget.element.after(spacer1);\n }\n\n if (direction !== \"static\") {\n mutateDropTargetsSwitchDropTargetPosition(dropTargets, direction);\n }\n },\n [\n animateTransition,\n cancelAnyPendingAnimation,\n clearSpacers,\n orientation,\n spacers,\n ]\n );\n\n return {\n displaceItem,\n displaceLastItem,\n clearSpacers,\n };\n};\n", "import { useCallback, useEffect, useRef } from \"react\";\nimport { CollectionHookResult, hasSelection } from \"../common-hooks\";\nimport { DropHandler } from \"../drag-drop\";\nimport { MoveItemHandler } from \"./listTypes\";\n\nexport interface ListDropProps<Item = string> {\n dataHook: CollectionHookResult<Item>;\n onDrop?: DropHandler;\n onMoveListItem?: MoveItemHandler;\n selected: string[];\n setHighlightedIndex: (idx: number) => void;\n setSelected: (selected: string[]) => void;\n}\n\nexport const useListDrop = <Item>({\n dataHook,\n onDrop,\n onMoveListItem,\n selected,\n setHighlightedIndex,\n setSelected,\n}: ListDropProps<Item>) => {\n // Used to preserve selection across a drop event.\n const selectedByIndexRef = useRef<number[]>([]);\n\n /** prevent recreating reorderSelectedIndices when dataHook changes */\n const dataHookRef = useRef(dataHook);\n dataHookRef.current = dataHook;\n\n const adjustIndex = useCallback(\n (index: number, fromIndex: number, toIndex: number) => {\n if (index === fromIndex) {\n return toIndex;\n } else if (\n index < Math.min(fromIndex, toIndex) ||\n index > Math.max(fromIndex, toIndex)\n ) {\n return index;\n }\n if (fromIndex < index) {\n return index - 1;\n } else {\n return index + 1;\n }\n },\n []\n );\n\n // Used after a drop event, to calculate wht the new selected indices will be\n const reorderSelectedIndices = useCallback(\n (selected: string[], fromIndex: number, toIndex: number) => {\n const selectedIndices = selected.map((id) =>\n dataHookRef.current.indexOfItemById(id)\n );\n return selectedIndices.map((item) =>\n adjustIndex(item, fromIndex, toIndex)\n );\n },\n [adjustIndex]\n );\n\n const handleDrop = useCallback<DropHandler>(\n (fromIndex, toIndex, options) => {\n if (hasSelection(selected)) {\n selectedByIndexRef.current = reorderSelectedIndices(\n selected,\n fromIndex,\n toIndex\n );\n }\n\n if (options.isExternal) {\n onDrop?.(fromIndex, toIndex, options);\n } else {\n onMoveListItem?.(fromIndex, toIndex);\n }\n setHighlightedIndex(-1);\n },\n [\n selected,\n setHighlightedIndex,\n reorderSelectedIndices,\n onDrop,\n onMoveListItem,\n ]\n );\n\n const handleDropSettle = useCallback(\n (toIndex: number) => {\n setHighlightedIndex(toIndex);\n },\n [setHighlightedIndex]\n );\n\n useEffect(() => {\n const { current: selectedByIndex } = selectedByIndexRef;\n if (hasSelection(selectedByIndex)) {\n selectedByIndexRef.current = [];\n const postDropSelected = Array.isArray(selectedByIndex)\n ? selectedByIndex.map((i) => dataHook.data[i].id)\n : dataHook.data[selectedByIndex].id;\n\n selectedByIndexRef.current = [];\n // TODO gave up trying to figure out how to type this correctly\n setSelected(postDropSelected as any);\n }\n }, [dataHook.data, setSelected]);\n\n return {\n handleDrop,\n onDropSettle: handleDropSettle,\n };\n};\n", "import { MeasuredSize } from \"@vuu-ui/vuu-layout\";\nimport { RefObject, useCallback, useMemo, useRef, useState } from \"react\";\nimport { HeightOnly, ResizeHandler, useResizeObserver } from \"../common-hooks\";\n\nexport interface ListHeightHookProps {\n displayedItemCount: number;\n getItemHeight?: (index: number) => number;\n height?: number | string;\n itemCount: number;\n itemGapSize: number;\n itemHeight?: number;\n rootRef: RefObject<HTMLElement>;\n size: MeasuredSize | undefined;\n}\n\nexport interface HeightHookResult {\n computedListHeight: number | undefined;\n contentHeight: number;\n listClientHeight?: number;\n listItemHeight: number;\n rowHeightProxyRef: (el: HTMLDivElement | null) => void;\n}\n\nconst getContentHeight = (\n itemCount: number,\n itemHeight: number,\n itemGapSize = 0\n) => {\n if (itemCount === 0) {\n return 0;\n } else if (itemGapSize === 0) {\n return itemCount * itemHeight;\n } else {\n return itemCount - 1 * (itemHeight + itemGapSize) + itemHeight;\n }\n};\n\nexport const useListHeight = ({\n displayedItemCount,\n getItemHeight,\n // TODO no need to incur the cost of a resizeObserver if height is explicit\n height,\n itemCount,\n itemGapSize,\n itemHeight: itemHeightProp = 36,\n size,\n}: ListHeightHookProps): HeightHookResult => {\n // TODO default by density\n const [measuredItemHeight, setMeasuredItemHeight] =\n useState<number>(itemHeightProp);\n // Not 100% sure why we need this forceUpdate\n const [, forceUpdate] = useState({});\n // This is a ref to the 'item proxy' a hiden list item used to detect css driven\n // size changes (e.g. runtime density switch)\n const proxyItemRef = useRef<HTMLDivElement | null>(null);\n\n const [contentHeight, computedListHeight] = useMemo(() => {\n let result = 0;\n const itemHeight = measuredItemHeight ?? itemHeightProp;\n const contentHeight = getContentHeight(itemCount, itemHeight, itemGapSize);\n if (height !== undefined) {\n // TODO if this is a percentage, convert to number\n return [contentHeight, undefined];\n }\n\n // if there are 0 items we render with the preferred count\n const preferredItemCount =\n Math.min(displayedItemCount, itemCount) || displayedItemCount;\n\n if (typeof getItemHeight === \"function\") {\n result +=\n Array(preferredItemCount)\n .fill(0)\n .reduce<number>(\n (total, _, index) => total + getItemHeight(index) + itemGapSize,\n 0\n ) -\n // We don't want gap after the last item\n itemGapSize;\n } else {\n result +=\n preferredItemCount * Number(itemHeight) +\n (preferredItemCount - 1) * itemGapSize;\n }\n\n const listHeight = result;\n\n return [contentHeight, listHeight];\n }, [\n displayedItemCount,\n getItemHeight,\n height,\n itemCount,\n itemGapSize,\n itemHeightProp,\n measuredItemHeight,\n ]);\n\n const handleRowHeight: ResizeHandler = useCallback(({ height }) => {\n if (typeof height === \"number\") {\n setMeasuredItemHeight(height);\n }\n }, []);\n\n const rowHeightProxyRef = useCallback((el: HTMLDivElement | null) => {\n proxyItemRef.current = el;\n forceUpdate({});\n }, []);\n\n useResizeObserver(proxyItemRef, HeightOnly, handleRowHeight, true);\n\n return {\n computedListHeight,\n contentHeight,\n listClientHeight: size?.height,\n listItemHeight: measuredItemHeight,\n rowHeightProxyRef,\n };\n};\n", "import { useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { UIEvent, useCallback, useMemo, useRef, useState } from \"react\";\n\nexport type ViewportRange = {\n atEnd: boolean;\n atStart: boolean;\n from: number;\n to: number;\n};\n\ninterface ScrollPositionHookProps {\n containerSize: number;\n itemCount: number;\n itemGapSize?: number;\n itemSize: number;\n onViewportScroll?: (\n firstVisibleItemIndex: number,\n lastVisibleitemIndex: number\n ) => void;\n}\n\nconst getRange = (\n scrollPos: number,\n height: number,\n itemCount: number,\n itemHeight: number\n): ViewportRange => {\n const viewportRowCount = Math.ceil(height / itemHeight);\n const from = Math.floor(scrollPos / itemHeight);\n const to = Math.ceil(from + viewportRowCount - 1);\n return {\n atStart: from === 0,\n atEnd: to === itemCount - 1,\n from,\n to,\n };\n};\n\nexport const useScrollPosition = ({\n containerSize: listHeight,\n itemCount: listItemCount,\n itemGapSize: listItemGapSize = 0,\n itemSize: listItemHeight,\n onViewportScroll,\n}: ScrollPositionHookProps) => {\n const firstVisibleRowRef = useRef(0);\n const lastVisibleRowRef = useRef(0);\n const scrollPosRef = useRef(0);\n\n const range = useMemo(() => {\n return getRange(\n scrollPosRef.current,\n listHeight,\n listItemCount,\n listItemHeight + listItemGapSize\n );\n }, [listHeight, listItemCount, listItemHeight, listItemGapSize]);\n\n const [viewportRange, setViewportRange] = useState<ViewportRange>(range);\n\n useIsomorphicLayoutEffect(() => {\n setViewportRange(range);\n }, [range]);\n\n const handleVerticalScroll = useCallback(\n (e: UIEvent<HTMLElement>) => {\n const scrollTop = (e.target as HTMLElement).scrollTop;\n if (scrollTop !== scrollPosRef.current) {\n scrollPosRef.current = scrollTop;\n const itemHeight = listItemHeight + listItemGapSize;\n const range = getRange(\n scrollTop,\n listHeight,\n listItemCount,\n itemHeight\n );\n if (\n range.from !== firstVisibleRowRef.current ||\n range.to !== lastVisibleRowRef.current\n ) {\n firstVisibleRowRef.current = range.from;\n lastVisibleRowRef.current = range.to;\n onViewportScroll?.(range.from, range.to);\n setViewportRange(range);\n }\n }\n },\n [\n listItemHeight,\n listItemGapSize,\n listHeight,\n listItemCount,\n onViewportScroll,\n ]\n );\n\n return {\n onVerticalScroll: handleVerticalScroll,\n viewportRange,\n };\n};\n", "import { makePrefixer, useForkRef, useIdMemo } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { ForwardedRef, forwardRef, memo, ReactElement, useRef } from \"react\";\nimport {\n isSelected,\n useCollectionItems,\n useImperativeScrollingAPI,\n} from \"./common-hooks\";\nimport { CollectionIndexer, SelectionStrategy } from \"../common-hooks\";\nimport { useListHeight } from \"./useListHeight\";\n\nimport { ListItem as DefaultListItem, ListItemProxy } from \"./ListItem\";\nimport { ListProps } from \"./listTypes\";\nimport { useList } from \"./useList\";\nimport { Row, useVirtualization } from \"./useVirtualization\";\nimport { useScrollPosition } from \"./useScrollPosition\";\n\nimport \"./List.css\";\n\nconst defaultEmptyMessage = \"No data to display\";\n\nconst withBaseName = makePrefixer(\"saltList\");\n\nconst ListItem = memo(DefaultListItem);\n\nexport const VirtualizedList = forwardRef(function List<\n Item,\n Selection extends SelectionStrategy = \"default\"\n>(\n {\n borderless,\n children,\n className,\n collapsibleHeaders = false,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected,\n disabled: listDisabled = false,\n disableFocus = false,\n disableTypeToSelect,\n displayedItemCount = 10,\n emptyMessage,\n getItemHeight,\n getItemId,\n height,\n highlightedIndex: highlightedIdxProp,\n id: idProp,\n itemGapSize = 0,\n itemHeight: itemHeightProp,\n itemTextHighlightPattern,\n itemToString,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n onDragStart,\n onDrop,\n onSelect,\n onSelectionChange,\n onViewportScroll,\n onHighlight,\n restoreLastFocus,\n selected: selectedProp,\n selectionStrategy,\n scrollingApiRef,\n // TODO do we still need these ?\n selectionKeys,\n showEmptyMessage = false,\n source,\n style: styleProp,\n stickyHeaders,\n tabToSelect,\n width,\n ...htmlAttributes\n }: ListProps<Item, Selection>,\n forwardedRef?: ForwardedRef<HTMLDivElement>\n) {\n const id = useIdMemo(idProp);\n const rootRef = useRef<HTMLDivElement>(null);\n const rowHeightProxyRef = useRef<HTMLDivElement | null>(null);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n label: \"List\",\n source,\n children,\n options: {\n collapsibleHeaders,\n getItemId,\n itemToString,\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { contentHeight, listItemHeight, listHeight } = useListHeight({\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n borderless,\n displayedItemCount,\n height,\n itemCount: collectionHook.data.length,\n itemGapSize,\n itemHeight: itemHeightProp,\n rootRef,\n rowHeightRef: rowHeightProxyRef,\n });\n\n const {\n focusVisible,\n highlightedIndex,\n listControlProps,\n listHandlers,\n scrollIntoView,\n selected,\n } = useList<Item, Selection>({\n collapsibleHeaders,\n collectionHook,\n containerRef: rootRef,\n defaultHighlightedIndex: defaultHighlightedIdx,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disabled: listDisabled,\n disableTypeToSelect,\n highlightedIndex: highlightedIdxProp,\n label: id,\n onSelect,\n onSelectionChange,\n onHighlight,\n restoreLastFocus,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionStrategy,\n selectionKeys,\n stickyHeaders,\n tabToSelect,\n });\n\n const { onVerticalScroll, viewportRange } = useScrollPosition({\n containerSize: typeof listHeight === \"number\" ? listHeight : 0,\n itemCount: collectionHook.data.length,\n itemGapSize: itemGapSize,\n itemSize: listItemHeight,\n });\n\n console.log({ viewPortRange: viewportRange });\n\n // TODO move into useList\n const data = useVirtualization<Item>({\n data: collectionHook.data,\n listItemGapSize: itemGapSize,\n listItemHeight,\n viewportRange,\n });\n\n useImperativeScrollingAPI({\n collectionHook,\n forwardedRef: scrollingApiRef,\n scrollableRef: rootRef,\n scrollIntoView,\n });\n\n function addItem(\n list: ReactElement[],\n row: Row<Item>,\n idx: { value: number }\n ) {\n const [key, offset, pos, item] = row;\n const index = pos - 1;\n list.push(\n <ListItem\n aria-setsize={collectionHook.data.length}\n aria-posinset={pos}\n className={clsx(className, {\n saltHighlighted: index === highlightedIndex,\n saltFocusVisible: focusVisible === index,\n })}\n data-idx={index}\n item={item}\n key={key}\n label={item.label}\n data-offset={offset}\n role=\"option\"\n selected={isSelected<Item>(selected, item)}\n id={item.id}\n translate3d={offset}\n // style={{\n // transform: `translate3d(0px, ${offset}px, 0px)`\n // }}\n />\n );\n idx.value += 1;\n }\n\n function renderItems(\n data: Row<Item>[],\n idx: CollectionIndexer = { value: 0 },\n end = data.length\n ) {\n const listItems: ReactElement[] = [];\n while (idx.value < end) {\n const item = data[idx.value];\n addItem(listItems, item, idx);\n }\n return listItems;\n }\n\n function renderEmpty() {\n if (emptyMessage || showEmptyMessage) {\n return (\n <span className={withBaseName(\"empty-message\")}>\n {emptyMessage ?? defaultEmptyMessage}\n </span>\n );\n } else {\n return null;\n }\n }\n\n const renderContent = () => {\n if (data.length) {\n return renderItems(data);\n } else {\n renderEmpty();\n }\n };\n\n const sizeStyles = {\n \"--list-item-gap\": itemGapSize ? `${itemGapSize}px` : undefined,\n minWidth,\n minHeight,\n width: width ?? \"100%\",\n height: height ?? \"100%\",\n maxWidth: maxWidth ?? width,\n maxHeight: maxHeight ?? listHeight,\n };\n\n return (\n <div\n {...htmlAttributes}\n {...listHandlers}\n {...listControlProps}\n className={clsx(withBaseName(), className, withBaseName(\"virtualized\"))}\n id={`${id}`}\n ref={useForkRef<HTMLDivElement>(rootRef, forwardedRef)}\n role=\"listbox\"\n onScroll={onVerticalScroll}\n style={{ ...styleProp, ...sizeStyles }}\n tabIndex={listDisabled || disableFocus ? undefined : 0}\n >\n <div\n className={withBaseName(\"scrollingContentContainer\")}\n style={{ height: contentHeight }}\n >\n <ListItemProxy ref={rowHeightProxyRef} />\n {renderContent()}\n </div>\n </div>\n );\n}) as <Item = string, Selection extends SelectionStrategy = \"default\">(\n props: ListProps<Item, Selection> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ListProps<Item, Selection>>;\n", "import { useMemo } from \"react\";\nimport { CollectionItem } from \"../common-hooks\";\nimport { KeySet } from \"./keyset\";\nimport { ViewportRange } from \"./useScrollPosition\";\n\n/**\n * [ item key, total height before the item, next row index, CollectionItem<Item>]\n * e.g. first item: [0, 0, 1, data[0]]\n */\nexport type Row<Item> = [number, number, number, CollectionItem<Item>];\n\nconst byKey = ([k1]: Row<unknown>, [k2]: Row<unknown>) => k1 - k2;\n\nconst renderBuffer = 5;\n\ninterface VirtualizationHookProps<Item> {\n data: CollectionItem<Item>[];\n listItemGapSize?: number;\n listItemHeight: number;\n viewportRange: ViewportRange;\n}\n\nexport const useVirtualization = <Item>({\n data,\n listItemGapSize = 0,\n listItemHeight,\n viewportRange,\n}: VirtualizationHookProps<Item>): Row<Item>[] => {\n const keys = useMemo(() => new KeySet(0, 1), []);\n const rowHeightWithGap = listItemHeight + listItemGapSize;\n const lo = Math.max(0, viewportRange.from - renderBuffer);\n const hi = Math.min(data.length, viewportRange.to + renderBuffer);\n keys.reset(lo, hi);\n const rows = data\n .slice(lo, hi)\n .map(\n (value, idx) =>\n [\n keys.keyFor(idx + lo),\n (idx + lo) * rowHeightWithGap,\n idx + lo + 1,\n value,\n ] as Row<Item>\n )\n .sort(byKey);\n\n return rows;\n};\n", "export class KeySet {\n private keys: Map<number, number>;\n private free: number[];\n private nextKeyValue: number;\n\n constructor(from = 0, to = 0) {\n this.keys = new Map<number, number>();\n this.free = [];\n this.nextKeyValue = 0;\n this.reset(from, to);\n }\n\n next(): number {\n if (this.free.length) {\n return this.free.pop()!;\n } else {\n return this.nextKeyValue++;\n }\n }\n\n reset(from: number, to: number) {\n this.keys.forEach((keyValue, rowIndex) => {\n if (rowIndex < from || rowIndex >= to) {\n this.free.push(keyValue);\n this.keys.delete(rowIndex);\n }\n });\n\n const size = to - from;\n if (this.keys.size + this.free.length > size) {\n this.free.length = size - this.keys.size;\n }\n\n for (let rowIndex = from; rowIndex < to; rowIndex++) {\n if (!this.keys.has(rowIndex)) {\n const nextKeyValue = this.next();\n this.keys.set(rowIndex, nextKeyValue);\n }\n }\n }\n\n keyFor(rowIndex: number) {\n return this.keys.get(rowIndex);\n }\n}\n", "import cx from \"clsx\";\n\nimport \"./RadioIcon.css\";\n\nconst classBase = \"vuuRadioIcon\";\n\nexport const RadioIcon = ({ checked = false, ...htmlAttributes }) => (\n <span\n {...htmlAttributes}\n className={cx(classBase, { [`${classBase}-checked`]: checked })}\n />\n);\n", "import { useControlled } from \"@salt-ds/core\";\nimport { RefObject, useCallback, useMemo } from \"react\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { DropdownHookResult, DropdownHookProps } from \"./dropdownTypes\";\nimport {\n itemToString as defaultItemToString,\n SelectHandler,\n SelectionStrategy,\n isMultiSelection,\n MultiSelectionHandler,\n SingleSelectionHandler,\n} from \"../common-hooks\";\n\nexport interface DropdownListHookProps<\n Item,\n S extends SelectionStrategy = \"default\"\n> extends Partial<Omit<DropdownHookProps, \"onKeyDown\">>,\n Omit<ListHookProps<Item, S>, \"containerRef\"> {\n itemToString?: (item: Item) => string;\n listRef: RefObject<HTMLDivElement>;\n}\n\nexport interface DropdownListHookResult<Item>\n extends Partial<ListHookResult<Item>>,\n Partial<DropdownHookResult> {\n onOpenChange: any;\n triggerLabel?: string;\n}\n\nexport const useDropdown = <Item, S extends SelectionStrategy>({\n collectionHook,\n defaultHighlightedIndex: defaultHighlightedIndexProp,\n defaultIsOpen,\n defaultSelected,\n highlightedIndex: highlightedIndexProp,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n listRef,\n onHighlight,\n onOpenChange,\n onSelectionChange,\n onSelect,\n selected,\n selectionStrategy,\n}: DropdownListHookProps<Item, S>): DropdownListHookResult<Item> => {\n const isMultiSelect = isMultiSelection(selectionStrategy);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const handleSelectionChange = useCallback(\n (evt, selected) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n onOpenChange?.(false);\n }\n if (Array.isArray(selected)) {\n (onSelectionChange as MultiSelectionHandler<Item>)?.(\n evt,\n selected as Item[]\n );\n } else if (selected) {\n (onSelectionChange as SingleSelectionHandler<Item>)?.(\n evt,\n selected as Item\n );\n }\n },\n [isMultiSelect, onOpenChange, onSelectionChange, setIsOpen]\n );\n\n const handleSelect = useCallback<SelectHandler<Item>>(\n (evt, selected) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n onOpenChange?.(false);\n }\n onSelect?.(evt, selected);\n },\n [isMultiSelect, onOpenChange, onSelect, setIsOpen]\n );\n\n const listHook = useList<Item, S>({\n collectionHook,\n defaultHighlightedIndex:\n defaultHighlightedIndexProp ?? highlightedIndexProp === undefined\n ? 0\n : undefined,\n defaultSelected,\n label: \"DropDown\",\n onSelectionChange: handleSelectionChange,\n onSelect: handleSelect,\n containerRef: listRef,\n highlightedIndex: highlightedIndexProp,\n onHighlight,\n selected,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n onOpenChange?.(open);\n },\n [onOpenChange, setIsOpen]\n );\n\n const triggerLabel = useMemo(() => {\n if (Array.isArray(listHook.selected)) {\n const selectedItems = listHook.selected.map((id) =>\n collectionHook.itemById(id)\n );\n if (selectedItems.length === 0) {\n return undefined;\n } else if (selectedItems.length === 1) {\n const [item] = selectedItems;\n return item === null ? undefined : itemToString(item);\n } else {\n return `${selectedItems.length} items selected`;\n }\n }\n }, [collectionHook, itemToString, listHook.selected]);\n\n return {\n isOpen,\n onOpenChange: handleOpenChange,\n triggerLabel,\n ...listHook,\n };\n};\n", "import { createContext, useContext } from \"react\";\nimport { useCalendar } from \"../useCalendar\";\n\ntype CalendarState = {\n state: ReturnType<typeof useCalendar>[\"state\"];\n helpers: ReturnType<typeof useCalendar>[\"helpers\"];\n};\n\nconst CalendarContext = createContext<CalendarState | null>(null);\n\nif (process.env.NODE_ENV !== \"production\") {\n CalendarContext.displayName = \"CalendarContext\";\n}\n\nfunction useCalendarContext(): CalendarState {\n const context = useContext(CalendarContext);\n\n if (!context) {\n throw new Error(\"Unexpected usage\");\n }\n\n return context;\n}\n\nexport { CalendarContext, useCalendarContext };\n", "export function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nexport { _check_private_redeclaration as _ };\n", "import { _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nexport function _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport type {\n AnyCalendarDate,\n AnyTime,\n AnyDateTime,\n Calendar,\n DateDuration,\n TimeDuration,\n DateTimeDuration,\n DateFields,\n TimeFields,\n DateField,\n TimeField,\n Disambiguation,\n CycleOptions,\n CycleTimeOptions\n} from './types';\n\nexport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nexport {GregorianCalendar} from './calendars/GregorianCalendar';\nexport {JapaneseCalendar} from './calendars/JapaneseCalendar';\nexport {BuddhistCalendar} from './calendars/BuddhistCalendar';\nexport {TaiwanCalendar} from './calendars/TaiwanCalendar';\nexport {PersianCalendar} from './calendars/PersianCalendar';\nexport {IndianCalendar} from './calendars/IndianCalendar';\nexport {IslamicCivilCalendar, IslamicTabularCalendar, IslamicUmalquraCalendar} from './calendars/IslamicCalendar';\nexport {HebrewCalendar} from './calendars/HebrewCalendar';\nexport {EthiopicCalendar, EthiopicAmeteAlemCalendar, CopticCalendar} from './calendars/EthiopicCalendar';\nexport {createCalendar} from './createCalendar';\nexport {\n toCalendarDate,\n toCalendarDateTime,\n toTime,\n toCalendar,\n toZoned,\n toTimeZone,\n toLocalTimeZone,\n fromDate,\n fromAbsolute\n} from './conversion';\nexport {\n isSameDay,\n isSameMonth,\n isSameYear,\n isEqualDay,\n isEqualMonth,\n isEqualYear,\n isToday,\n getDayOfWeek,\n now,\n today,\n getHoursInDay,\n getLocalTimeZone,\n startOfMonth,\n startOfWeek,\n startOfYear,\n endOfMonth,\n endOfWeek,\n endOfYear,\n getMinimumMonthInYear,\n getMinimumDayInMonth,\n getWeeksInMonth,\n minDate,\n maxDate,\n isWeekend,\n isWeekday\n} from './queries';\nexport {\n parseDate,\n parseDateTime,\n parseTime,\n parseAbsolute,\n parseAbsoluteToLocal,\n parseZonedDateTime,\n parseDuration\n} from './string';\nexport {DateFormatter} from './DateFormatter';\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {add, addTime, addZoned, constrain, constrainTime, cycleDate, cycleTime, cycleZoned, set, setTime, setZoned, subtract, subtractTime, subtractZoned} from './manipulation';\nimport {AnyCalendarDate, AnyTime, Calendar, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {compareDate, compareTime} from './queries';\nimport {dateTimeToString, dateToString, timeToString, zonedDateTimeToString} from './string';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {toCalendarDateTime, toDate, toZoned, zonedToDate} from './conversion';\n\nfunction shiftArgs(args: any[]) {\n let calendar: Calendar = typeof args[0] === 'object'\n ? args.shift()\n : new GregorianCalendar();\n\n let era: string;\n if (typeof args[0] === 'string') {\n era = args.shift();\n } else {\n let eras = calendar.getEras();\n era = eras[eras.length - 1];\n }\n\n let year = args.shift();\n let month = args.shift();\n let day = args.shift();\n\n return [calendar, era, year, month, day];\n}\n\n/** A CalendarDate represents a date without any time components in a specific calendar system. */\nexport class CalendarDate {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // i.e. a ZonedDateTime should not be be passable to a parameter that expects CalendarDate.\n // If that behavior is desired, use the AnyCalendarDate interface instead.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n\n constructor(year: number, month: number, day: number);\n constructor(era: string, year: number, month: number, day: number);\n constructor(calendar: Calendar, year: number, month: number, day: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDate {\n if (this.era) {\n return new CalendarDate(this.calendar, this.era, this.year, this.month, this.day);\n } else {\n return new CalendarDate(this.calendar, this.year, this.month, this.day);\n }\n }\n\n /** Returns a new `CalendarDate` with the given duration added to it. */\n add(duration: DateDuration): CalendarDate {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given duration subtracted from it. */\n subtract(duration: DateDuration): CalendarDate {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDate` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields): CalendarDate {\n return set(this, fields);\n }\n\n /**\n * Returns a new `CalendarDate` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField, amount: number, options?: CycleOptions): CalendarDate {\n return cycleDate(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object, with the time set to midnight in the given time zone. */\n toDate(timeZone: string): Date {\n return toDate(this, timeZone);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: AnyCalendarDate): number {\n return compareDate(this, b);\n }\n}\n\n/** A Time represents a clock time without any date components. */\nexport class Time {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The hour, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(\n hour: number = 0,\n minute: number = 0,\n second: number = 0,\n millisecond: number = 0\n ) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond;\n constrainTime(this);\n }\n\n /** Returns a copy of this time. */\n copy(): Time {\n return new Time(this.hour, this.minute, this.second, this.millisecond);\n }\n\n /** Returns a new `Time` with the given duration added to it. */\n add(duration: TimeDuration) {\n return addTime(this, duration);\n }\n\n /** Returns a new `Time` with the given duration subtracted from it. */\n subtract(duration: TimeDuration) {\n return subtractTime(this, duration);\n }\n\n /** Returns a new `Time` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: TimeFields) {\n return setTime(this, fields);\n }\n\n /**\n * Returns a new `Time` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: TimeField, amount: number, options?: CycleTimeOptions) {\n return cycleTime(this, field, amount, options);\n }\n\n /** Converts the time to an ISO 8601 formatted string. */\n toString() {\n return timeToString(this);\n }\n\n /** Compares this time with another. A negative result indicates that this time is before the given one, and a positive time indicates that it is after. */\n compare(b: AnyTime) {\n return compareTime(this, b);\n }\n}\n\n/** A CalendarDateTime represents a date and time without a time zone, in a specific calendar system. */\nexport class CalendarDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n\n constructor(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): CalendarDateTime {\n if (this.era) {\n return new CalendarDateTime(this.calendar, this.era, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new CalendarDateTime(this.calendar, this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `CalendarDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration): CalendarDateTime {\n return add(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration): CalendarDateTime {\n return subtract(this, duration);\n }\n\n /** Returns a new `CalendarDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields): CalendarDateTime {\n return set(setTime(this, fields), fields);\n }\n\n /**\n * Returns a new `CalendarDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime {\n switch (field) {\n case 'era':\n case 'year':\n case 'month':\n case 'day':\n return cycleDate(this, field, amount, options);\n default:\n return cycleTime(this, field, amount, options);\n }\n }\n\n /** Converts the date to a native JavaScript Date object in the given time zone. */\n toDate(timeZone: string, disambiguation?: Disambiguation): Date {\n return toDate(this, timeZone, disambiguation);\n }\n\n /** Converts the date to an ISO 8601 formatted string. */\n toString(): string {\n return dateTimeToString(this);\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime): number {\n let res = compareDate(this, b);\n if (res === 0) {\n return compareTime(this, toCalendarDateTime(b));\n }\n\n return res;\n }\n}\n\n/** A ZonedDateTime represents a date and time in a specific time zone and calendar system. */\nexport class ZonedDateTime {\n // This prevents TypeScript from allowing other types with the same fields to match.\n // @ts-ignore\n #type;\n /** The calendar system associated with this date, e.g. Gregorian. */\n public readonly calendar: Calendar;\n /** The calendar era for this date, e.g. \"BC\" or \"AD\". */\n public readonly era: string;\n /** The year of this date within the era. */\n public readonly year: number;\n /**\n * The month number within the year. Note that some calendar systems such as Hebrew\n * may have a variable number of months per year. Therefore, month numbers may not\n * always correspond to the same month names in different years.\n */\n public readonly month: number;\n /** The day number within the month. */\n public readonly day: number;\n /** The hour in the day, numbered from 0 to 23. */\n public readonly hour: number;\n /** The minute in the hour. */\n public readonly minute: number;\n /** The second in the minute. */\n public readonly second: number;\n /** The millisecond in the second. */\n public readonly millisecond: number;\n /** The IANA time zone identifier that this date and time is represented in. */\n public readonly timeZone: string;\n /** The UTC offset for this time, in milliseconds. */\n public readonly offset: number;\n\n constructor(year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(calendar: Calendar, era: string, year: number, month: number, day: number, timeZone: string, offset: number, hour?: number, minute?: number, second?: number, millisecond?: number);\n constructor(...args: any[]) {\n let [calendar, era, year, month, day] = shiftArgs(args);\n let timeZone = args.shift();\n let offset = args.shift();\n this.calendar = calendar;\n this.era = era;\n this.year = year;\n this.month = month;\n this.day = day;\n this.timeZone = timeZone;\n this.offset = offset;\n this.hour = args.shift() || 0;\n this.minute = args.shift() || 0;\n this.second = args.shift() || 0;\n this.millisecond = args.shift() || 0;\n\n constrain(this);\n }\n\n /** Returns a copy of this date. */\n copy(): ZonedDateTime {\n if (this.era) {\n return new ZonedDateTime(this.calendar, this.era, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n } else {\n return new ZonedDateTime(this.calendar, this.year, this.month, this.day, this.timeZone, this.offset, this.hour, this.minute, this.second, this.millisecond);\n }\n }\n\n /** Returns a new `ZonedDateTime` with the given duration added to it. */\n add(duration: DateTimeDuration) {\n return addZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given duration subtracted from it. */\n subtract(duration: DateTimeDuration) {\n return subtractZoned(this, duration);\n }\n\n /** Returns a new `ZonedDateTime` with the given fields set to the provided values. Other fields will be constrained accordingly. */\n set(fields: DateFields & TimeFields, disambiguation?: Disambiguation) {\n return setZoned(this, fields, disambiguation);\n }\n\n /**\n * Returns a new `ZonedDateTime` with the given field adjusted by a specified amount.\n * When the resulting value reaches the limits of the field, it wraps around.\n */\n cycle(field: DateField | TimeField, amount: number, options?: CycleTimeOptions) {\n return cycleZoned(this, field, amount, options);\n }\n\n /** Converts the date to a native JavaScript Date object. */\n toDate() {\n return zonedToDate(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string, including the UTC offset and time zone identifier. */\n toString() {\n return zonedDateTimeToString(this);\n }\n\n /** Converts the date to an ISO 8601 formatted string in UTC. */\n toAbsoluteString() {\n return this.toDate().toISOString();\n }\n\n /** Compares this date with another. A negative result indicates that this date is before the given one, and a positive date indicates that it is after. */\n compare(b: CalendarDate | CalendarDateTime | ZonedDateTime) {\n // TODO: Is this a bad idea??\n return this.toDate().getTime() - toZoned(b, this.timeZone).toDate().getTime();\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, CycleOptions, CycleTimeOptions, DateDuration, DateField, DateFields, DateTimeDuration, Disambiguation, TimeDuration, TimeField, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, toAbsolute, toCalendar, toCalendarDateTime} from './conversion';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst ONE_HOUR = 3600000;\n\nexport function add(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function add(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime;\nexport function add(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration) {\n let mutableDate: Mutable<AnyCalendarDate | AnyDateTime> = date.copy();\n let days = 'hour' in mutableDate ? addTimeFields(mutableDate, duration) : 0;\n\n addYears(mutableDate, duration.years || 0);\n if (mutableDate.calendar.balanceYearMonth) {\n mutableDate.calendar.balanceYearMonth(mutableDate, date);\n }\n\n mutableDate.month += duration.months || 0;\n\n balanceYearMonth(mutableDate);\n constrainMonthDay(mutableDate);\n\n mutableDate.day += (duration.weeks || 0) * 7;\n mutableDate.day += duration.days || 0;\n mutableDate.day += days;\n\n balanceDay(mutableDate);\n\n if (mutableDate.calendar.balanceDate) {\n mutableDate.calendar.balanceDate(mutableDate);\n }\n\n // Constrain in case adding ended up with a date outside the valid range for the calendar system.\n // The behavior here is slightly different than when constraining in the `set` function in that\n // we adjust smaller fields to their minimum/maximum values rather than constraining each field\n // individually. This matches the general behavior of `add` vs `set` regarding how fields are balanced.\n if (mutableDate.year < 1) {\n mutableDate.year = 1;\n mutableDate.month = 1;\n mutableDate.day = 1;\n }\n\n let maxYear = mutableDate.calendar.getYearsInEra(mutableDate);\n if (mutableDate.year > maxYear) {\n let isInverseEra = mutableDate.calendar.isInverseEra?.(mutableDate);\n mutableDate.year = maxYear;\n mutableDate.month = isInverseEra ? 1 : mutableDate.calendar.getMonthsInYear(mutableDate);\n mutableDate.day = isInverseEra ? 1 : mutableDate.calendar.getDaysInMonth(mutableDate);\n }\n\n if (mutableDate.month < 1) {\n mutableDate.month = 1;\n mutableDate.day = 1;\n }\n\n let maxMonth = mutableDate.calendar.getMonthsInYear(mutableDate);\n if (mutableDate.month > maxMonth) {\n mutableDate.month = maxMonth;\n mutableDate.day = mutableDate.calendar.getDaysInMonth(mutableDate);\n }\n\n mutableDate.day = Math.max(1, Math.min(mutableDate.calendar.getDaysInMonth(mutableDate), mutableDate.day));\n return mutableDate;\n}\n\nfunction addYears(date: Mutable<AnyCalendarDate>, years: number) {\n if (date.calendar.isInverseEra?.(date)) {\n years = -years;\n }\n\n date.year += years;\n}\n\nfunction balanceYearMonth(date: Mutable<AnyCalendarDate>) {\n while (date.month < 1) {\n addYears(date, -1);\n date.month += date.calendar.getMonthsInYear(date);\n }\n\n let monthsInYear = 0;\n while (date.month > (monthsInYear = date.calendar.getMonthsInYear(date))) {\n date.month -= monthsInYear;\n addYears(date, 1);\n }\n}\n\nfunction balanceDay(date: Mutable<AnyCalendarDate>) {\n while (date.day < 1) {\n date.month--;\n balanceYearMonth(date);\n date.day += date.calendar.getDaysInMonth(date);\n }\n\n while (date.day > date.calendar.getDaysInMonth(date)) {\n date.day -= date.calendar.getDaysInMonth(date);\n date.month++;\n balanceYearMonth(date);\n }\n}\n\nfunction constrainMonthDay(date: Mutable<AnyCalendarDate>) {\n date.month = Math.max(1, Math.min(date.calendar.getMonthsInYear(date), date.month));\n date.day = Math.max(1, Math.min(date.calendar.getDaysInMonth(date), date.day));\n}\n\nexport function constrain(date: Mutable<AnyCalendarDate>) {\n if (date.calendar.constrainDate) {\n date.calendar.constrainDate(date);\n }\n\n date.year = Math.max(1, Math.min(date.calendar.getYearsInEra(date), date.year));\n constrainMonthDay(date);\n}\n\nexport function invertDuration(duration: DateTimeDuration): DateTimeDuration {\n let inverseDuration = {};\n for (let key in duration) {\n if (typeof duration[key] === 'number') {\n inverseDuration[key] = -duration[key];\n }\n }\n\n return inverseDuration;\n}\n\nexport function subtract(date: CalendarDateTime, duration: DateTimeDuration): CalendarDateTime;\nexport function subtract(date: CalendarDate, duration: DateDuration): CalendarDate;\nexport function subtract(date: CalendarDate | CalendarDateTime, duration: DateTimeDuration): CalendarDate | CalendarDateTime {\n return add(date, invertDuration(duration));\n}\n\nexport function set(date: CalendarDateTime, fields: DateFields): CalendarDateTime;\nexport function set(date: CalendarDate, fields: DateFields): CalendarDate;\nexport function set(date: CalendarDate | CalendarDateTime, fields: DateFields) {\n let mutableDate: Mutable<AnyCalendarDate> = date.copy();\n\n if (fields.era != null) {\n mutableDate.era = fields.era;\n }\n\n if (fields.year != null) {\n mutableDate.year = fields.year;\n }\n\n if (fields.month != null) {\n mutableDate.month = fields.month;\n }\n\n if (fields.day != null) {\n mutableDate.day = fields.day;\n }\n\n constrain(mutableDate);\n return mutableDate;\n}\n\nexport function setTime(value: CalendarDateTime, fields: TimeFields): CalendarDateTime;\nexport function setTime(value: Time, fields: TimeFields): Time;\nexport function setTime(value: Time | CalendarDateTime, fields: TimeFields) {\n let mutableValue: Mutable<Time | CalendarDateTime> = value.copy();\n\n if (fields.hour != null) {\n mutableValue.hour = fields.hour;\n }\n\n if (fields.minute != null) {\n mutableValue.minute = fields.minute;\n }\n\n if (fields.second != null) {\n mutableValue.second = fields.second;\n }\n\n if (fields.millisecond != null) {\n mutableValue.millisecond = fields.millisecond;\n }\n\n constrainTime(mutableValue);\n return mutableValue;\n}\n\nfunction balanceTime(time: Mutable<AnyTime>): number {\n time.second += Math.floor(time.millisecond / 1000);\n time.millisecond = nonNegativeMod(time.millisecond, 1000);\n\n time.minute += Math.floor(time.second / 60);\n time.second = nonNegativeMod(time.second, 60);\n\n time.hour += Math.floor(time.minute / 60);\n time.minute = nonNegativeMod(time.minute, 60);\n\n let days = Math.floor(time.hour / 24);\n time.hour = nonNegativeMod(time.hour, 24);\n\n return days;\n}\n\nexport function constrainTime(time: Mutable<AnyTime>) {\n time.millisecond = Math.max(0, Math.min(time.millisecond, 1000));\n time.second = Math.max(0, Math.min(time.second, 59));\n time.minute = Math.max(0, Math.min(time.minute, 59));\n time.hour = Math.max(0, Math.min(time.hour, 23));\n}\n\nfunction nonNegativeMod(a: number, b: number) {\n let result = a % b;\n if (result < 0) {\n result += b;\n }\n return result;\n}\n\nfunction addTimeFields(time: Mutable<AnyTime>, duration: TimeDuration): number {\n time.hour += duration.hours || 0;\n time.minute += duration.minutes || 0;\n time.second += duration.seconds || 0;\n time.millisecond += duration.milliseconds || 0;\n return balanceTime(time);\n}\n\nexport function addTime(time: Time, duration: TimeDuration): Time {\n let res = time.copy();\n addTimeFields(res, duration);\n return res;\n}\n\nexport function subtractTime(time: Time, duration: TimeDuration): Time {\n return addTime(time, invertDuration(duration));\n}\n\nexport function cycleDate(value: CalendarDateTime, field: DateField, amount: number, options?: CycleOptions): CalendarDateTime;\nexport function cycleDate(value: CalendarDate, field: DateField, amount: number, options?: CycleOptions): CalendarDate;\nexport function cycleDate(value: CalendarDate | CalendarDateTime, field: DateField, amount: number, options?: CycleOptions) {\n let mutable: Mutable<CalendarDate | CalendarDateTime> = value.copy();\n\n switch (field) {\n case 'era': {\n let eras = value.calendar.getEras();\n let eraIndex = eras.indexOf(value.era);\n if (eraIndex < 0) {\n throw new Error('Invalid era: ' + value.era);\n }\n eraIndex = cycleValue(eraIndex, amount, 0, eras.length - 1, options?.round);\n mutable.era = eras[eraIndex];\n\n // Constrain the year and other fields within the era, so the era doesn't change when we balance below.\n constrain(mutable);\n break;\n }\n case 'year': {\n if (mutable.calendar.isInverseEra?.(mutable)) {\n amount = -amount;\n }\n\n // The year field should not cycle within the era as that can cause weird behavior affecting other fields.\n // We need to also allow values < 1 so that decrementing goes to the previous era. If we get -Infinity back\n // we know we wrapped around after reaching 9999 (the maximum), so set the year back to 1.\n mutable.year = cycleValue(value.year, amount, -Infinity, 9999, options?.round);\n if (mutable.year === -Infinity) {\n mutable.year = 1;\n }\n\n if (mutable.calendar.balanceYearMonth) {\n mutable.calendar.balanceYearMonth(mutable, value);\n }\n break;\n }\n case 'month':\n mutable.month = cycleValue(value.month, amount, 1, value.calendar.getMonthsInYear(value), options?.round);\n break;\n case 'day':\n mutable.day = cycleValue(value.day, amount, 1, value.calendar.getDaysInMonth(value), options?.round);\n break;\n default:\n throw new Error('Unsupported field ' + field);\n }\n\n if (value.calendar.balanceDate) {\n value.calendar.balanceDate(mutable);\n }\n\n constrain(mutable);\n return mutable;\n}\n\nexport function cycleTime(value: CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions): CalendarDateTime;\nexport function cycleTime(value: Time, field: TimeField, amount: number, options?: CycleTimeOptions): Time;\nexport function cycleTime(value: Time | CalendarDateTime, field: TimeField, amount: number, options?: CycleTimeOptions) {\n let mutable: Mutable<Time | CalendarDateTime> = value.copy();\n\n switch (field) {\n case 'hour': {\n let hours = value.hour;\n let min = 0;\n let max = 23;\n if (options?.hourCycle === 12) {\n let isPM = hours >= 12;\n min = isPM ? 12 : 0;\n max = isPM ? 23 : 11;\n }\n mutable.hour = cycleValue(hours, amount, min, max, options?.round);\n break;\n }\n case 'minute':\n mutable.minute = cycleValue(value.minute, amount, 0, 59, options?.round);\n break;\n case 'second':\n mutable.second = cycleValue(value.second, amount, 0, 59, options?.round);\n break;\n case 'millisecond':\n mutable.millisecond = cycleValue(value.millisecond, amount, 0, 999, options?.round);\n break;\n default:\n throw new Error('Unsupported field ' + field);\n }\n\n return mutable;\n}\n\nfunction cycleValue(value: number, amount: number, min: number, max: number, round = false) {\n if (round) {\n value += Math.sign(amount);\n\n if (value < min) {\n value = max;\n }\n\n let div = Math.abs(amount);\n if (amount > 0) {\n value = Math.ceil(value / div) * div;\n } else {\n value = Math.floor(value / div) * div;\n }\n\n if (value > max) {\n value = min;\n }\n } else {\n value += amount;\n if (value < min) {\n value = max - (min - value - 1);\n } else if (value > max) {\n value = min + (value - max - 1);\n }\n }\n\n return value;\n}\n\nexport function addZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n let ms: number;\n if ((duration.years != null && duration.years !== 0) || (duration.months != null && duration.months !== 0) || (duration.weeks != null && duration.weeks !== 0) || (duration.days != null && duration.days !== 0)) {\n let res = add(toCalendarDateTime(dateTime), {\n years: duration.years,\n months: duration.months,\n weeks: duration.weeks,\n days: duration.days\n });\n\n // Changing the date may change the timezone offset, so we need to recompute\n // using the 'compatible' disambiguation.\n ms = toAbsolute(res, dateTime.timeZone);\n } else {\n // Otherwise, preserve the offset of the original date.\n ms = epochFromDate(dateTime) - dateTime.offset;\n }\n\n // Perform time manipulation in milliseconds rather than on the original time fields to account for DST.\n // For example, adding one hour during a DST transition may result in the hour field staying the same or\n // skipping an hour. This results in the offset field changing value instead of the specified field.\n ms += duration.milliseconds || 0;\n ms += (duration.seconds || 0) * 1000;\n ms += (duration.minutes || 0) * 60 * 1000;\n ms += (duration.hours || 0) * 60 * 60 * 1000;\n\n let res = fromAbsolute(ms, dateTime.timeZone);\n return toCalendar(res, dateTime.calendar);\n}\n\nexport function subtractZoned(dateTime: ZonedDateTime, duration: DateTimeDuration): ZonedDateTime {\n return addZoned(dateTime, invertDuration(duration));\n}\n\nexport function cycleZoned(dateTime: ZonedDateTime, field: DateField | TimeField, amount: number, options?: CycleTimeOptions): ZonedDateTime {\n // For date fields, we want the time to remain consistent and the UTC offset to potentially change to account for DST changes.\n // For time fields, we want the time to change by the amount given. This may result in the hour field staying the same, but the UTC\n // offset changing in the case of a backward DST transition, or skipping an hour in the case of a forward DST transition.\n switch (field) {\n case 'hour': {\n let min = 0;\n let max = 23;\n if (options?.hourCycle === 12) {\n let isPM = dateTime.hour >= 12;\n min = isPM ? 12 : 0;\n max = isPM ? 23 : 11;\n }\n\n // The minimum and maximum hour may be affected by daylight saving time.\n // For example, it might jump forward at midnight, and skip 1am.\n // Or it might end at midnight and repeat the 11pm hour. To handle this, we get\n // the possible absolute times for the min and max, and find the maximum range\n // that is within the current day.\n let plainDateTime = toCalendarDateTime(dateTime);\n let minDate = toCalendar(setTime(plainDateTime, {hour: min}), new GregorianCalendar());\n let minAbsolute = [toAbsolute(minDate, dateTime.timeZone, 'earlier'), toAbsolute(minDate, dateTime.timeZone, 'later')]\n .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === minDate.day)[0];\n\n let maxDate = toCalendar(setTime(plainDateTime, {hour: max}), new GregorianCalendar());\n let maxAbsolute = [toAbsolute(maxDate, dateTime.timeZone, 'earlier'), toAbsolute(maxDate, dateTime.timeZone, 'later')]\n .filter(ms => fromAbsolute(ms, dateTime.timeZone).day === maxDate.day).pop();\n\n // Since hours may repeat, we need to operate on the absolute time in milliseconds.\n // This is done in hours from the Unix epoch so that cycleValue works correctly,\n // and then converted back to milliseconds.\n let ms = epochFromDate(dateTime) - dateTime.offset;\n let hours = Math.floor(ms / ONE_HOUR);\n let remainder = ms % ONE_HOUR;\n ms = cycleValue(\n hours,\n amount,\n Math.floor(minAbsolute / ONE_HOUR),\n Math.floor(maxAbsolute / ONE_HOUR),\n options?.round\n ) * ONE_HOUR + remainder;\n\n // Now compute the new timezone offset, and convert the absolute time back to local time.\n return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n }\n case 'minute':\n case 'second':\n case 'millisecond':\n // @ts-ignore\n return cycleTime(dateTime, field, amount, options);\n case 'era':\n case 'year':\n case 'month':\n case 'day': {\n let res = cycleDate(toCalendarDateTime(dateTime), field, amount, options);\n let ms = toAbsolute(res, dateTime.timeZone);\n return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n }\n default:\n throw new Error('Unsupported field ' + field);\n }\n}\n\nexport function setZoned(dateTime: ZonedDateTime, fields: DateFields & TimeFields, disambiguation?: Disambiguation): ZonedDateTime {\n // Set the date/time fields, and recompute the UTC offset to account for DST changes.\n // We also need to validate by converting back to a local time in case hours are skipped during forward DST transitions.\n let plainDateTime = toCalendarDateTime(dateTime);\n let res = setTime(set(plainDateTime, fields), fields);\n\n // If the resulting plain date time values are equal, return the original time.\n // We don't want to change the offset when setting the time to the same value.\n if (res.compare(plainDateTime) === 0) {\n return dateTime;\n }\n\n let ms = toAbsolute(res, dateTime.timeZone, disambiguation);\n return toCalendar(fromAbsolute(ms, dateTime.timeZone), dateTime.calendar);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from the TC39 Temporal proposal.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, AnyDateTime, AnyTime, Calendar, DateFields, Disambiguation, TimeFields} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {constrain} from './manipulation';\nimport {getExtendedYear, GregorianCalendar} from './calendars/GregorianCalendar';\nimport {getLocalTimeZone} from './queries';\nimport {Mutable} from './utils';\n\nexport function epochFromDate(date: AnyDateTime) {\n date = toCalendar(date, new GregorianCalendar());\n let year = getExtendedYear(date.era, date.year);\n return epochFromParts(year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);\n}\n\nfunction epochFromParts(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number) {\n // Note: Date.UTC() interprets one and two-digit years as being in the\n // 20th century, so don't use it\n let date = new Date();\n date.setUTCHours(hour, minute, second, millisecond);\n date.setUTCFullYear(year, month - 1, day);\n return date.getTime();\n}\n\nexport function getTimeZoneOffset(ms: number, timeZone: string) {\n // Fast path for UTC.\n if (timeZone === 'UTC') {\n return 0;\n }\n\n // Fast path: for local timezone after 1970, use native Date.\n if (ms > 0 && timeZone === getLocalTimeZone()) {\n return new Date(ms).getTimezoneOffset() * -60 * 1000;\n }\n\n let {year, month, day, hour, minute, second} = getTimeZoneParts(ms, timeZone);\n let utc = epochFromParts(year, month, day, hour, minute, second, 0);\n return utc - Math.floor(ms / 1000) * 1000;\n}\n\nconst formattersByTimeZone = new Map<string, Intl.DateTimeFormat>();\n\nfunction getTimeZoneParts(ms: number, timeZone: string) {\n let formatter = formattersByTimeZone.get(timeZone);\n if (!formatter) {\n formatter = new Intl.DateTimeFormat('en-US', {\n timeZone,\n hour12: false,\n era: 'short',\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric'\n });\n\n formattersByTimeZone.set(timeZone, formatter);\n }\n\n let parts = formatter.formatToParts(new Date(ms));\n let namedParts: {[name: string]: string} = {};\n for (let part of parts) {\n if (part.type !== 'literal') {\n namedParts[part.type] = part.value;\n }\n }\n\n\n return {\n // Firefox returns B instead of BC... https://bugzilla.mozilla.org/show_bug.cgi?id=1752253\n year: namedParts.era === 'BC' || namedParts.era === 'B' ? -namedParts.year + 1 : +namedParts.year,\n month: +namedParts.month,\n day: +namedParts.day,\n hour: namedParts.hour === '24' ? 0 : +namedParts.hour, // bugs.chromium.org/p/chromium/issues/detail?id=1045791\n minute: +namedParts.minute,\n second: +namedParts.second\n };\n}\n\nconst DAYMILLIS = 86400000;\n\nexport function possibleAbsolutes(date: CalendarDateTime, timeZone: string): number[] {\n let ms = epochFromDate(date);\n let earlier = ms - getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n let later = ms - getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n return getValidWallTimes(date, timeZone, earlier, later);\n}\n\nfunction getValidWallTimes(date: CalendarDateTime, timeZone: string, earlier: number, later: number): number[] {\n let found = earlier === later ? [earlier] : [earlier, later];\n return found.filter(absolute => isValidWallTime(date, timeZone, absolute));\n}\n\nfunction isValidWallTime(date: CalendarDateTime, timeZone: string, absolute: number) {\n let parts = getTimeZoneParts(absolute, timeZone);\n return date.year === parts.year\n && date.month === parts.month\n && date.day === parts.day\n && date.hour === parts.hour\n && date.minute === parts.minute\n && date.second === parts.second;\n}\n\nexport function toAbsolute(date: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): number {\n let dateTime = toCalendarDateTime(date);\n\n // Fast path: if the time zone is UTC, use native Date.\n if (timeZone === 'UTC') {\n return epochFromDate(dateTime);\n }\n\n // Fast path: if the time zone is the local timezone and disambiguation is compatible, use native Date.\n if (timeZone === getLocalTimeZone() && disambiguation === 'compatible') {\n dateTime = toCalendar(dateTime, new GregorianCalendar());\n\n // Don't use Date constructor here because two-digit years are interpreted in the 20th century.\n let date = new Date();\n let year = getExtendedYear(dateTime.era, dateTime.year);\n date.setFullYear(year, dateTime.month - 1, dateTime.day);\n date.setHours(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n return date.getTime();\n }\n\n let ms = epochFromDate(dateTime);\n let offsetBefore = getTimeZoneOffset(ms - DAYMILLIS, timeZone);\n let offsetAfter = getTimeZoneOffset(ms + DAYMILLIS, timeZone);\n let valid = getValidWallTimes(dateTime, timeZone, ms - offsetBefore, ms - offsetAfter);\n\n if (valid.length === 1) {\n return valid[0];\n }\n\n if (valid.length > 1) {\n switch (disambiguation) {\n // 'compatible' means 'earlier' for \"fall back\" transitions\n case 'compatible':\n case 'earlier':\n return valid[0];\n case 'later':\n return valid[valid.length - 1];\n case 'reject':\n throw new RangeError('Multiple possible absolute times found');\n }\n }\n\n switch (disambiguation) {\n case 'earlier':\n return Math.min(ms - offsetBefore, ms - offsetAfter);\n // 'compatible' means 'later' for \"spring forward\" transitions\n case 'compatible':\n case 'later':\n return Math.max(ms - offsetBefore, ms - offsetAfter);\n case 'reject':\n throw new RangeError('No such absolute time found');\n }\n}\n\nexport function toDate(dateTime: CalendarDate | CalendarDateTime, timeZone: string, disambiguation: Disambiguation = 'compatible'): Date {\n return new Date(toAbsolute(dateTime, timeZone, disambiguation));\n}\n\n/**\n * Takes a Unix epoch (milliseconds since 1970) and converts it to the provided time zone.\n */\nexport function fromAbsolute(ms: number, timeZone: string): ZonedDateTime {\n let offset = getTimeZoneOffset(ms, timeZone);\n let date = new Date(ms + offset);\n let year = date.getUTCFullYear();\n let month = date.getUTCMonth() + 1;\n let day = date.getUTCDate();\n let hour = date.getUTCHours();\n let minute = date.getUTCMinutes();\n let second = date.getUTCSeconds();\n let millisecond = date.getUTCMilliseconds();\n\n return new ZonedDateTime(year, month, day, timeZone, offset, hour, minute, second, millisecond);\n}\n\n/**\n * Takes a `Date` object and converts it to the provided time zone.\n */\nexport function fromDate(date: Date, timeZone: string): ZonedDateTime {\n return fromAbsolute(date.getTime(), timeZone);\n}\n\nexport function fromDateToLocal(date: Date): ZonedDateTime {\n return fromDate(date, getLocalTimeZone());\n}\n\n/** Converts a value with date components such as a `CalendarDateTime` or `ZonedDateTime` into a `CalendarDate`. */\nexport function toCalendarDate(dateTime: AnyCalendarDate): CalendarDate {\n return new CalendarDate(dateTime.calendar, dateTime.era, dateTime.year, dateTime.month, dateTime.day);\n}\n\nexport function toDateFields(date: AnyCalendarDate): DateFields {\n return {\n era: date.era,\n year: date.year,\n month: date.month,\n day: date.day\n };\n}\n\nexport function toTimeFields(date: AnyTime): TimeFields {\n return {\n hour: date.hour,\n minute: date.minute,\n second: date.second,\n millisecond: date.millisecond\n };\n}\n\n/**\n * Converts a date value to a `CalendarDateTime`. An optional `Time` value can be passed to set the time\n * of the resulting value, otherwise it will default to midnight.\n */\nexport function toCalendarDateTime(date: CalendarDate | CalendarDateTime | ZonedDateTime, time?: AnyTime): CalendarDateTime {\n let hour = 0, minute = 0, second = 0, millisecond = 0;\n if ('timeZone' in date) {\n ({hour, minute, second, millisecond} = date);\n } else if ('hour' in date && !time) {\n return date;\n }\n\n if (time) {\n ({hour, minute, second, millisecond} = time);\n }\n\n return new CalendarDateTime(\n date.calendar,\n date.era,\n date.year,\n date.month,\n date.day,\n hour,\n minute,\n second,\n millisecond\n );\n}\n\n/** Extracts the time components from a value containing a date and time. */\nexport function toTime(dateTime: CalendarDateTime | ZonedDateTime): Time {\n return new Time(dateTime.hour, dateTime.minute, dateTime.second, dateTime.millisecond);\n}\n\n/** Converts a date from one calendar system to another. */\nexport function toCalendar<T extends AnyCalendarDate>(date: T, calendar: Calendar): T {\n if (date.calendar.identifier === calendar.identifier) {\n return date;\n }\n\n let calendarDate = calendar.fromJulianDay(date.calendar.toJulianDay(date));\n let copy: Mutable<T> = date.copy();\n copy.calendar = calendar;\n copy.era = calendarDate.era;\n copy.year = calendarDate.year;\n copy.month = calendarDate.month;\n copy.day = calendarDate.day;\n constrain(copy);\n return copy;\n}\n\n/**\n * Converts a date value to a `ZonedDateTime` in the provided time zone. The `disambiguation` option can be set\n * to control how values that fall on daylight saving time changes are interpreted.\n */\nexport function toZoned(date: CalendarDate | CalendarDateTime | ZonedDateTime, timeZone: string, disambiguation?: Disambiguation): ZonedDateTime {\n if (date instanceof ZonedDateTime) {\n if (date.timeZone === timeZone) {\n return date;\n }\n\n return toTimeZone(date, timeZone);\n }\n\n let ms = toAbsolute(date, timeZone, disambiguation);\n return fromAbsolute(ms, timeZone);\n}\n\nexport function zonedToDate(date: ZonedDateTime) {\n let ms = epochFromDate(date) - date.offset;\n return new Date(ms);\n}\n\n/** Converts a `ZonedDateTime` from one time zone to another. */\nexport function toTimeZone(date: ZonedDateTime, timeZone: string): ZonedDateTime {\n let ms = epochFromDate(date) - date.offset;\n return toCalendar(fromAbsolute(ms, timeZone), date.calendar);\n}\n\n/** Converts the given `ZonedDateTime` into the user's local time zone. */\nexport function toLocalTimeZone(date: ZonedDateTime): ZonedDateTime {\n return toTimeZone(date, getLocalTimeZone());\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst EPOCH = 1721426; // 001/01/03 Julian C.E.\nexport function gregorianToJulianDay(era: string, year: number, month: number, day: number): number {\n year = getExtendedYear(era, year);\n\n let y1 = year - 1;\n let monthOffset = -2;\n if (month <= 2) {\n monthOffset = 0;\n } else if (isLeapYear(year)) {\n monthOffset = -1;\n }\n\n return (\n EPOCH -\n 1 +\n 365 * y1 +\n Math.floor(y1 / 4) -\n Math.floor(y1 / 100) +\n Math.floor(y1 / 400) +\n Math.floor((367 * month - 362) / 12 + monthOffset + day)\n );\n}\n\nexport function isLeapYear(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function getExtendedYear(era: string, year: number): number {\n return era === 'BC' ? 1 - year : year;\n}\n\nexport function fromExtendedYear(year: number): [string, number] {\n let era = 'AD';\n if (year <= 0) {\n era = 'BC';\n year = 1 - year;\n }\n\n return [era, year];\n}\n\nconst daysInMonth = {\n standard: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n leapyear: [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n};\n\n/**\n * The Gregorian calendar is the most commonly used calendar system in the world. It supports two eras: BC, and AD.\n * Years always contain 12 months, and 365 or 366 days depending on whether it is a leap year.\n */\nexport class GregorianCalendar implements Calendar {\n identifier = 'gregory';\n\n fromJulianDay(jd: number): CalendarDate {\n let jd0 = jd;\n let depoch = jd0 - EPOCH;\n let quadricent = Math.floor(depoch / 146097);\n let dqc = mod(depoch, 146097);\n let cent = Math.floor(dqc / 36524);\n let dcent = mod(dqc, 36524);\n let quad = Math.floor(dcent / 1461);\n let dquad = mod(dcent, 1461);\n let yindex = Math.floor(dquad / 365);\n\n let extendedYear = quadricent * 400 + cent * 100 + quad * 4 + yindex + (cent !== 4 && yindex !== 4 ? 1 : 0);\n let [era, year] = fromExtendedYear(extendedYear);\n let yearDay = jd0 - gregorianToJulianDay(era, year, 1, 1);\n let leapAdj = 2;\n if (jd0 < gregorianToJulianDay(era, year, 3, 1)) {\n leapAdj = 0;\n } else if (isLeapYear(year)) {\n leapAdj = 1;\n }\n let month = Math.floor(((yearDay + leapAdj) * 12 + 373) / 367);\n let day = jd0 - gregorianToJulianDay(era, year, month, 1) + 1;\n\n return new CalendarDate(era, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n return gregorianToJulianDay(date.era, date.year, date.month, date.day);\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return daysInMonth[isLeapYear(date.year) ? 'leapyear' : 'standard'][date.month - 1];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getMonthsInYear(date: AnyCalendarDate): number {\n return 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 366 : 365;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getYearsInEra(date: AnyCalendarDate): number {\n return 9999;\n }\n\n getEras() {\n return ['BC', 'AD'];\n }\n\n isInverseEra(date: AnyCalendarDate): boolean {\n return date.era === 'BC';\n }\n\n balanceDate(date: Mutable<AnyCalendarDate>) {\n if (date.year <= 0) {\n date.era = date.era === 'BC' ? 'AD' : 'BC';\n date.year = 1 - date.year;\n }\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {CalendarDate, CalendarDateTime} from './CalendarDate';\n\nexport type Mutable<T> = {\n -readonly[P in keyof T]: T[P]\n};\n\nexport function mod(amount: number, numerator: number): number {\n return amount - numerator * Math.floor(amount / numerator);\n}\n\nexport function copy(date: CalendarDate): Mutable<CalendarDate> {\n if (date.era) {\n return new CalendarDate(date.calendar, date.era, date.year, date.month, date.day);\n } else {\n return new CalendarDate(date.calendar, date.year, date.month, date.day);\n }\n}\n\nexport function copyDateTime(date: CalendarDateTime): Mutable<CalendarDateTime> {\n if (date.era) {\n return new CalendarDateTime(date.calendar, date.era, date.year, date.month, date.day, date.hour, date.minute, date.second, date.millisecond);\n } else {\n return new CalendarDateTime(date.calendar, date.year, date.month, date.day, date.hour, date.minute, date.second);\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyCalendarDate, AnyTime} from './types';\nimport {CalendarDate, CalendarDateTime, ZonedDateTime} from './CalendarDate';\nimport {fromAbsolute, toAbsolute, toCalendar, toCalendarDate} from './conversion';\nimport {weekStartData} from './weekStartData';\n\ntype DateValue = CalendarDate | CalendarDateTime | ZonedDateTime;\n\n/** Returns whether the given dates occur on the same day, regardless of the time or calendar system. */\nexport function isSameDay(a: DateValue, b: DateValue): boolean {\n b = toCalendar(b, a.calendar);\n return a.era === b.era && a.year === b.year && a.month === b.month && a.day === b.day;\n}\n\n/** Returns whether the given dates occur in the same month, using the calendar system of the first date. */\nexport function isSameMonth(a: DateValue, b: DateValue): boolean {\n b = toCalendar(b, a.calendar);\n // In the Japanese calendar, months can span multiple eras/years, so only compare the first of the month.\n a = startOfMonth(a);\n b = startOfMonth(b);\n return a.era === b.era && a.year === b.year && a.month === b.month;\n}\n\n/** Returns whether the given dates occur in the same year, using the calendar system of the first date. */\nexport function isSameYear(a: DateValue, b: DateValue): boolean {\n b = toCalendar(b, a.calendar);\n a = startOfYear(a);\n b = startOfYear(b);\n return a.era === b.era && a.year === b.year;\n}\n\n/** Returns whether the given dates occur on the same day, and are of the same calendar system. */\nexport function isEqualDay(a: DateValue, b: DateValue): boolean {\n return a.calendar.identifier === b.calendar.identifier && a.era === b.era && a.year === b.year && a.month === b.month && a.day === b.day;\n}\n\n/** Returns whether the given dates occur in the same month, and are of the same calendar system. */\nexport function isEqualMonth(a: DateValue, b: DateValue): boolean {\n a = startOfMonth(a);\n b = startOfMonth(b);\n return a.calendar.identifier === b.calendar.identifier && a.era === b.era && a.year === b.year && a.month === b.month;\n}\n\n/** Returns whether the given dates occur in the same year, and are of the same calendar system. */\nexport function isEqualYear(a: DateValue, b: DateValue): boolean {\n a = startOfYear(a);\n b = startOfYear(b);\n return a.calendar.identifier === b.calendar.identifier && a.era === b.era && a.year === b.year;\n}\n\n/** Returns whether the date is today in the given time zone. */\nexport function isToday(date: DateValue, timeZone: string): boolean {\n return isSameDay(date, today(timeZone));\n}\n\n/**\n * Returns the day of week for the given date and locale. Days are numbered from zero to six,\n * where zero is the first day of the week in the given locale. For example, in the United States,\n * the first day of the week is Sunday, but in France it is Monday.\n */\nexport function getDayOfWeek(date: DateValue, locale: string): number {\n let julian = date.calendar.toJulianDay(date);\n\n // If julian is negative, then julian % 7 will be negative, so we adjust\n // accordingly. Julian day 0 is Monday.\n let dayOfWeek = Math.ceil(julian + 1 - getWeekStart(locale)) % 7;\n if (dayOfWeek < 0) {\n dayOfWeek += 7;\n }\n\n return dayOfWeek;\n}\n\n/** Returns the current time in the given time zone. */\nexport function now(timeZone: string): ZonedDateTime {\n return fromAbsolute(Date.now(), timeZone);\n}\n\n/** Returns today's date in the given time zone. */\nexport function today(timeZone: string): CalendarDate {\n return toCalendarDate(now(timeZone));\n}\n\nexport function compareDate(a: AnyCalendarDate, b: AnyCalendarDate): number {\n return a.calendar.toJulianDay(a) - b.calendar.toJulianDay(b);\n}\n\nexport function compareTime(a: AnyTime, b: AnyTime): number {\n return timeToMs(a) - timeToMs(b);\n}\n\nfunction timeToMs(a: AnyTime): number {\n return a.hour * 60 * 60 * 1000 + a.minute * 60 * 1000 + a.second * 1000 + a.millisecond;\n}\n\n/**\n * Returns the number of hours in the given date and time zone.\n * Usually this is 24, but it could be 23 or 25 if the date is on a daylight saving transition.\n */\nexport function getHoursInDay(a: CalendarDate, timeZone: string): number {\n let ms = toAbsolute(a, timeZone);\n let tomorrow = a.add({days: 1});\n let tomorrowMs = toAbsolute(tomorrow, timeZone);\n return (tomorrowMs - ms) / 3600000;\n}\n\nlet localTimeZone = null;\n\n/** Returns the time zone identifier for the current user. */\nexport function getLocalTimeZone(): string {\n // TODO: invalidate this somehow?\n if (localTimeZone == null) {\n localTimeZone = new Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n return localTimeZone;\n}\n\n/** Returns the first date of the month for the given date. */\nexport function startOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function startOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function startOfMonth(date: CalendarDate): CalendarDate;\nexport function startOfMonth(date: DateValue): DateValue;\nexport function startOfMonth(date: DateValue): DateValue {\n // Use `subtract` instead of `set` so we don't get constrained in an era.\n return date.subtract({days: date.day - 1});\n}\n\n/** Returns the last date of the month for the given date. */\nexport function endOfMonth(date: ZonedDateTime): ZonedDateTime;\nexport function endOfMonth(date: CalendarDateTime): CalendarDateTime;\nexport function endOfMonth(date: CalendarDate): CalendarDate;\nexport function endOfMonth(date: DateValue): DateValue;\nexport function endOfMonth(date: DateValue): DateValue {\n return date.add({days: date.calendar.getDaysInMonth(date) - date.day});\n}\n\n/** Returns the first day of the year for the given date. */\nexport function startOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function startOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function startOfYear(date: CalendarDate): CalendarDate;\nexport function startOfYear(date: DateValue): DateValue;\nexport function startOfYear(date: DateValue): DateValue {\n return startOfMonth(date.subtract({months: date.month - 1}));\n}\n\n/** Returns the last day of the year for the given date. */\nexport function endOfYear(date: ZonedDateTime): ZonedDateTime;\nexport function endOfYear(date: CalendarDateTime): CalendarDateTime;\nexport function endOfYear(date: CalendarDate): CalendarDate;\nexport function endOfYear(date: DateValue): DateValue;\nexport function endOfYear(date: DateValue): DateValue {\n return endOfMonth(date.add({months: date.calendar.getMonthsInYear(date) - date.month}));\n}\n\nexport function getMinimumMonthInYear(date: AnyCalendarDate) {\n if (date.calendar.getMinimumMonthInYear) {\n return date.calendar.getMinimumMonthInYear(date);\n }\n\n return 1;\n}\n\nexport function getMinimumDayInMonth(date: AnyCalendarDate) {\n if (date.calendar.getMinimumDayInMonth) {\n return date.calendar.getMinimumDayInMonth(date);\n }\n\n return 1;\n}\n\n/** Returns the first date of the week for the given date and locale. */\nexport function startOfWeek(date: ZonedDateTime, locale: string): ZonedDateTime;\nexport function startOfWeek(date: CalendarDateTime, locale: string): CalendarDateTime;\nexport function startOfWeek(date: CalendarDate, locale: string): CalendarDate;\nexport function startOfWeek(date: DateValue, locale: string): DateValue;\nexport function startOfWeek(date: DateValue, locale: string): DateValue {\n let dayOfWeek = getDayOfWeek(date, locale);\n return date.subtract({days: dayOfWeek});\n}\n\n/** Returns the last date of the week for the given date and locale. */\nexport function endOfWeek(date: ZonedDateTime, locale: string): ZonedDateTime;\nexport function endOfWeek(date: CalendarDateTime, locale: string): CalendarDateTime;\nexport function endOfWeek(date: CalendarDate, locale: string): CalendarDate;\nexport function endOfWeek(date: DateValue, locale: string): DateValue {\n return startOfWeek(date, locale).add({days: 6});\n}\n\nconst cachedRegions = new Map<string, string>();\n\nfunction getRegion(locale: string) {\n // If the Intl.Locale API is available, use it to get the region for the locale.\n // @ts-ignore\n if (Intl.Locale) {\n // Constructing an Intl.Locale is expensive, so cache the result.\n let region = cachedRegions.get(locale);\n if (!region) {\n // @ts-ignore\n region = new Intl.Locale(locale).maximize().region;\n cachedRegions.set(locale, region);\n }\n return region;\n }\n\n // If not, just try splitting the string.\n // If the second part of the locale string is 'u',\n // then this is a unicode extension, so ignore it.\n // Otherwise, it should be the region.\n let part = locale.split('-')[1];\n return part === 'u' ? null : part;\n}\n\nfunction getWeekStart(locale: string) {\n // TODO: use Intl.Locale for this once browsers support the weekInfo property\n // https://github.com/tc39/proposal-intl-locale-info\n let region = getRegion(locale);\n return weekStartData[region] || 0;\n}\n\n/** Returns the number of weeks in the given month and locale. */\nexport function getWeeksInMonth(date: DateValue, locale: string): number {\n let days = date.calendar.getDaysInMonth(date);\n return Math.ceil((getDayOfWeek(startOfMonth(date), locale) + days) / 7);\n}\n\n/** Returns the lesser of the two provider dates. */\nexport function minDate<A extends DateValue, B extends DateValue>(a: A, b: B): A | B {\n if (a && b) {\n return a.compare(b) <= 0 ? a : b;\n }\n\n return a || b;\n}\n\n/** Returns the greater of the two provider dates. */\nexport function maxDate<A extends DateValue, B extends DateValue>(a: A, b: B): A | B {\n if (a && b) {\n return a.compare(b) >= 0 ? a : b;\n }\n\n return a || b;\n}\n\nconst WEEKEND_DATA = {\n AF: [4, 5],\n AE: [5, 6],\n BH: [5, 6],\n DZ: [5, 6],\n EG: [5, 6],\n IL: [5, 6],\n IQ: [5, 6],\n IR: [5, 5],\n JO: [5, 6],\n KW: [5, 6],\n LY: [5, 6],\n OM: [5, 6],\n QA: [5, 6],\n SA: [5, 6],\n SD: [5, 6],\n SY: [5, 6],\n YE: [5, 6]\n};\n\n/** Returns whether the given date is on a weekend in the given locale. */\nexport function isWeekend(date: DateValue, locale: string): boolean {\n let julian = date.calendar.toJulianDay(date);\n\n // If julian is negative, then julian % 7 will be negative, so we adjust\n // accordingly. Julian day 0 is Monday.\n let dayOfWeek = Math.ceil(julian + 1) % 7;\n if (dayOfWeek < 0) {\n dayOfWeek += 7;\n }\n\n let region = getRegion(locale);\n // Use Intl.Locale for this once weekInfo is supported.\n // https://github.com/tc39/proposal-intl-locale-info\n let [start, end] = WEEKEND_DATA[region] || [6, 0];\n return dayOfWeek === start || dayOfWeek === end;\n}\n\n/** Returns whether the given date is on a weekday in the given locale. */\nexport function isWeekday(date: DateValue, locale: string): boolean {\n return !isWeekend(date, locale);\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Data from https://github.com/unicode-cldr/cldr-core/blob/master/supplemental/weekData.json\n// Locales starting on Sunday have been removed for compression.\nexport const weekStartData = {\n '001': 1,\n AD: 1,\n AE: 6,\n AF: 6,\n AI: 1,\n AL: 1,\n AM: 1,\n AN: 1,\n AR: 1,\n AT: 1,\n AU: 1,\n AX: 1,\n AZ: 1,\n BA: 1,\n BE: 1,\n BG: 1,\n BH: 6,\n BM: 1,\n BN: 1,\n BY: 1,\n CH: 1,\n CL: 1,\n CM: 1,\n CN: 1,\n CR: 1,\n CY: 1,\n CZ: 1,\n DE: 1,\n DJ: 6,\n DK: 1,\n DZ: 6,\n EC: 1,\n EE: 1,\n EG: 6,\n ES: 1,\n FI: 1,\n FJ: 1,\n FO: 1,\n FR: 1,\n GB: 1,\n GE: 1,\n GF: 1,\n GP: 1,\n GR: 1,\n HR: 1,\n HU: 1,\n IE: 1,\n IQ: 6,\n IR: 6,\n IS: 1,\n IT: 1,\n JO: 6,\n KG: 1,\n KW: 6,\n KZ: 1,\n LB: 1,\n LI: 1,\n LK: 1,\n LT: 1,\n LU: 1,\n LV: 1,\n LY: 6,\n MC: 1,\n MD: 1,\n ME: 1,\n MK: 1,\n MN: 1,\n MQ: 1,\n MV: 5,\n MY: 1,\n NL: 1,\n NO: 1,\n NZ: 1,\n OM: 6,\n PL: 1,\n QA: 6,\n RE: 1,\n RO: 1,\n RS: 1,\n RU: 1,\n SD: 6,\n SE: 1,\n SI: 1,\n SK: 1,\n SM: 1,\n SY: 6,\n TJ: 1,\n TM: 1,\n TR: 1,\n UA: 1,\n UY: 1,\n UZ: 1,\n VA: 1,\n VN: 1,\n XK: 1\n};\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AnyDateTime, DateTimeDuration, Disambiguation} from './types';\nimport {CalendarDate, CalendarDateTime, Time, ZonedDateTime} from './CalendarDate';\nimport {epochFromDate, fromAbsolute, possibleAbsolutes, toAbsolute, toCalendar, toCalendarDateTime, toTimeZone} from './conversion';\nimport {getLocalTimeZone} from './queries';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {Mutable} from './utils';\n\nconst TIME_RE = /^(\\d{2})(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst DATE_RE = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst DATE_TIME_RE = /^(\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?$/;\nconst ZONED_DATE_TIME_RE = /^(\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:([+-]\\d{2})(?::?(\\d{2}))?)?\\[(.*?)\\]$/;\nconst ABSOLUTE_RE = /^(\\d{4})-(\\d{2})-(\\d{2})(?:T(\\d{2}))?(?::(\\d{2}))?(?::(\\d{2}))?(\\.\\d+)?(?:(?:([+-]\\d{2})(?::?(\\d{2}))?)|Z)$/;\nconst DATE_TIME_DURATION_RE =\n /^((?<negative>-)|\\+)?P((?<years>\\d*)Y)?((?<months>\\d*)M)?((?<weeks>\\d*)W)?((?<days>\\d*)D)?((?<time>T)((?<hours>\\d*[.,]?\\d{1,9})H)?((?<minutes>\\d*[.,]?\\d{1,9})M)?((?<seconds>\\d*[.,]?\\d{1,9})S)?)?$/;\nconst requiredDurationTimeGroups = ['hours', 'minutes', 'seconds'];\nconst requiredDurationGroups = ['years', 'months', 'weeks', 'days', ...requiredDurationTimeGroups];\n\n/** Parses an ISO 8601 time string. */\nexport function parseTime(value: string): Time {\n let m = value.match(TIME_RE);\n if (!m) {\n throw new Error('Invalid ISO 8601 time string: ' + value);\n }\n\n return new Time(\n parseNumber(m[1], 0, 23),\n m[2] ? parseNumber(m[2], 0, 59) : 0,\n m[3] ? parseNumber(m[3], 0, 59) : 0,\n m[4] ? parseNumber(m[4], 0, Infinity) * 1000 : 0\n );\n}\n\n/** Parses an ISO 8601 date string, with no time components. */\nexport function parseDate(value: string): CalendarDate {\n let m = value.match(DATE_RE);\n if (!m) {\n throw new Error('Invalid ISO 8601 date string: ' + value);\n }\n\n let date: Mutable<CalendarDate> = new CalendarDate(\n parseNumber(m[1], 0, 9999),\n parseNumber(m[2], 1, 12),\n 1\n );\n\n date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n return date as CalendarDate;\n}\n\n/** Parses an ISO 8601 date and time string, with no time zone. */\nexport function parseDateTime(value: string): CalendarDateTime {\n let m = value.match(DATE_TIME_RE);\n if (!m) {\n throw new Error('Invalid ISO 8601 date time string: ' + value);\n }\n\n let date: Mutable<CalendarDateTime> = new CalendarDateTime(\n parseNumber(m[1], 1, 9999),\n parseNumber(m[2], 1, 12),\n 1,\n m[4] ? parseNumber(m[4], 0, 23) : 0,\n m[5] ? parseNumber(m[5], 0, 59) : 0,\n m[6] ? parseNumber(m[6], 0, 59) : 0,\n m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n );\n\n date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n return date as CalendarDateTime;\n}\n\n/**\n * Parses an ISO 8601 date and time string with a time zone extension and optional UTC offset\n * (e.g. \"2021-11-07T00:45[America/Los_Angeles]\" or \"2021-11-07T00:45-07:00[America/Los_Angeles]\").\n * Ambiguous times due to daylight saving time transitions are resolved according to the `disambiguation`\n * parameter.\n */\nexport function parseZonedDateTime(value: string, disambiguation?: Disambiguation): ZonedDateTime {\n let m = value.match(ZONED_DATE_TIME_RE);\n if (!m) {\n throw new Error('Invalid ISO 8601 date time string: ' + value);\n }\n\n let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n parseNumber(m[1], 1, 9999),\n parseNumber(m[2], 1, 12),\n 1,\n m[10],\n 0,\n m[4] ? parseNumber(m[4], 0, 23) : 0,\n m[5] ? parseNumber(m[5], 0, 59) : 0,\n m[6] ? parseNumber(m[6], 0, 59) : 0,\n m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n );\n\n date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n let plainDateTime = toCalendarDateTime(date as ZonedDateTime);\n\n let ms: number;\n if (m[8]) {\n date.offset = parseNumber(m[8], -23, 23) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000;\n ms = epochFromDate(date as ZonedDateTime) - date.offset;\n\n // Validate offset against parsed date.\n let absolutes = possibleAbsolutes(plainDateTime, date.timeZone);\n if (!absolutes.includes(ms)) {\n throw new Error(`Offset ${offsetToString(date.offset)} is invalid for ${dateTimeToString(date)} in ${date.timeZone}`);\n }\n } else {\n // Convert to absolute and back to fix invalid times due to DST.\n ms = toAbsolute(toCalendarDateTime(plainDateTime), date.timeZone, disambiguation);\n }\n\n return fromAbsolute(ms, date.timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the provided time zone.\n */\nexport function parseAbsolute(value: string, timeZone: string): ZonedDateTime {\n let m = value.match(ABSOLUTE_RE);\n if (!m) {\n throw new Error('Invalid ISO 8601 date time string: ' + value);\n }\n\n let date: Mutable<ZonedDateTime> = new ZonedDateTime(\n parseNumber(m[1], 1, 9999),\n parseNumber(m[2], 1, 12),\n 1,\n timeZone,\n 0,\n m[4] ? parseNumber(m[4], 0, 23) : 0,\n m[5] ? parseNumber(m[5], 0, 59) : 0,\n m[6] ? parseNumber(m[6], 0, 59) : 0,\n m[7] ? parseNumber(m[7], 0, Infinity) * 1000 : 0\n );\n\n date.day = parseNumber(m[3], 0, date.calendar.getDaysInMonth(date));\n\n if (m[8]) {\n date.offset = parseNumber(m[8], -23, 23) * 60 * 60 * 1000 + parseNumber(m[9] ?? '0', 0, 59) * 60 * 1000;\n }\n\n return toTimeZone(date as ZonedDateTime, timeZone);\n}\n\n/**\n * Parses an ISO 8601 date and time string with a UTC offset (e.g. \"2021-11-07T07:45:00Z\"\n * or \"2021-11-07T07:45:00-07:00\"). The result is converted to the user's local time zone.\n */\nexport function parseAbsoluteToLocal(value: string): ZonedDateTime {\n return parseAbsolute(value, getLocalTimeZone());\n}\n\nfunction parseNumber(value: string, min: number, max: number) {\n let val = Number(value);\n if (val < min || val > max) {\n throw new RangeError(`Value out of range: ${min} <= ${val} <= ${max}`);\n }\n\n return val;\n}\n\nexport function timeToString(time: Time): string {\n return `${String(time.hour).padStart(2, '0')}:${String(time.minute).padStart(2, '0')}:${String(time.second).padStart(2, '0')}${time.millisecond ? String(time.millisecond / 1000).slice(1) : ''}`;\n}\n\nexport function dateToString(date: CalendarDate): string {\n let gregorianDate = toCalendar(date, new GregorianCalendar());\n return `${String(gregorianDate.year).padStart(4, '0')}-${String(gregorianDate.month).padStart(2, '0')}-${String(gregorianDate.day).padStart(2, '0')}`;\n}\n\nexport function dateTimeToString(date: AnyDateTime): string {\n // @ts-ignore\n return `${dateToString(date)}T${timeToString(date)}`;\n}\n\nfunction offsetToString(offset: number) {\n let sign = Math.sign(offset) < 0 ? '-' : '+';\n offset = Math.abs(offset);\n let offsetHours = Math.floor(offset / (60 * 60 * 1000));\n let offsetMinutes = (offset % (60 * 60 * 1000)) / (60 * 1000);\n return `${sign}${String(offsetHours).padStart(2, '0')}:${String(offsetMinutes).padStart(2, '0')}`;\n}\n\nexport function zonedDateTimeToString(date: ZonedDateTime): string {\n return `${dateTimeToString(date)}${offsetToString(date.offset)}[${date.timeZone}]`;\n}\n\n/**\n * Parses an ISO 8601 duration string (e.g. \"P3Y6M6W4DT12H30M5S\").\n * @param value An ISO 8601 duration string.\n * @returns A DateTimeDuration object.\n */\nexport function parseDuration(value: string): Required<DateTimeDuration> {\n const match = value.match(DATE_TIME_DURATION_RE);\n\n if (!match) {\n throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n }\n\n const parseDurationGroup = (\n group: string | undefined,\n isNegative: boolean,\n min: number,\n max: number\n ): number => {\n if (!group) {\n return 0;\n }\n try {\n const sign = isNegative ? -1 : 1;\n return sign * parseNumber(group.replace(',', '.'), min, max);\n } catch {\n throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n }\n };\n\n const isNegative = !!match.groups?.negative;\n\n const hasRequiredGroups = requiredDurationGroups.some(group => match.groups?.[group]);\n\n if (!hasRequiredGroups) {\n throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n }\n\n const durationStringIncludesTime = match.groups?.time;\n\n if (durationStringIncludesTime) {\n const hasRequiredDurationTimeGroups = requiredDurationTimeGroups.some(group => match.groups?.[group]);\n if (!hasRequiredDurationTimeGroups) {\n throw new Error(`Invalid ISO 8601 Duration string: ${value}`);\n }\n }\n\n const duration: Mutable<DateTimeDuration> = {\n years: parseDurationGroup(match.groups?.years, isNegative, 0, 9999),\n months: parseDurationGroup(match.groups?.months, isNegative, 0, 12),\n weeks: parseDurationGroup(match.groups?.weeks, isNegative, 0, Infinity),\n days: parseDurationGroup(match.groups?.days, isNegative, 0, 31),\n hours: parseDurationGroup(match.groups?.hours, isNegative, 0, 23),\n minutes: parseDurationGroup(match.groups?.minutes, isNegative, 0, 59),\n seconds: parseDurationGroup(match.groups?.seconds, isNegative, 0, 59)\n };\n\n if (((duration.hours % 1) !== 0) && (duration.minutes || duration.seconds)) {\n throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n }\n\n if (((duration.minutes % 1) !== 0) && duration.seconds) {\n throw new Error(`Invalid ISO 8601 Duration string: ${value} - only the smallest unit can be fractional`);\n }\n\n return duration as Required<DateTimeDuration>;\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from the TC39 Temporal proposal.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {GregorianCalendar} from './GregorianCalendar';\nimport {Mutable} from '../utils';\n\nconst ERA_START_DATES = [[1868, 9, 8], [1912, 7, 30], [1926, 12, 25], [1989, 1, 8], [2019, 5, 1]];\nconst ERA_END_DATES = [[1912, 7, 29], [1926, 12, 24], [1989, 1, 7], [2019, 4, 30]];\nconst ERA_ADDENDS = [1867, 1911, 1925, 1988, 2018];\nconst ERA_NAMES = ['meiji', 'taisho', 'showa', 'heisei', 'reiwa'];\n\nfunction findEraFromGregorianDate(date: AnyCalendarDate) {\n const idx = ERA_START_DATES.findIndex(([year, month, day]) => {\n if (date.year < year) {\n return true;\n }\n\n if (date.year === year && date.month < month) {\n return true;\n }\n\n if (date.year === year && date.month === month && date.day < day) {\n return true;\n }\n\n return false;\n });\n\n if (idx === -1) {\n return ERA_START_DATES.length - 1;\n }\n\n if (idx === 0) {\n return 0;\n }\n\n return idx - 1;\n}\n\nfunction toGregorian(date: AnyCalendarDate) {\n let eraAddend = ERA_ADDENDS[ERA_NAMES.indexOf(date.era)];\n if (!eraAddend) {\n throw new Error('Unknown era: ' + date.era);\n }\n\n return new CalendarDate(\n date.year + eraAddend,\n date.month,\n date.day\n );\n}\n\n/**\n * The Japanese calendar is based on the Gregorian calendar, but with eras for the reign of each Japanese emperor.\n * Whenever a new emperor ascends to the throne, a new era begins and the year starts again from 1.\n * Note that eras before 1868 (Gregorian) are not currently supported by this implementation.\n */\nexport class JapaneseCalendar extends GregorianCalendar {\n identifier = 'japanese';\n\n fromJulianDay(jd: number): CalendarDate {\n let date = super.fromJulianDay(jd);\n let era = findEraFromGregorianDate(date);\n\n return new CalendarDate(\n this,\n ERA_NAMES[era],\n date.year - ERA_ADDENDS[era],\n date.month,\n date.day\n );\n }\n\n toJulianDay(date: AnyCalendarDate) {\n return super.toJulianDay(toGregorian(date));\n }\n\n balanceDate(date: Mutable<AnyCalendarDate>) {\n let gregorianDate = toGregorian(date);\n let era = findEraFromGregorianDate(gregorianDate);\n\n if (ERA_NAMES[era] !== date.era) {\n date.era = ERA_NAMES[era];\n date.year = gregorianDate.year - ERA_ADDENDS[era];\n }\n\n // Constrain in case we went before the first supported era.\n this.constrainDate(date);\n }\n\n constrainDate(date: Mutable<AnyCalendarDate>) {\n let idx = ERA_NAMES.indexOf(date.era);\n let end = ERA_END_DATES[idx];\n if (end != null) {\n let [endYear, endMonth, endDay] = end;\n\n // Constrain the year to the maximum possible value in the era.\n // Then constrain the month and day fields within that.\n let maxYear = endYear - ERA_ADDENDS[idx];\n date.year = Math.max(1, Math.min(maxYear, date.year));\n if (date.year === maxYear) {\n date.month = Math.min(endMonth, date.month);\n\n if (date.month === endMonth) {\n date.day = Math.min(endDay, date.day);\n }\n }\n }\n\n if (date.year === 1 && idx >= 0) {\n let [, startMonth, startDay] = ERA_START_DATES[idx];\n date.month = Math.max(startMonth, date.month);\n\n if (date.month === startMonth) {\n date.day = Math.max(startDay, date.day);\n }\n }\n }\n\n getEras() {\n return ERA_NAMES;\n }\n\n getYearsInEra(date: AnyCalendarDate): number {\n // Get the number of years in the era, taking into account the date's month and day fields.\n let era = ERA_NAMES.indexOf(date.era);\n let cur = ERA_START_DATES[era];\n let next = ERA_START_DATES[era + 1];\n if (next == null) {\n // 9999 gregorian is the maximum year allowed.\n return 9999 - cur[0] + 1;\n }\n\n let years = next[0] - cur[0];\n\n if (date.month < next[1] || (date.month === next[1] && date.day < next[2])) {\n years++;\n }\n\n return years;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return super.getDaysInMonth(toGregorian(date));\n }\n\n getMinimumMonthInYear(date: AnyCalendarDate): number {\n let start = getMinimums(date);\n return start ? start[1] : 1;\n }\n\n getMinimumDayInMonth(date: AnyCalendarDate): number {\n let start = getMinimums(date);\n return start && date.month === start[1] ? start[2] : 1;\n }\n}\n\nfunction getMinimums(date: AnyCalendarDate) {\n if (date.year === 1) {\n let idx = ERA_NAMES.indexOf(date.era);\n return ERA_START_DATES[idx];\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {fromExtendedYear, getExtendedYear, GregorianCalendar} from './GregorianCalendar';\n\nconst BUDDHIST_ERA_START = -543;\n\n/**\n * The Buddhist calendar is the same as the Gregorian calendar, but counts years\n * starting from the birth of Buddha in 543 BC (Gregorian). It supports only one\n * era, identified as 'BE'.\n */\nexport class BuddhistCalendar extends GregorianCalendar {\n identifier = 'buddhist';\n\n fromJulianDay(jd: number): CalendarDate {\n let gregorianDate = super.fromJulianDay(jd);\n let year = getExtendedYear(gregorianDate.era, gregorianDate.year);\n return new CalendarDate(\n this,\n year - BUDDHIST_ERA_START,\n gregorianDate.month,\n gregorianDate.day\n );\n }\n\n toJulianDay(date: AnyCalendarDate) {\n return super.toJulianDay(toGregorian(date));\n }\n\n getEras() {\n return ['BE'];\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return super.getDaysInMonth(toGregorian(date));\n }\n\n balanceDate() {}\n}\n\nfunction toGregorian(date: AnyCalendarDate) {\n let [era, year] = fromExtendedYear(date.year + BUDDHIST_ERA_START);\n return new CalendarDate(\n era,\n year,\n date.month,\n date.day\n );\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {fromExtendedYear, getExtendedYear, GregorianCalendar} from './GregorianCalendar';\nimport {Mutable} from '../utils';\n\nconst TAIWAN_ERA_START = 1911;\n\nfunction gregorianYear(date: AnyCalendarDate) {\n return date.era === 'minguo'\n ? date.year + TAIWAN_ERA_START\n : 1 - date.year + TAIWAN_ERA_START;\n}\n\nfunction gregorianToTaiwan(year: number): [string, number] {\n let y = year - TAIWAN_ERA_START;\n if (y > 0) {\n return ['minguo', y];\n } else {\n return ['before_minguo', 1 - y];\n }\n}\n\n/**\n * The Taiwanese calendar is the same as the Gregorian calendar, but years\n * are numbered starting from 1912 (Gregorian). Two eras are supported:\n * 'before_minguo' and 'minguo'.\n */\nexport class TaiwanCalendar extends GregorianCalendar {\n identifier = 'roc'; // Republic of China\n\n fromJulianDay(jd: number): CalendarDate {\n let date = super.fromJulianDay(jd);\n let extendedYear = getExtendedYear(date.era, date.year);\n let [era, year] = gregorianToTaiwan(extendedYear);\n return new CalendarDate(this, era, year, date.month, date.day);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n return super.toJulianDay(toGregorian(date));\n }\n\n getEras() {\n return ['before_minguo', 'minguo'];\n }\n\n balanceDate(date: Mutable<AnyCalendarDate>) {\n let [era, year] = gregorianToTaiwan(gregorianYear(date));\n date.era = era;\n date.year = year;\n }\n\n isInverseEra(date: AnyCalendarDate): boolean {\n return date.era === 'before_minguo';\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return super.getDaysInMonth(toGregorian(date));\n }\n\n getYearsInEra(date: AnyCalendarDate): number {\n return date.era === 'before_minguo' ? 9999 : 9999 - TAIWAN_ERA_START;\n }\n}\n\nfunction toGregorian(date: AnyCalendarDate) {\n let [era, year] = fromExtendedYear(gregorianYear(date));\n return new CalendarDate(\n era,\n year,\n date.month,\n date.day\n );\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod} from '../utils';\n\nconst PERSIAN_EPOCH = 1948321; // 622/03/19 Julian C.E.\n\nfunction isLeapYear(year: number): boolean {\n let y0 = year > 0 ? year - 474 : year - 473;\n let y1 = mod(y0, 2820) + 474;\n\n return mod((y1 + 38) * 31, 128) < 31;\n}\n\nfunction persianToJulianDay(year: number, month: number, day: number): number {\n let y0 = year > 0 ? year - 474 : year - 473;\n let y1 = mod(y0, 2820) + 474;\n let offset = month <= 7 ? 31 * (month - 1) : 30 * (month - 1) + 6;\n\n return (\n PERSIAN_EPOCH -\n 1 +\n 1029983 * Math.floor(y0 / 2820) +\n 365 * (y1 - 1) +\n Math.floor((31 * y1 - 5) / 128) +\n offset +\n day\n );\n}\n\n/**\n * The Persian calendar is the main calendar used in Iran and Afghanistan. It has 12 months\n * in each year, the first 6 of which have 31 days, and the next 5 have 30 days. The 12th month\n * has either 29 or 30 days depending on whether it is a leap year. The Persian year starts\n * around the March equinox.\n */\nexport class PersianCalendar implements Calendar {\n identifier = 'persian';\n\n fromJulianDay(jd: number): CalendarDate {\n let d0 = jd - persianToJulianDay(475, 1, 1);\n let n2820 = Math.floor(d0 / 1029983);\n let d1 = mod(d0, 1029983);\n let y2820 = d1 === 1029982 ? 2820 : Math.floor((128 * d1 + 46878) / 46751);\n let year = 474 + 2820 * n2820 + y2820;\n if (year <= 0) {\n year--;\n }\n\n let yDay = jd - persianToJulianDay(year, 1, 1) + 1;\n let month = yDay <= 186 ? Math.ceil(yDay / 31) : Math.ceil((yDay - 6) / 31);\n let day = jd - persianToJulianDay(year, month, 1) + 1;\n\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n return persianToJulianDay(date.year, date.month, date.day);\n }\n\n getMonthsInYear(): number {\n return 12;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n if (date.month <= 6) {\n return 31;\n }\n\n if (date.month <= 11) {\n return 30;\n }\n\n return isLeapYear(date.year) ? 30 : 29;\n }\n\n getEras() {\n return ['AP'];\n }\n\n getYearsInEra(): number {\n // 9378-10-10 persian is 9999-12-31 gregorian.\n // Round down to 9377 to set the maximum full year.\n return 9377;\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {fromExtendedYear, GregorianCalendar, gregorianToJulianDay, isLeapYear} from './GregorianCalendar';\n\n// Starts in 78 AD,\nconst INDIAN_ERA_START = 78;\n\n// The Indian year starts 80 days later than the Gregorian year.\nconst INDIAN_YEAR_START = 80;\n\n/**\n * The Indian National Calendar is similar to the Gregorian calendar, but with\n * years numbered since the Saka era in 78 AD (Gregorian). There are 12 months\n * in each year, with either 30 or 31 days. Only one era identifier is supported: 'saka'.\n */\nexport class IndianCalendar extends GregorianCalendar {\n identifier = 'indian';\n\n fromJulianDay(jd: number): CalendarDate {\n // Gregorian date for Julian day\n let date = super.fromJulianDay(jd);\n\n // Year in Saka era\n let indianYear = date.year - INDIAN_ERA_START;\n\n // Day number in Gregorian year (starting from 0)\n let yDay = jd - gregorianToJulianDay(date.era, date.year, 1, 1);\n\n let leapMonth: number;\n if (yDay < INDIAN_YEAR_START) {\n // Day is at the end of the preceding Saka year\n indianYear--;\n\n // Days in leapMonth this year, previous Gregorian year\n leapMonth = isLeapYear(date.year - 1) ? 31 : 30;\n yDay += leapMonth + (31 * 5) + (30 * 3) + 10;\n } else {\n // Days in leapMonth this year\n leapMonth = isLeapYear(date.year) ? 31 : 30;\n yDay -= INDIAN_YEAR_START;\n }\n\n let indianMonth: number;\n let indianDay: number;\n if (yDay < leapMonth) {\n indianMonth = 1;\n indianDay = yDay + 1;\n } else {\n let mDay = yDay - leapMonth;\n if (mDay < (31 * 5)) {\n indianMonth = Math.floor(mDay / 31) + 2;\n indianDay = (mDay % 31) + 1;\n } else {\n mDay -= 31 * 5;\n indianMonth = Math.floor(mDay / 30) + 7;\n indianDay = (mDay % 30) + 1;\n }\n }\n\n return new CalendarDate(this, indianYear, indianMonth, indianDay);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n let extendedYear = date.year + INDIAN_ERA_START;\n let [era, year] = fromExtendedYear(extendedYear);\n\n let leapMonth: number;\n let jd: number;\n if (isLeapYear(year)) {\n leapMonth = 31;\n jd = gregorianToJulianDay(era, year, 3, 21);\n } else {\n leapMonth = 30;\n jd = gregorianToJulianDay(era, year, 3, 22);\n }\n\n if (date.month === 1) {\n return jd + date.day - 1;\n }\n\n jd += leapMonth + Math.min(date.month - 2, 5) * 31;\n\n if (date.month >= 8) {\n jd += (date.month - 7) * 30;\n }\n\n jd += date.day - 1;\n return jd;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n if (date.month === 1 && isLeapYear(date.year + INDIAN_ERA_START)) {\n return 31;\n }\n\n if (date.month >= 2 && date.month <= 6) {\n return 31;\n }\n\n return 30;\n }\n\n getYearsInEra(): number {\n // 9999-12-31 gregorian is 9920-10-10 indian.\n // Round down to 9919 for the last full year.\n return 9919;\n }\n\n getEras() {\n return ['saka'];\n }\n\n balanceDate() {}\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar} from '../types';\nimport {CalendarDate} from '../CalendarDate';\n\nconst CIVIL_EPOC = 1948440; // CE 622 July 16 Friday (Julian calendar) / CE 622 July 19 (Gregorian calendar)\nconst ASTRONOMICAL_EPOC = 1948439; // CE 622 July 15 Thursday (Julian calendar)\nconst UMALQURA_YEAR_START = 1300;\nconst UMALQURA_YEAR_END = 1600;\nconst UMALQURA_START_DAYS = 460322;\n\nfunction islamicToJulianDay(epoch: number, year: number, month: number, day: number): number {\n return day +\n Math.ceil(29.5 * (month - 1)) +\n (year - 1) * 354 +\n Math.floor((3 + 11 * year) / 30) +\n epoch - 1;\n}\n\nfunction julianDayToIslamic(calendar: Calendar, epoch: number, jd: number) {\n let year = Math.floor((30 * (jd - epoch) + 10646) / 10631);\n let month = Math.min(12, Math.ceil((jd - (29 + islamicToJulianDay(epoch, year, 1, 1))) / 29.5) + 1);\n let day = jd - islamicToJulianDay(epoch, year, month, 1) + 1;\n\n return new CalendarDate(calendar, year, month, day);\n}\n\nfunction isLeapYear(year: number): boolean {\n return (14 + 11 * year) % 30 < 11;\n}\n\n/**\n * The Islamic calendar, also known as the \"Hijri\" calendar, is used throughout much of the Arab world.\n * The civil variant uses simple arithmetic rules rather than astronomical calculations to approximate\n * the traditional calendar, which is based on sighting of the crescent moon. It uses Friday, July 16 622 CE (Julian) as the epoch.\n * Each year has 12 months, with either 354 or 355 days depending on whether it is a leap year.\n * Learn more about the available Islamic calendars [here](https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types).\n */\nexport class IslamicCivilCalendar implements Calendar {\n identifier = 'islamic-civil';\n\n fromJulianDay(jd: number): CalendarDate {\n return julianDayToIslamic(this, CIVIL_EPOC, jd);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n return islamicToJulianDay(CIVIL_EPOC, date.year, date.month, date.day);\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n let length = 29 + date.month % 2;\n if (date.month === 12 && isLeapYear(date.year)) {\n length++;\n }\n\n return length;\n }\n\n getMonthsInYear(): number {\n return 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 355 : 354;\n }\n\n getYearsInEra(): number {\n // 9999 gregorian\n return 9665;\n }\n\n getEras() {\n return ['AH'];\n }\n}\n\n/**\n * The Islamic calendar, also known as the \"Hijri\" calendar, is used throughout much of the Arab world.\n * The tabular variant uses simple arithmetic rules rather than astronomical calculations to approximate\n * the traditional calendar, which is based on sighting of the crescent moon. It uses Thursday, July 15 622 CE (Julian) as the epoch.\n * Each year has 12 months, with either 354 or 355 days depending on whether it is a leap year.\n * Learn more about the available Islamic calendars [here](https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types).\n */\nexport class IslamicTabularCalendar extends IslamicCivilCalendar {\n identifier = 'islamic-tbla';\n\n fromJulianDay(jd: number): CalendarDate {\n return julianDayToIslamic(this, ASTRONOMICAL_EPOC, jd);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n return islamicToJulianDay(ASTRONOMICAL_EPOC, date.year, date.month, date.day);\n }\n}\n\n// Generated by scripts/generate-umalqura.js\nconst UMALQURA_DATA = 'qgpUDckO1AbqBmwDrQpVBakGkgepC9QF2gpcBS0NlQZKB1QLagutBa4ETwoXBYsGpQbVCtYCWwmdBE0KJg2VDawFtgm6AlsKKwWVCsoG6Qr0AnYJtgJWCcoKpAvSC9kF3AJtCU0FpQpSC6ULtAW2CVcFlwJLBaMGUgdlC2oFqworBZUMSg2lDcoF1gpXCasESwmlClILagt1BXYCtwhbBFUFqQW0BdoJ3QRuAjYJqgpUDbIN1QXaAlsJqwRVCkkLZAtxC7QFtQpVCiUNkg7JDtQG6QprCasEkwpJDaQNsg25CroEWworBZUKKgtVC1wFvQQ9Ah0JlQpKC1oLbQW2AjsJmwRVBqkGVAdqC2wFrQpVBSkLkgupC9QF2gpaBasKlQVJB2QHqgu1BbYCVgpNDiULUgtqC60FrgIvCZcESwalBqwG1gpdBZ0ETQoWDZUNqgW1BdoCWwmtBJUFygbkBuoK9QS2AlYJqgpUC9IL2QXqAm0JrQSVCkoLpQuyBbUJ1gSXCkcFkwZJB1ULagVrCisFiwpGDaMNygXWCtsEawJLCaUKUgtpC3UFdgG3CFsCKwVlBbQF2gntBG0BtgimClINqQ3UBdoKWwmrBFMGKQdiB6kLsgW1ClUFJQuSDckO0gbpCmsFqwRVCikNVA2qDbUJugQ7CpsETQqqCtUK2gJdCV4ELgqaDFUNsga5BroEXQotBZUKUguoC7QLuQXaAloJSgukDdEO6AZqC20FNQWVBkoNqA3UDdoGWwWdAisGFQtKC5ULqgWuCi4JjwwnBZUGqgbWCl0FnQI=';\nlet UMALQURA_MONTHLENGTH: Uint16Array;\nlet UMALQURA_YEAR_START_TABLE: Uint32Array;\n\nfunction umalquraYearStart(year: number): number {\n return UMALQURA_START_DAYS + UMALQURA_YEAR_START_TABLE[year - UMALQURA_YEAR_START];\n}\n\nfunction umalquraMonthLength(year: number, month: number): number {\n let idx = (year - UMALQURA_YEAR_START);\n let mask = (0x01 << (11 - (month - 1)));\n if ((UMALQURA_MONTHLENGTH[idx] & mask) === 0) {\n return 29;\n } else {\n return 30;\n }\n}\n\nfunction umalquraMonthStart(year: number, month: number): number {\n let day = umalquraYearStart(year);\n for (let i = 1; i < month; i++) {\n day += umalquraMonthLength(year, i);\n }\n return day;\n}\n\nfunction umalquraYearLength(year: number): number {\n return UMALQURA_YEAR_START_TABLE[year + 1 - UMALQURA_YEAR_START] - UMALQURA_YEAR_START_TABLE[year - UMALQURA_YEAR_START];\n}\n\n/**\n * The Islamic calendar, also known as the \"Hijri\" calendar, is used throughout much of the Arab world.\n * The Umalqura variant is primarily used in Saudi Arabia. It is a lunar calendar, based on astronomical\n * calculations that predict the sighting of a crescent moon. Month and year lengths vary between years\n * depending on these calculations.\n * Learn more about the available Islamic calendars [here](https://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types).\n */\nexport class IslamicUmalquraCalendar extends IslamicCivilCalendar {\n identifier = 'islamic-umalqura';\n\n constructor() {\n super();\n if (!UMALQURA_MONTHLENGTH) {\n UMALQURA_MONTHLENGTH = new Uint16Array(Uint8Array.from(atob(UMALQURA_DATA), c => c.charCodeAt(0)).buffer);\n }\n\n if (!UMALQURA_YEAR_START_TABLE) {\n UMALQURA_YEAR_START_TABLE = new Uint32Array(UMALQURA_YEAR_END - UMALQURA_YEAR_START + 1);\n\n let yearStart = 0;\n for (let year = UMALQURA_YEAR_START; year <= UMALQURA_YEAR_END; year++) {\n UMALQURA_YEAR_START_TABLE[year - UMALQURA_YEAR_START] = yearStart;\n for (let i = 1; i <= 12; i++) {\n yearStart += umalquraMonthLength(year, i);\n }\n }\n }\n }\n\n fromJulianDay(jd: number): CalendarDate {\n let days = jd - CIVIL_EPOC;\n let startDays = umalquraYearStart(UMALQURA_YEAR_START);\n let endDays = umalquraYearStart(UMALQURA_YEAR_END);\n if (days < startDays || days > endDays) {\n return super.fromJulianDay(jd);\n } else {\n let y = UMALQURA_YEAR_START - 1;\n let m = 1;\n let d = 1;\n while (d > 0) {\n y++;\n d = days - umalquraYearStart(y) + 1;\n let yearLength = umalquraYearLength(y);\n if (d === yearLength) {\n m = 12;\n break;\n } else if (d < yearLength) {\n let monthLength = umalquraMonthLength(y, m);\n m = 1;\n while (d > monthLength) {\n d -= monthLength;\n m++;\n monthLength = umalquraMonthLength(y, m);\n }\n break;\n }\n }\n\n return new CalendarDate(this, y, m, (days - umalquraMonthStart(y, m) + 1));\n }\n }\n\n toJulianDay(date: AnyCalendarDate): number {\n if (date.year < UMALQURA_YEAR_START || date.year > UMALQURA_YEAR_END) {\n return super.toJulianDay(date);\n }\n\n return CIVIL_EPOC + umalquraMonthStart(date.year, date.month) + (date.day - 1);\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n if (date.year < UMALQURA_YEAR_START || date.year > UMALQURA_YEAR_END) {\n return super.getDaysInMonth(date);\n }\n\n return umalquraMonthLength(date.year, date.month);\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n if (date.year < UMALQURA_YEAR_START || date.year > UMALQURA_YEAR_END) {\n return super.getDaysInYear(date);\n }\n\n return umalquraYearLength(date.year);\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {mod, Mutable} from '../utils';\n\nconst HEBREW_EPOCH = 347997;\n\n// Hebrew date calculations are performed in terms of days, hours, and\n// \"parts\" (or halakim), which are 1/1080 of an hour, or 3 1/3 seconds.\nconst HOUR_PARTS = 1080;\nconst DAY_PARTS = 24 * HOUR_PARTS;\n\n// An approximate value for the length of a lunar month.\n// It is used to calculate the approximate year and month of a given\n// absolute date.\nconst MONTH_DAYS = 29;\nconst MONTH_FRACT = 12 * HOUR_PARTS + 793;\nconst MONTH_PARTS = MONTH_DAYS * DAY_PARTS + MONTH_FRACT;\n\nfunction isLeapYear(year: number) {\n return mod(year * 7 + 1, 19) < 7;\n}\n\n// Test for delay of start of new year and to avoid\n// Sunday, Wednesday, and Friday as start of the new year.\nfunction hebrewDelay1(year: number) {\n let months = Math.floor((235 * year - 234) / 19);\n let parts = 12084 + 13753 * months;\n let day = months * 29 + Math.floor(parts / 25920);\n\n if (mod(3 * (day + 1), 7) < 3) {\n day += 1;\n }\n\n return day;\n}\n\n// Check for delay in start of new year due to length of adjacent years\nfunction hebrewDelay2(year: number) {\n let last = hebrewDelay1(year - 1);\n let present = hebrewDelay1(year);\n let next = hebrewDelay1(year + 1);\n\n if (next - present === 356) {\n return 2;\n }\n\n if (present - last === 382) {\n return 1;\n }\n\n return 0;\n}\n\nfunction startOfYear(year: number) {\n return hebrewDelay1(year) + hebrewDelay2(year);\n}\n\nfunction getDaysInYear(year: number) {\n return startOfYear(year + 1) - startOfYear(year);\n}\n\nfunction getYearType(year: number) {\n let yearLength = getDaysInYear(year);\n\n if (yearLength > 380) {\n yearLength -= 30; // Subtract length of leap month.\n }\n\n switch (yearLength) {\n case 353:\n return 0; // deficient\n case 354:\n return 1; // normal\n case 355:\n return 2; // complete\n }\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n // Normalize month numbers from 1 - 13, even on non-leap years\n if (month >= 6 && !isLeapYear(year)) {\n month++;\n }\n\n // First of all, dispose of fixed-length 29 day months\n if (month === 4 || month === 7 || month === 9 || month === 11 || month === 13) {\n return 29;\n }\n\n let yearType = getYearType(year);\n\n // If it's Heshvan, days depend on length of year\n if (month === 2) {\n return yearType === 2 ? 30 : 29;\n }\n\n // Similarly, Kislev varies with the length of year\n if (month === 3) {\n return yearType === 0 ? 29 : 30;\n }\n\n // Adar I only exists in leap years\n if (month === 6) {\n return isLeapYear(year) ? 30 : 0;\n }\n\n return 30;\n}\n\n/**\n * The Hebrew calendar is used in Israel and around the world by the Jewish faith.\n * Years include either 12 or 13 months depending on whether it is a leap year.\n * In leap years, an extra month is inserted at month 6.\n */\nexport class HebrewCalendar implements Calendar {\n identifier = 'hebrew';\n\n fromJulianDay(jd: number): CalendarDate {\n let d = jd - HEBREW_EPOCH;\n let m = (d * DAY_PARTS) / MONTH_PARTS; // Months (approx)\n let year = Math.floor((19 * m + 234) / 235) + 1; // Years (approx)\n let ys = startOfYear(year); // 1st day of year\n let dayOfYear = Math.floor(d - ys);\n\n // Because of the postponement rules, it's possible to guess wrong. Fix it.\n while (dayOfYear < 1) {\n year--;\n ys = startOfYear(year);\n dayOfYear = Math.floor(d - ys);\n }\n\n // Now figure out which month we're in, and the date within that month\n let month = 1;\n let monthStart = 0;\n while (monthStart < dayOfYear) {\n monthStart += getDaysInMonth(year, month);\n month++;\n }\n\n month--;\n monthStart -= getDaysInMonth(year, month);\n\n let day = dayOfYear - monthStart;\n return new CalendarDate(this, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n let jd = startOfYear(date.year);\n for (let month = 1; month < date.month; month++) {\n jd += getDaysInMonth(date.year, month);\n }\n\n return jd + date.day + HEBREW_EPOCH;\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(date: AnyCalendarDate): number {\n return isLeapYear(date.year) ? 13 : 12;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return getDaysInYear(date.year);\n }\n\n getYearsInEra(): number {\n // 6239 gregorian\n return 9999;\n }\n\n getEras() {\n return ['AM'];\n }\n\n balanceYearMonth(date: Mutable<AnyCalendarDate>, previousDate: AnyCalendarDate) {\n // Keep date in the same month when switching between leap years and non leap years\n if (previousDate.year !== date.year) {\n if (isLeapYear(previousDate.year) && !isLeapYear(date.year) && previousDate.month > 6) {\n date.month--;\n } else if (!isLeapYear(previousDate.year) && isLeapYear(date.year) && previousDate.month > 6) {\n date.month++;\n }\n }\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from ICU.\n// Original licensing can be found in the NOTICE file in the root directory of this source tree.\n\nimport {AnyCalendarDate, Calendar} from '../types';\nimport {CalendarDate} from '../CalendarDate';\nimport {Mutable} from '../utils';\n\nconst ETHIOPIC_EPOCH = 1723856;\nconst COPTIC_EPOCH = 1824665;\n\n// The delta between Amete Alem 1 and Amete Mihret 1\n// AA 5501 = AM 1\nconst AMETE_MIHRET_DELTA = 5500;\n\nfunction ceToJulianDay(epoch: number, year: number, month: number, day: number): number {\n return (\n epoch // difference from Julian epoch to 1,1,1\n + 365 * year // number of days from years\n + Math.floor(year / 4) // extra day of leap year\n + 30 * (month - 1) // number of days from months (1 based)\n + day - 1 // number of days for present month (1 based)\n );\n}\n\nfunction julianDayToCE(epoch: number, jd: number) {\n let year = Math.floor((4 * (jd - epoch)) / 1461);\n let month = 1 + Math.floor((jd - ceToJulianDay(epoch, year, 1, 1)) / 30);\n let day = jd + 1 - ceToJulianDay(epoch, year, month, 1);\n return [year, month, day];\n}\n\nfunction getLeapDay(year: number) {\n return Math.floor((year % 4) / 3);\n}\n\nfunction getDaysInMonth(year: number, month: number) {\n // The Ethiopian and Coptic calendars have 13 months, 12 of 30 days each and\n // an intercalary month at the end of the year of 5 or 6 days, depending whether\n // the year is a leap year or not. The Leap Year follows the same rules as the\n // Julian Calendar so that the extra month always has six days in the year before\n // a Julian Leap Year.\n if (month % 13 !== 0) {\n // not intercalary month\n return 30;\n } else {\n // intercalary month 5 days + possible leap day\n return getLeapDay(year) + 5;\n }\n}\n\n/**\n * The Ethiopic calendar system is the official calendar used in Ethiopia.\n * It includes 12 months of 30 days each, plus 5 or 6 intercalary days depending\n * on whether it is a leap year. Two eras are supported: 'AA' and 'AM'.\n */\nexport class EthiopicCalendar implements Calendar {\n identifier = 'ethiopic';\n\n fromJulianDay(jd: number): CalendarDate {\n let [year, month, day] = julianDayToCE(ETHIOPIC_EPOCH, jd);\n let era = 'AM';\n if (year <= 0) {\n era = 'AA';\n year += AMETE_MIHRET_DELTA;\n }\n\n return new CalendarDate(this, era, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n let year = date.year;\n if (date.era === 'AA') {\n year -= AMETE_MIHRET_DELTA;\n }\n\n return ceToJulianDay(ETHIOPIC_EPOCH, year, date.month, date.day);\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n return getDaysInMonth(date.year, date.month);\n }\n\n getMonthsInYear(): number {\n return 13;\n }\n\n getDaysInYear(date: AnyCalendarDate): number {\n return 365 + getLeapDay(date.year);\n }\n\n getYearsInEra(date: AnyCalendarDate): number {\n // 9999-12-31 gregorian is 9992-20-02 ethiopic.\n // Round down to 9991 for the last full year.\n // AA 9999-01-01 ethiopic is 4506-09-30 gregorian.\n return date.era === 'AA' ? 9999 : 9991;\n }\n\n getEras() {\n return ['AA', 'AM'];\n }\n}\n\n/**\n * The Ethiopic (Amete Alem) calendar is the same as the modern Ethiopic calendar,\n * except years were measured from a different epoch. Only one era is supported: 'AA'.\n */\nexport class EthiopicAmeteAlemCalendar extends EthiopicCalendar {\n identifier = 'ethioaa'; // also known as 'ethiopic-amete-alem' in ICU\n\n fromJulianDay(jd: number): CalendarDate {\n let [year, month, day] = julianDayToCE(ETHIOPIC_EPOCH, jd);\n year += AMETE_MIHRET_DELTA;\n return new CalendarDate(this, 'AA', year, month, day);\n }\n\n getEras() {\n return ['AA'];\n }\n\n getYearsInEra(): number {\n // 9999-13-04 ethioaa is the maximum date, which is equivalent to 4506-09-29 gregorian.\n return 9999;\n }\n}\n\n/**\n * The Coptic calendar is similar to the Ethiopic calendar.\n * It includes 12 months of 30 days each, plus 5 or 6 intercalary days depending\n * on whether it is a leap year. Two eras are supported: 'BCE' and 'CE'.\n */\nexport class CopticCalendar extends EthiopicCalendar {\n identifier = 'coptic';\n\n fromJulianDay(jd: number): CalendarDate {\n let [year, month, day] = julianDayToCE(COPTIC_EPOCH, jd);\n let era = 'CE';\n if (year <= 0) {\n era = 'BCE';\n year = 1 - year;\n }\n\n return new CalendarDate(this, era, year, month, day);\n }\n\n toJulianDay(date: AnyCalendarDate) {\n let year = date.year;\n if (date.era === 'BCE') {\n year = 1 - year;\n }\n\n return ceToJulianDay(COPTIC_EPOCH, year, date.month, date.day);\n }\n\n getDaysInMonth(date: AnyCalendarDate): number {\n let year = date.year;\n if (date.era === 'BCE') {\n year = 1 - year;\n }\n\n return getDaysInMonth(year, date.month);\n }\n\n isInverseEra(date: AnyCalendarDate): boolean {\n return date.era === 'BCE';\n }\n\n balanceDate(date: Mutable<AnyCalendarDate>) {\n if (date.year <= 0) {\n date.era = date.era === 'BCE' ? 'CE' : 'BCE';\n date.year = 1 - date.year;\n }\n }\n\n getEras() {\n return ['BCE', 'CE'];\n }\n\n getYearsInEra(date: AnyCalendarDate): number {\n // 9999-12-30 gregorian is 9716-02-20 coptic.\n // Round down to 9715 for the last full year.\n // BCE 9999-01-01 coptic is BC 9716-06-15 gregorian.\n return date.era === 'BCE' ? 9999 : 9715;\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BuddhistCalendar} from './calendars/BuddhistCalendar';\nimport {Calendar} from './types';\nimport {CopticCalendar, EthiopicAmeteAlemCalendar, EthiopicCalendar} from './calendars/EthiopicCalendar';\nimport {GregorianCalendar} from './calendars/GregorianCalendar';\nimport {HebrewCalendar} from './calendars/HebrewCalendar';\nimport {IndianCalendar} from './calendars/IndianCalendar';\nimport {IslamicCivilCalendar, IslamicTabularCalendar, IslamicUmalquraCalendar} from './calendars/IslamicCalendar';\nimport {JapaneseCalendar} from './calendars/JapaneseCalendar';\nimport {PersianCalendar} from './calendars/PersianCalendar';\nimport {TaiwanCalendar} from './calendars/TaiwanCalendar';\n\n/** Creates a `Calendar` instance from a Unicode calendar identifier string. */\nexport function createCalendar(name: string): Calendar {\n switch (name) {\n case 'buddhist':\n return new BuddhistCalendar();\n case 'ethiopic':\n return new EthiopicCalendar();\n case 'ethioaa':\n return new EthiopicAmeteAlemCalendar();\n case 'coptic':\n return new CopticCalendar();\n case 'hebrew':\n return new HebrewCalendar();\n case 'indian':\n return new IndianCalendar();\n case 'islamic-civil':\n return new IslamicCivilCalendar();\n case 'islamic-tbla':\n return new IslamicTabularCalendar();\n case 'islamic-umalqura':\n return new IslamicUmalquraCalendar();\n case 'japanese':\n return new JapaneseCalendar();\n case 'persian':\n return new PersianCalendar();\n case 'roc':\n return new TaiwanCalendar();\n case 'gregory':\n default:\n return new GregorianCalendar();\n }\n}\n", "/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nlet formatterCache = new Map<string, Intl.DateTimeFormat>();\n\ninterface ResolvedDateTimeFormatOptions extends Intl.ResolvedDateTimeFormatOptions {\n hourCycle?: Intl.DateTimeFormatOptions['hourCycle']\n}\n\ninterface DateRangeFormatPart extends Intl.DateTimeFormatPart {\n source: 'startRange' | 'endRange' | 'shared'\n}\n\n/** A wrapper around Intl.DateTimeFormat that fixes various browser bugs, and polyfills new features. */\nexport class DateFormatter implements Intl.DateTimeFormat {\n private formatter: Intl.DateTimeFormat;\n private options: Intl.DateTimeFormatOptions;\n private resolvedHourCycle: Intl.DateTimeFormatOptions['hourCycle'];\n\n constructor(locale: string, options: Intl.DateTimeFormatOptions = {}) {\n this.formatter = getCachedDateFormatter(locale, options);\n this.options = options;\n }\n\n /** Formats a date as a string according to the locale and format options passed to the constructor. */\n format(value: Date): string {\n return this.formatter.format(value);\n }\n\n /** Formats a date to an array of parts such as separators, numbers, punctuation, and more. */\n formatToParts(value: Date): Intl.DateTimeFormatPart[] {\n return this.formatter.formatToParts(value);\n }\n\n /** Formats a date range as a string. */\n formatRange(start: Date, end: Date): string {\n // @ts-ignore\n if (typeof this.formatter.formatRange === 'function') {\n // @ts-ignore\n return this.formatter.formatRange(start, end);\n }\n\n if (end < start) {\n throw new RangeError('End date must be >= start date');\n }\n\n // Very basic fallback for old browsers.\n return `${this.formatter.format(start)} – ${this.formatter.format(end)}`;\n }\n\n /** Formats a date range as an array of parts. */\n formatRangeToParts(start: Date, end: Date): DateRangeFormatPart[] {\n // @ts-ignore\n if (typeof this.formatter.formatRangeToParts === 'function') {\n // @ts-ignore\n return this.formatter.formatRangeToParts(start, end);\n }\n\n if (end < start) {\n throw new RangeError('End date must be >= start date');\n }\n\n let startParts = this.formatter.formatToParts(start);\n let endParts = this.formatter.formatToParts(end);\n return [\n ...startParts.map(p => ({...p, source: 'startRange'} as DateRangeFormatPart)),\n {type: 'literal', value: ' – ', source: 'shared'},\n ...endParts.map(p => ({...p, source: 'endRange'} as DateRangeFormatPart))\n ];\n }\n\n /** Returns the resolved formatting options based on the values passed to the constructor. */\n resolvedOptions(): ResolvedDateTimeFormatOptions {\n let resolvedOptions = this.formatter.resolvedOptions() as ResolvedDateTimeFormatOptions;\n if (hasBuggyResolvedHourCycle()) {\n if (!this.resolvedHourCycle) {\n this.resolvedHourCycle = getResolvedHourCycle(resolvedOptions.locale, this.options);\n }\n resolvedOptions.hourCycle = this.resolvedHourCycle;\n resolvedOptions.hour12 = this.resolvedHourCycle === 'h11' || this.resolvedHourCycle === 'h12';\n }\n\n // Safari uses a different name for the Ethiopic (Amete Alem) calendar.\n // https://bugs.webkit.org/show_bug.cgi?id=241564\n if (resolvedOptions.calendar === 'ethiopic-amete-alem') {\n resolvedOptions.calendar = 'ethioaa';\n }\n\n return resolvedOptions;\n }\n}\n\n// There are multiple bugs involving the hour12 and hourCycle options in various browser engines.\n// - Chrome [1] (and the ECMA 402 spec [2]) resolve hour12: false in English and other locales to h24 (24:00 - 23:59)\n// rather than h23 (00:00 - 23:59). Same can happen with hour12: true in French, which Chrome resolves to h11 (00:00 - 11:59)\n// rather than h12 (12:00 - 11:59).\n// - WebKit returns an incorrect hourCycle resolved option in the French locale due to incorrect parsing of 'h' literal\n// in the resolved pattern. It also formats incorrectly when specifying the hourCycle option for the same reason. [3]\n// [1] https://bugs.chromium.org/p/chromium/issues/detail?id=1045791\n// [2] https://github.com/tc39/ecma402/issues/402\n// [3] https://bugs.webkit.org/show_bug.cgi?id=229313\n\n// https://github.com/unicode-org/cldr/blob/018b55eff7ceb389c7e3fc44e2f657eae3b10b38/common/supplemental/supplementalData.xml#L4774-L4802\nconst hour12Preferences = {\n true: {\n // Only Japanese uses the h11 style for 12 hour time. All others use h12.\n ja: 'h11'\n },\n false: {\n // All locales use h23 for 24 hour time. None use h24.\n }\n};\n\nfunction getCachedDateFormatter(locale: string, options: Intl.DateTimeFormatOptions = {}): Intl.DateTimeFormat {\n // Work around buggy hour12 behavior in Chrome / ECMA 402 spec by using hourCycle instead.\n // Only apply the workaround if the issue is detected, because the hourCycle option is buggy in Safari.\n if (typeof options.hour12 === 'boolean' && hasBuggyHour12Behavior()) {\n options = {...options};\n let pref = hour12Preferences[String(options.hour12)][locale.split('-')[0]];\n let defaultHourCycle = options.hour12 ? 'h12' : 'h23';\n options.hourCycle = pref ?? defaultHourCycle;\n delete options.hour12;\n }\n\n let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : '');\n if (formatterCache.has(cacheKey)) {\n return formatterCache.get(cacheKey);\n }\n\n let numberFormatter = new Intl.DateTimeFormat(locale, options);\n formatterCache.set(cacheKey, numberFormatter);\n return numberFormatter;\n}\n\nlet _hasBuggyHour12Behavior: boolean = null;\nfunction hasBuggyHour12Behavior() {\n if (_hasBuggyHour12Behavior == null) {\n _hasBuggyHour12Behavior = new Intl.DateTimeFormat('en-US', {\n hour: 'numeric',\n hour12: false\n }).format(new Date(2020, 2, 3, 0)) === '24';\n }\n\n return _hasBuggyHour12Behavior;\n}\n\nlet _hasBuggyResolvedHourCycle: boolean = null;\nfunction hasBuggyResolvedHourCycle() {\n if (_hasBuggyResolvedHourCycle == null) {\n _hasBuggyResolvedHourCycle = (new Intl.DateTimeFormat('fr', {\n hour: 'numeric',\n hour12: false\n }).resolvedOptions() as ResolvedDateTimeFormatOptions).hourCycle === 'h12';\n }\n\n return _hasBuggyResolvedHourCycle;\n}\n\nfunction getResolvedHourCycle(locale: string, options: Intl.DateTimeFormatOptions) {\n if (!options.timeStyle && !options.hour) {\n return undefined;\n }\n\n // Work around buggy results in resolved hourCycle and hour12 options in WebKit.\n // Format the minimum possible hour and maximum possible hour in a day and parse the results.\n locale = locale.replace(/(-u-)?-nu-[a-zA-Z0-9]+/, '');\n locale += (locale.includes('-u-') ? '' : '-u') + '-nu-latn';\n let formatter = getCachedDateFormatter(locale, {\n ...options,\n timeZone: undefined // use local timezone\n });\n\n let min = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 0)).find(p => p.type === 'hour').value, 10);\n let max = parseInt(formatter.formatToParts(new Date(2020, 2, 3, 23)).find(p => p.type === 'hour').value, 10);\n\n if (min === 0 && max === 23) {\n return 'h23';\n }\n\n if (min === 24 && max === 23) {\n return 'h24';\n }\n\n if (min === 0 && max === 11) {\n return 'h11';\n }\n\n if (min === 12 && max === 11) {\n return 'h12';\n }\n\n throw new Error('Unexpected hour cycle result');\n}\n", "import {\n createCalendar,\n DateFormatter,\n DateValue,\n getLocalTimeZone,\n isSameMonth,\n startOfMonth,\n startOfWeek,\n startOfYear,\n today,\n} from \"@internationalized/date\";\n\nconst localTimezone = getLocalTimeZone();\n\nexport function getCurrentLocale() {\n return navigator.languages[0];\n}\n\nexport function getDateFormatter(options?: Intl.DateTimeFormatOptions) {\n return new DateFormatter(getCurrentLocale(), options);\n}\n\nexport function formatDate(\n date: DateValue,\n options?: Intl.DateTimeFormatOptions\n) {\n const formatter = getDateFormatter(options);\n return formatter.format(date.toDate(localTimezone));\n}\n\nexport function getCalender() {\n const calendarIdentifier = getDateFormatter().resolvedOptions().calendar;\n return createCalendar(calendarIdentifier);\n}\n\ntype WeekdayFormat = Intl.DateTimeFormatOptions[\"weekday\"];\n\nexport function daysForLocale(weekday: WeekdayFormat = \"long\") {\n return [...Array(7).keys()].map((day) =>\n formatDate(\n startOfWeek(today(getLocalTimeZone()), getCurrentLocale()).add({\n days: day,\n }),\n { weekday }\n )\n );\n}\n\nexport function monthsForLocale(currentYear: DateValue) {\n const calendar = getCalender();\n return [...Array(calendar.getMonthsInYear(currentYear)).keys()].map((month) =>\n startOfYear(currentYear).add({ months: month })\n );\n}\n\nfunction mapDate(currentDate: DateValue, currentMonth: DateValue) {\n return {\n date: currentDate,\n dateOfMonth: currentDate.month,\n isCurrentMonth: isSameMonth(currentDate, currentMonth),\n };\n}\n\nexport function generateVisibleDays(currentMonth: DateValue) {\n const totalDays = 6 * 7;\n const currentLocale = getCurrentLocale();\n const startDate = startOfWeek(startOfMonth(currentMonth), currentLocale);\n\n return [...Array(totalDays).keys()].map((dayDelta) => {\n const day = startDate.add({ days: dayDelta });\n return mapDate(day, currentMonth);\n });\n}\n\nexport function monthDiff(a: DateValue, b: DateValue) {\n return b.month - a.month + 12 * (b.year - a.year);\n}\n", "import { ComponentPropsWithRef, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { daysForLocale } from \"./utils\";\n\nimport \"./CalendarWeekHeader.css\";\n\nexport type CalendarWeekHeaderProps = ComponentPropsWithRef<\"div\">;\n\nconst withBaseName = makePrefixer(\"saltCalendarWeekHeader\");\n\nexport const CalendarWeekHeader = forwardRef<\n HTMLDivElement,\n CalendarWeekHeaderProps\n>(function CalendarWeekHeader({ className, ...rest }, ref) {\n const weekdaysShort = daysForLocale(\"narrow\");\n const weekdaysLong = daysForLocale(\"long\");\n\n return (\n <div\n data-testid=\"CalendarWeekHeader\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...rest}\n >\n {weekdaysShort.map((day, index) => (\n <small\n aria-hidden=\"true\"\n key={weekdaysLong[index]}\n className={withBaseName(\"dayOfWeek\")}\n >\n {day}\n </small>\n ))}\n </div>\n );\n});\n", "import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport {\n DateValue,\n getLocalTimeZone,\n isSameMonth,\n today,\n} from \"@internationalized/date\";\nimport { CalendarMonth, CalendarMonthProps } from \"./CalendarMonth\";\nimport {\n makePrefixer,\n useIsomorphicLayoutEffect,\n usePrevious,\n} from \"@salt-ds/core\";\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport \"./CalendarCarousel.css\";\nimport { formatDate, monthDiff } from \"./utils\";\n\nexport type CalendarCarouselProps = Omit<CalendarMonthProps, \"date\">;\n\nfunction getMonths(month: DateValue) {\n return [month.subtract({ months: 1 }), month, month.add({ months: 1 })];\n}\n\nfunction usePreviousMonth(visibleMonth: DateValue) {\n const previous = usePrevious(visibleMonth, [formatDate(visibleMonth)]);\n\n return previous ?? today(getLocalTimeZone());\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarCarousel\");\n\nexport const CalendarCarousel = forwardRef<\n HTMLDivElement,\n CalendarCarouselProps\n>(function CalendarCarousel(props, ref) {\n const { ...rest } = props;\n\n const {\n state: { visibleMonth },\n } = useCalendarContext();\n const containerRef = useRef<HTMLDivElement>(null);\n const diffIndex = (a: DateValue, b: DateValue) => monthDiff(a, b);\n\n const { current: baseIndex } = useRef(visibleMonth);\n const previousVisibleMonth = usePreviousMonth(visibleMonth);\n\n useIsomorphicLayoutEffect(() => {\n if (Math.abs(diffIndex(visibleMonth, previousVisibleMonth)) > 1) {\n containerRef.current?.classList.remove(withBaseName(\"shouldAnimate\"));\n } else {\n containerRef.current?.classList.add(withBaseName(\"shouldAnimate\"));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formatDate(visibleMonth), formatDate(previousVisibleMonth)]);\n\n useIsomorphicLayoutEffect(() => {\n if (containerRef.current) {\n containerRef.current.style.transform = `translate3d(${\n diffIndex(baseIndex, visibleMonth) * 100\n }%, 0, 0)`;\n }\n });\n\n const [months, setMonths] = useState(() => getMonths(visibleMonth));\n\n useEffect(() => {\n setMonths((oldMonths) => {\n const newMonths = getMonths(visibleMonth).filter((month) => {\n return !oldMonths.find((oldMonth) => isSameMonth(oldMonth, month));\n });\n\n return oldMonths.concat(newMonths);\n });\n const finishTransition = () => {\n setMonths(getMonths(visibleMonth));\n };\n const container = containerRef.current;\n\n if (\n container &&\n parseFloat(window.getComputedStyle(container).transitionDuration) > 0\n ) {\n container?.addEventListener(\"transitionend\", finishTransition);\n\n return () => {\n container?.removeEventListener(\"transitionend\", finishTransition);\n };\n } else {\n finishTransition();\n }\n\n return undefined;\n }, [formatDate(visibleMonth)]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div\n className={withBaseName()}\n style={{\n overflowX: \"hidden\",\n position: \"relative\",\n }}\n ref={ref}\n >\n <div className={withBaseName(\"track\")} ref={containerRef}>\n {months.map((date, index) => (\n <div\n key={formatDate(date)}\n className={withBaseName(\"slide\")}\n style={{\n transform: `translateX(${diffIndex(date, baseIndex) * 100}%)`,\n }}\n aria-hidden={index !== 1 ? \"true\" : undefined}\n >\n <CalendarMonth isVisible={index === 1} {...rest} date={date} />\n </div>\n ))}\n </div>\n </div>\n );\n});\n", "import {\n ComponentPropsWithRef,\n forwardRef,\n MouseEvent,\n SyntheticEvent,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { DateValue } from \"@internationalized/date\";\nimport { CalendarDay, CalendarDayProps } from \"./CalendarDay\";\nimport { formatDate, generateVisibleDays } from \"./utils\";\n\nimport \"./CalendarMonth.css\";\nimport { useCalendarContext } from \"./CalendarContext\";\n\nexport interface CalendarMonthProps extends ComponentPropsWithRef<\"div\"> {\n date: DateValue;\n hideOutOfRangeDates?: boolean;\n renderDayContents?: CalendarDayProps[\"renderDayContents\"];\n isVisible?: boolean;\n TooltipProps?: CalendarDayProps[\"TooltipProps\"];\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarMonth\");\n\nexport const CalendarMonth = forwardRef<HTMLDivElement, CalendarMonthProps>(\n function CalendarMonth(props, ref) {\n const {\n className,\n date,\n hideOutOfRangeDates,\n isVisible,\n renderDayContents,\n onMouseLeave,\n TooltipProps,\n ...rest\n } = props;\n\n const days = generateVisibleDays(date);\n const {\n helpers: { setHoveredDate },\n } = useCalendarContext();\n\n const handleMouseLeave = (event: SyntheticEvent) => {\n setHoveredDate(event, null);\n onMouseLeave?.(event as MouseEvent<HTMLDivElement>);\n };\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n ref={ref}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n <div\n data-testid=\"CalendarDateGrid\"\n className={withBaseName(\"dateGrid\")}\n >\n {days.map((day) => {\n return (\n <CalendarDay\n key={formatDate(day.date)}\n day={day.date}\n renderDayContents={renderDayContents}\n month={date}\n TooltipProps={TooltipProps}\n />\n );\n })}\n </div>\n </div>\n );\n }\n);\n", "import { makePrefixer, Tooltip, TooltipProps, useForkRef } from \"@salt-ds/core\";\nimport { CloseIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentPropsWithRef, forwardRef, ReactElement, useRef } from \"react\";\nimport { DateValue } from \"@internationalized/date\";\n\nimport { DayStatus, useCalendarDay } from \"../useCalendarDay\";\nimport \"./CalendarDay.css\";\nimport { formatDate } from \"./utils\";\n\nexport type DateFormatter = (day: Date) => string | undefined;\n\nexport interface CalendarDayProps\n extends Omit<ComponentPropsWithRef<\"button\">, \"children\"> {\n day: DateValue;\n formatDate?: DateFormatter;\n renderDayContents?: (date: DateValue, status: DayStatus) => ReactElement;\n status?: DayStatus;\n month: DateValue;\n TooltipProps?: Partial<TooltipProps>;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nexport const CalendarDay = forwardRef<HTMLButtonElement, CalendarDayProps>(\n function CalendarDay(props, ref) {\n const { className, day, renderDayContents, month, TooltipProps, ...rest } =\n props;\n\n const dayRef = useRef<HTMLButtonElement>(null);\n const forkedRef = useForkRef(ref, dayRef);\n\n const { status, dayProps, unselectableReason } = useCalendarDay(\n {\n date: day,\n month,\n },\n dayRef\n );\n const { outOfRange, today, unselectable, hidden } = status;\n\n return (\n <Tooltip\n hideIcon\n status=\"error\"\n content={unselectableReason}\n disabled={!unselectableReason}\n placement=\"top\"\n enterDelay={300}\n {...TooltipProps}\n >\n <button\n aria-label={formatDate(day)}\n {...dayProps}\n ref={forkedRef}\n {...rest}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"hidden\")]: hidden,\n [withBaseName(\"outOfRange\")]: outOfRange,\n [withBaseName(\"today\")]: today,\n [withBaseName(\"unselectable\")]: !!unselectable,\n [withBaseName(\"unselectableLow\")]: unselectable === \"low\",\n [withBaseName(\"unselectableMedium\")]: unselectable === \"medium\",\n },\n dayProps.className,\n className\n )}\n >\n {unselectable === \"medium\" && (\n <CloseIcon\n aria-hidden\n aria-label={undefined}\n className={withBaseName(\"blockedIcon\")}\n />\n )}\n\n {renderDayContents\n ? renderDayContents(day, status)\n : formatDate(day, { day: \"numeric\" })}\n </button>\n </Tooltip>\n );\n }\n);\n", "import {\n DateValue,\n getLocalTimeZone,\n isSameDay,\n isSameMonth,\n isToday,\n} from \"@internationalized/date\";\nimport {\n ComponentPropsWithoutRef,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n RefObject,\n useEffect,\n} from \"react\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { useFocusManagement } from \"./internal/useFocusManagement\";\nimport { useSelectionDay } from \"./useSelection\";\n\nexport type DayStatus = {\n outOfRange?: boolean;\n selected?: boolean;\n today?: boolean;\n unselectable?: \"medium\" | \"low\" | false;\n focused?: boolean;\n hidden?: boolean;\n};\n\nexport interface useCalendarDayProps {\n date: DateValue;\n month: DateValue;\n}\n\nexport function useCalendarDay(\n { date, month }: useCalendarDayProps,\n ref: RefObject<HTMLElement>\n) {\n const {\n state: { focusedDate, hideOutOfRangeDates, calendarFocused },\n helpers: { isDayUnselectable, isOutsideAllowedMonths },\n } = useCalendarContext();\n const selectionManager = useSelectionDay({ date });\n const focusManager = useFocusManagement({ date });\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager?.handleClick(event);\n focusManager.handleClick(event);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleKeyDown(event);\n selectionManager?.handleKeyDown(event);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n focusManager.handleFocus(event);\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n selectionManager.handleMouseOver?.(event);\n };\n\n const eventHandlers = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onMouseOver: handleMouseOver,\n };\n\n const outOfRange = !isSameMonth(date, month);\n const focused =\n isSameDay(date, focusedDate) && calendarFocused && !outOfRange;\n const tabIndex = isSameDay(date, focusedDate) && !outOfRange ? 0 : -1;\n const today = isToday(date, getLocalTimeZone());\n\n const unselectableResult =\n isDayUnselectable(date) || (outOfRange && isOutsideAllowedMonths(date));\n const unselectableReason =\n typeof unselectableResult !== \"boolean\" ? unselectableResult?.tooltip : \"\";\n const unselectable =\n typeof unselectableResult !== \"boolean\"\n ? unselectableResult.emphasis\n : unselectableResult\n ? \"low\"\n : false;\n const hidden = hideOutOfRangeDates && outOfRange;\n\n useEffect(() => {\n if (focused) {\n ref.current?.focus({ preventScroll: true });\n }\n }, [ref, focused]);\n\n return {\n status: {\n outOfRange,\n today,\n unselectable,\n focused,\n hidden,\n ...selectionManager.status,\n } as DayStatus,\n dayProps: {\n tabIndex,\n \"aria-current\": today ? \"date\" : undefined,\n \"aria-hidden\": hidden ? \"true\" : undefined,\n ...eventHandlers,\n ...selectionManager.dayProps,\n } as ComponentPropsWithoutRef<\"button\">,\n unselectableReason,\n };\n}\n", "import {\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport { useCalendarContext } from \"./CalendarContext\";\nimport { DateValue, endOfWeek, startOfWeek } from \"@internationalized/date\";\nimport { getCurrentLocale } from \"./utils\";\n\nexport function useFocusManagement({ date }: { date: DateValue }) {\n const {\n helpers: { setFocusedDate },\n } = useCalendarContext();\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n let newDate = date;\n switch (event.key) {\n case \"ArrowUp\":\n newDate = date.subtract({ weeks: 1 });\n break;\n case \"ArrowDown\":\n newDate = date.add({ weeks: 1 });\n break;\n case \"ArrowLeft\":\n newDate = date.subtract({ days: 1 });\n break;\n case \"ArrowRight\":\n newDate = date.add({ days: 1 });\n break;\n case \"Home\":\n newDate = startOfWeek(date, getCurrentLocale());\n break;\n case \"End\":\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore TODO bug in @internationalized/date\n newDate = endOfWeek(date, getCurrentLocale());\n break;\n case \"PageUp\":\n if (event.shiftKey) {\n newDate = date.subtract({ years: 1 });\n } else {\n newDate = date.subtract({ months: 1 });\n }\n break;\n case \"PageDown\":\n if (event.shiftKey) {\n newDate = date.add({ years: 1 });\n } else {\n newDate = date.add({ months: 1 });\n }\n break;\n default:\n }\n\n setFocusedDate(event, newDate);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n return {\n handleClick,\n handleKeyDown,\n handleFocus,\n };\n}\n", "import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { KeyboardEventHandler, MouseEventHandler, SyntheticEvent } from \"react\";\nimport { isPlainObject } from \"../common-hooks/isPlainObject\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { CalendarDate, DateValue, isSameDay } from \"@internationalized/date\";\n\ninterface BaseUseSelectionCalendarProps<SelectionVariantType> {\n hoveredDate?: DateValue | null;\n selectedDate?: SelectionVariantType | null;\n defaultSelectedDate?: SelectionVariantType;\n onSelectedDateChange?: (\n event: SyntheticEvent,\n selectedDate: SelectionVariantType\n ) => void;\n isDaySelectable: (date?: DateValue) => boolean;\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: DateValue | null\n ) => void;\n}\n\ntype SingleSelectionValueType = DateValue;\ntype MultiSelectionValueType = DateValue[];\nexport type RangeSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\ntype OffsetSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\n\ntype AllSelectionValueType =\n | SingleSelectionValueType\n | MultiSelectionValueType\n | RangeSelectionValueType\n | OffsetSelectionValueType\n | null;\n\nexport interface UseOffsetSelectionCalendarProps\n extends Omit<\n BaseUseSelectionCalendarProps<OffsetSelectionValueType>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n selectionVariant: \"offset\";\n startDateOffset?: (date: DateValue) => DateValue;\n endDateOffset?: (date: DateValue) => DateValue;\n}\n\nexport interface UseRangeSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<RangeSelectionValueType> {\n selectionVariant: \"range\";\n}\n\nexport interface UseMultiSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<MultiSelectionValueType> {\n selectionVariant: \"multiselect\";\n}\n\nexport interface UseSingleSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<SingleSelectionValueType> {\n selectionVariant: \"default\";\n}\n\nexport type useSelectionCalendarProps =\n | UseSingleSelectionCalendarProps\n | UseMultiSelectionCalendarProps\n | UseRangeSelectionCalendarProps\n | UseOffsetSelectionCalendarProps;\n\nfunction addOrRemoveFromArray(\n array: AllSelectionValueType | null = [],\n item: DateValue\n) {\n if (Array.isArray(array)) {\n if (array.find((element) => isSameDay(element, item))) {\n return array.filter((element) => !isSameDay(element, item));\n }\n return array.concat(item);\n }\n return [item];\n}\n\nconst defaultOffset = (date: DateValue) => date;\n\nfunction isRangeOrOffsetSelectionValue(\n selectionValue?: AllSelectionValueType\n): selectionValue is RangeSelectionValueType | OffsetSelectionValueType {\n return selectionValue != null && isPlainObject(selectionValue);\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nexport function useSelectionCalendar(props: useSelectionCalendarProps) {\n const {\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n // onSelectedDateChange,\n onHoveredDateChange,\n isDaySelectable,\n selectionVariant,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const getStartDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.startDateOffset) {\n return props.startDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const getEndDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.endDateOffset) {\n return props.endDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const setSelectedDate = (\n event: SyntheticEvent<HTMLButtonElement>,\n newSelectedDate: DateValue\n ) => {\n if (isDaySelectable(newSelectedDate)) {\n switch (props.selectionVariant) {\n case \"default\":\n setSelectedDateState(newSelectedDate);\n props.onSelectedDateChange?.(event, newSelectedDate);\n break;\n case \"multiselect\": {\n const newDates = addOrRemoveFromArray(selectedDate, newSelectedDate);\n setSelectedDateState(newDates);\n props.onSelectedDateChange?.(event, newDates);\n break;\n }\n case \"range\": {\n let base = selectedDate;\n if (isRangeOrOffsetSelectionValue(base)) {\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n newSelectedDate.compare(base.startDate) > 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n } else {\n base = { startDate: newSelectedDate };\n }\n setSelectedDateState(base);\n props.onSelectedDateChange?.(event, base);\n break;\n }\n case \"offset\": {\n const newRange = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newRange);\n props.onSelectedDateChange?.(event, newRange);\n }\n }\n }\n };\n\n const isSelected = (date: DateValue) => {\n switch (selectionVariant) {\n case \"default\":\n return (\n selectedDate instanceof CalendarDate && isSameDay(selectedDate, date)\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) => isSameDay(element, date))\n );\n default:\n return false;\n }\n };\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = (event: SyntheticEvent, date: DateValue | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n };\n\n const isHovered = (date: DateValue) => {\n return !!hoveredDate && isSameDay(date, hoveredDate);\n };\n\n const isSelectedSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate?.startDate &&\n selectedDate?.endDate\n ) {\n return (\n date.compare(selectedDate.startDate) > 0 &&\n date.compare(selectedDate.endDate) < 0\n );\n }\n return false;\n };\n const isHoveredSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate &&\n !selectedDate.endDate &&\n hoveredDate\n ) {\n const isForwardRange =\n hoveredDate.compare(selectedDate.startDate) > 0 &&\n ((date.compare(selectedDate.startDate) > 0 &&\n date.compare(hoveredDate) < 0) ||\n isSameDay(date, hoveredDate));\n\n const isValidDayHovered = isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n };\n\n const isSelectedStart = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate\n ) {\n return isSameDay(selectedDate.startDate, date);\n }\n return false;\n };\n\n const isSelectedEnd = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.endDate\n ) {\n return isSameDay(selectedDate.endDate, date);\n }\n return false;\n };\n\n const isHoveredOffset = (date: DateValue) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n date.compare(startDate) >= 0 &&\n date.compare(endDate) <= 0 &&\n isDaySelectable(date)\n );\n }\n\n return false;\n };\n\n return {\n state: {\n selectedDate,\n hoveredDate,\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n },\n };\n}\n\nexport function useSelectionDay({ date }: { date: DateValue }) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDayUnselectable,\n },\n } = useCalendarContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setSelectedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, date);\n };\n\n const handleMouseLeave: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, null);\n };\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n handleMouseOver,\n handleMouseLeave,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\": isDayUnselectable(date) ? \"true\" : undefined,\n },\n };\n}\n", "import {\n DateValue,\n endOfMonth,\n endOfYear,\n getLocalTimeZone,\n isSameDay,\n startOfMonth,\n startOfYear,\n today,\n} from \"@internationalized/date\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport {\n UseMultiSelectionCalendarProps,\n UseOffsetSelectionCalendarProps,\n UseRangeSelectionCalendarProps,\n useSelectionCalendar,\n useSelectionCalendarProps,\n UseSingleSelectionCalendarProps,\n} from \"./useSelection\";\n\nexport type UnselectableInfo =\n | { emphasis: \"medium\"; tooltip: string }\n | { emphasis: \"low\"; tooltip?: string };\n\ninterface BaseUseCalendarProps {\n defaultVisibleMonth?: DateValue;\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue\n ) => void;\n isDayUnselectable?: (date: DateValue) => UnselectableInfo | boolean | void;\n visibleMonth?: DateValue;\n hideOutOfRangeDates?: boolean;\n hideYearDropdown?: boolean;\n minDate?: DateValue;\n maxDate?: DateValue;\n}\n\nexport type useCalendarProps = (\n | Omit<UseSingleSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseMultiSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseRangeSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseOffsetSelectionCalendarProps, \"isDaySelectable\">\n) &\n BaseUseCalendarProps;\n\nconst defaultIsDayUnselectable = (): UnselectableInfo | false => false;\n\nexport function useCalendar(props: useCalendarProps) {\n const {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n hideYearDropdown,\n hideOutOfRangeDates,\n defaultVisibleMonth = today(getLocalTimeZone()),\n onSelectedDateChange,\n onVisibleMonthChange,\n isDayUnselectable = defaultIsDayUnselectable,\n minDate = hideYearDropdown\n ? startOfYear(today(getLocalTimeZone()))\n : undefined,\n maxDate = hideYearDropdown\n ? endOfYear(today(getLocalTimeZone()))\n : undefined,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n // startDateOffset,\n // endDateOffset,\n } = props;\n\n const isOutsideAllowedDates = useCallback(\n (date: DateValue) => {\n return (\n (minDate != null && date.compare(minDate) < 0) ||\n (maxDate != null && date.compare(maxDate) > 0)\n );\n },\n [maxDate, minDate]\n );\n\n const isOutsideAllowedMonths = (date: DateValue) => {\n return (\n (minDate != null && endOfMonth(date).compare(minDate) < 0) ||\n (maxDate != null && startOfMonth(date).compare(maxDate) > 0)\n );\n };\n\n const isOutsideAllowedYears = (date: DateValue) => {\n return (\n (minDate != null && endOfYear(date).compare(minDate) < 0) ||\n (maxDate != null && startOfYear(date).compare(maxDate) > 0)\n );\n };\n\n const isDaySelectable = useCallback(\n (date?: DateValue) =>\n !(date && (isDayUnselectable(date) || isOutsideAllowedDates(date))),\n [isDayUnselectable, isOutsideAllowedDates]\n );\n\n const selectionManager = useSelectionCalendar({\n defaultSelectedDate: defaultSelectedDate,\n selectedDate,\n onSelectedDateChange,\n startDateOffset:\n props.selectionVariant === \"offset\"\n ? props.startDateOffset\n : (date) => date,\n endDateOffset:\n props.selectionVariant === \"offset\"\n ? props.endDateOffset\n : (date) => date,\n isDaySelectable,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n } as useSelectionCalendarProps);\n\n const [visibleMonth, setVisibleMonthState] = useControlled({\n controlled: visibleMonthProp ? startOfMonth(visibleMonthProp) : undefined,\n default: startOfMonth(defaultVisibleMonth),\n name: \"Calendar\",\n state: \"visibleMonth\",\n });\n\n const [calendarFocused, setCalendarFocused] = useState(false);\n\n const [focusedDate, setFocusedDateState] = useState<DateValue>(\n startOfMonth(visibleMonth)\n );\n\n const isDayVisible = useCallback(\n (date: DateValue) => {\n const startInsideDays = startOfMonth(visibleMonth);\n\n if (date.compare(startInsideDays) < 0) return false;\n\n const endInsideDays = endOfMonth(visibleMonth);\n\n return !(date.compare(endInsideDays) > 0);\n },\n [visibleMonth]\n );\n\n const setVisibleMonth = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonthState(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange, setVisibleMonthState]\n );\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent, date: DateValue) => {\n if (isSameDay(date, focusedDate) || isOutsideAllowedDates(date)) return;\n\n setFocusedDateState(date);\n\n const shouldTransition =\n !isDayVisible(date) &&\n isDaySelectable(date) &&\n !isOutsideAllowedDates(date);\n if (shouldTransition) {\n setVisibleMonth(event, startOfMonth(date));\n }\n },\n [\n focusedDate,\n isDaySelectable,\n isDayVisible,\n isOutsideAllowedDates,\n setVisibleMonth,\n ]\n );\n\n useEffect(() => {\n if (!isDayVisible(focusedDate)) {\n setFocusedDateState(startOfMonth(visibleMonth));\n }\n }, [isDayVisible, focusedDate, visibleMonth]);\n\n return {\n state: {\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n ...selectionManager.state,\n },\n helpers: {\n setVisibleMonth,\n setFocusedDate,\n setCalendarFocused,\n isDayUnselectable,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n ...selectionManager.helpers,\n },\n };\n}\n", "import { useId } from \"@vuu-ui/vuu-utils\";\nimport { Input, InputProps } from \"@salt-ds/core\";\nimport {\n ForwardedRef,\n forwardRef,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\nimport {\n CollectionProvider,\n ComponentSelectionProps,\n itemToString as defaultItemToString,\n SelectionStrategy,\n useCollectionItems,\n} from \"../common-hooks\";\nimport { DropdownBase, DropdownBaseProps } from \"../dropdown\";\nimport { List, ListProps } from \"../list\";\nimport { ChevronIcon } from \"../list/ChevronIcon\";\nimport { useCombobox } from \"./useCombobox\";\n\n//TODO why do we need onSelect from input ?\nexport interface ComboBoxProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends Omit<\n DropdownBaseProps,\n \"triggerComponent\" | \"onBlur\" | \"onChange\" | \"onFocus\"\n >,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Omit<ComponentSelectionProps<Item, S>, \"onSelect\">,\n Pick<ListProps<Item, S>, \"ListItem\" | \"itemToString\" | \"source\" | \"width\"> {\n InputProps?: InputProps;\n ListProps?: Omit<ListProps<Item>, \"ListItem\" | \"itemToString\" | \"source\">;\n allowBackspaceClearsSelection?: boolean;\n allowFreeText?: boolean;\n defaultValue?: string;\n getFilterRegex?: (inputValue: string) => RegExp;\n initialHighlightedIndex?: number;\n itemsToString?: (items: Item[]) => string;\n onDeselect?: () => void;\n onSetSelectedText?: (text: string) => void;\n disableFilter?: boolean;\n value?: string;\n}\n\n//TODO does not cutrrently support controlled vallue\n\nexport const ComboBox = forwardRef(function Combobox<\n Item = string,\n S extends SelectionStrategy = \"default\"\n>(\n {\n InputProps,\n ListProps,\n PopupProps,\n ListItem,\n \"aria-label\": ariaLabel,\n allowBackspaceClearsSelection,\n allowFreeText,\n children,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n disabled,\n disableFilter,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n onSetSelectedText,\n getFilterRegex,\n id: idProp,\n initialHighlightedIndex = -1,\n isOpen: isOpenProp,\n itemToString = defaultItemToString,\n itemsToString,\n onDeselect,\n onOpenChange: onOpenChangeProp,\n onSelectionChange,\n selected: selectedProp,\n selectionKeys,\n selectionStrategy,\n source,\n value: valueProp,\n width = 180,\n ...props\n }: ComboBoxProps<Item, S>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const listRef = useRef<HTMLDivElement>(null);\n\n const valueFromSelected = (item: Item | null | Item[]) => {\n return Array.isArray(item) && item.length > 0 ? item[0] : undefined;\n };\n\n const getInitialValue = (\n items1?: ComboBoxProps<Item, S>[\"selected\"],\n items2?: ComboBoxProps<Item, S>[\"defaultSelected\"]\n ) => {\n const item = items1\n ? valueFromSelected(items1)\n : items2\n ? valueFromSelected(items2)\n : undefined;\n\n return item ? itemToString(item) : \"\";\n };\n\n const initialValue = getInitialValue(selectedProp, defaultSelected);\n\n const collectionHook = useCollectionItems<Item>({\n id,\n source,\n children,\n options: {\n disableFilter,\n filterPattern: initialValue,\n getFilterRegex,\n itemToString,\n },\n });\n\n const {\n focusVisible,\n highlightedIndex,\n inputProps: { endAdornment: endAdornmentProp, ...inputProps },\n isOpen,\n listHandlers,\n listControlProps: controlProps,\n onOpenChange,\n selected,\n } = useCombobox<Item, S>({\n InputProps,\n allowBackspaceClearsSelection,\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n disabled,\n initialHighlightedIndex,\n itemCount: collectionHook.data.length,\n label: props.title,\n listRef,\n onBlur,\n onDeselect,\n onFocus,\n onChange,\n onSelect,\n id,\n isOpen: isOpenProp,\n itemToString,\n itemsToString,\n onOpenChange: onOpenChangeProp,\n onSelectionChange,\n onSetSelectedText,\n selected: selectedProp,\n selectionKeys,\n selectionStrategy,\n value: initialValue,\n });\n\n const handleDropdownIconClick = useCallback(() => {\n if (isOpen) {\n onOpenChange(false, \"toggle\");\n } else {\n onOpenChange(true);\n }\n }, [isOpen, onOpenChange]);\n\n const endAdornment =\n endAdornmentProp === null ? null : (\n <ChevronIcon\n direction={isOpen ? \"up\" : \"down\"}\n onClick={handleDropdownIconClick}\n />\n );\n\n return (\n <CollectionProvider<Item> collectionHook={collectionHook}>\n <DropdownBase\n {...props}\n PopupProps={PopupProps}\n id={id}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n openOnFocus\n ref={forwardedRef}\n width={width}\n >\n <Input\n {...inputProps}\n disabled={disabled}\n // ref={useForkRef(setInputRef, setHookInputRef)}\n {...controlProps}\n endAdornment={endAdornment}\n />\n\n <List<Item, S>\n {...ListProps}\n ListItem={ListItem}\n defaultSelected={undefined}\n focusVisible={focusVisible}\n highlightedIndex={highlightedIndex}\n itemTextHighlightPattern={String(inputProps.value) || undefined}\n listHandlers={listHandlers}\n onSelectionChange={onSelectionChange}\n ref={listRef}\n selected={selected}\n selectionStrategy={selectionStrategy}\n tabIndex={-1}\n />\n </DropdownBase>\n </CollectionProvider>\n );\n}) as <Item, S extends SelectionStrategy = \"default\">(\n props: ComboBoxProps<Item, S> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<ComboBoxProps<Item>>;\n", "import cx from \"clsx\";\nimport { HTMLAttributes } from \"react\";\n\nimport \"./ChevronIcon.css\";\n\nconst classBase = \"vuuChevronIcon\";\n\ntype Direction = \"up\" | \"down\" | \"left\" | \"right\";\n\ninterface ChevronProps extends HTMLAttributes<HTMLSpanElement> {\n direction: Direction;\n}\n\nexport const ChevronIcon = (props: ChevronProps) => {\n const { direction, ...htmlAttributes } = props;\n return <span {...htmlAttributes} className={cx(classBase, direction)} />;\n};\n", "import { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport { InputProps, useControlled } from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEventHandler,\n MouseEvent,\n RefObject,\n SyntheticEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n ComponentSelectionProps,\n hasSelection,\n isMultiSelection,\n itemToString as defaultItemToString,\n MultiSelectionHandler,\n MultiSelectionStrategy,\n SelectionStrategy,\n SelectionType,\n SingleSelectionHandler,\n} from \"../common-hooks\";\nimport {\n DropdownHookProps,\n DropdownHookResult,\n OpenChangeHandler,\n} from \"../dropdown\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { ComboBoxProps } from \"./ComboBox\";\n\nconst EnterOnly = [\"Enter\"];\nexport interface ComboboxHookProps<\n Item = string,\n S extends SelectionStrategy = \"default\"\n> extends Partial<Omit<DropdownHookProps, \"id\" | \"onKeyDown\">>,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Pick<\n ComboBoxProps<Item>,\n | \"allowBackspaceClearsSelection\"\n | \"allowFreeText\"\n | \"defaultValue\"\n | \"initialHighlightedIndex\"\n | \"itemsToString\"\n | \"onDeselect\"\n | \"onSetSelectedText\"\n | \"value\"\n >,\n Omit<ComponentSelectionProps<Item, S>, \"onSelect\">,\n Omit<\n ListHookProps<Item, S>,\n \"containerRef\" | \"defaultSelected\" | \"onSelect\" | \"selected\"\n > {\n InputProps?: InputProps;\n ariaLabel?: string;\n id: string;\n itemCount: number;\n itemToString?: (item: Item) => string;\n listRef: RefObject<HTMLDivElement>;\n}\n\nexport interface ComboboxHookResult<Item, S extends SelectionStrategy>\n extends Pick<\n ListHookResult<Item>,\n \"focusVisible\" | \"highlightedIndex\" | \"listControlProps\" | \"listHandlers\"\n >,\n Partial<DropdownHookResult> {\n inputProps: InputProps;\n onOpenChange: OpenChangeHandler;\n selected?: S extends MultiSelectionStrategy ? Item[] : Item | null;\n}\n\nexport const useCombobox = <Item, S extends SelectionStrategy>({\n allowBackspaceClearsSelection,\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultSelected,\n defaultValue,\n onBlur,\n onFocus,\n onChange,\n onDeselect,\n onSelect,\n id,\n initialHighlightedIndex = -1,\n isOpen: isOpenProp,\n itemCount,\n itemsToString,\n itemToString = defaultItemToString as (item: Item) => string,\n listRef,\n onOpenChange,\n onSelectionChange,\n onSetSelectedText,\n selected: selectedProp,\n selectionKeys = EnterOnly,\n selectionStrategy,\n value: valueProp,\n InputProps: inputProps = {\n onBlur,\n onFocus,\n onChange,\n onSelect,\n },\n}: ComboboxHookProps<Item, S>): ComboboxHookResult<Item, S> => {\n const isMultiSelect = isMultiSelection(selectionStrategy);\n\n const { setFilterPattern } = collectionHook;\n const setHighlightedIndexRef = useRef<null | ((i: number) => void)>(null);\n // used to track multi selection\n const selectedRef = useRef<Item | null | Item[]>(isMultiSelect ? [] : null);\n // Input select events are used to identify user navigation within the input text.\n // The initial select event fired on focus is an exception that we ignore.\n const ignoreSelectOnFocus = useRef(true);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const [value, setValue] = useControlled({\n controlled: undefined,\n default: defaultValue ?? valueProp,\n name: \"ComboBox\",\n state: \"value\",\n });\n\n const [disableAriaActiveDescendant, setDisableAriaActiveDescendant] =\n useState(true);\n\n const highlightSelectedItem = useCallback((selected) => {\n if (Array.isArray(selected)) {\n // TODO multi selection\n } else if (selected == null) {\n setHighlightedIndexRef.current?.(-1);\n }\n }, []);\n\n const setTextValue = useCallback(\n (value: string, applyFilter = true) => {\n setValue(value);\n if (applyFilter) {\n setFilterPattern(value === \"\" ? undefined : value);\n }\n },\n [setFilterPattern, setValue]\n );\n\n const reconcileInput = useCallback(\n (selected?: SelectionType<Item, S>) => {\n let newValue = allowFreeText ? value ?? \"\" : \"\";\n if (Array.isArray(selected)) {\n if (selected.length === 1) {\n newValue = itemToString(selected[0]);\n } else if (selected.length > 1) {\n newValue = itemsToString?.(selected) || \"\";\n }\n } else if (selected) {\n newValue = itemToString(selected as Item);\n }\n if (newValue !== value) {\n setTextValue(newValue, !isMultiSelect);\n onSetSelectedText?.(newValue);\n return true;\n } else {\n return false;\n }\n },\n [\n allowFreeText,\n isMultiSelect,\n itemToString,\n itemsToString,\n onSetSelectedText,\n setTextValue,\n value,\n ]\n );\n\n const applySelection = useCallback(() => {\n const { current: selected } = selectedRef;\n if (reconcileInput(selected as any)) {\n if (selected) {\n // selected ref will be undefined if user has changed nothing\n if (Array.isArray(selected)) {\n (onSelectionChange as MultiSelectionHandler<Item>)?.(\n null,\n selected as Item[]\n );\n } else if (selected) {\n (onSelectionChange as SingleSelectionHandler<Item>)?.(\n null,\n selected as Item\n );\n }\n }\n }\n }, [onSelectionChange, reconcileInput]);\n\n const selectFreeTextInputValue = useCallback(() => {\n if (allowFreeText) {\n const text = value?.trim();\n const { current: selected } = selectedRef;\n if (text) {\n if (itemCount === 0 && text) {\n // TODO should this be a different event ?\n if (isMultiSelect) {\n (onSelectionChange as MultiSelectionHandler<string>)?.(null, [\n text,\n ]);\n } else {\n (onSelectionChange as SingleSelectionHandler<string>)?.(null, text);\n }\n selectedRef.current = null;\n return true;\n } else if (selected && !isMultiSelect) {\n if (\n selected &&\n !Array.isArray(selected) &&\n itemToString(selected) === text\n ) {\n // it has already been selected, nothing to do\n }\n }\n }\n }\n return false;\n }, [\n allowFreeText,\n value,\n itemCount,\n isMultiSelect,\n onSelectionChange,\n itemToString,\n ]);\n\n const handleOpenChange = useCallback<OpenChangeHandler>(\n (open, closeReason) => {\n // console.log(`openChange<${open}> ${label} ${closeReason}`);\n if (open && isMultiSelect) {\n setTextValue(\"\", false);\n }\n setIsOpen(open);\n onOpenChange?.(open, closeReason);\n if (!open && closeReason !== \"Escape\") {\n if (!selectFreeTextInputValue()) {\n applySelection();\n }\n }\n },\n [\n applySelection,\n isMultiSelect,\n onOpenChange,\n selectFreeTextInputValue,\n setIsOpen,\n setTextValue,\n ]\n );\n\n const handleSelectionChange = useCallback(\n (evt, selected) => {\n selectedRef.current = selected;\n if (!isMultiSelect) {\n handleOpenChange(false, \"select\");\n }\n },\n [handleOpenChange, isMultiSelect]\n );\n\n const handleKeyboardNavigation = useCallback(() => {\n setDisableAriaActiveDescendant(false);\n }, []);\n\n const {\n focusVisible,\n setHighlightedIndex,\n highlightedIndex,\n listControlProps,\n listHandlers: listHookListHandlers,\n selected,\n } = useList<Item, S>({\n collectionHook,\n containerRef: listRef,\n defaultHighlightedIndex: initialHighlightedIndex,\n defaultSelected: collectionHook.itemToCollectionItemId(defaultSelected),\n disableAriaActiveDescendant,\n disableHighlightOnFocus: true,\n disableTypeToSelect: true,\n label: \"combobox\",\n onKeyboardNavigation: handleKeyboardNavigation,\n onSelectionChange: handleSelectionChange,\n selected: collectionHook.itemToCollectionItemId(selectedProp as any),\n selectionKeys,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n setHighlightedIndexRef.current = setHighlightedIndex;\n\n const { onClick: listHandlersOnClick } = listHookListHandlers;\n const handleListClick = useCallback(\n (evt: MouseEvent) => {\n document.getElementById(`${id}-input`)?.focus();\n listHandlersOnClick?.(evt);\n },\n [id, listHandlersOnClick]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const newValue = evt.target.value;\n setValue(newValue);\n\n if (newValue && newValue.trim().length) {\n setFilterPattern(newValue);\n } else {\n setFilterPattern(undefined);\n // onSelectionChange?.(evt, []);\n }\n\n setIsOpen(true);\n },\n [setFilterPattern, setIsOpen, setValue]\n );\n\n const handleInputKeyDown = useCallback<KeyboardEventHandler>(\n (e) => {\n if (e.key === \"Backspace\" && allowBackspaceClearsSelection) {\n selectedRef.current = null;\n onDeselect?.();\n }\n },\n [allowBackspaceClearsSelection, onDeselect]\n );\n\n const { onFocus: inputOnFocus = onFocus } = inputProps;\n const { onFocus: listOnFocus } = listControlProps;\n const handleInputFocus = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n setDisableAriaActiveDescendant(false);\n listOnFocus?.(evt);\n inputOnFocus?.(evt);\n },\n [inputOnFocus, listOnFocus]\n );\n\n const listFocused = useCallback(\n (evt: FocusEvent) => {\n const element = evt.relatedTarget as HTMLElement;\n return element?.id === `${id}-list`;\n },\n [id]\n );\n\n const { onBlur: inputOnBlur = onBlur } = inputProps;\n const { onBlur: listOnBlur } = listControlProps;\n // TODO do we need this check at all, given that DropdownV=BAse will close dropdown\n const handleInputBlur = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n if (listFocused(evt)) {\n // nothing doing\n } else {\n listOnBlur?.(evt);\n inputOnBlur?.(evt);\n setDisableAriaActiveDescendant(true);\n ignoreSelectOnFocus.current = true;\n }\n },\n [listFocused, listOnBlur, inputOnBlur]\n );\n\n const { onSelect: inputOnSelect } = inputProps;\n const handleInputSelect = useCallback(\n (event: SyntheticEvent<HTMLDivElement>) => {\n if (ignoreSelectOnFocus.current) {\n ignoreSelectOnFocus.current = false;\n } else {\n setDisableAriaActiveDescendant(true);\n }\n inputOnSelect?.(event);\n },\n [inputOnSelect]\n );\n\n // If we have selected item(s) and we filter down the list by typing,\n // the position of selected items within the list may be changing.\n // Relocate highlighted index to the selection whenever this happens,\n // so if we resume keyboard navigation, navigation begins from the selected\n // item.\n useLayoutEffectSkipFirst(() => {\n if (hasSelection(selected)) {\n highlightSelectedItem(selected);\n } else {\n setHighlightedIndex(initialHighlightedIndex);\n }\n // TODO may need to scrollIntoView\n // if (itemCount === 0) {\n // setIsOpen(false);\n // }\n }, [\n highlightSelectedItem,\n itemCount,\n initialHighlightedIndex,\n selected,\n setHighlightedIndex,\n setIsOpen,\n ]);\n\n // const activeDescendant: string | undefined = selectionChanged\n // ? \"\"\n // : undefined;\n const mergedInputProps = {\n ...inputProps.inputProps,\n // \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n autoComplete: \"off\",\n onKeyDown: handleInputKeyDown,\n };\n\n return {\n focusVisible,\n highlightedIndex,\n isOpen,\n onOpenChange: handleOpenChange,\n inputProps: {\n ...inputProps,\n // \"aria-activedescendant\": activeDescendant,\n id: `${id}-input`,\n inputProps: mergedInputProps,\n onChange: handleInputChange,\n onSelect: handleInputSelect,\n role: \"combobox\",\n value,\n },\n listControlProps: {\n ...listControlProps,\n onBlur: handleInputBlur,\n onFocus: handleInputFocus,\n },\n listHandlers: {\n ...listHookListHandlers,\n onClick: handleListClick,\n },\n selected: selectedRef.current as SelectionType<Item, S>,\n };\n};\n", "import { Button, ButtonProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport type { CommitResponse } from \"@vuu-ui/vuu-table-types\";\nimport type {\n VuuColumnDataType,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ForwardedRef, forwardRef, SyntheticEvent, useCallback } from \"react\";\n\nconst classBase = \"vuuCycleStateButton\";\n\nexport interface CycleStateButtonProps extends ButtonProps {\n onCommit: (evt: SyntheticEvent, value: VuuRowDataItemType) => CommitResponse;\n values: string[];\n value: string;\n}\n\nconst getNextValue = (value: string, valueList: string[]) => {\n const index = valueList.indexOf(value.toUpperCase());\n if (index === valueList.length - 1) {\n return valueList[0];\n } else {\n return valueList[index + 1];\n }\n};\n\nexport const CycleStateButton = forwardRef(function CycleStateButton(\n {\n className,\n onCommit,\n value = \"\",\n values,\n ...buttonProps\n }: CycleStateButtonProps,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n) {\n const handleClick = useCallback(\n (evt: SyntheticEvent<HTMLButtonElement>) => {\n const nextValue = getNextValue(value, values);\n onCommit(evt, nextValue as VuuColumnDataType).then((response) => {\n if (response !== true) {\n console.error(response);\n }\n });\n },\n [onCommit, value, values]\n );\n\n return (\n <Button\n {...buttonProps}\n className={cx(\n classBase,\n className,\n `${classBase}-${value.toLowerCase()}`\n )}\n onClick={handleClick}\n ref={forwardedRef}\n >\n {value}\n </Button>\n );\n});\n", "import { useCallback, useMemo } from \"react\";\nimport { DateValue, today, getLocalTimeZone } from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { Calendar } from \"../calendar/Calendar\";\nimport { DatePickerInput } from \"./input/DatePickerInput\";\nimport { CalendarIconButton } from \"./internal/CalendarIconButton\";\nimport { DropdownBase } from \"../dropdown\";\nimport { useBaseDatePicker } from \"./useBaseDatePicker\";\nimport { useBaseDatePickerDropdown } from \"./useBaseDatePickerDropdown\";\nimport { BaseDatePickerDropdownProps, BaseDatePickerProps } from \"./types\";\n\nimport \"./DatePicker.css\";\n\nconst baseClass = \"vuuDatePicker\";\n\nexport const DatePicker = (props: BaseDatePickerProps<DateValue>) => {\n const { selectedDate, onSelectedDateChange, onBlur, className } = props;\n const { visibleMonth, handleVisibleMonthChange, handleOnBlur } =\n useBaseDatePicker({ variant: \"default\", selectedDate, onBlur });\n\n const handleInputChange = useCallback(\n (d: DateValue) => {\n onSelectedDateChange(d);\n handleVisibleMonthChange(d);\n },\n [onSelectedDateChange]\n );\n\n return (\n <div\n className={clsx(\"saltInput saltInput-primary\", baseClass, className)}\n onBlur={handleOnBlur}\n >\n <DatePickerInput value={selectedDate} onChange={handleInputChange} />\n <DatePickerDropdown\n visibleMonth={visibleMonth}\n onVisibleMonthChange={handleVisibleMonthChange}\n {...props}\n />\n </div>\n );\n};\n\nconst DatePickerDropdown = (props: BaseDatePickerDropdownProps<DateValue>) => {\n const {\n closeOnSelection,\n onSelectedDateChange,\n onVisibleMonthChange,\n className,\n ...rest\n } = props;\n\n const shouldCloseOnSelectionChange = useCallback(\n () => !!closeOnSelection,\n [closeOnSelection]\n );\n\n const {\n triggererRef,\n isOpen,\n handleOpenChange,\n handleVisibleMonthChange,\n handleDateSelection,\n } = useBaseDatePickerDropdown({\n onVisibleMonthChange,\n onSelectedDateChange,\n shouldCloseOnSelectionChange,\n });\n\n const defaultSelectedDate = useMemo(() => today(getLocalTimeZone()), []);\n\n return (\n <DropdownBase\n placement=\"below\"\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n className={className}\n >\n <CalendarIconButton ref={triggererRef} />\n <Calendar\n selectionVariant=\"default\"\n onVisibleMonthChange={handleVisibleMonthChange}\n onSelectedDateChange={handleDateSelection}\n defaultSelectedDate={defaultSelectedDate}\n className={`${baseClass}-calendar`}\n {...rest}\n />\n </DropdownBase>\n );\n};\n", "import React, { useCallback } from \"react\";\nimport { DateValue, CalendarDate } from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { BasePickerInputProps } from \"./types\";\n\nimport \"./DatePickerInput.css\";\n\nconst baseClass = \"vuuDatePickerInput\";\n\ntype Props = BasePickerInputProps<DateValue>;\n\nexport const DatePickerInput: React.FC<Props> = (props) => {\n const { value, onChange, className } = props;\n\n const onInputChange = useCallback<React.ChangeEventHandler<HTMLInputElement>>(\n (e) => {\n const v = e.target.value;\n if (v === \"\") return;\n else onChange(toCalendarDate(new Date(v)));\n },\n [onChange]\n );\n\n return (\n <input\n className={clsx(\"saltInput-input\", baseClass, className)}\n type=\"date\"\n value={value?.toString() ?? \"\"}\n onChange={onInputChange}\n aria-label=\"date-input\"\n max=\"9999-12-31\" // without this it shows expty space on the right\n />\n );\n};\n\nfunction toCalendarDate(d: Date): CalendarDate {\n return new CalendarDate(d.getFullYear(), d.getMonth() + 1, d.getDate());\n}\n", "import { Button } from \"@salt-ds/core\";\nimport { CalendarIcon } from \"@salt-ds/icons\";\nimport { ComponentPropsWithoutRef, ForwardedRef, forwardRef } from \"react\";\nimport clsx from \"clsx\";\n\nimport \"./CalendarIconButton.css\";\n\nconst baseClass = \"vuuDatePicker-calendarIconButton\";\n\nexport const CalendarIconButton = forwardRef(function CalendarIconButton(\n { className, ...rest }: ComponentPropsWithoutRef<typeof Button>,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n return (\n <Button\n className={clsx(baseClass, className)}\n variant={\"secondary\"}\n aria-label=\"calendar-icon-button\"\n ref={ref}\n {...rest}\n >\n <CalendarIcon />\n </Button>\n );\n});\n", "import { useCallback, useState } from \"react\";\nimport { BaseDatePickerProps } from \"./types\";\nimport { DateValue } from \"@internationalized/date\";\nimport { PickerSelectionType } from \"./types\";\nimport { RangeSelectionValueType } from \"../calendar\";\n\ntype InheritedProps<T extends PickerSelectionType> = Pick<\n BaseDatePickerProps<T>,\n \"onBlur\" | \"selectedDate\"\n>;\ntype Props =\n | ({ variant: \"range\" } & InheritedProps<RangeSelectionValueType>)\n | ({ variant: \"default\" } & InheritedProps<DateValue>);\n\nexport function useBaseDatePicker(props: Props) {\n const [visibleMonth, setVisibleMonth] = useState<DateValue | undefined>(\n props.variant === \"default\"\n ? props.selectedDate\n : props.selectedDate?.startDate\n );\n\n const handleOnBlur: React.FocusEventHandler<HTMLDivElement> = useCallback(\n (e) => {\n if (!e.currentTarget.contains(e.relatedTarget)) {\n props.onBlur?.();\n }\n },\n [props.onBlur]\n );\n\n return {\n handleOnBlur,\n visibleMonth,\n handleVisibleMonthChange: setVisibleMonth,\n };\n}\n", "import { useCallback, useRef, useState } from \"react\";\nimport { DateValue } from \"@internationalized/date\";\nimport { PickerSelectionType } from \"./types\";\nimport { BaseDatePickerDropdownProps } from \"./types\";\n\ntype Props<T extends PickerSelectionType> = Pick<\n BaseDatePickerDropdownProps<T>,\n \"onSelectedDateChange\" | \"onVisibleMonthChange\"\n> & {\n shouldCloseOnSelectionChange: (v: T) => boolean;\n};\n\nexport function useBaseDatePickerDropdown<T extends PickerSelectionType>({\n onVisibleMonthChange,\n onSelectedDateChange,\n shouldCloseOnSelectionChange,\n}: Props<T>) {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const triggererRef = useRef<HTMLButtonElement>(null);\n\n const handleDateSelection = useCallback(\n (_: React.SyntheticEvent, d: T) => {\n onSelectedDateChange(d);\n if (shouldCloseOnSelectionChange(d)) setIsOpen(false);\n triggererRef.current?.focus();\n },\n [onSelectedDateChange, shouldCloseOnSelectionChange]\n );\n\n const handleVisibleMonthChange = useCallback(\n (_: React.SyntheticEvent, d: DateValue) => {\n onVisibleMonthChange(d);\n triggererRef.current?.focus();\n },\n [onVisibleMonthChange]\n );\n\n return {\n isOpen,\n handleOpenChange: setIsOpen,\n triggererRef,\n handleVisibleMonthChange,\n handleDateSelection,\n };\n}\n", "import { useCallback, useMemo } from \"react\";\nimport { Calendar } from \"../calendar/Calendar\";\nimport { today, getLocalTimeZone } from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { DateRangePickerInput } from \"./input/DateRangePickerInput\";\nimport { BaseDatePickerDropdownProps, BaseDatePickerProps } from \"./types\";\nimport { RangeSelectionValueType } from \"../calendar\";\nimport { CalendarIconButton } from \"./internal/CalendarIconButton\";\nimport { DropdownBase } from \"../dropdown\";\nimport { useBaseDatePicker } from \"./useBaseDatePicker\";\nimport { useBaseDatePickerDropdown } from \"./useBaseDatePickerDropdown\";\n\nimport \"./DatePicker.css\";\n\nconst baseClass = \"vuuDatePicker\";\n\nexport const DateRangePicker = (\n props: BaseDatePickerProps<RangeSelectionValueType>\n) => {\n const { selectedDate, onSelectedDateChange, className, onBlur } = props;\n const { visibleMonth, handleVisibleMonthChange, handleOnBlur } =\n useBaseDatePicker({ variant: \"range\", selectedDate, onBlur });\n\n const handleInputChange = useCallback(\n (r: RangeSelectionValueType) => {\n onSelectedDateChange(r);\n handleVisibleMonthChange(r.endDate ?? r.startDate);\n },\n [onSelectedDateChange]\n );\n\n return (\n <div\n className={clsx(\"saltInput saltInput-primary\", baseClass, className)}\n onBlur={handleOnBlur}\n >\n <DateRangePickerInput value={selectedDate} onChange={handleInputChange} />\n <DateRangePickerDropdown\n {...props}\n visibleMonth={visibleMonth}\n onVisibleMonthChange={handleVisibleMonthChange}\n />\n </div>\n );\n};\n\nconst DateRangePickerDropdown = (\n props: BaseDatePickerDropdownProps<RangeSelectionValueType>\n) => {\n const {\n onVisibleMonthChange,\n onSelectedDateChange,\n closeOnSelection,\n className,\n ...rest\n } = props;\n\n const shouldCloseOnSelectionChange = useCallback(\n (r: RangeSelectionValueType) => !!(closeOnSelection && r.endDate),\n [closeOnSelection]\n );\n\n const {\n triggererRef,\n isOpen,\n handleOpenChange,\n handleVisibleMonthChange,\n handleDateSelection,\n } = useBaseDatePickerDropdown({\n onVisibleMonthChange,\n onSelectedDateChange,\n shouldCloseOnSelectionChange,\n });\n\n const defaultSelectedDate = useMemo(\n () => ({ startDate: today(getLocalTimeZone()) }),\n []\n );\n\n return (\n <DropdownBase\n placement=\"below\"\n isOpen={isOpen}\n className={className}\n onOpenChange={handleOpenChange}\n >\n <CalendarIconButton ref={triggererRef} />\n <Calendar\n selectionVariant=\"range\"\n onVisibleMonthChange={handleVisibleMonthChange}\n onSelectedDateChange={handleDateSelection}\n defaultSelectedDate={defaultSelectedDate}\n className={`${baseClass}-calendar`}\n {...rest}\n />\n </DropdownBase>\n );\n};\n", "import { useCallback } from \"react\";\nimport { DateValue } from \"@internationalized/date\";\nimport { clsx } from \"clsx\";\nimport { DatePickerInput } from \"./DatePickerInput\";\nimport { BasePickerInputProps } from \"./types\";\nimport { RangeSelectionValueType } from \"../../calendar\";\n\nimport \"./DateRangePickerInput.css\";\n\nconst baseClass = \"vuuDateRangePickerInput\";\n\ntype Props = BasePickerInputProps<RangeSelectionValueType>;\n\nexport const DateRangePickerInput: React.FC<Props> = (props) => {\n const { value, onChange, className } = props;\n\n const getHandleInputChange = useCallback(\n (k: keyof RangeSelectionValueType) => (d: DateValue) => {\n onChange({ ...value, [k]: d });\n },\n [value, onChange]\n );\n\n return (\n <div className={clsx(baseClass, className)}>\n <DatePickerInput\n value={value?.[\"startDate\"]}\n onChange={getHandleInputChange(\"startDate\")}\n />\n <span>\u2014</span>\n <DatePickerInput\n value={value?.[\"endDate\"]}\n onChange={getHandleInputChange(\"endDate\")}\n />\n </div>\n );\n};\n", "import { EditValidationRule } from \"@vuu-ui/vuu-table-types\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { getEditRuleValidator } from \"@vuu-ui/vuu-utils\";\n\nexport type ClientSideValidationChecker = (\n value?: VuuRowDataItemType\n) => string | false | undefined;\n\nexport const buildValidationChecker =\n (rules: EditValidationRule[]): ClientSideValidationChecker =>\n (value?: VuuRowDataItemType) =>\n applyRules(rules, value);\n\nfunction applyRules(\n rules: EditValidationRule[],\n value?: VuuRowDataItemType\n): string | false | undefined {\n let result: false | string | undefined = undefined;\n for (const rule of rules) {\n const editRuleValidator = getEditRuleValidator(rule.name);\n if (editRuleValidator) {\n const ruleResult = editRuleValidator(rule, value);\n switch (ruleResult) {\n case true:\n break;\n case false:\n if (result === undefined) {\n result = false;\n }\n break;\n default:\n if (result === undefined || result === false) {\n result = ruleResult;\n } else {\n result += `::${ruleResult}`;\n }\n }\n } else {\n throw Error(\n `editable-utils applyRules, no validator registered for rule '${rule.name}'`\n );\n }\n }\n\n return result;\n}\n", "import { DataItemCommitHandler } from \"@vuu-ui/vuu-table-types\";\nimport { useLayoutEffectSkipFirst } from \"@vuu-ui/vuu-utils\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { dispatchCustomEvent } from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEventHandler,\n FormEventHandler,\n KeyboardEvent,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport { ClientSideValidationChecker } from \"./editable-utils\";\n\nexport const WarnCommit = (): Promise<true> => {\n console.warn(\n \"onCommit handler has not been provided to InputCell cell renderer\"\n );\n return Promise.resolve(true);\n};\n\nexport interface EditableTextHookProps<\n T extends VuuRowDataItemType = VuuRowDataItemType\n> {\n clientSideEditValidationCheck?: ClientSideValidationChecker;\n initialValue?: T;\n onCommit: DataItemCommitHandler<T>;\n type?: \"string\" | \"number\" | \"boolean\";\n}\n\nexport const useEditableText = <T extends string | number = string>({\n clientSideEditValidationCheck,\n initialValue,\n onCommit,\n type,\n}: EditableTextHookProps<T>) => {\n const [message, setMessage] = useState<string | undefined>();\n const [value, setValue] = useState<T | undefined>(initialValue);\n const initialValueRef = useRef<T | undefined>(initialValue);\n const isDirtyRef = useRef(false);\n const hasCommittedRef = useRef(false);\n\n useLayoutEffectSkipFirst(() => {\n //TODO this isn't right, review the state we're using\n setValue(initialValue);\n }, [initialValue]);\n\n const commit = useCallback(\n (target: HTMLElement) => {\n if (isDirtyRef.current) {\n hasCommittedRef.current = true;\n const warningMessage = clientSideEditValidationCheck?.(value);\n if (warningMessage) {\n setMessage(warningMessage);\n } else {\n setMessage(undefined);\n console.log(`commit value ${value}`);\n onCommit(value as T).then((response) => {\n if (response === true) {\n isDirtyRef.current = false;\n dispatchCustomEvent(target, \"vuu-commit\");\n } else {\n setMessage(response);\n }\n });\n }\n } else {\n // why, if not dirty ?\n dispatchCustomEvent(target, \"vuu-commit\");\n hasCommittedRef.current = false;\n }\n },\n [clientSideEditValidationCheck, onCommit, value]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent<HTMLElement>) => {\n if (evt.key === \"Enter\") {\n commit(evt.target as HTMLElement);\n } else if (\n evt.key === \"ArrowRight\" ||\n evt.key === \"ArrowLeft\" ||\n evt.key === \"ArrowUp\" ||\n evt.key === \"ArrowDown\"\n ) {\n evt.stopPropagation();\n } else if (evt.key === \"Escape\") {\n if (isDirtyRef.current) {\n isDirtyRef.current = false;\n setMessage(undefined);\n setValue(initialValueRef.current);\n }\n }\n },\n [commit]\n );\n\n const handleBlur = useCallback<FocusEventHandler<HTMLElement>>(\n (evt) => {\n if (isDirtyRef.current) {\n commit(evt.target as HTMLElement);\n }\n },\n [commit]\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n let typedValue: VuuRowDataItemType = (evt.target as HTMLInputElement)\n .value;\n if (type === \"number\" && !isNaN(parseFloat(typedValue))) {\n typedValue = parseFloat(typedValue);\n }\n isDirtyRef.current = value !== initialValueRef.current;\n setValue(typedValue as T);\n if (hasCommittedRef.current && value !== undefined) {\n const warningMessage = clientSideEditValidationCheck?.(value);\n if (warningMessage !== message && warningMessage !== false) {\n setMessage(warningMessage);\n }\n }\n },\n [clientSideEditValidationCheck, message, type, value]\n );\n\n return {\n inputProps: {\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n },\n onChange: handleChange,\n value: value ?? \"\",\n warningMessage: message,\n };\n};\n", "import cx from \"clsx\";\nimport {\n ChangeEvent,\n KeyboardEvent,\n useCallback,\n useLayoutEffect,\n forwardRef,\n ForwardedRef,\n ReactElement,\n useRef,\n HTMLAttributes,\n} from \"react\";\nimport { Input, useControlled } from \"@salt-ds/core\";\n\nimport \"./EditableLabel.css\";\n\nconst classBase = \"vuuEditableLabel\";\n\nexport interface EditableLabelProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n className?: string;\n defaultEditing?: boolean;\n defaultValue?: string;\n editing?: boolean;\n onEnterEditMode: () => void;\n onChange?: (value: string) => void;\n onExitEditMode: (\n originalLabel: string | undefined,\n editedLabel: string | undefined,\n allowDeactivation?: boolean,\n editCancelled?: boolean\n ) => void;\n defaultIsEditing?: boolean;\n value?: string;\n}\n\nexport const EditableLabel = forwardRef(function EditableLabel(\n {\n className: classNameProp,\n defaultEditing,\n defaultValue,\n editing: editingProp,\n onChange,\n onEnterEditMode,\n onExitEditMode,\n value: valueProp,\n ...restProps\n }: EditableLabelProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n): ReactElement<EditableLabelProps> {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const editingRef = useRef<boolean>(false);\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? \"\",\n name: \"EditableLabel\",\n state: \"value\",\n });\n\n const [editing, _setEditing] = useControlled({\n controlled: editingProp,\n default: defaultEditing ?? false,\n name: \"EditableLabel\",\n state: \"editing\",\n });\n\n const setEditing = useCallback(\n (value: boolean) => {\n _setEditing((editingRef.current = value));\n },\n [_setEditing]\n );\n\n const initialValue = useRef(value);\n\n useLayoutEffect(() => {\n if (editing) {\n if (inputRef.current !== null) {\n inputRef.current.select();\n inputRef.current.focus();\n }\n }\n }, [editing, inputRef]);\n\n const enterEditMode = useCallback(() => {\n setEditing(true);\n // ignoreBlur.current = false;\n onEnterEditMode && onEnterEditMode();\n }, [onEnterEditMode, setEditing]);\n\n const exitEditMode = ({\n cancelEdit = false,\n allowDeactivation = false,\n } = {}) => {\n setEditing(false);\n const originalValue = initialValue.current;\n if (originalValue !== value) {\n if (cancelEdit) {\n setValue(originalValue);\n } else {\n initialValue.current = value;\n }\n }\n onExitEditMode &&\n onExitEditMode(originalValue, value, allowDeactivation, cancelEdit);\n };\n\n const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n const { value } = evt.target;\n setValue(value);\n onChange && onChange(value);\n };\n\n const handleDoubleClick = () => {\n enterEditMode();\n };\n\n // We need the ref here as the blur fires before setEditing has taken effect,\n // so we get a double call to exitEditMode if edit is cancelled.\n const handleBlur = () => {\n if (editingRef.current) {\n exitEditMode({ allowDeactivation: true });\n }\n };\n\n const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n if (editing && evt.key === \"Enter\") {\n evt.stopPropagation();\n // we are likely to lose focus as a consequence of user response\n // to exitEdit transition, don't want it to trigger another\n //shouldn't we call setEditing here in case we are in uncontrolled mode ?\n exitEditMode();\n } else if (evt.key === \"ArrowRight\" || evt.key === \"ArrowLeft\") {\n evt.stopPropagation();\n } else if (evt.key === \"Escape\") {\n exitEditMode({ cancelEdit: true });\n }\n };\n\n const className = cx(classBase, classNameProp, {\n [`${classBase}-editing`]: editing,\n });\n return (\n <div\n {...restProps}\n className={className}\n onDoubleClick={handleDoubleClick}\n data-text={value}\n ref={forwardedRef}\n >\n {editing ? (\n <Input\n inputProps={{ className: `${classBase}-input`, spellCheck: false }}\n value={value}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n inputRef={inputRef}\n style={{ padding: 0 }}\n textAlign=\"left\"\n variant=\"secondary\"\n />\n ) : (\n <span className={`${classBase}-label`}>{value}</span>\n )}\n </div>\n );\n});\n", "import cx from \"clsx\";\nimport { ForwardedRef, forwardRef } from \"react\";\nimport { VuuInput, VuuInputProps } from \"../vuu-input\";\n\nimport \"./ExpandoInput.css\";\n\nconst classBase = \"vuuExpandoInput\";\n\nconst noop = () => undefined;\n\nexport interface ExpandoInputProps extends Omit<VuuInputProps, \"onCommit\"> {\n onCommit?: VuuInputProps[\"onCommit\"];\n}\n\nexport const ExpandoInput = forwardRef(function ExpandoInput(\n {\n className: classNameProp,\n errorMessage,\n value,\n inputProps,\n onCommit = noop,\n ...props\n }: ExpandoInputProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n return (\n <div\n className={cx(classBase, classNameProp, {\n [`${classBase}-error`]: errorMessage,\n })}\n data-text={value}\n >\n <VuuInput\n {...props}\n errorMessage={errorMessage}\n inputProps={{ ...inputProps, className: `${classBase}-input` }}\n onCommit={onCommit}\n ref={forwardedRef}\n style={{ padding: 0 }}\n textAlign=\"left\"\n value={value}\n variant=\"secondary\"\n />\n </div>\n );\n});\n", "import { Tooltip, useTooltip } from \"@vuu-ui/vuu-popups\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { isValidNumber, useId } from \"@vuu-ui/vuu-utils\";\nimport { Input, InputProps } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n FocusEventHandler,\n ForwardedRef,\n forwardRef,\n KeyboardEventHandler,\n ReactElement,\n SyntheticEvent,\n useCallback,\n} from \"react\";\n\nimport \"./VuuInput.css\";\n\nconst classBase = \"vuuInput\";\n\nconst constantInputProps = {\n autoComplete: \"off\",\n};\n\nexport type Commithandler<T extends VuuRowDataItemType = string> = (\n evt: SyntheticEvent<HTMLInputElement>,\n value: T\n) => void;\nexport interface VuuInputProps<T extends VuuRowDataItemType = string>\n extends InputProps {\n errorMessage?: string;\n onCommit: Commithandler<T>;\n type?: T;\n}\n\n/**\n * A variant of Salt Input that provides a commit callback prop,\n * TODO along with cancel behaviour ?\n */\nexport const VuuInput = forwardRef(function VuuInput<\n T extends VuuRowDataItemType = string\n>(\n {\n className,\n errorMessage,\n id: idProp,\n onCommit,\n onKeyDown,\n type,\n ...props\n }: VuuInputProps<T>,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n const { anchorProps, tooltipProps } = useTooltip({\n id,\n tooltipContent: errorMessage,\n });\n\n const commitValue = useCallback<Commithandler<string>>(\n (evt, value) => {\n if (type === \"number\") {\n const numericValue = parseFloat(value);\n if (isValidNumber(numericValue)) {\n onCommit(evt, numericValue as T);\n } else {\n //TODO add validation logic\n throw Error(\"Invalid value\");\n }\n } else if (type === \"boolean\") {\n onCommit(evt, Boolean(value) as T);\n } else {\n onCommit(evt, value as T);\n }\n },\n [onCommit, type]\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler<HTMLInputElement>>(\n (evt) => {\n if (evt.key === \"Enter\") {\n evt.preventDefault();\n evt.stopPropagation();\n const { value } = evt.target as HTMLInputElement;\n commitValue(evt, value);\n }\n onKeyDown?.(evt);\n },\n [commitValue, onKeyDown]\n );\n\n const handleBlur = useCallback<FocusEventHandler<HTMLInputElement>>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n commitValue(evt, value);\n },\n [commitValue]\n );\n\n const endAdornment = errorMessage ? (\n <span\n {...anchorProps}\n className={`${classBase}-errorIcon`}\n data-icon=\"error\"\n />\n ) : undefined;\n\n return (\n <>\n <Input\n {...props}\n endAdornment={endAdornment}\n id={id}\n inputProps={{\n ...constantInputProps,\n ...props.inputProps,\n }}\n className={cx(classBase, className, {\n [`${classBase}-errror`]: errorMessage,\n })}\n onBlur={handleBlur}\n ref={forwardedRef}\n onKeyDown={handleKeyDown}\n />\n {tooltipProps ? <Tooltip {...tooltipProps} status=\"error\" /> : null}\n </>\n );\n}) as <T extends VuuRowDataItemType = string>(\n props: VuuInputProps<T> & {\n ref?: ForwardedRef<HTMLDivElement>;\n }\n) => ReactElement<VuuInputProps<T>>;\n", "import { CheckboxIcon } from \"../list/CheckboxIcon\";\n\nimport \"./Checkbox.css\";\n\ntype CheckboxProps = {\n onToggle: () => void;\n className?: string;\n checked: boolean;\n label: string;\n};\n\nexport const Checkbox = (props: CheckboxProps): JSX.Element => {\n const { onToggle, checked, label } = props;\n\n return (\n <div\n className=\"vuuCheckbox\"\n onClick={onToggle}\n onKeyUp={(e) => e.key === \" \" && onToggle()}\n >\n <CheckboxIcon tabIndex={0} checked={checked} />\n {label}\n </div>\n );\n};\n", "import { RadioIcon } from \"@vuu-ui/vuu-ui-controls\";\n\nimport \"./RadioButton.css\";\n\ntype RadioButtonProps = {\n onClick: () => void;\n checked: boolean;\n label: string;\n groupName: string;\n};\n\nexport const RadioButton = (props: RadioButtonProps): JSX.Element => {\n const { onClick, checked, label, groupName } = props;\n\n return (\n <div className=\"vuuRadioButton\" onClick={onClick}>\n <div className=\"radio\">\n <input type=\"radio\" name={groupName} />\n <RadioIcon checked={checked} />\n </div>\n {label}\n </div>\n );\n};\n", "import { DataSourceRow, TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { Table, TableProps, TableRowSelectHandler } from \"@vuu-ui/vuu-table\";\nimport { ColumnMap, useId } from \"@vuu-ui/vuu-utils\";\nimport { Input } from \"@salt-ds/core\";\nimport { ForwardedRef, forwardRef, HTMLAttributes, useMemo } from \"react\";\nimport { DropdownBase, OpenChangeHandler } from \"../dropdown\";\nimport { SearchCell } from \"./SearchCell\";\nimport { useInstrumentPicker } from \"./useInstrumentPicker\";\n\nimport \"./InstrumentPicker.css\";\n\nconst classBase = \"vuuInstrumentPicker\";\n\nif (typeof SearchCell !== \"function\") {\n console.warn(\"Instrument Picker: SearchCell module not loaded \");\n}\n\nexport interface InstrumentPickerProps\n extends Omit<HTMLAttributes<HTMLElement>, \"onSelect\"> {\n TableProps: Pick<TableProps, \"config\" | \"dataSource\">;\n columnMap: ColumnMap;\n disabled?: boolean;\n /**\n * Used to form the display value to render in input following selection. If\n * not provided, default will be the values from rendered columns.\n *\n * @param row DataSourceRow\n * @returns string\n */\n itemToString?: (row: DataSourceRow) => string;\n onClose?: () => void;\n onOpenChange?: OpenChangeHandler;\n onSelect: TableRowSelectHandler;\n schema: TableSchema;\n searchColumns: string[];\n width?: number;\n}\n\nexport const InstrumentPicker = forwardRef(function InstrumentPicker(\n {\n TableProps: { dataSource, ...TableProps },\n className,\n columnMap,\n disabled,\n id: idProp,\n itemToString,\n onOpenChange: onOpenChangeProp,\n onSelect,\n schema,\n searchColumns,\n width,\n ...htmlAttributes\n }: InstrumentPickerProps,\n forwardedRef: ForwardedRef<HTMLDivElement>\n) {\n const id = useId(idProp);\n\n const {\n highlightedIndex,\n inputProps,\n isOpen,\n onOpenChange,\n tableHandlers,\n tableRef,\n value,\n } = useInstrumentPicker({\n columnMap,\n columns: TableProps.config.columns,\n dataSource,\n itemToString,\n onOpenChange: onOpenChangeProp,\n onSelect,\n searchColumns,\n });\n\n const endAdornment = useMemo(() => <span data-icon=\"chevron-down\" />, []);\n\n const tableProps = {\n ...TableProps,\n config: {\n ...TableProps.config,\n zebraStripes: false,\n },\n };\n\n return (\n <DropdownBase\n {...htmlAttributes}\n fullWidth\n id={id}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n openOnFocus\n placement=\"below-full-width\"\n ref={forwardedRef}\n width={width}\n >\n <Input\n {...inputProps}\n disabled={disabled}\n endAdornment={endAdornment}\n value={value}\n />\n\n <Table\n rowHeight={25}\n renderBufferSize={100}\n {...tableProps}\n {...tableHandlers}\n className={`${classBase}-list`}\n height={200}\n highlightedIndex={highlightedIndex}\n dataSource={dataSource}\n navigationStyle=\"row\"\n ref={tableRef}\n showColumnHeaders={false}\n />\n </DropdownBase>\n );\n});\n", "import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\n\nimport \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n", "import { DataSource, DataSourceRow } from \"@vuu-ui/vuu-data-types\";\nimport { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport {\n TableRowSelectHandler,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport { ChangeEvent, useCallback, useMemo, useState } from \"react\";\nimport { useControlled } from \"../common-hooks\";\nimport { OpenChangeHandler } from \"../dropdown\";\nimport { InstrumentPickerProps } from \"./InstrumentPicker\";\n\nexport interface InstrumentPickerHookProps\n extends Pick<\n InstrumentPickerProps,\n \"columnMap\" | \"itemToString\" | \"onOpenChange\" | \"onSelect\" | \"searchColumns\"\n > {\n columns: ColumnDescriptor[];\n dataSource: DataSource;\n defaultIsOpen?: boolean;\n isOpen?: boolean;\n}\n\nconst defaultItemToString =\n (columns: ColumnDescriptor[], columnMap: ColumnMap) =>\n (row: DataSourceRow) => {\n return columns.map(({ name }) => row[columnMap[name]]).join(\" \");\n };\n\nexport const useInstrumentPicker = ({\n columnMap,\n columns,\n dataSource,\n defaultIsOpen,\n isOpen: isOpenProp,\n itemToString = defaultItemToString(columns, columnMap),\n onOpenChange,\n onSelect,\n searchColumns,\n}: InstrumentPickerHookProps) => {\n const [value, setValue] = useState(\"\");\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const { highlightedIndexRef, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource.size);\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns]\n );\n\n const handleOpenChange = useCallback<OpenChangeHandler>(\n (open, closeReason) => {\n setIsOpen(open);\n onOpenChange?.(open, closeReason);\n },\n [onOpenChange, setIsOpen]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const { value } = evt.target;\n setValue(value);\n\n if (value && value.trim().length) {\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n dataSource.filter = {\n filter,\n };\n } else {\n dataSource.filter = {\n filter: \"\",\n };\n }\n\n setIsOpen(true);\n },\n [baseFilterPattern, dataSource, setIsOpen]\n );\n\n const handleSelectRow = useCallback<TableRowSelectHandler>(\n (row) => {\n const value = itemToString(row);\n setValue(value);\n onSelect(row);\n handleOpenChange?.(false, \"select\");\n },\n [handleOpenChange, itemToString, onSelect]\n );\n\n const inputProps = {\n inputProps: {\n autoComplete: \"off\",\n onKeyDown,\n },\n onChange: handleInputChange,\n };\n const tableHandlers = {\n onSelect: handleSelectRow,\n };\n\n return {\n highlightedIndex: highlightedIndexRef.current,\n inputProps,\n isOpen,\n onOpenChange: handleOpenChange,\n tableHandlers,\n tableRef,\n value,\n };\n};\n", "import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { TableConfig } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-layout\";\n\nimport {\n Table,\n TableProps,\n useControlledTableNavigation,\n} from \"@vuu-ui/vuu-table\";\nimport { Input } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { HTMLAttributes, RefCallback, useCallback } from \"react\";\nimport { SearchCell } from \"./SearchCell\";\n\nimport \"./InstrumentSearch.css\";\nimport { useInstrumentSearch } from \"./useInstrumentSearch\";\n\nconst classBase = \"vuuInstrumentSearch\";\n\nif (typeof SearchCell !== \"function\") {\n console.warn(\"Instrument Search: SearchCell module not loaded \");\n}\n\nconst defaultTableConfig: TableConfig = {\n columns: [\n { name: \"bbg\", hidden: true },\n {\n name: \"description\",\n width: 200,\n type: {\n name: \"string\",\n renderer: {\n name: \"search-cell\",\n },\n },\n },\n ],\n rowSeparators: true,\n};\n\nexport interface InstrumentSearchProps extends HTMLAttributes<HTMLDivElement> {\n TableProps?: Partial<TableProps>;\n autoFocus?: boolean;\n dataSource: DataSource;\n placeHolder?: string;\n searchColumns?: string[];\n}\n\nconst searchIcon = <span data-icon=\"search\" />;\n\nexport const InstrumentSearch = ({\n TableProps,\n autoFocus = false,\n className,\n dataSource: dataSourceProp,\n placeHolder,\n searchColumns,\n ...htmlAttributes\n}: InstrumentSearchProps) => {\n const { dataSource, onChange, searchState } = useInstrumentSearch({\n dataSource: dataSourceProp,\n searchColumns,\n });\n\n const { highlightedIndexRef, onHighlight, onKeyDown, tableRef } =\n useControlledTableNavigation(-1, dataSource?.size ?? 0);\n\n const searchCallbackRef = useCallback<RefCallback<HTMLElement>>((el) => {\n setTimeout(() => {\n el?.querySelector(\"input\")?.focus();\n }, 100);\n }, []);\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className)}>\n <div className={`${classBase}-inputField`}>\n <Input\n inputProps={{ onKeyDown }}\n endAdornment={searchIcon}\n placeholder={placeHolder}\n ref={autoFocus ? searchCallbackRef : null}\n value={searchState.searchText}\n onChange={onChange}\n />\n </div>\n\n {dataSource ? (\n <Table\n disableFocus\n id=\"instrument-search\"\n rowHeight={25}\n config={defaultTableConfig}\n highlightedIndex={highlightedIndexRef.current}\n renderBufferSize={100}\n {...TableProps}\n className={`${classBase}-list`}\n dataSource={dataSource}\n navigationStyle=\"row\"\n onHighlight={onHighlight}\n ref={tableRef}\n showColumnHeaders={false}\n />\n ) : null}\n </div>\n );\n};\n\nregisterComponent?.(\"InstrumentSearch\", InstrumentSearch, \"view\");\n", "import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\n\nimport \"./SearchCell.css\";\n\nconst classBase = \"vuuSearchCell\";\n\n// export to avoid tree shaking, component is not consumed directly\nexport const SearchCell = ({\n column,\n columnMap,\n row,\n}: TableCellRendererProps) => {\n //TODO what about click handling\n\n const key = columnMap[column.name];\n const value = row[key];\n\n return (\n <div className={classBase} tabIndex={-1}>\n <span data-icon=\"draggable\" />\n {value}\n </div>\n );\n};\n\nregisterComponent(\"search-cell\", SearchCell, \"cell-renderer\", {\n serverDataType: \"private\",\n});\n", "import { FormEventHandler, useCallback, useMemo, useState } from \"react\";\nimport { InstrumentSearchProps } from \"./InstrumentSearch\";\n\nexport interface InstrumentSearchHookProps\n extends Pick<InstrumentSearchProps, \"dataSource\" | \"searchColumns\"> {\n label?: string;\n}\n\nexport const useInstrumentSearch = ({\n dataSource,\n searchColumns = [\"description\"],\n}: InstrumentSearchHookProps) => {\n const [searchState, setSearchState] = useState<{\n searchText: string;\n filter: string;\n }>({ searchText: \"\", filter: \"\" });\n\n const baseFilterPattern = useMemo(\n // TODO make this contains once server supports it\n () => searchColumns.map((col) => `${col} starts \"__VALUE__\"`).join(\" or \"),\n [searchColumns]\n );\n\n const handleChange = useCallback<FormEventHandler>(\n (evt) => {\n const { value } = evt.target as HTMLInputElement;\n const filter = baseFilterPattern.replaceAll(\"__VALUE__\", value);\n setSearchState({\n searchText: value,\n filter,\n });\n if (dataSource) {\n dataSource.filter = {\n filter,\n };\n }\n },\n [baseFilterPattern, dataSource]\n );\n\n return {\n dataSource,\n onChange: handleChange,\n searchState,\n };\n};\n", "import {\n getMovingValueDirection,\n isValidNumber,\n numericFormatter,\n valueChangeDirection,\n} from \"@vuu-ui/vuu-utils\";\nimport { HTMLAttributes, memo, useMemo, useRef } from \"react\";\nimport cx from \"clsx\";\n\nconst classBase = \"vuuPriceTicker\";\n\nimport \"./PriceTicker.css\";\n\nconst getValueFormatter = (decimals: number) =>\n numericFormatter({\n type: {\n name: \"number\",\n formatting: {\n decimals,\n zeroPad: true,\n },\n },\n });\n\ntype State = [number | undefined, valueChangeDirection | undefined];\nconst INITIAL_VALUE: State = [undefined, undefined];\n\nexport interface PriceTickerProps extends HTMLAttributes<HTMLDivElement> {\n decimals?: number;\n price?: number;\n showArrow?: boolean;\n}\n\nexport const PriceTicker = memo(\n ({\n className,\n decimals = 2,\n price,\n showArrow,\n ...htmlAttributes\n }: PriceTickerProps) => {\n const ref = useRef<State>(INITIAL_VALUE);\n const [prevValue, prevDirection] = ref.current;\n const formatNumber = useMemo(() => getValueFormatter(decimals), [decimals]);\n\n const direction = isValidNumber(prevValue)\n ? getMovingValueDirection(price, prevDirection, prevValue, decimals)\n : \"\";\n\n ref.current = [price, direction];\n\n return (\n <div {...htmlAttributes} className={cx(classBase, className, direction)}>\n {formatNumber(price)}\n {showArrow ? <span data-icon=\"price-arrow\" /> : null}\n </div>\n );\n }\n);\nPriceTicker.displayName = \"PriceTicker\";\n", "import { asReactElements, OverflowContainer } from \"@vuu-ui/vuu-layout\";\nimport { useId } from \"@vuu-ui/vuu-utils\";\nimport { Button } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport React, { useMemo, useRef } from \"react\";\nimport { TabProps, TabstripProps } from \"./TabsTypes\";\nimport { useTabstrip } from \"./useTabstrip\";\n\nimport \"./Tabstrip.css\";\n\nconst classBase = \"vuuTabstrip\";\n\nexport const Tabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowAddTab,\n allowCloseTab,\n allowDragDrop = false,\n allowRenameTab = false,\n animateSelectionThumb = false,\n children,\n className: classNameProp,\n id: idProp,\n keyBoardActivation = \"manual\",\n location,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation = \"horizontal\",\n showTabMenuButton,\n style: styleProp,\n tabClassName,\n ...htmlAttributes\n}: TabstripProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const {\n activeTabIndex,\n focusVisible,\n containerStyle,\n draggedItemIndex,\n onClickAddTab,\n tabProps,\n ...tabstripHook\n } = useTabstrip({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef: rootRef,\n keyBoardActivation,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n });\n const id = useId(idProp);\n const className = cx(classBase, `${classBase}-${orientation}`, classNameProp);\n const style =\n styleProp || containerStyle\n ? {\n ...styleProp,\n ...containerStyle,\n }\n : undefined;\n\n const tabs = useMemo(\n () =>\n asReactElements(children)\n .map((child, index) => {\n const {\n id: tabId = `${id}-tab-${index}`,\n className,\n closeable = allowCloseTab,\n editable = allowRenameTab,\n location: tabLocation,\n showMenuButton = showTabMenuButton,\n } = child.props;\n const selected = index === activeTabIndex;\n return React.cloneElement(child, {\n ...tabProps,\n ...tabstripHook.navigationProps,\n className: cx(className, tabClassName),\n closeable,\n \"data-overflow-priority\": selected ? \"1\" : undefined,\n dragging: draggedItemIndex === index,\n editable,\n focusVisible: focusVisible === index,\n id: tabId,\n index,\n key: index,\n location: cx(location, tabLocation),\n selected,\n showMenuButton,\n tabIndex: selected ? 0 : -1,\n } as Partial<TabProps>);\n })\n .concat(\n allowAddTab ? (\n <Button\n {...tabstripHook.navigationProps}\n aria-label=\"Create Tab\"\n className={`${classBase}-addTabButton`}\n data-icon=\"add\"\n data-overflow-priority=\"1\"\n key=\"addButton\"\n onClick={onClickAddTab}\n variant=\"secondary\"\n tabIndex={-1}\n />\n ) : (\n []\n )\n ),\n [\n children,\n allowAddTab,\n tabstripHook.navigationProps,\n onClickAddTab,\n id,\n allowCloseTab,\n allowRenameTab,\n showTabMenuButton,\n activeTabIndex,\n tabProps,\n tabClassName,\n draggedItemIndex,\n focusVisible,\n location,\n ]\n );\n\n return (\n <>\n <OverflowContainer\n {...htmlAttributes}\n {...tabstripHook.containerProps}\n className={className}\n height={29}\n id={id}\n orientation={orientation}\n overflowIcon=\"more-horiz\"\n ref={rootRef}\n style={style}\n role=\"tablist\"\n >\n {tabs}\n </OverflowContainer>\n {tabstripHook.draggable}\n </>\n );\n};\n", "import type { MenuActionHandler } from \"@vuu-ui/vuu-data-types\";\nimport type { OverflowItem } from \"@vuu-ui/vuu-layout\";\nimport { dispatchMouseEvent, orientationType } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n RefObject,\n useCallback,\n useRef,\n} from \"react\";\nimport { useDragDrop as useDragDrop } from \"../drag-drop\";\nimport { isTabMenuOptions } from \"./TabMenuOptions\";\nimport { getIndexOfSelectedTab } from \"./tabstrip-dom-utils\";\nimport { useAnimatedSelectionThumb } from \"./useAnimatedSelectionThumb\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { useSelection } from \"./useSelection\";\n\nexport type ExitEditModeHandler = (\n originalValue: string,\n editedValue: string,\n allowDeactivation: boolean,\n tabIndex: number\n) => void;\n\nexport interface TabstripHookProps {\n activeTabIndex: number;\n allowDragDrop: boolean;\n animateSelectionThumb: boolean;\n containerRef: RefObject<HTMLElement>;\n onActiveChange?: (tabIndex: number) => void;\n onAddTab?: () => void;\n onCloseTab?: (tabIndex: number, newActiveTabIndex: number) => void;\n onExitEditMode?: ExitEditModeHandler;\n onMoveTab?: (fromIndex: number, toIndex: number) => void;\n orientation: orientationType;\n keyBoardActivation?: \"manual\" | \"automatic\";\n}\n\nconst editKeys = new Set([\"Enter\", \" \"]);\nconst isEditKey = (key: string) => editKeys.has(key);\n\nconst getElementWithIndex = (container: HTMLElement | null, index: number) => {\n if (container) {\n return container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement;\n } else {\n return null;\n }\n};\n\nexport const useTabstrip = ({\n activeTabIndex: activeTabIndexProp,\n allowDragDrop,\n animateSelectionThumb,\n containerRef,\n onActiveChange,\n onAddTab,\n onCloseTab,\n onExitEditMode,\n onMoveTab,\n orientation,\n keyBoardActivation,\n}: TabstripHookProps) => {\n const lastSelection = useRef(activeTabIndexProp);\n\n const {\n focusTab: keyboardHookFocusTab,\n highlightedIdx,\n onClick: keyboardHookHandleClick,\n onKeyDown: keyboardHookHandleKeyDown,\n setHighlightedIdx: keyboardHookSetHighlightedIndex,\n ...keyboardHook\n } = useKeyboardNavigation({\n containerRef,\n keyBoardActivation,\n orientation,\n selectedIndex: lastSelection.current,\n });\n\n const {\n activateTab: selectionHookActivateTab,\n onClick: selectionHookHandleClick,\n onKeyDown: selectionHookHandleKeyDown,\n selected: selectionHookSelected,\n } = useSelection({\n highlightedIdx,\n onSelectionChange: onActiveChange,\n selected: activeTabIndexProp,\n });\n // We need this on reEntry for navigation hook to handle focus and for dragDropHook\n // to re-apply selection after drag drop. For some reason the value is stale if we\n // directly use selectionHookSelected within the drag, even though all dependencies\n //appear to be correctly declared.\n lastSelection.current = selectionHookSelected;\n\n const { containerStyle, resumeAnimation, suspendAnimation } =\n useAnimatedSelectionThumb(\n containerRef,\n animateSelectionThumb ? selectionHookSelected : -1,\n orientation\n );\n\n const handleDrop = useCallback(\n (fromIndex: number, toIndex: number) => {\n const { current: selected } = lastSelection;\n console.log(\n `useTabstrip handleDrop ${fromIndex} - ${toIndex} ${selected}`\n );\n onMoveTab?.(fromIndex, toIndex);\n let nextSelectedTab = -1;\n if (toIndex !== -1) {\n if (selected === fromIndex) {\n nextSelectedTab = toIndex;\n } else if (fromIndex > selected && toIndex <= selected) {\n nextSelectedTab = selected + 1;\n } else if (fromIndex < selected && toIndex >= selected) {\n nextSelectedTab = selected - 1;\n }\n if (nextSelectedTab !== -1) {\n suspendAnimation();\n selectionHookActivateTab(nextSelectedTab);\n requestAnimationFrame(resumeAnimation);\n }\n keyboardHookFocusTab(toIndex, false, false, 350);\n }\n },\n [\n keyboardHookFocusTab,\n onMoveTab,\n resumeAnimation,\n selectionHookActivateTab,\n suspendAnimation,\n ]\n );\n\n const { onMouseDown: dragDropHookHandleMouseDown, ...dragDropHook } =\n useDragDrop({\n allowDragDrop,\n containerRef,\n // this is for useDragDropNext\n draggableClassName: `tabstrip-${orientation}`,\n // extendedDropZone: overflowedItems.length > 0,\n onDrop: handleDrop,\n orientation: \"horizontal\",\n itemQuery: \".vuuOverflowContainer-item\",\n });\n\n const handleExitEditMode = useCallback<ExitEditModeHandler>(\n (originalValue, editedValue, allowDeactivation, tabIndex) => {\n console.log(\n `handleExitEditMode ${originalValue} ${editedValue} ${allowDeactivation} ${tabIndex}`\n );\n onExitEditMode?.(originalValue, editedValue, allowDeactivation, tabIndex);\n if (!allowDeactivation) {\n // this indicates that Enter or Esc key has been pressed, hence we\n // want to make sure keyboardHook treats this as a keyboard event\n // (and applies focusVisible). The last parameter here does that.\n keyboardHookFocusTab(tabIndex, false, true);\n }\n },\n [keyboardHookFocusTab, onExitEditMode]\n );\n\n const handleClick = useCallback(\n (evt: ReactMouseEvent<HTMLElement>, tabIndex: number) => {\n // releasing the mouse at end of drag will trigger a click, ignore those\n // if (!dragDropHook.isDragging) {\n keyboardHookHandleClick(evt, tabIndex);\n selectionHookHandleClick(evt, tabIndex);\n // }\n },\n // [dragDropHook.isDragging, keyboardHook, selectionHook]\n [keyboardHookHandleClick, selectionHookHandleClick]\n );\n\n const getEditableLabel = useCallback(\n (tabIndex = highlightedIdx) => {\n const targetEl = getElementWithIndex(containerRef.current, tabIndex);\n if (targetEl) {\n return targetEl.querySelector(\".vuuEditableLabel\") as HTMLElement;\n }\n },\n [containerRef, highlightedIdx]\n );\n\n const tabInEditMode = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabel = getEditableLabel(tabIndex);\n if (editableLabel) {\n return editableLabel.classList.contains(\"vuuEditableLabel-editing\");\n }\n return false;\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const editTab = useCallback(\n (tabIndex = highlightedIdx) => {\n const editableLabelEl = getEditableLabel(tabIndex);\n if (editableLabelEl) {\n dispatchMouseEvent(editableLabelEl, \"dblclick\");\n }\n },\n [getEditableLabel, highlightedIdx]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n keyboardHookHandleKeyDown(evt);\n if (!evt.defaultPrevented) {\n selectionHookHandleKeyDown(evt);\n }\n if (!evt.defaultPrevented && isEditKey(evt.key)) {\n editTab();\n }\n },\n [editTab, keyboardHookHandleKeyDown, selectionHookHandleKeyDown]\n );\n\n const handleCloseTabFromMenu = useCallback(\n (tabIndex: number) => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n const newActiveTabIndex =\n selectedTabIndex > tabIndex\n ? selectedTabIndex - 1\n : selectedTabIndex === tabIndex\n ? 0\n : selectedTabIndex;\n suspendAnimation();\n // containerRef.current?.classList.add(\"vuuTabThumb-noTransition\");\n onCloseTab?.(tabIndex, newActiveTabIndex);\n setTimeout(() => {\n resumeAnimation();\n // containerRef.current?.classList.remove(\"vuuTabThumb-noTransition\");\n }, 200);\n return true;\n },\n [containerRef, onCloseTab, resumeAnimation, suspendAnimation]\n );\n\n const handleRenameTabFromMenu = useCallback(\n (tabIndex: number) => {\n editTab(tabIndex);\n return true;\n },\n [editTab]\n );\n\n const handleTabMenuAction = useCallback<MenuActionHandler>(\n (action) => {\n if (isTabMenuOptions(action.options)) {\n switch (action.menuId) {\n case \"close-tab\":\n return handleCloseTabFromMenu(action.options.tabIndex);\n case \"rename-tab\":\n return handleRenameTabFromMenu(action.options.tabIndex);\n default:\n console.log(`tab menu action ${action.menuId}`);\n }\n }\n return false;\n },\n [handleCloseTabFromMenu, handleRenameTabFromMenu]\n );\n\n //TODO( why do we sometimes see this fired twice eg following rename)\n const handleTabMenuClose = useCallback(() => {\n if (!tabInEditMode()) {\n keyboardHookFocusTab(highlightedIdx);\n } else {\n keyboardHookSetHighlightedIndex(highlightedIdx);\n }\n }, [\n highlightedIdx,\n keyboardHookFocusTab,\n keyboardHookSetHighlightedIndex,\n tabInEditMode,\n ]);\n\n const onSwitchWrappedItemIntoView = useCallback(\n (item: OverflowItem) => {\n const index = parseInt(item.index);\n if (!isNaN(index)) {\n selectionHookActivateTab(index);\n }\n },\n [selectionHookActivateTab]\n );\n\n const navigationProps = {\n onFocus: keyboardHook.onFocus,\n onKeyDown: handleKeyDown,\n };\n\n const handleAddTabClick = useCallback(() => {\n onAddTab?.();\n requestAnimationFrame(() => {\n const selectedTabIndex = getIndexOfSelectedTab(containerRef.current);\n if (selectedTabIndex !== -1) {\n keyboardHookFocusTab(selectedTabIndex);\n }\n });\n }, [containerRef, keyboardHookFocusTab, onAddTab]);\n\n const tabProps = {\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onExitEditMode: handleExitEditMode,\n onMenuAction: handleTabMenuAction,\n onMenuClose: handleTabMenuClose,\n onMouseDown: dragDropHookHandleMouseDown,\n };\n\n return {\n activeTabIndex: selectionHookSelected,\n containerStyle,\n focusVisible: keyboardHook.focusVisible,\n containerProps: {\n ...keyboardHook.containerProps,\n onSwitchWrappedItemIntoView,\n },\n navigationProps,\n onClickAddTab: handleAddTabClick,\n tabProps,\n ...dragDropHook,\n };\n};\n", "import { ContextMenuItemDescriptor } from \"@vuu-ui/vuu-data-types\";\n\nexport type MenuOptions = { [key: string]: unknown };\n\nexport interface TabMenuOptions {\n tabIndex: number;\n}\n\nexport const isTabMenuOptions = (options: unknown): options is TabMenuOptions =>\n typeof options === \"object\" &&\n options !== null &&\n \"tabIndex\" in options &&\n typeof options.tabIndex === \"number\";\n\nexport const closeCommand = (options?: MenuOptions) =>\n ({\n label: `Close`,\n location: \"tab\",\n action: `close-tab`,\n options,\n } as ContextMenuItemDescriptor);\n\nexport const renameCommand = (options?: MenuOptions) =>\n ({\n label: `Rename`,\n location: \"tab\",\n action: `rename-tab`,\n options,\n } as ContextMenuItemDescriptor);\n", "import { getElementDataIndex } from \"@vuu-ui/vuu-utils\";\n\nconst getIndexOfItem = (container: HTMLElement | null, query: string) => {\n if (container) {\n const targetTab = container.querySelector(\n `[data-index]:has(${query})`\n ) as HTMLElement;\n return getElementDataIndex(targetTab);\n }\n return -1;\n};\n\nexport const getIndexOfSelectedTab = (container: HTMLElement | null) =>\n getIndexOfItem(container, '[aria-selected=\"true\"]');\n\nexport const getIndexOfEditedItem = (container: HTMLElement | null) =>\n getIndexOfItem(container, \".vuuEditableLabel-editing\");\n", "import { isValidNumber, MEASURES, orientationType } from \"@vuu-ui/vuu-utils\";\nimport { CSSProperties, RefObject, useCallback, useMemo, useRef } from \"react\";\n\nexport const useAnimatedSelectionThumb = (\n containerRef: RefObject<HTMLElement>,\n activeTabIndex: number,\n orientation: orientationType = \"horizontal\"\n) => {\n const animationSuspendedRef = useRef(false);\n const suspendAnimation = useCallback(() => {\n animationSuspendedRef.current = true;\n }, []);\n\n const resumeAnimation = useCallback(() => {\n animationSuspendedRef.current = false;\n }, []);\n\n const onTransitionEnd = useCallback(() => {\n containerRef.current?.style.setProperty(\"--tab-thumb-transition\", \"none\");\n containerRef.current?.removeEventListener(\"transitionend\", onTransitionEnd);\n }, [containerRef]);\n const lastSelectedRef = useRef(-1);\n return useMemo(() => {\n let offset = 0;\n let size = 0;\n if (lastSelectedRef.current !== -1) {\n const oldSelected =\n containerRef.current?.querySelector(\".vuuTab-selected\");\n const newSelected = containerRef.current?.querySelector(\n `[data-index=\"${activeTabIndex}\"] .vuuTab`\n );\n const { positionProp, sizeProp } = MEASURES[orientation];\n if (oldSelected && newSelected && !animationSuspendedRef.current) {\n const { [positionProp]: oldPosition, [sizeProp]: oldSize } =\n oldSelected.getBoundingClientRect();\n const { [positionProp]: newPosition } =\n newSelected.getBoundingClientRect();\n if (\n isValidNumber(oldPosition) &&\n isValidNumber(newPosition) &&\n isValidNumber(oldSize)\n ) {\n offset = oldPosition - newPosition;\n size = oldSize;\n const speed = orientation === \"horizontal\" ? 1100 : 700;\n const duration = Math.abs(offset / speed);\n requestAnimationFrame(() => {\n containerRef.current?.style.setProperty(\n \"--tab-thumb-offset\",\n \"0px\"\n );\n containerRef.current?.style.setProperty(\"--tab-thumb-size\", \"100%\");\n containerRef.current?.style.setProperty(\n \"--tab-thumb-transition\",\n `all ${duration}s ease`\n );\n containerRef.current?.addEventListener(\n \"transitionend\",\n onTransitionEnd\n );\n });\n }\n }\n }\n lastSelectedRef.current = activeTabIndex;\n if (animationSuspendedRef.current) {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": \"0px\",\n \"--tab-thumb-size\": \"100%\",\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n } else {\n return {\n containerStyle: {\n \"--tab-thumb-offset\": `${offset}px`,\n \"--tab-thumb-size\": size ? `${size}px` : undefined,\n } as CSSProperties,\n resumeAnimation,\n suspendAnimation,\n };\n }\n }, [\n activeTabIndex,\n containerRef,\n orientation,\n onTransitionEnd,\n resumeAnimation,\n suspendAnimation,\n ]);\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport {\n dispatchMouseEvent,\n getFocusableElement,\n orientationType,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n MouseEvent as ReactMouseEvent,\n MouseEventHandler,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n ArrowDown,\n ArrowUp,\n ArrowLeft,\n ArrowRight,\n Home,\n End,\n} from \"@vuu-ui/vuu-utils\";\nimport { getIndexOfEditedItem } from \"./tabstrip-dom-utils\";\n\ntype directionType = \"bwd\" | \"fwd\" | \"start\" | \"end\";\ntype directionMap = { [key: string]: directionType };\nconst navigation = {\n horizontal: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowLeft]: \"bwd\",\n [ArrowRight]: \"fwd\",\n } as directionMap,\n vertical: {\n [Home]: \"start\",\n [End]: \"end\",\n [ArrowUp]: \"bwd\",\n [ArrowDown]: \"fwd\",\n } as directionMap,\n};\n\nconst isNavigationKey = (\n key: string,\n orientation: orientationType = \"horizontal\"\n) => navigation[orientation][key] !== undefined;\n\nconst isMenuActivationKey = (key: string) => key === ArrowDown;\n\nfunction nextItemIdx(count: number, direction: directionType, idx: number) {\n if (direction === \"start\") {\n return 0;\n } else if (direction === \"end\") {\n return count - 1;\n } else if (direction === \"bwd\") {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isNonWrappedElement = (element: HTMLElement | null) =>\n element !== null && !element.classList.contains(\"wrapped\");\n\nconst getElementByPosition = (container: HTMLElement | null, index: number) =>\n container\n ? (container.querySelector(`[data-index=\"${index}\"]`) as HTMLElement)\n : null;\n\nexport interface ContainerNavigationProps {\n onBlur: FocusEventHandler;\n onFocus: FocusEventHandler;\n onMouseDownCapture: MouseEventHandler;\n onMouseLeave: MouseEventHandler;\n}\n\ninterface TabstripNavigationHookProps {\n containerRef: RefObject<HTMLElement>;\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n keyBoardActivation?: \"manual\" | \"automatic\";\n orientation: orientationType;\n selectedIndex: number | null;\n}\n\ninterface TabstripNavigationHookResult {\n containerProps: ContainerNavigationProps;\n highlightedIdx: number;\n focusTab: (\n tabIndex: number,\n immediateFocus?: boolean,\n withKeyboard?: boolean,\n delay?: number\n ) => void;\n focusVisible: number;\n focusIsWithinComponent: boolean;\n onClick: (evt: ReactMouseEvent, tabIndex: number) => void;\n onFocus: (evt: FocusEvent<HTMLElement>) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n setHighlightedIdx: (highlightedIndex: number) => void;\n}\n\nexport const useKeyboardNavigation = ({\n containerRef,\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n keyBoardActivation,\n orientation,\n selectedIndex: selectedTabIndex = 0,\n}: TabstripNavigationHookProps): TabstripNavigationHookResult => {\n const manualActivation = keyBoardActivation === \"manual\";\n const mouseClickPending = useRef(false);\n const focusedRef = useRef<number>(-1);\n const [hasFocus, setHasFocus] = useState(false);\n const [, forceRefresh] = useState({});\n const [highlightedIdx, _setHighlightedIdx] = useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"UseKeyboardNavigation\",\n });\n\n const setHighlightedIdx = useCallback(\n (value: number) => {\n _setHighlightedIdx((focusedRef.current = value));\n },\n [_setHighlightedIdx]\n );\n\n const keyboardNavigation = useRef(false);\n\n const focusTab = useCallback(\n (\n tabIndex: number,\n immediateFocus = false,\n withKeyboard?: boolean,\n delay = 70\n ) => {\n // The timeout is important in two scenarios:\n // 1) where tab has overflowed and is being selected from overflow menu.\n // We must not focus it until the overflow mechanism + render has restored\n // it to the main display.\n // 2) when we are focussing a new tab\n // We MUST NOT delay focus when using keyboard nav, else when focus moves from\n // close button (focus ring styled by :focus-visible) to Tab label (focus ring\n // styled by css class) focus style will briefly linger on both.\n setHighlightedIdx(tabIndex);\n\n if (withKeyboard === true && !keyboardNavigation.current) {\n keyboardNavigation.current = true;\n }\n\n const setFocus = () => {\n const element = getElementByPosition(containerRef.current, tabIndex);\n if (element) {\n const focussableElement = getFocusableElement(element);\n focussableElement?.focus();\n }\n };\n if (immediateFocus) {\n setFocus();\n } else {\n setTimeout(setFocus, delay);\n }\n },\n [containerRef, setHighlightedIdx]\n );\n\n const onFocus = (e: FocusEvent<HTMLElement>) => {\n // If focus is received by keyboard navigation, item with tabindex 0 will receive\n // focus. If the item receiving focus has tabindex -1, then focus has been set\n // programatically. We must respect this and not reset focus to selected tab.\n if (focusedRef.current === -1) {\n // Focus is entering tabstrip. Assume keyboard - if it'a actually mouse-driven,\n // the click event will have set correct value.\n if (e.target.tabIndex === -1) {\n // Do nothing, assume focus is being passed back to button by closing dialog. Might need\n // to revisit this and add code here if we may get focus set programatically in other ways.\n } else {\n const index = getIndexOfEditedItem(containerRef.current);\n if (index !== -1) {\n requestAnimationFrame(() => {\n setHighlightedIdx(index);\n });\n } else {\n setTimeout(() => {\n // The selected tab will have tabIndex 0 make sure our internal state is aligned.\n if (focusedRef.current === -1 && selectedTabIndex !== null) {\n setHighlightedIdx(selectedTabIndex);\n }\n }, 200);\n }\n }\n }\n };\n\n const getIndexCount = useCallback(\n () => containerRef.current?.querySelectorAll(`[data-index]`).length ?? 0,\n [containerRef]\n );\n\n const nextFocusableItemIdx = useCallback(\n (direction: directionType = \"fwd\", idx?: number) => {\n const indexCount = getIndexCount();\n const index = typeof idx === \"number\" ? idx : indexCount;\n\n let nextIdx = nextItemIdx(indexCount, direction, index);\n const nextDirection =\n direction === \"start\" ? \"fwd\" : direction === \"end\" ? \"bwd\" : direction;\n while (\n ((nextDirection === \"fwd\" && nextIdx < indexCount) ||\n (nextDirection === \"bwd\" && nextIdx > 0)) &&\n !isNonWrappedElement(\n getElementByPosition(containerRef.current, nextIdx)\n )\n ) {\n const newIdx = nextItemIdx(indexCount, nextDirection, nextIdx);\n if (newIdx === nextIdx) {\n break;\n } else {\n nextIdx = newIdx;\n }\n }\n return nextIdx;\n },\n [containerRef, getIndexCount]\n );\n\n // forceFocusVisible supports an edge case - first or last Tab are clicked\n // then Left or Right Arrow keys are pressed, There will be no navigation\n // but focusVisible must be applied\n const navigateChildItems = useCallback(\n (e: React.KeyboardEvent, forceFocusVisible = false) => {\n const direction = navigation[orientation][e.key];\n const nextIdx = nextFocusableItemIdx(direction, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n const immediateFocus = true;\n if (manualActivation) {\n focusTab(nextIdx, immediateFocus);\n } else {\n // activateTab(newTabIndex);\n }\n } else if (forceFocusVisible) {\n forceRefresh({});\n }\n },\n [\n highlightedIdx,\n manualActivation,\n nextFocusableItemIdx,\n focusTab,\n orientation,\n ]\n );\n\n const highlightedTabHasMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n if (el) {\n return el.querySelector(\".vuuPopupMenu\") != null;\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const activateTabMenu = useCallback(() => {\n const el = getElementByPosition(containerRef.current, highlightedIdx);\n const menuEl = el?.querySelector(\".vuuPopupMenu\") as HTMLElement;\n if (menuEl) {\n dispatchMouseEvent(menuEl, \"click\");\n }\n return false;\n }, [containerRef, highlightedIdx]);\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (getIndexCount() > 0 && isNavigationKey(e.key, orientation)) {\n e.preventDefault();\n if (keyboardNavigation.current) {\n navigateChildItems(e);\n } else {\n keyboardNavigation.current = true;\n navigateChildItems(e, true);\n }\n } else if (isMenuActivationKey(e.key) && highlightedTabHasMenu()) {\n activateTabMenu();\n }\n },\n [\n activateTabMenu,\n getIndexCount,\n highlightedTabHasMenu,\n navigateChildItems,\n orientation,\n ]\n );\n\n // TODO, in common hooks, we use mouse movement to track current highlighted\n // index, rather than rely on component item reporting it\n const handleItemClick = (_: ReactMouseEvent, tabIndex: number) => {\n setHighlightedIdx(tabIndex);\n };\n\n const handleFocus = useCallback(() => {\n if (!hasFocus) {\n setHasFocus(true);\n if (!mouseClickPending.current) {\n keyboardNavigation.current = true;\n } else {\n mouseClickPending.current = false;\n }\n }\n }, [hasFocus]);\n\n const handleContainerMouseDown = useCallback(() => {\n if (!hasFocus) {\n mouseClickPending.current = true;\n }\n keyboardNavigation.current = false;\n }, [hasFocus]);\n\n const containerProps = {\n onBlur: (e: FocusEvent) => {\n const sourceTarget = (e.target as HTMLElement).closest(\".vuuTabstrip\");\n const destTarget = e.relatedTarget as HTMLElement;\n if (sourceTarget && !sourceTarget?.contains(destTarget)) {\n setHighlightedIdx(-1);\n setHasFocus(false);\n }\n },\n onMouseDownCapture: handleContainerMouseDown,\n onFocus: handleFocus,\n onMouseLeave: () => {\n keyboardNavigation.current = true;\n setHighlightedIdx(-1);\n mouseClickPending.current = false;\n },\n };\n\n return {\n containerProps,\n focusVisible: keyboardNavigation.current ? highlightedIdx : -1,\n focusIsWithinComponent: hasFocus,\n highlightedIdx,\n focusTab,\n onClick: handleItemClick,\n onFocus,\n onKeyDown: handleKeyDown,\n setHighlightedIdx,\n };\n};\n", "import { useControlled } from \"@salt-ds/core\";\nimport { KeyboardEvent, MouseEvent, useCallback } from \"react\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst isTabElement = (el: HTMLElement): boolean =>\n el && el.matches('[class*=\"vuuTab \"]');\n\n// TODO use SelectionProps\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n onSelectionChange,\n selected: selectedProp,\n}: {\n defaultSelected?: number;\n highlightedIdx: number;\n onSelectionChange?: (tabIndex: number) => void;\n selected?: number;\n}): {\n activateTab: (tabIndex: number) => void;\n isControlled: boolean;\n onClick: (evt: MouseEvent<Element>, tabIndex: number) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n selected: number;\n} => {\n const [selected, setSelected, isControlled] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? 0,\n name: \"Tabstrip\",\n state: \"value\",\n });\n\n const isSelectionEvent = useCallback(\n (evt: KeyboardEvent) => defaultSelectionKeys.includes(evt.key),\n []\n );\n\n const selectItem = useCallback(\n (tabIndex: number) => {\n setSelected(tabIndex);\n onSelectionChange?.(tabIndex);\n },\n [onSelectionChange, setSelected]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n const targetElement = e.target as HTMLElement;\n if (\n isSelectionEvent(e) &&\n highlightedIdx !== selected &&\n isTabElement(targetElement)\n ) {\n e.stopPropagation();\n e.preventDefault();\n selectItem(highlightedIdx);\n }\n },\n [isSelectionEvent, highlightedIdx, selected, selectItem]\n );\n\n const onClick = useCallback(\n (e: MouseEvent, tabIndex: number) => {\n if (tabIndex !== selected) {\n selectItem(tabIndex);\n }\n },\n [selectItem, selected]\n );\n\n return {\n activateTab: selectItem,\n isControlled,\n onClick,\n onKeyDown: handleKeyDown,\n selected,\n };\n};\n", "// TODO close button needs to be a button. Hence tab needs to include 2 buttons\nimport { useForkRef } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport { MenuActionHandler } from \"@vuu-ui/vuu-data-types\";\nimport {\n FocusEvent,\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n MouseEvent,\n ReactElement,\n useCallback,\n useRef,\n} from \"react\";\nimport { EditableLabel, EditableLabelProps } from \"../editable-label\";\nimport { TabMenu } from \"./TabMenu\";\nimport { TabProps } from \"./TabsTypes\";\n\nimport \"./Tab.css\";\n\nconst classBase = \"vuuTab\";\n\nconst noop = () => undefined;\n\nexport const Tab = forwardRef(function Tab(\n {\n ariaControls,\n children,\n className,\n closeable = false,\n dragging,\n editable = false,\n editing,\n focusVisible,\n index = -1,\n label,\n location,\n onClick,\n onClose,\n onEnterEditMode = noop,\n onExitEditMode = noop,\n onFocus: onFocusProp,\n onKeyUp,\n onMenuAction,\n onMenuClose,\n orientation,\n selected,\n showMenuButton = closeable || editable || Boolean(location),\n tabIndex,\n ...props\n }: TabProps,\n ref: ForwardedRef<HTMLDivElement>\n): ReactElement<TabProps> {\n if (showMenuButton && typeof onMenuAction !== \"function\") {\n throw Error(\"Tab onMenuAction must be provided if showMenuButton is set\");\n }\n\n const rootRef = useRef<HTMLDivElement>(null);\n const editableRef = useRef<HTMLDivElement>(null);\n const setForkRef = useForkRef(ref, rootRef);\n const handleClick = useCallback(\n (e: MouseEvent<HTMLElement>) => {\n if (!editing) {\n e.preventDefault();\n onClick?.(e, index);\n }\n },\n [editing, index, onClick]\n );\n\n const handleOnExitEditMode: EditableLabelProps[\"onExitEditMode\"] = (\n originalValue = \"\",\n editedValue = \"\",\n allowDeactivation = true\n ) => onExitEditMode(originalValue, editedValue, allowDeactivation, index);\n\n const handleKeyUp = (e: KeyboardEvent) => {\n switch (e.key) {\n case \"Backspace\":\n case \"Delete\":\n if (closeable) {\n e.stopPropagation();\n onClose && onClose(index);\n }\n break;\n default:\n onKeyUp && onKeyUp(e, index);\n }\n };\n\n const getLabel = () => {\n if (editable) {\n return (\n <EditableLabel\n editing={editing}\n defaultValue={label}\n // Create a fresh instance after each edit, so it can be uncontrolled ...\n key={label}\n onEnterEditMode={onEnterEditMode}\n onExitEditMode={handleOnExitEditMode}\n ref={editableRef}\n />\n );\n } else {\n return label;\n }\n };\n\n const handleFocus = (evt: FocusEvent<HTMLElement>) => {\n if (editableRef.current) {\n const editable = editableRef.current as HTMLElement;\n const input = editable.querySelector(\n \".vuuEditableLabel-input\"\n ) as HTMLInputElement;\n input?.focus();\n }\n onFocusProp?.(evt);\n };\n\n return (\n <div\n {...props}\n aria-controls={ariaControls}\n aria-selected={selected}\n className={cx(classBase, className, {\n [`${classBase}-closeable`]: closeable,\n \"vuuDraggable-dragAway\": dragging,\n [`${classBase}-editing`]: editing,\n [`${classBase}-selected`]: selected || undefined,\n [`${classBase}-vertical`]: orientation === \"vertical\",\n [`vuuFocusVisible`]: focusVisible,\n })}\n onClick={handleClick}\n onFocus={handleFocus}\n onKeyUp={handleKeyUp}\n ref={setForkRef}\n role=\"tab\"\n tabIndex={tabIndex}\n >\n <div className={`${classBase}-main`}>\n <span\n className={`${classBase}-text`}\n // data-text is important, it determines the width of the tab. A pseudo\n // element assigns data-text as content. This is styled as selected tab\n // text. That means width of tab always corresponds to its selected state,\n // so tabs do not change size when selected (ie when the text is bolded).\n // Do not include if we have editable content, EditableLabel will determine\n // the width\n data-text={editable ? undefined : label}\n >\n {children ?? getLabel()}\n </span>\n </div>\n {showMenuButton ? (\n <TabMenu\n allowClose={closeable}\n allowRename={editable}\n controlledComponentId={ariaControls}\n controlledComponentTitle={label}\n location={location}\n onMenuAction={onMenuAction as MenuActionHandler}\n onMenuClose={onMenuClose}\n index={index}\n />\n ) : null}\n </div>\n );\n});\n", "import { PopupMenu } from \"@vuu-ui/vuu-popups\";\nimport {\n ContextMenuItemDescriptor,\n MenuActionHandler,\n MenuBuilder,\n} from \"@vuu-ui/vuu-data-types\";\nimport { useMemo } from \"react\";\nimport cx from \"clsx\";\nimport { closeCommand, MenuOptions, renameCommand } from \"./TabMenuOptions\";\n\nimport \"./TabMenu.css\";\n\nconst classBase = \"vuuTabMenu\";\n\nexport interface TabMenuProps {\n allowClose: boolean;\n allowRename: boolean;\n index: number;\n location?: string;\n onMenuAction: MenuActionHandler;\n onMenuClose?: () => void;\n /**\n * The id of associated component, if available\n */\n controlledComponentId?: string;\n /**\n * The label of Tab, if available\n */\n controlledComponentTitle?: string;\n}\n\nexport const TabMenu = ({\n allowClose,\n allowRename,\n controlledComponentId,\n controlledComponentTitle,\n location,\n onMenuAction,\n onMenuClose,\n index,\n}: TabMenuProps) => {\n const [menuBuilder, menuOptions] = useMemo(\n (): [MenuBuilder, MenuOptions] => [\n (_location, options) => {\n const menuItems: ContextMenuItemDescriptor[] = [];\n if (allowRename) {\n menuItems.push(renameCommand(options as MenuOptions));\n }\n if (allowClose) {\n menuItems.push(closeCommand(options as MenuOptions));\n }\n return menuItems;\n },\n {\n controlledComponentId,\n controlledComponentTitle,\n tabIndex: index,\n },\n ],\n [\n allowClose,\n allowRename,\n controlledComponentId,\n controlledComponentTitle,\n index,\n ]\n );\n\n return (\n <PopupMenu\n className={classBase}\n menuBuilder={menuBuilder}\n menuActionHandler={onMenuAction}\n menuLocation={cx(\"tab\", location)}\n menuOptions={menuOptions}\n onMenuClose={onMenuClose}\n tabIndex={-1}\n aria-label=\"context menu\"\n />\n );\n};\n", "import { useForkRef, useIdMemo as useId } from \"@salt-ds/core\";\nimport cx from \"clsx\";\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n MouseEvent,\n useRef,\n} from \"react\";\nimport { closestListItemIndex } from \"./list-dom-utils\";\nimport { useItemsWithIds } from \"./use-items-with-ids\";\nimport {\n GroupSelection,\n groupSelectionEnabled,\n TreeNodeSelectionHandler,\n TreeSelection,\n} from \"./use-selection\";\nimport { useViewportTracking } from \"./use-viewport-tracking\";\nimport { useTree } from \"./useTree\";\n\nimport \"./Tree.css\";\n\nconst classBase = \"vuuTree\";\n\ntype Indexer = {\n value: number;\n};\n\nexport interface TreeSourceNode {\n id: string;\n icon?: string;\n header?: boolean;\n label: string;\n childNodes?: TreeSourceNode[];\n}\nexport interface NormalisedTreeSourceNode extends TreeSourceNode {\n childNodes?: NormalisedTreeSourceNode[];\n count: number;\n expanded?: boolean;\n index: number;\n level: number;\n}\n\nexport interface NonLeafNode extends NormalisedTreeSourceNode {\n childNodes: NormalisedTreeSourceNode[];\n}\n\nexport const isExpanded = (\n node: NormalisedTreeSourceNode\n): node is NonLeafNode => node.expanded === true;\n\nexport interface TreeNodeProps extends HTMLAttributes<HTMLLIElement> {\n idx?: number;\n}\n\n// eslint-disable-next-line no-unused-vars\nexport const TreeNode = ({ children, idx, ...props }: TreeNodeProps) => {\n return <li {...props}>{children}</li>;\n};\n\nexport interface TreeProps extends HTMLAttributes<HTMLUListElement> {\n allowDragDrop?: boolean;\n defaultSelected?: any;\n groupSelection?: GroupSelection;\n onHighlight?: (index: number) => void;\n onSelectionChange: (selected: TreeSourceNode[]) => void;\n revealSelected?: boolean;\n selected?: string[];\n selection?: TreeSelection;\n source: TreeSourceNode[];\n}\n\nconst Tree = forwardRef(function Tree(\n {\n allowDragDrop,\n className,\n defaultSelected,\n groupSelection = \"none\",\n id: idProp,\n onHighlight,\n onSelectionChange,\n revealSelected,\n selected: selectedProp,\n selection = \"single\",\n source,\n ...htmlAttributes\n }: TreeProps,\n forwardedRef: ForwardedRef<HTMLUListElement>\n) {\n const id = useId(idProp);\n const rootRef = useRef<HTMLUListElement>(null);\n\n // returns the full source data\n const [, sourceWithIds, sourceItemById] = useItemsWithIds(source, id, {\n revealSelected: revealSelected\n ? selectedProp ?? defaultSelected ?? false\n : undefined,\n });\n\n const handleSelectionChange: TreeNodeSelectionHandler = (evt, selected) => {\n if (onSelectionChange) {\n const sourceItems = selected\n .map((id) => sourceItemById(id))\n .filter((sourceItem) => sourceItem !== undefined) as TreeSourceNode[];\n onSelectionChange(sourceItems);\n }\n };\n\n const {\n focusVisible,\n highlightedIdx,\n hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected,\n visibleData,\n } = useTree({\n defaultSelected,\n groupSelection,\n onChange: handleSelectionChange,\n onHighlight,\n selected: selectedProp,\n selection,\n sourceWithIds,\n });\n\n // const isScrolling = useViewportTracking(root, highlightedIdx);\n useViewportTracking(rootRef, highlightedIdx);\n\n const defaultItemHandlers = {\n onMouseEnter: (evt: MouseEvent) => {\n // if (!isScrolling.current) {\n const targetEl = evt.target as HTMLElement;\n const idx = closestListItemIndex(targetEl);\n hiliteItemAtIndex(idx);\n // onMouseEnterListItem && onMouseEnterListItem(evt, idx);\n // }\n },\n };\n\n const propsCommonToAllListItems = {\n ...defaultItemHandlers,\n ...listItemHandlers,\n role: \"treeitem\",\n };\n const allowGroupSelect = groupSelectionEnabled(groupSelection);\n\n /**\n * Add a ListItem from source item\n */\n function addLeafNode(\n list: JSX.Element[],\n item: NormalisedTreeSourceNode,\n idx: Indexer\n ) {\n list.push(\n <TreeNode\n {...propsCommonToAllListItems}\n {...getListItemProps(item, idx, highlightedIdx, selected, focusVisible)}\n >\n {item.icon ? (\n <span className={`${classBase}Node-icon`} data-icon={item.icon} />\n ) : null}\n <span>{item.label}</span>\n </TreeNode>\n );\n idx.value += 1;\n }\n\n function addGroupNode(\n list: JSX.Element[],\n child: NormalisedTreeSourceNode,\n idx: Indexer,\n id: string,\n title: string\n ) {\n const { value: i } = idx;\n idx.value += 1;\n list.push(\n <TreeNode\n {...listItemHandlers}\n aria-expanded={child.expanded}\n aria-level={child.level}\n aria-selected={selected.includes(id) || undefined}\n className={cx(`${classBase}Node`, {\n focusVisible: focusVisible === i,\n [`${classBase}Node-toggle`]: !allowGroupSelect,\n })}\n data-idx={i}\n data-highlighted={i === highlightedIdx || undefined}\n data-selectable\n id={id}\n key={`header-${i}`}\n >\n {allowGroupSelect ? (\n <div className={`${classBase}Node-label`}>\n <span className={`${classBase}Node-toggle`} />\n {title}\n </div>\n ) : (\n <div className={`${classBase}Node-label`}>\n {child.icon ? (\n <span\n className={`${classBase}Node-icon`}\n data-icon={child.icon}\n />\n ) : null}\n <span>{title}</span>\n </div>\n )}\n <ul role=\"group\">\n {isExpanded(child) ? renderSourceContent(child.childNodes, idx) : \"\"}\n </ul>\n </TreeNode>\n );\n }\n\n function renderSourceContent(\n items: NormalisedTreeSourceNode[],\n idx = { value: 0 }\n ) {\n if (items?.length > 0) {\n const listItems: JSX.Element[] = [];\n for (const item of items) {\n if (item.childNodes) {\n addGroupNode(listItems, item, idx, item.id, item.label);\n } else {\n addLeafNode(listItems, item, idx);\n }\n }\n return listItems;\n }\n }\n\n return (\n <ul\n {...htmlAttributes}\n {...listProps}\n className={cx(classBase, className)}\n id={`Tree-${id}`}\n ref={useForkRef<HTMLUListElement>(rootRef, forwardedRef)}\n role=\"tree\"\n tabIndex={0}\n >\n {renderSourceContent(visibleData)}\n </ul>\n );\n});\n\nconst getListItemProps = (\n item: NormalisedTreeSourceNode,\n idx: Indexer,\n highlightedIdx: number,\n selected: string[],\n focusVisible: number,\n className?: string\n) => ({\n id: item.id,\n key: item.id,\n \"aria-level\": item.level,\n \"aria-selected\": selected.includes(item.id) || undefined,\n \"data-idx\": idx.value,\n \"data-highlighted\": idx.value === highlightedIdx || undefined,\n className: cx(\"vuuTreeNode\", className, {\n focusVisible: focusVisible === idx.value,\n }),\n});\n\nTree.displayName = \"Tree\";\nexport default Tree;\n", "export const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n let idx = listItemEl.dataset.idx;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if ((idx = listItemEl.ariaPosInSet ?? \"-1\")) {\n return parseInt(idx, 10) - 1;\n }\n }\n}\n\nexport const listItemId = (el: HTMLElement | null) => el?.id;\n\nexport const closestListItem = (el: HTMLElement) =>\n el.closest(\"[data-idx],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import { useCallback, useMemo } from \"react\";\nimport { NormalisedTreeSourceNode, TreeSourceNode } from \"./Tree\";\n\nconst PathSeparators = new Set([\"/\", \"-\", \".\"]);\n// TODO where do we define or identify separators\nconst isPathSeparator = (char: string) => PathSeparators.has(char);\n\nconst isParentPath = (parentPath: string, childPath: string) =>\n childPath.startsWith(parentPath) &&\n isPathSeparator(childPath[parentPath.length]);\n\ntype Indexer = {\n index: number;\n};\n\ntype SourceItemById = (\n id: string,\n target?: NormalisedTreeSourceNode[]\n) => TreeSourceNode | undefined;\n\nexport const useItemsWithIds = (\n sourceProp: TreeSourceNode[],\n idRoot = \"root\",\n {\n collapsibleHeaders = undefined,\n defaultExpanded = false,\n revealSelected = false,\n } = {}\n): [number, NormalisedTreeSourceNode[], SourceItemById] => {\n const countChildItems = (\n item: TreeSourceNode,\n items: TreeSourceNode[],\n idx: number\n ) => {\n if (item.childNodes) {\n return item.childNodes.length;\n } else if (item.header) {\n let i = idx + 1;\n let count = 0;\n while (i < items.length && !items[i].header) {\n count++;\n i++;\n }\n return count;\n } else {\n return 0;\n }\n };\n\n const isExpanded = useCallback(\n (path) => {\n if (Array.isArray(revealSelected)) {\n return revealSelected.some((id) => isParentPath(path, id));\n }\n return defaultExpanded;\n },\n [defaultExpanded, revealSelected]\n );\n\n const normalizeItems = useCallback(\n (\n items: TreeSourceNode[],\n indexer: Indexer,\n level = 1,\n path = \"\",\n results: NormalisedTreeSourceNode[] = [],\n flattenedSource: TreeSourceNode[] = []\n ): [number, NormalisedTreeSourceNode[], TreeSourceNode[]] => {\n let count = 0;\n // TODO get rid of the Proxy\n items.forEach((item, i, all) => {\n const isCollapsibleHeader = item.header && collapsibleHeaders;\n const isNonCollapsibleGroupNode =\n item.childNodes && collapsibleHeaders === false;\n const isLeaf = !item.childNodes || item.childNodes.length === 0;\n const nonCollapsible =\n isNonCollapsibleGroupNode || (isLeaf && !isCollapsibleHeader);\n const childPath = path ? `${path}.${i}` : `${i}`;\n const id = item.id ?? `${idRoot}-${childPath}`;\n\n const expanded = nonCollapsible ? undefined : isExpanded(id);\n //TODO dev time check - if id is provided by user, make sure\n // hierarchical pattern is consistent\n const normalisedItem: NormalisedTreeSourceNode = {\n ...item,\n childNodes: undefined,\n id,\n count:\n !isNonCollapsibleGroupNode && expanded === undefined\n ? 0\n : countChildItems(item, all, i),\n expanded,\n index: indexer.index,\n level,\n };\n results.push(normalisedItem);\n flattenedSource.push(items[i]);\n\n count += 1;\n indexer.index += 1;\n\n // if ((isNonCollapsibleGroupNode || expanded !== undefined) && !isCollapsibleHeader) {\n if (item.childNodes) {\n const [childCount, children] = normalizeItems(\n item.childNodes,\n indexer,\n level + 1,\n childPath,\n [],\n flattenedSource\n );\n normalisedItem.childNodes = children;\n if (expanded === true || isNonCollapsibleGroupNode) {\n count += childCount;\n }\n }\n });\n return [count, results, flattenedSource];\n },\n [collapsibleHeaders, idRoot, isExpanded]\n );\n\n const [count, sourceWithIds, flattenedSource] = useMemo<\n [number, NormalisedTreeSourceNode[], TreeSourceNode[]]\n >(() => {\n return normalizeItems(sourceProp, { index: 0 });\n }, [normalizeItems, sourceProp]);\n\n const sourceItemById = useCallback<SourceItemById>(\n (id, target = sourceWithIds): TreeSourceNode | undefined => {\n const sourceWithId = target.find(\n (i) => i.id === id || (i?.childNodes?.length && isParentPath(i.id, id))\n );\n if (sourceWithId?.id === id) {\n return flattenedSource[sourceWithId.index];\n } else if (sourceWithId) {\n return sourceItemById(id, sourceWithId.childNodes);\n }\n },\n [flattenedSource, sourceWithIds]\n );\n\n return [count, sourceWithIds, sourceItemById];\n};\n", "import {\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport type TreeSelection =\n | \"none\"\n | \"single\"\n | \"checkbox\"\n | \"multi\"\n | \"extended\";\n\nexport const SINGLE = \"single\";\nexport const CHECKBOX = \"checkbox\";\nexport const MULTI = \"multi\";\nexport const EXTENDED = \"extended\";\n\nexport type GroupSelection = \"none\" | \"single\" | \"cascade\";\n\nconst defaultSelectionKeys = [\"Enter\", \" \"];\n\nconst NO_HANDLERS = {};\n\nconst isCollapsibleItem = (item: NormalisedTreeSourceNode) =>\n item.expanded !== undefined;\n\nexport type TreeNodeSelectionHandler = (\n evt: SyntheticEvent,\n selected: string[]\n) => void;\n\nexport const groupSelectionEnabled = (groupSelection: GroupSelection) =>\n groupSelection && groupSelection !== \"none\";\n\nexport interface SelectionHookProps {\n defaultSelected?: string[];\n highlightedIdx: number;\n onChange: TreeNodeSelectionHandler;\n selected?: string[];\n selection: TreeSelection;\n selectionKeys?: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\nexport interface SelectionHookResult {\n listHandlers: {\n onKeyDown?: (evt: KeyboardEvent) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, currentIndex: number) => void;\n };\n listItemHandlers: {\n onClick?: (evt: MouseEvent) => void;\n };\n selected: string[];\n setSelected: (selected: string[]) => void;\n}\n\nexport const useSelection = ({\n defaultSelected,\n highlightedIdx,\n treeNodes,\n onChange,\n selected: selectedProp,\n selection = SINGLE,\n selectionKeys = defaultSelectionKeys,\n}: SelectionHookProps): SelectionHookResult => {\n const singleSelect = selection === SINGLE;\n const multiSelect = selection === MULTI || selection.startsWith(CHECKBOX);\n const extendedSelect = selection === EXTENDED;\n const lastActive = useRef(-1);\n\n const isSelectionEvent = useCallback(\n (evt) => selectionKeys.includes(evt.key),\n [selectionKeys]\n );\n\n const [selected, setSelected] = useControlled({\n controlled: selectedProp,\n default: defaultSelected ?? [],\n name: \"selected\",\n });\n\n // const highlightedIdxRef = useRef();\n // highlightedIdxRef.current = highlightedIdx;\n\n const selectItemAtIndex = useCallback(\n (\n evt: SyntheticEvent,\n idx: number,\n id: string,\n rangeSelect: boolean,\n preserveExistingSelection = false\n ) => {\n const { current: active } = lastActive;\n const isSelected = selected?.includes(id);\n const inactiveRange = active === -1;\n const actsLikeSingleSelect =\n singleSelect ||\n (extendedSelect &&\n !preserveExistingSelection &&\n (!rangeSelect || inactiveRange));\n const actsLikeMultiSelect =\n multiSelect ||\n (extendedSelect && preserveExistingSelection && !rangeSelect);\n\n let newSelected: string[] = [];\n if (actsLikeSingleSelect && isSelected) {\n newSelected = [];\n } else if (actsLikeSingleSelect) {\n newSelected = [id];\n } else if (actsLikeMultiSelect && isSelected) {\n newSelected = selected.filter((i) => i !== id);\n } else if (actsLikeMultiSelect) {\n newSelected = selected.concat(id);\n } else if (extendedSelect) {\n const [from, to] = idx > active ? [active, idx] : [idx, active];\n newSelected = selected.slice();\n for (let i = from; i <= to; i++) {\n const { id } = treeNodes[i];\n if (!selected.includes(id)) {\n newSelected.push(id);\n }\n }\n }\n setSelected(newSelected);\n if (onChange) {\n onChange(evt, newSelected);\n }\n },\n [\n extendedSelect,\n treeNodes,\n multiSelect,\n onChange,\n selected,\n setSelected,\n singleSelect,\n ]\n );\n\n const handleKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (~highlightedIdx && isSelectionEvent(evt)) {\n evt.preventDefault();\n const item = treeNodes[highlightedIdx];\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n false,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n },\n [\n extendedSelect,\n highlightedIdx,\n treeNodes,\n isSelectionEvent,\n selectItemAtIndex,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(\n (evt: KeyboardEvent, currentIndex: number) => {\n if (extendedSelect && evt.shiftKey) {\n const item = treeNodes[currentIndex];\n selectItemAtIndex(evt, currentIndex, item.id, true);\n }\n },\n [extendedSelect, treeNodes, selectItemAtIndex]\n );\n\n const listHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onKeyDown: handleKeyDown,\n onKeyboardNavigation: handleKeyboardNavigation,\n };\n\n const handleClick = useCallback(\n (evt: MouseEvent) => {\n if (highlightedIdx !== -1) {\n const item = treeNodes[highlightedIdx];\n if (!isCollapsibleItem(item)) {\n evt.preventDefault();\n evt.stopPropagation();\n selectItemAtIndex(\n evt,\n highlightedIdx,\n item.id,\n evt.shiftKey,\n evt.ctrlKey || evt.metaKey\n );\n if (extendedSelect) {\n lastActive.current = highlightedIdx;\n }\n }\n }\n },\n [extendedSelect, highlightedIdx, treeNodes, selectItemAtIndex]\n );\n\n const listItemHandlers =\n selection === \"none\"\n ? NO_HANDLERS\n : {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n selected,\n setSelected,\n };\n};\n", "import {\n RefObject,\n useCallback,\n useEffect,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useResizeObserver } from \"../common-hooks\";\n\nconst HeightOnly = [\"height\", \"scrollHeight\"];\n\nexport const useViewportTracking = (\n root: RefObject<HTMLElement>,\n highlightedIdx: number,\n stickyHeaders = false\n) => {\n const scrollTop = useRef(0);\n const scrolling = useRef(false);\n const rootHeight = useRef(0);\n const rootScrollHeight = useRef(0);\n\n const scrollIntoView = useCallback(\n (el) => {\n const targetEl = el.ariaExpanded ? el.firstChild : el;\n const headerHeight = stickyHeaders ? 30 : 0;\n const t = targetEl.offsetTop;\n const h = targetEl.offsetHeight;\n const viewportStart = scrollTop.current + headerHeight;\n const viewportEnd = viewportStart + rootHeight.current - headerHeight;\n\n if (t + h > viewportEnd || t < viewportStart) {\n scrollTop.current =\n t + h > viewportEnd\n ? scrollTop.current + (t + h) - viewportEnd\n : t - headerHeight;\n\n scrolling.current = true;\n if (root.current) {\n root.current.scrollTop = scrollTop.current;\n }\n setTimeout(() => {\n scrolling.current = false;\n });\n }\n },\n [root, stickyHeaders]\n );\n\n const scrollHandler = useCallback((e) => {\n scrollTop.current = e.target.scrollTop;\n }, []);\n\n useEffect(() => {\n const { current: rootEl } = root;\n if (rootEl) {\n rootEl.addEventListener(\"scroll\", scrollHandler);\n }\n\n return () => {\n if (rootEl) {\n rootEl.removeEventListener(\"scroll\", scrollHandler);\n }\n };\n }, [root, scrollHandler]);\n\n useLayoutEffect(() => {\n if (\n highlightedIdx !== -1 &&\n rootScrollHeight.current > rootHeight.current\n ) {\n if (root.current) {\n const item = root.current.querySelector(`\n [data-idx='${highlightedIdx}'],\n [aria-posinset='${highlightedIdx + 1}']\n `);\n if (item === null) {\n console.log(\n \"[useViewportTracking], is this virtualised ? we're going to have to know rowHeight\"\n );\n } else {\n scrollIntoView(item);\n }\n }\n }\n }, [highlightedIdx, root, scrollIntoView]);\n\n useEffect(() => {\n // onsole.log('TODO measure the sticky header')\n }, [stickyHeaders]);\n\n const onResize = useCallback(({ height, scrollHeight }) => {\n rootHeight.current = height;\n rootScrollHeight.current = scrollHeight;\n }, []);\n\n useResizeObserver(root, HeightOnly, onResize, true);\n\n return scrolling;\n};\n", "import { KeyboardEvent, useCallback, useRef } from \"react\";\nimport { useKeyboardNavigation } from \"./use-keyboard-navigation\";\nimport {\n GroupSelection,\n TreeNodeSelectionHandler,\n TreeSelection,\n useSelection,\n} from \"./use-selection\";\nimport { useHierarchicalData } from \"./use-hierarchical-data\";\nimport { useCollapsibleGroups } from \"./use-collapsible-groups\";\nimport { useTreeKeyboardNavigation } from \"./use-tree-keyboard-navigation\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst EMPTY_ARRAY: string[] = [];\n\nexport interface TreeHookProps {\n defaultSelected?: string[];\n groupSelection: GroupSelection;\n onChange: TreeNodeSelectionHandler;\n onHighlight?: (index: number) => void;\n selected?: string[];\n selection: TreeSelection;\n sourceWithIds: NormalisedTreeSourceNode[];\n}\n\nexport const useTree = ({\n defaultSelected,\n sourceWithIds,\n onChange,\n onHighlight: onHighlightProp,\n selected: selectedProp,\n selection,\n}: TreeHookProps) => {\n const lastSelection = useRef<string[]>(EMPTY_ARRAY);\n const dataHook = useHierarchicalData(sourceWithIds);\n\n const handleKeyboardNavigation = (evt: KeyboardEvent, nextIdx: number) => {\n selectionHook.listHandlers.onKeyboardNavigation?.(evt, nextIdx);\n };\n\n const { highlightedIdx, ...keyboardHook } = useKeyboardNavigation({\n treeNodes: dataHook.indexPositions,\n onHighlight: onHighlightProp,\n onKeyboardNavigation: handleKeyboardNavigation,\n selected: lastSelection.current,\n });\n\n const collapsibleHook = useCollapsibleGroups({\n collapsibleHeaders: true,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n setVisibleData: dataHook.setData,\n source: dataHook.data,\n });\n\n const selectionHook = useSelection({\n defaultSelected,\n highlightedIdx,\n treeNodes: dataHook.indexPositions,\n onChange,\n selected: selectedProp,\n selection,\n });\n\n const treeNavigationHook = useTreeKeyboardNavigation({\n source: dataHook.data,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n indexPositions: dataHook.indexPositions,\n });\n\n const handleClick = useCallback(\n (evt) => {\n collapsibleHook.listItemHandlers?.onClick(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listItemHandlers?.onClick?.(evt);\n }\n },\n [collapsibleHook, selectionHook]\n );\n\n const handleKeyDown = useCallback(\n (evt) => {\n keyboardHook.listProps.onKeyDown?.(evt);\n if (!evt.defaultPrevented) {\n selectionHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n collapsibleHook.listHandlers.onKeyDown?.(evt);\n }\n if (!evt.defaultPrevented) {\n treeNavigationHook.listHandlers.onKeyDown?.(evt);\n }\n },\n [\n collapsibleHook.listHandlers,\n keyboardHook.listProps,\n selectionHook.listHandlers,\n treeNavigationHook.listHandlers,\n ]\n );\n\n const getActiveDescendant = () =>\n highlightedIdx === undefined || highlightedIdx === -1\n ? undefined\n : dataHook.indexPositions[highlightedIdx]?.id;\n\n // We need this on reEntry for navigation hook to handle focus\n lastSelection.current = selectionHook.selected;\n\n const listProps = {\n \"aria-activedescendant\": getActiveDescendant(),\n onBlur: keyboardHook.listProps.onBlur,\n onFocus: keyboardHook.listProps.onFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: keyboardHook.listProps.onMouseDownCapture,\n onMouseLeave: keyboardHook.listProps.onMouseLeave,\n onMouseMove: keyboardHook.listProps.onMouseMove,\n };\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n focusVisible: keyboardHook.focusVisible,\n highlightedIdx,\n hiliteItemAtIndex: keyboardHook.hiliteItemAtIndex,\n listProps,\n listItemHandlers,\n selected: selectionHook.selected,\n visibleData: dataHook.data,\n };\n};\n", "import { KeyboardEvent, useCallback, useMemo, useRef } from \"react\";\nimport { getIndexOfNode, getNodeById } from \"./hierarchical-data-utils\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { ArrowDown, ArrowLeft, ArrowUp, isNavigationKey } from \"./key-code\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === ArrowUp || key === ArrowLeft) {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n\nconst isLeaf = (item: NormalisedTreeSourceNode) =>\n !item.header && !item.childNodes;\nconst isFocusable = (item: NormalisedTreeSourceNode) =>\n isLeaf(item) || item.expanded !== undefined;\n\nexport interface KeyboardNavigationHookProps {\n defaultHighlightedIdx?: number;\n highlightedIdx?: number;\n onHighlight?: (highlightedIdx: number) => void;\n onKeyboardNavigation?: (evt: KeyboardEvent, nextIdx: number) => void;\n selected: string[];\n treeNodes: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useKeyboardNavigation = ({\n defaultHighlightedIdx = -1,\n highlightedIdx: highlightedIdxProp,\n treeNodes,\n onHighlight,\n onKeyboardNavigation,\n selected = [],\n}: KeyboardNavigationHookProps) => {\n const { bwd: ArrowBwd, fwd: ArrowFwd } = useMemo(\n () => ({\n bwd: ArrowUp,\n fwd: ArrowDown,\n }),\n []\n );\n\n const [highlightedIdx, setHighlightedIdx, isControlledHighlighting] =\n useControlled({\n controlled: highlightedIdxProp,\n default: defaultHighlightedIdx,\n name: \"highlightedIdx\",\n });\n\n const setHighlightedIndex = useCallback(\n (idx) => {\n onHighlight?.(idx);\n setHighlightedIdx(idx);\n },\n [onHighlight, setHighlightedIdx]\n );\n\n const nextFocusableItemIdx = useCallback(\n (key = ArrowFwd, idx = key === ArrowFwd ? -1 : treeNodes.length) => {\n let nextIdx = nextItemIdx(treeNodes.length, key, idx);\n while (\n nextIdx !== -1 &&\n ((key === ArrowFwd && nextIdx < treeNodes.length) ||\n (key === ArrowBwd && nextIdx > 0)) &&\n !isFocusable(treeNodes[nextIdx])\n ) {\n nextIdx = nextItemIdx(treeNodes.length, key, nextIdx);\n }\n return nextIdx;\n },\n [ArrowBwd, ArrowFwd, treeNodes]\n );\n\n // does this belong here or should it be a method passed in?\n const keyBoardNavigation = useRef(true);\n const ignoreFocus = useRef(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const handleFocus = useCallback(() => {\n if (ignoreFocus.current) {\n ignoreFocus.current = false;\n } else if (selected.length > 0) {\n const node = getNodeById(treeNodes, selected[0]);\n if (node) {\n const idx = getIndexOfNode(treeNodes, node);\n setHighlightedIndex(idx);\n }\n } else {\n setHighlightedIndex(nextFocusableItemIdx());\n }\n }, [treeNodes, nextFocusableItemIdx, selected, setHighlightedIndex]);\n\n const navigateChildItems = useCallback(\n (e) => {\n const nextIdx = nextFocusableItemIdx(e.key, highlightedIdx);\n if (nextIdx !== highlightedIdx) {\n setHighlightedIndex(nextIdx);\n // What exactly is the point of this ?\n onKeyboardNavigation?.(e, nextIdx);\n }\n },\n [\n highlightedIdx,\n nextFocusableItemIdx,\n onKeyboardNavigation,\n setHighlightedIndex,\n ]\n );\n\n const handleKeyDown = useCallback(\n (e) => {\n if (treeNodes.length > 0 && isNavigationKey(e, \"vertical\")) {\n e.preventDefault();\n e.stopPropagation();\n keyBoardNavigation.current = true;\n navigateChildItems(e);\n }\n },\n [treeNodes, navigateChildItems]\n );\n\n const listProps = useMemo(\n () => ({\n onBlur: () => {\n setHighlightedIndex(-1);\n },\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyBoardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n // SHould this be here - this is not strictly keyboard nav\n onMouseMove: () => {\n if (keyBoardNavigation.current) {\n keyBoardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n keyBoardNavigation.current = true;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n }),\n [handleFocus, handleKeyDown, setHighlightedIndex]\n );\n\n return {\n focusVisible: keyBoardNavigation.current ? highlightedIdx : -1,\n controlledHighlighting: isControlledHighlighting,\n highlightedIdx,\n hiliteItemAtIndex: setHighlightedIndex,\n keyBoardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n", "import { NonLeafNode, NormalisedTreeSourceNode } from \"./Tree\";\n\nexport const getNodeParentPath = ({ id }: NormalisedTreeSourceNode) => {\n let pos = id.lastIndexOf(\"-\");\n if (pos !== -1) {\n // using the built-in hierarchical id scheme\n // rootId-n-n.n\n const path = id.slice(pos + 1);\n const steps = path.split(\".\");\n if (steps.length === 1) {\n return null;\n } else {\n steps.pop();\n return `${id.slice(0, pos)}-${steps.join(\".\")}`;\n }\n } else if ((pos = id.lastIndexOf(\"/\")) !== -1) {\n // using a path scheme step/step/step\n return id.slice(0, pos);\n }\n};\n\nexport const isGroupNode = (node: NormalisedTreeSourceNode) =>\n node.childNodes !== undefined;\nexport const isCollapsibleGroupNode = (node: NormalisedTreeSourceNode) =>\n isGroupNode(node) && node.expanded !== undefined;\nexport const isHeader = (node: NormalisedTreeSourceNode) =>\n node.header === true;\n\nconst PATH_SEPARATORS = new Set([\".\", \"/\"]);\n\nconst isDescendantOf = (\n node: NormalisedTreeSourceNode,\n targetPath: string\n): node is NonLeafNode => {\n if (!targetPath.startsWith(node.id)) {\n return false;\n } else {\n return PATH_SEPARATORS.has(targetPath.charAt(node.id.length));\n }\n};\n\nexport const getNodeById = (\n nodes: NormalisedTreeSourceNode[],\n id: string\n): NormalisedTreeSourceNode | undefined => {\n for (const node of nodes) {\n if (node.id === id) {\n return node;\n } else if (isDescendantOf(node, id)) {\n return getNodeById(node.childNodes, id);\n }\n }\n};\n\nexport const getIndexOfNode = (\n treeNodes: NormalisedTreeSourceNode[],\n node: NormalisedTreeSourceNode\n) => {\n const id = typeof node === \"string\" ? node : node.id;\n for (let i = 0; i < treeNodes.length; i++) {\n if (treeNodes[i].id === id) {\n return i;\n }\n }\n};\n\nexport const replaceNode = (\n nodes: NormalisedTreeSourceNode[],\n id: string,\n props: Partial<NormalisedTreeSourceNode>\n): NormalisedTreeSourceNode[] => {\n let childNodes;\n const newNodes = nodes.map((node) => {\n if (node.id === id) {\n return {\n ...node,\n ...props,\n };\n } else if (isDescendantOf(node, id)) {\n childNodes = replaceNode(node.childNodes, id, props);\n return {\n ...node,\n childNodes,\n };\n } else {\n return node;\n }\n });\n\n return newNodes;\n};\n", "import { KeyboardEvent } from \"react\";\n\nfunction union(set1: Set<string>, ...sets: Set<string>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const Backspace = \"Backspace\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Delete = \"Delete\";\n\nconst actionKeys = new Set([Enter, Delete]);\nconst focusKeys = new Set([\"Tab\"]);\n// const navigationKeys = new Set([\"Home\", \"End\", \"ArrowRight\", \"ArrowLeft\",\"ArrowDown\", \"ArrowUp\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst verticalNavigationKeys = new Set([\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\"]);\nconst horizontalNavigationKeys = new Set([\n \"Home\",\n \"End\",\n \"ArrowRight\",\n \"ArrowLeft\",\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n horizontalNavigationKeys,\n verticalNavigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: KeyboardEvent) => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n if (typeof evt.which === \"number\" && evt.which > 0) {\n return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which !== 8;\n }\n};\n\nexport const isNavigationKey = (\n { key }: KeyboardEvent,\n orientation = \"vertical\"\n) => {\n const navigationKeys =\n orientation === \"vertical\"\n ? verticalNavigationKeys\n : horizontalNavigationKeys;\n return navigationKeys.has(key);\n};\n", "import { useRef, useState } from \"react\";\nimport { isGroupNode, isHeader } from \"./hierarchical-data-utils\";\nimport { isExpanded, NormalisedTreeSourceNode } from \"./Tree\";\n\nconst populateIndices = (\n nodes: NormalisedTreeSourceNode[],\n results: NormalisedTreeSourceNode[] = [],\n idx = { value: 0 }\n) => {\n let skipToNextHeader = false;\n for (const node of nodes) {\n if (skipToNextHeader && !isHeader(node)) {\n continue;\n } else {\n results[idx.value] = node;\n idx.value += 1;\n skipToNextHeader = false;\n if (isHeader(node) && node.expanded === false) {\n skipToNextHeader = true;\n } else if (isGroupNode(node)) {\n if (isExpanded(node)) {\n populateIndices(node.childNodes, results, idx);\n }\n }\n }\n }\n return results;\n};\n\n//TODO return a read-only data structure\n// Question: is source changes at runtime, do we lose any current state ?\nexport const useHierarchicalData = (source: NormalisedTreeSourceNode[]) => {\n // console.log(`%c[useHierarchicalData<${label}>] entry`, 'color: green; font-weight: bold;');\n\n const externalSource = useRef(source);\n const statefulSource = useRef(source);\n const indexPositions = useRef(populateIndices(source));\n const [, forceUpdate] = useState({});\n\n // Maintain a mapping between nodes and their current index position within the rendered list.\n // This index position is liable to change with every expand/collapse operation. We require this\n // when handling keyboard events - these are List level, not listItem level, so we depend on the\n\n // Client needs to be careful source is not recreated inadvertently on each render\n if (source !== externalSource.current) {\n // console.log(\n // `%cuseHierarchicalData source has changed`,\n // 'color:red;font-weight: bold;',\n // externalSource.current,\n // source\n // );\n externalSource.current = source;\n // we might want to try and merge existing state here ?\n statefulSource.current = source;\n indexPositions.current = populateIndices(source);\n }\n\n const setData = (value: NormalisedTreeSourceNode[]) => {\n statefulSource.current = value;\n indexPositions.current = populateIndices(value);\n // console.log(\n // `data set in ${label} (${indexPositions.current.length} visible items)`,\n // indexPositions.current.map((i) => ({ index: i.index, label: i.label }))\n // );\n forceUpdate({});\n };\n\n return {\n // data, // do we actually use the data anywhere\n data: statefulSource.current,\n indexPositions: indexPositions.current,\n setData,\n };\n};\n", "import { KeyboardEvent, MouseEvent, useCallback, useRef } from \"react\";\nimport { closestListItem } from \"./list-dom-utils\";\nimport { ArrowLeft, ArrowRight, Enter } from \"./key-code\";\nimport { getNodeById, replaceNode } from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nconst NO_HANDLERS: CollapsibleHookResult[\"listHandlers\"] = {};\nconst isToggleElement = (element: HTMLElement) =>\n element && element.hasAttribute(\"aria-expanded\");\n\nexport interface CollapsibleGroupsHookProps {\n collapsibleHeaders?: boolean;\n highlightedIdx: number;\n treeNodes: NormalisedTreeSourceNode[];\n setVisibleData: (nodes: NormalisedTreeSourceNode[]) => void;\n source: NormalisedTreeSourceNode[];\n}\n\nexport interface CollapsibleHookResult {\n listHandlers: {\n onKeyDown?: (e: KeyboardEvent) => void;\n };\n listItemHandlers: {\n onClick: (e: MouseEvent) => void;\n };\n}\n\nexport const useCollapsibleGroups = ({\n collapsibleHeaders,\n highlightedIdx,\n treeNodes,\n setVisibleData,\n source,\n}: CollapsibleGroupsHookProps): CollapsibleHookResult => {\n const fullSource = useRef<NormalisedTreeSourceNode[]>(source);\n const stateSource = useRef<NormalisedTreeSourceNode[]>(fullSource.current);\n\n const setSource = useCallback(\n (value) => {\n setVisibleData((stateSource.current = value));\n },\n [setVisibleData]\n );\n\n const expandNode = useCallback(\n (nodeList: NormalisedTreeSourceNode[], { id }: NormalisedTreeSourceNode) =>\n replaceNode(nodeList, id, { expanded: true }),\n []\n );\n\n const collapseNode = useCallback(\n (nodeList, { id }) => replaceNode(nodeList, id, { expanded: false }),\n []\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === ArrowRight || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded === false) {\n e.preventDefault();\n setSource(expandNode(stateSource.current, node));\n }\n }\n }\n\n if (e.key === ArrowLeft || e.key === Enter) {\n const node = treeNodes[highlightedIdx];\n if (node) {\n if (node.expanded) {\n e.preventDefault();\n setSource(collapseNode(stateSource.current, node));\n }\n }\n }\n },\n [collapseNode, expandNode, highlightedIdx, treeNodes, setSource]\n );\n\n /**\n * These are List handlers, so we will not have reference to the actual node\n * element. We must rely on highlightedIdx to tell us which node is interactive.\n */\n const listHandlers = collapsibleHeaders\n ? {\n onKeyDown: handleKeyDown,\n }\n : NO_HANDLERS;\n\n const handleClick = useCallback(\n (evt) => {\n const el = closestListItem(evt.target);\n if (isToggleElement(el)) {\n evt.stopPropagation();\n evt.preventDefault();\n const node = getNodeById(source, el.id);\n if (node?.expanded === false) {\n setSource(expandNode(source, node));\n } else if (node?.expanded === true) {\n setSource(collapseNode(source, node));\n }\n }\n },\n [collapseNode, expandNode, setSource, source]\n );\n\n const listItemHandlers = {\n onClick: handleClick,\n };\n\n return {\n listHandlers,\n listItemHandlers,\n };\n};\n", "import { useCallback } from \"react\";\nimport { ArrowLeft } from \"./key-code\";\nimport {\n getNodeById,\n getNodeParentPath,\n getIndexOfNode,\n} from \"./hierarchical-data-utils\";\nimport { NormalisedTreeSourceNode } from \"./Tree\";\n\nexport interface TreeKeyboardNavigationHookProps {\n highlightedIdx: number;\n hiliteItemAtIndex: (idx: number) => void;\n indexPositions: NormalisedTreeSourceNode[];\n source: NormalisedTreeSourceNode[];\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useTreeKeyboardNavigation = ({\n highlightedIdx,\n hiliteItemAtIndex,\n indexPositions,\n source,\n}: TreeKeyboardNavigationHookProps) => {\n const handleKeyDown = useCallback(\n (e) => {\n if (e.key === ArrowLeft) {\n const node = indexPositions[highlightedIdx];\n const parentId = getNodeParentPath(node);\n if (parentId) {\n e.preventDefault();\n const parentNode = getNodeById(source, parentId);\n if (parentNode) {\n const idx = getIndexOfNode(indexPositions, parentNode);\n if (idx !== undefined) {\n hiliteItemAtIndex(idx);\n }\n }\n }\n }\n },\n [highlightedIdx, hiliteItemAtIndex, indexPositions, source]\n );\n\n const listHandlers = {\n onKeyDown: handleKeyDown,\n };\n\n return {\n listHandlers,\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["forwardRef", "useCallback", "clsx", "makePrefixer", "Button", "makePrefixer", "Tooltip", "useId", "ChevronLeftIcon", "ChevronRightIcon", "clsx", "forwardRef", "Popup", "Portal", "useId", "useForkRef", "cx", "Children", "cloneElement", "forwardRef", "useRef", "regExp", "escapeRegExp", "string", "forwardCallbackProps", "ownProps", "overrideProps", "map", "name", "ownProp", "overrideProp", "args", "useControlled", "useForkRef", "useCallback", "useRef", "useState", "cloneElement", "createContext", "useContext", "jsx", "CollectionContext", "CollectionProvider", "children", "collectionHook", "props", "useCollection", "collection", "isPlainObject", "obj", "itemToString", "item", "isPlainObject", "useCallback", "useMemo", "useRef", "useState", "isValidElement", "isValidElement", "Children", "ListItemGroup", "_", "ListItemHeader", "_", "sourceItemHasProp", "item", "propertyName", "isHeader", "isGroupNode", "childItemHasProp", "isDisabled", "isValidElement", "isFocusable", "countChildItems", "items", "idx", "i", "count", "getChildLabel", "element", "childIsHeader", "child", "ListItemHeader", "childIsGroup", "ListItemGroup", "childIsSelectable", "getChildNodes", "children", "childItems", "mapReactElementChildren", "fn", "childElements", "Children", "sourceItems", "source", "options", "_a", "_b", "itemToString", "dataId", "disabled", "id", "dataExpanded", "expanded", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "PATH_SEPARATORS", "isDescendantOf", "basePath", "targetPath", "replaceCollectionItem", "nodes", "props", "childNodes", "node", "leftTrim", "value", "getDefaultFilterRegex", "escapeRegExp", "getDefaultFilter", "inputValue", "getFilterRegex", "itemValue", "isSelected", "selectedId", "item", "isValidElement", "useCallback", "useEffect", "useRef", "useState", "useControlled", "controlled", "defaultProp", "name", "state", "isControlled", "valueState", "setValue", "value", "defaultValue", "ignoreReactElements", "setValueIfUncontrolled", "newValue", "key", "defaultCollectionOptions", "useCollectionItems", "children", "idRoot", "options", "source", "_a", "_b", "getItemId", "forceUpdate", "useState", "inheritedCollectionHook", "useCollection", "dataRef", "useRef", "flattenedDataRef", "EMPTY_COLLECTION", "useMemo", "filterPattern", "disableFilter", "getFilterRegex", "getDefaultFilterRegex", "noChildrenLabel", "itemToString", "isExpanded", "useCallback", "addMetadataToItems", "items", "indexer", "level", "path", "results", "flattenedCollection", "flattenedSource", "item", "i", "all", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "childPath", "id", "expanded", "normalisedItem", "countChildItems", "isDisabled", "isFocusable", "getFilter", "getDefaultFilter", "collectVisibleItems", "filter", "idx", "skipToNextHeader", "isHeader", "isGroupNode", "partialCollectionItems", "sourceItems", "childItems", "collectionItems", "collectionItemsRef", "setFilterPattern", "pattern", "itemById", "target", "sourceWithId", "isParentPath", "indexOfItemById", "toCollectionItem", "collectionItem", "isValidElement", "itemToCollectionItem", "sel", "result", "itemToCollectionItemId", "selectedCollectionItem", "stringToCollectionItem", "value", "itemToId", "collapseGroupItem", "replaceCollectionItem", "expandGroupItem", "useCallback", "useEffect", "useLayoutEffect", "useRef", "WidthHeight", "WidthOnly", "HeightOnly", "observedMap", "getTargetSize", "element", "size", "dimension", "resizeObserver", "entries", "entry", "target", "borderBoxSize", "contentBoxSize", "observedTarget", "height", "width", "contentHeight", "contentWidth", "onResize", "measurements", "sizeChanged", "newSize", "useResizeObserver", "ref", "dimensions", "reportInitialSize", "dimensionsRef", "measure", "map", "dim", "registerObserver", "record", "isSingleSelection", "s", "isMultiSelection", "selectionIsDisallowed", "selection", "allowMultipleSelection", "selectionStrategy", "specialKey", "deselectionIsAllowed", "hasSelection", "selected", "getFirstSelectedItem", "useCallback", "useRef", "useState", "isSimpleStateValue", "arg", "useStateRef", "initialValue", "value", "_setValue", "ref", "setValue", "prev", "useEffect", "useRef", "NO_HANDLERS", "useClickAway", "popperRef", "rootRef", "isOpen", "onClose", "openRef", "clickHandler", "escapeKeyHandler", "evt", "_a", "_b", "targetElement", "e", "NO_OBSERVER", "useDropdownBase", "defaultIsOpen", "disabled", "fullWidthProp", "id", "isOpenProp", "onOpenChange", "onKeyDownProp", "openKeys", "openOnFocus", "popupComponent", "popupWidthProp", "rootRef", "width", "_a", "justFocused", "useRef", "popperRef", "popperCallbackRef", "useCallback", "element", "isOpen", "setIsOpen", "useControlled", "popup", "setPopup", "useState", "showDropdown", "hideDropdown", "reason", "useClickAway", "handleTriggerFocus", "handleTriggerToggle", "e", "newIsOpen", "handleKeydown", "evt", "handleBlur", "fullWidth", "useResizeObserver", "WidthOnly", "componentId", "triggerProps", "dropdownComponentProps", "popupComponentRef", "useForkRef", "jsx", "jsxs", "classBase", "DropdownBase", "forwardRef", "PopupProps", "ariaLabelledByProp", "children", "classNameProp", "defaultIsOpen", "disabled", "fullWidth", "idProp", "isOpenProp", "onKeyDown", "onOpenChange", "openKeys", "openOnFocus", "placement", "popupWidth", "width", "htmlAttributes", "forwardedRef", "rootRef", "useRef", "className", "cx", "trigger", "popupComponent", "Children", "id", "useId", "componentProps", "isOpen", "popupComponentRef", "triggerProps", "useDropdownBase", "getTriggerComponent", "defaultId", "defaultRole", "restTriggerProps", "role", "ownProps", "cloneElement", "forwardCallbackProps", "getPopupComponent", "restComponentProps", "ownWidth", "ref", "useForkRef", "Portal", "Popup", "Button", "cx", "forwardRef", "jsx", "jsxs", "classBase", "DropdownButton", "forwardRef", "ariaHideOptionRole", "className", "disabled", "icon", "isOpen", "label", "labelId", "fullWidth", "posInSet", "setSize", "labelAriaAttributes", "rest", "ref", "Button", "cx", "useForkRef", "cloneElement", "forwardRef", "useCallback", "useRef", "useId", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Escape", "Home", "End", "PageUp", "PageDown", "Space", "actionKeys", "focusKeys", "arrowLeftRightKeys", "navigationKeys", "functionKeys", "specialKeys", "isCharacterKey", "evt", "isNavigationKey", "key", "useCallback", "NO_HANDLERS", "canToggleItem", "item", "canSelectItem", "_", "toggleIconClicked", "el", "useCollapsibleGroups", "collapsibleHeaders", "collectionHook", "highlightedIdx", "onToggle", "handleKeyDown", "useCallback", "e", "ArrowRight", "Enter", "ArrowLeft", "listHandlers", "evt", "listItemElement", "listEl", "listItemIdx", "listItemIndex", "listItemEl", "idx", "listItemId", "el", "closestListItem", "closestListItemId", "closestListItemIndex", "useImperativeHandle", "useMemo", "noScrolling", "useImperativeScrollingAPI", "collectionHook", "forwardedRef", "scrollableRef", "scrollIntoView", "scrollHandles", "itemIndex", "collectionItem", "item", "scrollOffset", "useControlled", "useCallback", "useMemo", "useRef", "useState", "getElementByDataIndex", "isValidNumber", "LIST_FOCUS_VISIBLE", "nextItemIdx", "count", "key", "idx", "ArrowUp", "End", "getIndexOfSelectedItem", "selected", "_a", "selectedItemId", "getFirstSelectedItem", "el", "index", "getStartIdx", "selectedIdx", "length", "Home", "pageDown", "containerEl", "itemEl", "itemCount", "itemTop", "scrollTop", "clientHeight", "scrollHeight", "lastIndexPosition", "newScrollTop", "nextIdx", "nextRect", "pageUp", "resolve", "isLeaf", "element", "isFocusable", "container", "targetEl", "useKeyboardNavigation", "containerRef", "defaultHighlightedIndex", "disableHighlightOnFocus", "highlightedIndexProp", "onHighlight", "onKeyboardNavigation", "restoreLastFocus", "viewportItemCount", "lastFocus", "useRef", "forceRender", "useState", "highlightedIndex", "setHighlightedIdx", "isControlledHighlighting", "useControlled", "setHighlightedIndex", "useCallback", "fromKeyboard", "nextPageItemIdx", "result", "PageDown", "nextFocusableItemIdx", "ArrowDown", "isEnd", "isHome", "indexOfSelectedItem", "startIdx", "keyboardNavigation", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "selectedItemIdx", "hasSelection", "navigateChildItems", "e", "PageUp", "handleKeyDown", "isNavigationKey", "isCharacterKey", "containerProps", "useMemo", "sourceTarget", "destTarget", "getElementByDataIndex", "getElementDataIndex", "isSelectableElement", "useCallback", "useRef", "CHECKBOX", "GROUP_SELECTION_NONE", "GROUP_SELECTION_SINGLE", "GROUP_SELECTION_CASCADE", "defaultSelectionKeys", "groupSelectionEnabled", "groupSelection", "useSelection", "containerRef", "defaultSelected", "disableSelection", "highlightedIndex", "itemQuery", "onClick", "onSelect", "onSelectionChange", "selectedProp", "selectionStrategy", "selectionKeys", "tabToSelect", "isDeselectable", "isMultipleSelect", "isExtendedSelect", "lastActive", "useRef", "isSelectionEvent", "useCallback", "evt", "selected", "setSelected", "useControlled", "isItemSelected", "itemId", "selectDeselectable", "selectMultiple", "nextItems", "i", "selectRange", "idx", "preserveExistingSelection", "currentSelection", "lastSelectedItemId", "lastSelectedItemIndex", "getElementDataIndex", "startRegion", "endRegion", "container", "rangeSelection", "el", "selectItemAtIndex", "rangeSelect", "id", "getElementByDataIndex", "newSelected", "handleKeyDown", "element", "isSelectableElement", "handleKeyboardNavigation", "currentIndex", "handleClick", "selectionIsDisallowed", "useCallback", "useRef", "useTypeahead", "disableTypeToSelect", "highlightedIdx", "highlightItemAtIndex", "typeToNavigate", "items", "applyIncrementalSearch", "keyDownTimer", "useRef", "searchChars", "startIdx", "applySearch", "useCallback", "intermediateSearch", "regex", "idx", "label", "i", "handleKeyDown", "e", "searchInProgress", "isCharacterKey", "Space", "useCallback", "useRef", "useIsomorphicLayoutEffect", "HeightOnly", "HeightWithScroll", "EMPTY_ARRAY", "ObservedDimensions", "getObservedDimensions", "containerOnly", "NULL_REF", "getItemTop", "element", "offsetContainer", "transform", "pos", "offsetParent", "top", "useViewportTracking", "containerRef", "contentRef", "highlightedIdx", "indexPositions", "stickyHeaders", "scrolling", "useRef", "viewport", "scrollTo", "useCallback", "scrollPos", "scrollToStart", "scrollToEnd", "scrollIntoViewIfNeeded", "item", "el", "viewportHeight", "targetEl", "headerHeight", "itemTop", "itemHeight", "scrollTop", "viewportStart", "viewportEnd", "newScrollTop", "height", "contentHeight", "firstItem", "lastItem", "onContainerResize", "scrollHeight", "onContentResize", "containerDimensions", "contentDimensions", "useResizeObserver", "makePrefixer", "Fragment", "jsx", "withBaseName", "makePrefixer", "Highlighter", "props", "matchPattern", "text", "matchRegex", "escapeRegExp", "part", "index", "forwardRef", "cx", "cx", "jsx", "classBase", "CheckboxIcon", "checked", "disabled", "htmlAttributes", "cx", "jsx", "jsxs", "classBase", "ListItemProxy", "forwardRef", "height", "htmlAttributes", "forwardedRef", "cx", "ListItem", "children", "classNameProp", "disabled", "tabIndex", "item", "itemHeight", "itemTextHighlightPattern", "label", "_notUsed", "selected", "showCheckbox", "styleProp", "props", "className", "style", "CheckboxIcon", "Highlighter", "MeasuredContainer", "useId", "useForkRef", "cx", "cloneElement", "forwardRef", "isValidElement", "useCallback", "useRef", "useState", "useLayoutEffectSkipFirst", "useCallback", "useMemo", "useRef", "FWD", "BWD", "createContext", "useCallback", "useContext", "useMemo", "boxContainsPoint", "dispatchCustomEvent", "useCallback", "useRef", "useGlobalDragDrop", "onDragOverDropTarget", "onDrop", "dropTargetRef", "measuredDropTargetsRef", "dragDropStateRef", "mousePosRef", "overDropTarget", "x", "y", "dropTargets", "id", "measuredTarget", "dragMouseMoveHandler", "evt", "clientX", "clientY", "dragDropState", "draggableElement", "mouseOffset", "dragPosX", "dragPosY", "dropTargetId", "dragMouseUpHandler", "resumeDrag", "jsx", "NO_DRAG_CONTEXT", "unconfiguredRegistrationCall", "DragDropContext", "createContext", "measureDropTargets", "dropTargetIds", "map", "id", "el", "top", "right", "bottom", "left", "DragDropProvider", "children", "dragSourcesProp", "resumeDragHandlers", "useMemo", "dropHandlers", "handleDragOverDropTarget", "useCallback", "dropTargetId", "dragDropState", "resumeDrag", "handleDrop", "measuredDropTargetsRef", "useGlobalDragDrop", "dragSources", "dropTargets", "sources", "targets", "sourceId", "sourceEntry", "targetIds", "targetId", "targetEntry", "onDragOut", "onEndOfDragOperation", "registerDragDropParty", "onDrop", "contextValue", "useDragDropProvider", "_a", "_b", "useContext", "isDragSource", "isDropTarget", "DragDropState", "mousePosition", "dragElement", "el", "payload", "clientX", "clientY", "draggableRect", "isOverflowElement", "dispatchCustomEvent", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "useForkRef", "cx", "forwardRef", "useCallback", "useMemo", "Popup", "Portal", "jsx", "makeClassNames", "classNames", "className", "Draggable", "forwardRef", "wrapperClassName", "element", "onDropped", "onTransitionEnd", "style", "scale", "forwardedRef", "handleVuuDrop", "useCallback", "callbackRef", "el", "forkedRef", "useForkRef", "position", "useMemo", "Portal", "Popup", "cx", "createDragSpacer", "transitioning", "spacer", "createDropIndicatorPosition", "createDropIndicator", "LEFT_RIGHT", "TOP_BOTTOM", "NOT_OVERFLOWED", "NOT_HIDDEN", "cloneElement", "element", "dolly", "measureElementSizeAndPosition", "dimension", "includeAutoMargin", "pos", "size", "position", "padEnd", "padStart", "style", "start", "end", "marginStart", "marginEnd", "minWidth", "flexBasis", "DIMENSIONS", "dimensions", "orientation", "getItemById", "measuredItems", "id", "result", "item", "removeDraggedItem", "index", "i", "measureDropTargets", "container", "itemQuery", "viewportRange", "draggedItemId", "dragThresholds", "DIMENSION", "children", "itemCount", "isLast", "getIndexOfDraggedItem", "dropTargets", "absoluteIndex", "indexOfDraggedItem", "d", "draggedItemOriginalIndex", "minIndex", "min", "mutateDropTargetsSwitchDropTargetPosition", "direction", "indexOfTarget", "draggedItem", "targetItem", "diff", "draggedStart", "draggedEnd", "newDraggedItem", "targetStart", "targetEnd", "newTargetItem", "getNextDropTarget", "draggedItemSize", "mouseMoveDirection", "len", "leadingEdge", "dropTarget", "constrainRect", "targetRect", "constraintRect", "height", "left", "top", "width", "constrainedHeight", "constrainedWidth", "dropTargetsDebugString", "_a", "getScrollableContainer", "firstItem", "immediateParent", "isContainerScrollable", "scrollableContainer", "SCROLL_SIZE", "CLIENT_SIZE", "scrollSize", "clientSize", "useCallback", "useRef", "useAutoScroll", "containerRef", "onScrollingStopped", "orientation", "scrollTimer", "useRef", "isScrolling", "scrollPosRef", "lastScrollDirectionRef", "stopScrolling", "useCallback", "atEnd", "startScrolling", "direction", "scrollRate", "scrollUnit", "container", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "scrollPos", "scrollSize", "clientSize", "maxScroll", "nextScroll", "useCallback", "useRef", "useDragDropCopy", "selected", "viewportRange", "rangeRef", "beginDrag", "dragElement", "drag", "drop", "useCallback", "useRef", "useState", "useCallback", "useMemo", "useDropIndicator", "spacer", "useMemo", "createDropIndicatorPosition", "clearSpacer", "useCallback", "dropTarget", "dropZone", "jsx", "NOT_OVERFLOWED", "NOT_HIDDEN", "useDragDropIndicator", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "useRef", "dropIndicatorRef", "dropTargetRef", "dropZoneRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "useState", "dropIndicator", "setDropIndicator", "clearSpacer", "positionDropIndicator", "useDropIndicator", "draggedItemRef", "fullItemQuery", "indexOf", "dropTarget", "d", "reposition", "distance", "indexShift", "rangeRef", "handleScrollStart", "useCallback", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "nextDropTarget", "getNextDropTarget", "beginDrag", "dragElement", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "getItemById", "targetIndex", "removeDraggedItem", "range", "i", "dropZone", "dropIndicatorPosition", "top", "left", "width", "dropIndicatorRect", "Draggable", "createDropIndicator", "drag", "dragPos", "mouseMoveDirection", "currentDropTarget", "START", "drop", "fromIndex", "dropBefore", "originalDropTargetIndex", "currentDropTargetIndex", "releaseDrag", "useCallback", "useMemo", "useRef", "useState", "useCallback", "useMemo", "useRef", "useDragDisplacers", "orientation", "animationFrame", "useRef", "transitioning", "spacers", "useMemo", "createDragSpacer", "animateTransition", "useCallback", "size", "propertyName", "spacer1", "spacer2", "clearSpacers", "useTransition", "spacer", "cleanup", "cancelAnyPendingAnimation", "displaceItem", "dropTargets", "dropTarget", "direction", "mutateDropTargetsSwitchDropTargetPosition", "displaceLastItem", "dispatchMouseEvent", "useDragDropNaturalMovement", "onDrop", "orientation", "containerRef", "itemQuery", "selected", "viewportRange", "dragDirectionRef", "useRef", "isScrollable", "dragPosRef", "measuredDropTargets", "overflowMenuShowingRef", "showOverflow", "setShowOverflow", "useState", "clearSpacers", "displaceItem", "displaceLastItem", "useDragDisplacers", "draggedItemRef", "fullItemQuery", "NOT_OVERFLOWED", "NOT_HIDDEN", "indexOf", "dropTarget", "d", "rangeRef", "handleScrollStart", "useCallback", "handleScrollStop", "scrollDirection", "_scrollPos", "atEnd", "container", "draggedItem", "measureDropTargets", "size", "midPos", "dropTargets", "getNextDropTarget", "nextInsertPos", "nextDropTarget", "beginDrag", "dragElement", "internalDrag", "SCROLL_SIZE", "CLIENT_SIZE", "dimensions", "draggedItemId", "scrollSize", "clientSize", "indexOfDraggedItem", "getIndexOfDraggedItem", "dragPos", "index", "start", "end", "mid", "indexOfDropTarget", "i", "target", "showPopup", "hidePopup", "useMemo", "popupShowing", "button", "dispatchMouseEvent", "drag", "mouseMoveDirection", "overflowIndicator", "drop", "_a", "absoluteIndexDraggedItem", "scrollTop", "releaseDrag", "jsx", "NULL_DRAG_DROP_RESULT", "UNBOUNDED", "noDragDrop", "dragThreshold", "getDraggableElement", "el", "query", "getLastElement", "container", "itemQuery", "fullItemQuery", "NOT_OVERFLOWED", "lastElement", "isOverflowElement", "useDragDrop", "allowDragDrop", "containerRef", "draggableClassName", "getDragPayload", "id", "onDragStart", "onDrop", "onDropSettle", "orientation", "dragDropProps", "dragBoundaries", "useRef", "draggableStatus", "setDraggableStatus", "useState", "dragDropStateRef", "mouseDownTimer", "isScrollableRef", "mousedownElementRef", "mousePosRef", "startPosRef", "settlingItemRef", "scrollableContainerRef", "dropPosRef", "dropIndexRef", "handleScrollStopRef", "isDragSource", "isDropTarget", "onDragOut", "onEndOfDragOperation", "register", "useDragDropProvider", "dragMouseMoveHandlerRef", "dragMouseUpHandlerRef", "attachDragHandlers", "useCallback", "dragMove", "dragUp", "removeDragHandlers", "setDragBoundaries", "containerRect", "draggableRect", "lastItemIsOverflowIndicator", "CONTRA", "CONTRA_END", "DIMENSION", "END", "START", "dimensions", "draggableSize", "lastItemStart", "lastItemEnd", "terminateDrag", "_a", "settlingItem", "toIndex", "droppedItem", "status", "dispatchCustomEvent", "getScrollDirection", "mousePos", "mouseOffset", "POS", "SCROLL_POS", "SCROLL_SIZE", "CLIENT_SIZE", "scrollPos", "scrollSize", "clientSize", "maxScroll", "canScrollFwd", "viewportEnd", "bwd", "fwd", "useDragDropHook", "useDragDropNaturalMovement", "useDragDropIndicator", "useDragDropCopy", "onScrollingStopped", "scrollDirection", "atEnd", "isScrolling", "startScrolling", "stopScrolling", "useAutoScroll", "handleDrop", "fromIndex", "options", "beginDrag", "drag", "drop", "handleScrollStart", "handleScrollStop", "releaseDrag", "dragResult", "dragHandedOvertoProvider", "dragDistance", "clientContraPos", "CONTRA_POS", "lastClientContraPos", "dragOutDistance", "handoverToProvider", "dragMouseMoveHandler", "evt", "CLIENT_POS", "CONTRA_CLIENT_POS", "clientX", "clientY", "clientPos", "lastClientPos", "dragDropState", "draggableElement", "dragPosX", "dragPosY", "mouseMoveDirection", "dragPos", "renderDragPos", "dragMouseUpHandler", "resumeDrag", "dragStart", "mousePosition", "target", "dragElement", "scrollableContainer", "getScrollableContainer", "isContainerScrollable", "DragDropState", "index", "Draggable", "cloneElement", "constrainRect", "preDragMouseMoveHandler", "mouseDownPosition", "preDragMouseUpHandler", "mouseDownHandler", "useLayoutEffect", "dropPos", "targetTop", "targetLeft", "style", "currentLeft", "currentTop", "useEffect", "useCallback", "useEffect", "useRef", "useListDrop", "dataHook", "onDrop", "onMoveListItem", "selected", "setHighlightedIndex", "setSelected", "selectedByIndexRef", "useRef", "dataHookRef", "adjustIndex", "useCallback", "index", "fromIndex", "toIndex", "reorderSelectedIndices", "id", "item", "handleDrop", "options", "hasSelection", "handleDropSettle", "useEffect", "selectedByIndex", "postDropSelected", "i", "useList", "allowDragDrop", "collapsibleHeaders", "dataHook", "containerRef", "contentRef", "defaultHighlightedIndex", "defaultSelected", "disabled", "disableAriaActiveDescendant", "disableHighlightOnFocus", "disableTypeToSelect", "highlightedIndexProp", "id", "label", "listHandlersProp", "onClickProp", "onDragStart", "onDrop", "onHighlight", "onKeyboardNavigation", "onKeyDown", "onMoveListItem", "onSelect", "onSelectionChange", "restoreLastFocus", "scrollContainerRef", "selected", "selectionStrategy", "selectionKeys", "stickyHeaders", "tabToSelect", "viewportRange", "lastSelection", "useRef", "handleKeyboardNavigation", "evt", "nextIndex", "_a", "_b", "selectionHook", "handleSelect", "useCallback", "selectedId", "scrollContainer", "useMemo", "handleSelectionChange", "isSingleSelection", "selectedItem", "isMultiSelection", "selectedItems", "highlightedIndex", "navigationKeyDown", "navigationMouseMove", "navigationControlProps", "setHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "handleDragStart", "dragDropState", "useSelection", "handleDrop", "onDropSettle", "useListDrop", "setSelected", "useLayoutEffectSkipFirst", "hasSelection", "onMouseDown", "isDragging", "isDragDropScrolling", "dragDropHook", "useDragDrop", "typeaheadOnKeyDown", "useTypeahead", "handleKeyDown", "_c", "isViewportScrolling", "scrollIntoView", "useViewportTracking", "isScrolling", "handleMouseMove", "idx", "closestListItemIndex", "item", "getActiveDescendant", "listControlProps", "listHandlers", "useCallback", "useMemo", "useRef", "useState", "getContentHeight", "itemCount", "itemHeight", "itemGapSize", "useListHeight", "displayedItemCount", "getItemHeight", "height", "itemHeightProp", "size", "measuredItemHeight", "setMeasuredItemHeight", "useState", "forceUpdate", "proxyItemRef", "useRef", "contentHeight", "computedListHeight", "useMemo", "result", "preferredItemCount", "total", "_", "index", "handleRowHeight", "useCallback", "rowHeightProxyRef", "el", "useResizeObserver", "HeightOnly", "useIsomorphicLayoutEffect", "useCallback", "useMemo", "useRef", "useState", "getRange", "scrollPos", "height", "itemCount", "itemHeight", "viewportRowCount", "from", "to", "useScrollPosition", "listHeight", "listItemCount", "listItemGapSize", "listItemHeight", "onViewportScroll", "firstVisibleRowRef", "lastVisibleRowRef", "scrollPosRef", "range", "viewportRange", "setViewportRange", "e", "scrollTop", "Fragment", "jsx", "jsxs", "createElement", "defaultEmptyMessage", "classBase", "List", "forwardRef", "ListItem", "ListPlaceholder", "allowDragDrop", "children", "className", "collapsibleHeaders", "defaultHighlightedIndex", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "focusVisibleProp", "getItemHeightProp", "getItemId", "height", "highlightedIndexProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "listHandlersProp", "maxHeight", "maxWidth", "minHeight", "minWidth", "onClickProp", "onDragStart", "onDrop", "onMoveListItem", "onSelect", "onSelectionChange", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "checkable", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabIndex", "tabToSelect", "htmlAttributes", "forwardedRef", "_a", "_b", "id", "useId", "containerRef", "useRef", "scrollContainerRef", "contentContainerRef", "size", "setSize", "useState", "handleResize", "useCallback", "collectionHook", "useCollectionItems", "listClientHeight", "computedListHeight", "listItemHeight", "rowHeightProxyRef", "useListHeight", "onVerticalScroll", "viewportRange", "useScrollPosition", "draggable", "draggedItemIndex", "dropIndicator", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "listItemHeaderHandlers", "scrollIntoView", "selected", "useList", "useImperativeScrollingAPI", "appliedFocusVisible", "createHeader", "idx", "headerId", "title", "expanded", "header", "cx", "getItemHeight", "renderCollectionItem", "list", "item", "disabled", "value", "itemId", "label", "isChildItem", "isValidElement", "listItemProps", "isSelected", "cloneElement", "addGroup", "items", "count", "childItems", "renderCollectionItems", "end", "listItems", "renderEmpty", "isEmpty", "renderContent", "itemsToRender", "contentHeight", "sizeStyles", "MeasuredContainer", "LIST_FOCUS_VISIBLE", "useForkRef", "ListItemProxy", "makePrefixer", "useForkRef", "useIdMemo", "clsx", "forwardRef", "memo", "useRef", "useMemo", "KeySet", "from", "to", "keyValue", "rowIndex", "size", "nextKeyValue", "byKey", "k1", "k2", "renderBuffer", "useVirtualization", "data", "listItemGapSize", "listItemHeight", "viewportRange", "keys", "useMemo", "KeySet", "rowHeightWithGap", "lo", "hi", "value", "idx", "jsx", "jsxs", "defaultEmptyMessage", "withBaseName", "makePrefixer", "ListItem", "memo", "VirtualizedList", "forwardRef", "borderless", "children", "className", "collapsibleHeaders", "defaultHighlightedIdx", "defaultSelected", "listDisabled", "disableFocus", "disableTypeToSelect", "displayedItemCount", "emptyMessage", "getItemHeight", "getItemId", "height", "highlightedIdxProp", "idProp", "itemGapSize", "itemHeightProp", "itemTextHighlightPattern", "itemToString", "maxHeight", "maxWidth", "minHeight", "minWidth", "onDragStart", "onDrop", "onSelect", "onSelectionChange", "onViewportScroll", "onHighlight", "restoreLastFocus", "selectedProp", "selectionStrategy", "scrollingApiRef", "selectionKeys", "showEmptyMessage", "source", "styleProp", "stickyHeaders", "tabToSelect", "width", "htmlAttributes", "forwardedRef", "id", "useIdMemo", "rootRef", "useRef", "rowHeightProxyRef", "collectionHook", "useCollectionItems", "contentHeight", "listItemHeight", "listHeight", "useListHeight", "focusVisible", "highlightedIndex", "listControlProps", "listHandlers", "scrollIntoView", "selected", "useList", "onVerticalScroll", "viewportRange", "useScrollPosition", "data", "useVirtualization", "useImperativeScrollingAPI", "addItem", "list", "row", "idx", "key", "offset", "pos", "item", "index", "clsx", "isSelected", "renderItems", "end", "listItems", "renderEmpty", "renderContent", "sizeStyles", "useForkRef", "ListItemProxy", "cx", "jsx", "classBase", "RadioIcon", "checked", "htmlAttributes", "cx", "useControlled", "useCallback", "useMemo", "useDropdown", "collectionHook", "defaultHighlightedIndexProp", "defaultIsOpen", "defaultSelected", "highlightedIndexProp", "isOpenProp", "itemToString", "listRef", "onHighlight", "onOpenChange", "onSelectionChange", "onSelect", "selected", "selectionStrategy", "isMultiSelect", "isMultiSelection", "isOpen", "setIsOpen", "useControlled", "handleSelectionChange", "useCallback", "evt", "handleSelect", "listHook", "useList", "handleOpenChange", "open", "triggerLabel", "useMemo", "selectedItems", "id", "item", "jsx", "jsxs", "Dropdown", "forwardRef", "ariaLabel", "children", "defaultIsOpen", "defaultSelected", "idProp", "isOpenProp", "itemToString", "onOpenChange", "onSelectionChange", "onSelect", "selectedProp", "selectionStrategy", "source", "triggerComponent", "ListItem", "ListProps", "width", "props", "forwardedRef", "id", "useId", "rootRef", "useRef", "listRef", "forkedRef", "useForkRef", "collectionHook", "useCollectionItems", "highlightedIndex", "triggerLabel", "listHandlers", "listControlProps", "selected", "dropdownListHook", "useDropdown", "itemIdToItem", "useCallback", "itemId", "getTriggerComponent", "ariaProps", "ownProps", "cloneElement", "forwardCallbackProps", "DropdownButton", "CollectionProvider", "DropdownBase", "List", "createContext", "useContext", "CalendarContext", "useCalendarContext", "context", "_check_private_redeclaration", "obj", "privateCollection", "_class_private_field_init", "obj", "privateMap", "value", "_check_private_redeclaration", "$2b4dce13dd5a17fa$export$842a2cf37af977e1", "amount", "numerator", "$3b62074eb05584b2$var$EPOCH", "$3b62074eb05584b2$export$f297eb839006d339", "era", "year", "month", "day", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "y1", "monthOffset", "$3b62074eb05584b2$export$553d7fa8e3805fc0", "$3b62074eb05584b2$export$4475b7e617eb123c", "$3b62074eb05584b2$var$daysInMonth", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "jd", "jd0", "depoch", "quadricent", "dqc", "$2b4dce13dd5a17fa$export$842a2cf37af977e1", "cent", "dcent", "quad", "dquad", "yindex", "extendedYear", "yearDay", "leapAdj", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "date", "$2fe286d2fb449abb$export$7a5acbd77d414bd9", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "a", "b", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "$14e0f24ef4ac5c92$export$5841f9eb9773f25f", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$629b0a497aa65267", "date", "timeZone", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$2061056d06d7cdf7", "locale", "julian", "dayOfWeek", "$14e0f24ef4ac5c92$var$getWeekStart", "$14e0f24ef4ac5c92$export$461939dd4422153", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$93522d1a439f3617", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "a", "b", "$14e0f24ef4ac5c92$export$c19a80a9721b80f6", "$14e0f24ef4ac5c92$var$timeToMs", "$14e0f24ef4ac5c92$var$localTimeZone", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "date", "$14e0f24ef4ac5c92$export$a2258d9c4118825c", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "$14e0f24ef4ac5c92$export$8b7aa55c66d5569e", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "date", "locale", "dayOfWeek", "$14e0f24ef4ac5c92$export$2061056d06d7cdf7", "$14e0f24ef4ac5c92$export$ef8b6d9133084f4e", "$14e0f24ef4ac5c92$var$cachedRegions", "$14e0f24ef4ac5c92$var$getRegion", "region", "part", "$14e0f24ef4ac5c92$var$getWeekStart", "$2fe286d2fb449abb$export$7a5acbd77d414bd9", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "date", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "year", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "$11d87f3f76e88657$var$epochFromParts", "month", "day", "hour", "minute", "second", "millisecond", "$11d87f3f76e88657$export$59c99f3515d3493f", "ms", "timeZone", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$11d87f3f76e88657$var$getTimeZoneParts", "$11d87f3f76e88657$var$formattersByTimeZone", "formatter", "parts", "namedParts", "part", "$11d87f3f76e88657$var$DAYMILLIS", "$11d87f3f76e88657$var$getValidWallTimes", "date", "timeZone", "earlier", "later", "absolute", "$11d87f3f76e88657$var$isValidWallTime", "parts", "$11d87f3f76e88657$var$getTimeZoneParts", "$11d87f3f76e88657$export$5107c82f94518f5c", "disambiguation", "dateTime", "$11d87f3f76e88657$export$b21e0b124e224484", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "year", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "ms", "offsetBefore", "$11d87f3f76e88657$export$59c99f3515d3493f", "$11d87f3f76e88657$var$DAYMILLIS", "offsetAfter", "valid", "$11d87f3f76e88657$export$e67a095c620b86fe", "$11d87f3f76e88657$export$1b96692a1ba042ac", "offset", "month", "day", "hour", "minute", "second", "millisecond", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$11d87f3f76e88657$export$93522d1a439f3617", "dateTime", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "$11d87f3f76e88657$export$b21e0b124e224484", "date", "time", "hour", "minute", "second", "millisecond", "$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "$11d87f3f76e88657$export$b4a036af3fc0b032", "date", "calendar", "calendarDate", "copy", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$11d87f3f76e88657$export$84c95a83c799e074", "timeZone", "disambiguation", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$11d87f3f76e88657$export$538b00033cc11c75", "ms", "$11d87f3f76e88657$export$5107c82f94518f5c", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$83aac07b4c37b25", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$735220c2d4774dd3$var$ONE_HOUR", "$735220c2d4774dd3$export$e16d8520af44a096", "date", "duration", "mutableDate", "days", "$735220c2d4774dd3$var$addTimeFields", "$735220c2d4774dd3$var$addYears", "$735220c2d4774dd3$var$balanceYearMonth", "$735220c2d4774dd3$var$constrainMonthDay", "$735220c2d4774dd3$var$balanceDay", "maxYear", "_mutableDate_calendar", "_mutableDate_calendar_isInverseEra", "isInverseEra", "maxMonth", "years", "_date_calendar", "_date_calendar_isInverseEra", "monthsInYear", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$735220c2d4774dd3$export$3e2544e88a25bff8", "inverseDuration", "key", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "fields", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "value", "mutableValue", "$735220c2d4774dd3$export$7555de1e070510cb", "$735220c2d4774dd3$var$balanceTime", "time", "$735220c2d4774dd3$var$nonNegativeMod", "a", "b", "result", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "value", "field", "amount", "options", "mutable", "eras", "eraIndex", "$735220c2d4774dd3$var$cycleValue", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "_mutable_calendar", "_mutable_calendar_isInverseEra", "$735220c2d4774dd3$export$dd02b3e0007dfe28", "hours", "min", "max", "isPM", "round", "div", "$735220c2d4774dd3$export$96b1d28349274637", "dateTime", "duration", "ms", "res", "$735220c2d4774dd3$export$e16d8520af44a096", "$11d87f3f76e88657$export$b21e0b124e224484", "$11d87f3f76e88657$export$5107c82f94518f5c", "$11d87f3f76e88657$export$bd4fb2bc8bb06fb", "$11d87f3f76e88657$export$1b96692a1ba042ac", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$735220c2d4774dd3$export$6814caac34ca03c7", "$735220c2d4774dd3$export$3e2544e88a25bff8", "$735220c2d4774dd3$export$9a297d111fc86b79", "plainDateTime", "minDate", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "minAbsolute", "maxDate", "maxAbsolute", "$735220c2d4774dd3$var$ONE_HOUR", "remainder", "$735220c2d4774dd3$export$31b5430eb18be4f8", "fields", "disambiguation", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "$fae977aafc393c5c$var$requiredDurationTimeGroups", "$fae977aafc393c5c$var$requiredDurationGroups", "$fae977aafc393c5c$export$f59dee82248f5ad4", "time", "$fae977aafc393c5c$export$60dfd74aa96791bd", "date", "gregorianDate", "$11d87f3f76e88657$export$b4a036af3fc0b032", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "$fae977aafc393c5c$export$4223de14708adc63", "$fae977aafc393c5c$var$offsetToString", "offset", "sign", "offsetHours", "offsetMinutes", "$fae977aafc393c5c$export$bf79f1ebf4b18792", "$35ea8db9cb2ccb90$var$shiftArgs", "args", "calendar", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "era", "eras", "year", "month", "day", "$35ea8db9cb2ccb90$var$_type", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "_$35ea8db9cb2ccb90$export$99faa760c7908e4f", "duration", "$735220c2d4774dd3$export$e16d8520af44a096", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "fields", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "field", "amount", "options", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "timeZone", "$11d87f3f76e88657$export$e67a095c620b86fe", "$fae977aafc393c5c$export$60dfd74aa96791bd", "b", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "_class_private_field_init", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$35ea8db9cb2ccb90$var$_type2", "$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "_$35ea8db9cb2ccb90$export$ca871e8dbb80966f", "duration", "$735220c2d4774dd3$export$e16d8520af44a096", "$735220c2d4774dd3$export$4e2d2ead65e5f7e3", "fields", "$735220c2d4774dd3$export$adaa4cf7ef1b65be", "$735220c2d4774dd3$export$e5d5e1c1822b6e56", "field", "amount", "options", "$735220c2d4774dd3$export$d52ced6badfb9a4c", "$735220c2d4774dd3$export$dd02b3e0007dfe28", "timeZone", "disambiguation", "$11d87f3f76e88657$export$e67a095c620b86fe", "$fae977aafc393c5c$export$4223de14708adc63", "b", "res", "$14e0f24ef4ac5c92$export$68781ddf31c0090f", "$14e0f24ef4ac5c92$export$c19a80a9721b80f6", "$11d87f3f76e88657$export$b21e0b124e224484", "args", "_class_private_field_init", "calendar", "era", "year", "month", "day", "$35ea8db9cb2ccb90$var$shiftArgs", "$735220c2d4774dd3$export$c4e2ecac49351ef2", "$35ea8db9cb2ccb90$var$_type3", "$35ea8db9cb2ccb90$export$d3b7288e7994edea", "_$35ea8db9cb2ccb90$export$d3b7288e7994edea", "$735220c2d4774dd3$export$96b1d28349274637", "$735220c2d4774dd3$export$6814caac34ca03c7", "$735220c2d4774dd3$export$31b5430eb18be4f8", "$735220c2d4774dd3$export$9a297d111fc86b79", "$11d87f3f76e88657$export$83aac07b4c37b25", "$fae977aafc393c5c$export$bf79f1ebf4b18792", "$11d87f3f76e88657$export$84c95a83c799e074", "offset", "$62225008020f0a13$var$ERA_START_DATES", "$62225008020f0a13$var$ERA_END_DATES", "$62225008020f0a13$var$ERA_ADDENDS", "$62225008020f0a13$var$ERA_NAMES", "$62225008020f0a13$var$findEraFromGregorianDate", "date", "idx", "$62225008020f0a13$var$toGregorian", "eraAddend", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "$62225008020f0a13$export$b746ab2b60cdffbf", "$3b62074eb05584b2$export$80ee6245ec4f29ec", "jd", "gregorianDate", "end", "endYear", "endMonth", "endDay", "maxYear", "startMonth", "startDay", "cur", "next", "years", "start", "$62225008020f0a13$var$getMinimums", "$8d73d47422ca7302$var$BUDDHIST_ERA_START", "$8d73d47422ca7302$export$42d20a78301dee44", "$3b62074eb05584b2$export$c36e0ecb2d4fa69d", "$8d73d47422ca7302$var$toGregorian", "$3b62074eb05584b2$export$4475b7e617eb123c", "$5f31bd6f0c8940b2$var$TAIWAN_ERA_START", "$5f31bd6f0c8940b2$var$gregorianYear", "$5f31bd6f0c8940b2$var$gregorianToTaiwan", "y", "$5f31bd6f0c8940b2$export$65e01080afcb0799", "extendedYear", "$5f31bd6f0c8940b2$var$toGregorian", "$f3ed2e4472ae7e25$var$PERSIAN_EPOCH", "$f3ed2e4472ae7e25$var$isLeapYear", "y0", "y1", "$2b4dce13dd5a17fa$export$842a2cf37af977e1", "$f3ed2e4472ae7e25$var$persianToJulianDay", "$f3ed2e4472ae7e25$export$37fccdbfd14c5939", "d0", "n2820", "d1", "y2820", "yDay", "$82c358003bdda0a8$var$INDIAN_ERA_START", "$82c358003bdda0a8$var$INDIAN_YEAR_START", "$82c358003bdda0a8$export$39f31c639fa15726", "indianYear", "$3b62074eb05584b2$export$f297eb839006d339", "leapMonth", "$3b62074eb05584b2$export$553d7fa8e3805fc0", "indianMonth", "indianDay", "mDay", "$f2f3e0e3a817edbd$var$CIVIL_EPOC", "$f2f3e0e3a817edbd$var$ASTRONOMICAL_EPOC", "$f2f3e0e3a817edbd$var$UMALQURA_YEAR_START", "$f2f3e0e3a817edbd$var$UMALQURA_YEAR_END", "$f2f3e0e3a817edbd$var$UMALQURA_START_DAYS", "$f2f3e0e3a817edbd$var$islamicToJulianDay", "epoch", "$f2f3e0e3a817edbd$var$julianDayToIslamic", "$f2f3e0e3a817edbd$var$isLeapYear", "$f2f3e0e3a817edbd$export$2066795aadd37bfc", "length", "$f2f3e0e3a817edbd$export$37f0887f2f9d22f7", "$f2f3e0e3a817edbd$var$UMALQURA_DATA", "$f2f3e0e3a817edbd$var$UMALQURA_MONTHLENGTH", "$f2f3e0e3a817edbd$var$UMALQURA_YEAR_START_TABLE", "$f2f3e0e3a817edbd$var$umalquraYearStart", "$f2f3e0e3a817edbd$var$umalquraMonthLength", "mask", "$f2f3e0e3a817edbd$var$umalquraMonthStart", "i", "$f2f3e0e3a817edbd$var$umalquraYearLength", "$f2f3e0e3a817edbd$export$5baab4758c231076", "days", "startDays", "endDays", "m", "d", "yearLength", "monthLength", "c", "yearStart", "$7c5f6fbf42389787$var$HEBREW_EPOCH", "$7c5f6fbf42389787$var$HOUR_PARTS", "$7c5f6fbf42389787$var$DAY_PARTS", "$7c5f6fbf42389787$var$MONTH_DAYS", "$7c5f6fbf42389787$var$MONTH_FRACT", "$7c5f6fbf42389787$var$MONTH_PARTS", "$7c5f6fbf42389787$var$isLeapYear", "$7c5f6fbf42389787$var$hebrewDelay1", "months", "parts", "$7c5f6fbf42389787$var$hebrewDelay2", "last", "present", "$7c5f6fbf42389787$var$startOfYear", "$7c5f6fbf42389787$var$getDaysInYear", "$7c5f6fbf42389787$var$getYearType", "$7c5f6fbf42389787$var$getDaysInMonth", "yearType", "$7c5f6fbf42389787$export$ca405048b8fb5af", "ys", "dayOfYear", "monthStart", "previousDate", "$b956b2d7a6cf451f$var$ETHIOPIC_EPOCH", "$b956b2d7a6cf451f$var$COPTIC_EPOCH", "$b956b2d7a6cf451f$var$AMETE_MIHRET_DELTA", "$b956b2d7a6cf451f$var$ceToJulianDay", "$b956b2d7a6cf451f$var$julianDayToCE", "$b956b2d7a6cf451f$var$getLeapDay", "$b956b2d7a6cf451f$var$getDaysInMonth", "$b956b2d7a6cf451f$export$26ba6eab5e20cd7d", "$b956b2d7a6cf451f$export$d72e0c37005a4914", "$b956b2d7a6cf451f$export$fe6243cbe1a4b7c1", "$64244302c3013299$export$dd0bbc9b26defe37", "name", "$fb18d541ea1ad717$var$formatterCache", "$fb18d541ea1ad717$export$ad991b66133851cf", "value", "startParts", "endParts", "p", "resolvedOptions", "$fb18d541ea1ad717$var$hasBuggyResolvedHourCycle", "$fb18d541ea1ad717$var$getResolvedHourCycle", "locale", "$fb18d541ea1ad717$var$getCachedDateFormatter", "$fb18d541ea1ad717$var$hour12Preferences", "$fb18d541ea1ad717$var$hasBuggyHour12Behavior", "pref", "defaultHourCycle", "cacheKey", "a", "numberFormatter", "$fb18d541ea1ad717$var$_hasBuggyHour12Behavior", "$fb18d541ea1ad717$var$_hasBuggyResolvedHourCycle", "formatter", "min", "max", "localTimezone", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "getCurrentLocale", "getDateFormatter", "options", "$fb18d541ea1ad717$export$ad991b66133851cf", "formatDate", "date", "getCalender", "calendarIdentifier", "$64244302c3013299$export$dd0bbc9b26defe37", "daysForLocale", "weekday", "day", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "monthsForLocale", "currentYear", "calendar", "month", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "mapDate", "currentDate", "currentMonth", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "generateVisibleDays", "currentLocale", "startDate", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "dayDelta", "monthDiff", "a", "b", "jsx", "jsxs", "withBaseName", "makePrefixer", "useCalendarNavigation", "visibleMonth", "minDate", "maxDate", "setVisibleMonth", "isDayVisible", "isOutsideAllowedYears", "isOutsideAllowedMonths", "useCalendarContext", "moveToNextMonth", "event", "moveToPreviousMonth", "moveToMonth", "month", "newMonth", "monthsForLocale", "n", "closestMonth", "currentMonth", "monthDiff", "months", "years", "delta", "value", "selectedMonth", "item", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "selectedYear", "$14e0f24ef4ac5c92$export$5841f9eb9773f25f", "canNavigatePrevious", "canNavigateNext", "ListItemWithTooltip", "label", "props", "Tooltip", "ListItem", "CalendarNavigation", "forwardRef", "ref", "className", "MonthDropdownProps", "YearDropdownProps", "hideYearDropdown", "rest", "handleNavigatePrevious", "handleNavigateNext", "handleMonthSelect", "handleYearSelect", "year", "monthDropdownId", "useId", "monthDropdownLabelledBy", "clsx", "yearDropdownId", "yearDropdownLabelledBy", "defaultItemToMonth", "date", "formatDate", "defaultItemToYear", "Button", "ChevronLeftIcon", "Dropdown", "ChevronRightIcon", "forwardRef", "clsx", "makePrefixer", "jsx", "withBaseName", "makePrefixer", "CalendarWeekHeader", "forwardRef", "className", "rest", "ref", "weekdaysShort", "daysForLocale", "weekdaysLong", "clsx", "day", "index", "forwardRef", "useEffect", "useRef", "useState", "forwardRef", "clsx", "makePrefixer", "makePrefixer", "Tooltip", "useForkRef", "CloseIcon", "clsx", "forwardRef", "useRef", "useEffect", "useFocusManagement", "date", "setFocusedDate", "useCalendarContext", "event", "newDate", "$14e0f24ef4ac5c92$export$42c81a444fbfb5d4", "getCurrentLocale", "$14e0f24ef4ac5c92$export$ef8b6d9133084f4e", "makePrefixer", "useControlled", "clsx", "addOrRemoveFromArray", "array", "item", "element", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "defaultOffset", "date", "isRangeOrOffsetSelectionValue", "selectionValue", "isPlainObject", "withBaseName", "makePrefixer", "useSelectionCalendar", "props", "hoveredDateProp", "selectedDateProp", "defaultSelectedDate", "onHoveredDateChange", "isDaySelectable", "selectionVariant", "selectedDate", "setSelectedDateState", "useControlled", "getStartDateOffset", "getEndDateOffset", "setSelectedDate", "event", "newSelectedDate", "_a", "_b", "_c", "_d", "newDates", "base", "newRange", "isSelected", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "hoveredDate", "setHoveredDateState", "isForwardRange", "isValidDayHovered", "startDate", "endDate", "useSelectionDay", "setHoveredDate", "isSelectedSpan", "isHoveredSpan", "isSelectedStart", "isSelectedEnd", "isHovered", "isHoveredOffset", "isDayUnselectable", "useCalendarContext", "handleClick", "handleKeyDown", "handleMouseOver", "handleMouseLeave", "selected", "selectedSpan", "hoveredSpan", "selectedStart", "selectedEnd", "hovered", "hoveredOffset", "clsx", "useCalendarDay", "date", "month", "ref", "focusedDate", "hideOutOfRangeDates", "calendarFocused", "isDayUnselectable", "isOutsideAllowedMonths", "useCalendarContext", "selectionManager", "useSelectionDay", "focusManager", "useFocusManagement", "eventHandlers", "event", "_a", "outOfRange", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "focused", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "tabIndex", "today", "$14e0f24ef4ac5c92$export$629b0a497aa65267", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "unselectableResult", "unselectableReason", "unselectable", "hidden", "useEffect", "jsx", "jsxs", "withBaseName", "makePrefixer", "CalendarDay", "forwardRef", "props", "ref", "className", "day", "renderDayContents", "month", "TooltipProps", "rest", "dayRef", "useRef", "forkedRef", "useForkRef", "status", "dayProps", "unselectableReason", "useCalendarDay", "outOfRange", "today", "unselectable", "hidden", "Tooltip", "formatDate", "clsx", "CloseIcon", "jsx", "withBaseName", "makePrefixer", "CalendarMonth", "forwardRef", "props", "ref", "className", "date", "hideOutOfRangeDates", "isVisible", "renderDayContents", "onMouseLeave", "TooltipProps", "rest", "days", "generateVisibleDays", "setHoveredDate", "useCalendarContext", "handleMouseLeave", "event", "clsx", "day", "CalendarDay", "formatDate", "makePrefixer", "useIsomorphicLayoutEffect", "usePrevious", "jsx", "getMonths", "month", "usePreviousMonth", "visibleMonth", "previous", "usePrevious", "formatDate", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "withBaseName", "makePrefixer", "CalendarCarousel", "forwardRef", "props", "ref", "rest", "useCalendarContext", "containerRef", "useRef", "diffIndex", "a", "b", "monthDiff", "baseIndex", "previousVisibleMonth", "useIsomorphicLayoutEffect", "_a", "_b", "months", "setMonths", "useState", "useEffect", "oldMonths", "newMonths", "oldMonth", "$14e0f24ef4ac5c92$export$a18c89cbd24170ff", "finishTransition", "container", "date", "index", "CalendarMonth", "useControlled", "useCallback", "useEffect", "useState", "defaultIsDayUnselectable", "useCalendar", "props", "selectedDate", "defaultSelectedDate", "visibleMonthProp", "hideYearDropdown", "hideOutOfRangeDates", "defaultVisibleMonth", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "onSelectedDateChange", "onVisibleMonthChange", "isDayUnselectable", "minDate", "$14e0f24ef4ac5c92$export$f91e89d3d0406102", "maxDate", "$14e0f24ef4ac5c92$export$8b7aa55c66d5569e", "selectionVariant", "onHoveredDateChange", "hoveredDate", "isOutsideAllowedDates", "useCallback", "date", "isOutsideAllowedMonths", "$14e0f24ef4ac5c92$export$a2258d9c4118825c", "$14e0f24ef4ac5c92$export$a5a3b454ada2268e", "isOutsideAllowedYears", "isDaySelectable", "selectionManager", "useSelectionCalendar", "visibleMonth", "setVisibleMonthState", "useControlled", "calendarFocused", "setCalendarFocused", "useState", "focusedDate", "setFocusedDateState", "isDayVisible", "startInsideDays", "endInsideDays", "setVisibleMonth", "event", "newVisibleMonth", "setFocusedDate", "$14e0f24ef4ac5c92$export$ea39ec197993aef0", "useEffect", "jsx", "jsxs", "withBaseName", "makePrefixer", "Calendar", "forwardRef", "props", "ref", "className", "renderDayContents", "hideYearDropdown", "TooltipProps", "rest", "state", "helpers", "useCalendar", "setCalendarFocused", "handleFocus", "useCallback", "handleBlur", "CalendarContext", "clsx", "CalendarNavigation", "CalendarWeekHeader", "CalendarCarousel", "useId", "Input", "forwardRef", "useCallback", "useRef", "cx", "jsx", "classBase", "ChevronIcon", "props", "direction", "htmlAttributes", "cx", "useLayoutEffectSkipFirst", "useControlled", "useCallback", "useRef", "useState", "EnterOnly", "useCombobox", "allowBackspaceClearsSelection", "allowFreeText", "ariaLabel", "collectionHook", "defaultIsOpen", "defaultSelected", "defaultValue", "onBlur", "onFocus", "onChange", "onDeselect", "onSelect", "id", "initialHighlightedIndex", "isOpenProp", "itemCount", "itemsToString", "itemToString", "listRef", "onOpenChange", "onSelectionChange", "onSetSelectedText", "selectedProp", "selectionKeys", "selectionStrategy", "valueProp", "inputProps", "isMultiSelect", "isMultiSelection", "setFilterPattern", "setHighlightedIndexRef", "useRef", "selectedRef", "ignoreSelectOnFocus", "isOpen", "setIsOpen", "useControlled", "value", "setValue", "disableAriaActiveDescendant", "setDisableAriaActiveDescendant", "useState", "highlightSelectedItem", "useCallback", "selected", "_a", "setTextValue", "applyFilter", "reconcileInput", "newValue", "applySelection", "selectFreeTextInputValue", "text", "handleOpenChange", "open", "closeReason", "handleSelectionChange", "evt", "handleKeyboardNavigation", "focusVisible", "setHighlightedIndex", "highlightedIndex", "listControlProps", "listHookListHandlers", "useList", "listHandlersOnClick", "handleListClick", "handleInputChange", "handleInputKeyDown", "e", "inputOnFocus", "listOnFocus", "handleInputFocus", "listFocused", "element", "inputOnBlur", "listOnBlur", "handleInputBlur", "inputOnSelect", "handleInputSelect", "event", "useLayoutEffectSkipFirst", "hasSelection", "mergedInputProps", "jsx", "jsxs", "ComboBox", "forwardRef", "InputProps", "ListProps", "PopupProps", "ListItem", "ariaLabel", "allowBackspaceClearsSelection", "allowFreeText", "children", "defaultIsOpen", "defaultSelected", "defaultValue", "disabled", "disableFilter", "onBlur", "onFocus", "onChange", "onSelect", "onSetSelectedText", "getFilterRegex", "idProp", "initialHighlightedIndex", "isOpenProp", "itemToString", "itemsToString", "onDeselect", "onOpenChangeProp", "onSelectionChange", "selectedProp", "selectionKeys", "selectionStrategy", "source", "valueProp", "width", "props", "forwardedRef", "id", "useId", "listRef", "useRef", "valueFromSelected", "item", "initialValue", "items1", "items2", "collectionHook", "useCollectionItems", "focusVisible", "highlightedIndex", "endAdornmentProp", "inputProps", "isOpen", "listHandlers", "controlProps", "onOpenChange", "selected", "useCombobox", "handleDropdownIconClick", "useCallback", "CollectionProvider", "DropdownBase", "Input", "ChevronIcon", "List", "Button", "cx", "forwardRef", "useCallback", "jsx", "classBase", "getNextValue", "value", "valueList", "index", "CycleStateButton", "className", "onCommit", "values", "buttonProps", "forwardedRef", "handleClick", "evt", "nextValue", "response", "useCallback", "useMemo", "clsx", "useCallback", "clsx", "jsx", "baseClass", "DatePickerInput", "props", "_a", "value", "onChange", "className", "onInputChange", "useCallback", "e", "v", "toCalendarDate", "clsx", "d", "$35ea8db9cb2ccb90$export$99faa760c7908e4f", "Button", "CalendarIcon", "forwardRef", "clsx", "jsx", "baseClass", "CalendarIconButton", "forwardRef", "className", "rest", "ref", "Button", "clsx", "CalendarIcon", "useCallback", "useState", "useBaseDatePicker", "props", "_a", "visibleMonth", "setVisibleMonth", "e", "useCallback", "useRef", "useState", "useBaseDatePickerDropdown", "onVisibleMonthChange", "onSelectedDateChange", "shouldCloseOnSelectionChange", "isOpen", "setIsOpen", "triggererRef", "handleDateSelection", "_", "d", "_a", "handleVisibleMonthChange", "jsx", "jsxs", "baseClass", "DatePicker", "props", "selectedDate", "onSelectedDateChange", "onBlur", "className", "visibleMonth", "handleVisibleMonthChange", "handleOnBlur", "useBaseDatePicker", "handleInputChange", "useCallback", "d", "clsx", "DatePickerInput", "DatePickerDropdown", "closeOnSelection", "onVisibleMonthChange", "rest", "shouldCloseOnSelectionChange", "triggererRef", "isOpen", "handleOpenChange", "handleDateSelection", "useBaseDatePickerDropdown", "defaultSelectedDate", "useMemo", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "DropdownBase", "CalendarIconButton", "Calendar", "useCallback", "useMemo", "clsx", "useCallback", "clsx", "jsx", "jsxs", "baseClass", "DateRangePickerInput", "props", "value", "onChange", "className", "getHandleInputChange", "useCallback", "k", "d", "clsx", "DatePickerInput", "jsx", "jsxs", "baseClass", "DateRangePicker", "props", "selectedDate", "onSelectedDateChange", "className", "onBlur", "visibleMonth", "handleVisibleMonthChange", "handleOnBlur", "useBaseDatePicker", "handleInputChange", "useCallback", "r", "_a", "clsx", "DateRangePickerInput", "DateRangePickerDropdown", "onVisibleMonthChange", "closeOnSelection", "rest", "shouldCloseOnSelectionChange", "triggererRef", "isOpen", "handleOpenChange", "handleDateSelection", "useBaseDatePickerDropdown", "defaultSelectedDate", "useMemo", "$14e0f24ef4ac5c92$export$d0bdf45af03a6ea3", "$14e0f24ef4ac5c92$export$aa8b41735afcabd2", "DropdownBase", "CalendarIconButton", "Calendar", "getEditRuleValidator", "buildValidationChecker", "rules", "value", "applyRules", "result", "rule", "editRuleValidator", "ruleResult", "useLayoutEffectSkipFirst", "dispatchCustomEvent", "useCallback", "useRef", "useState", "WarnCommit", "useEditableText", "clientSideEditValidationCheck", "initialValue", "onCommit", "type", "message", "setMessage", "value", "setValue", "initialValueRef", "isDirtyRef", "hasCommittedRef", "commit", "target", "warningMessage", "response", "handleKeyDown", "evt", "handleBlur", "handleChange", "typedValue", "cx", "useCallback", "useLayoutEffect", "forwardRef", "useRef", "Input", "useControlled", "jsx", "classBase", "EditableLabel", "forwardRef", "classNameProp", "defaultEditing", "defaultValue", "editingProp", "onChange", "onEnterEditMode", "onExitEditMode", "valueProp", "restProps", "forwardedRef", "inputRef", "useRef", "editingRef", "value", "setValue", "useControlled", "editing", "_setEditing", "setEditing", "useCallback", "initialValue", "useLayoutEffect", "enterEditMode", "exitEditMode", "cancelEdit", "allowDeactivation", "originalValue", "handleChange", "evt", "handleDoubleClick", "handleBlur", "handleKeyDown", "className", "cx", "Input", "cx", "forwardRef", "Tooltip", "useTooltip", "isValidNumber", "useId", "Input", "cx", "forwardRef", "useCallback", "Fragment", "jsx", "jsxs", "classBase", "constantInputProps", "VuuInput", "forwardRef", "className", "errorMessage", "idProp", "onCommit", "onKeyDown", "type", "props", "forwardedRef", "id", "useId", "anchorProps", "tooltipProps", "useTooltip", "commitValue", "useCallback", "evt", "value", "numericValue", "isValidNumber", "handleKeyDown", "handleBlur", "endAdornment", "Input", "cx", "Tooltip", "jsx", "classBase", "noop", "ExpandoInput", "forwardRef", "classNameProp", "errorMessage", "value", "inputProps", "onCommit", "props", "forwardedRef", "cx", "VuuInput", "jsx", "jsxs", "Checkbox", "props", "onToggle", "checked", "label", "e", "CheckboxIcon", "jsx", "jsxs", "RadioButton", "props", "onClick", "checked", "label", "groupName", "RadioIcon", "Table", "useId", "Input", "forwardRef", "useMemo", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "column", "columnMap", "row", "key", "value", "registerComponent", "useControlledTableNavigation", "useCallback", "useMemo", "useState", "defaultItemToString", "columns", "columnMap", "row", "name", "useInstrumentPicker", "dataSource", "defaultIsOpen", "isOpenProp", "itemToString", "onOpenChange", "onSelect", "searchColumns", "value", "setValue", "useState", "isOpen", "setIsOpen", "useControlled", "highlightedIndexRef", "onKeyDown", "tableRef", "useControlledTableNavigation", "baseFilterPattern", "useMemo", "col", "handleOpenChange", "useCallback", "open", "closeReason", "handleInputChange", "evt", "filter", "handleSelectRow", "inputProps", "tableHandlers", "jsx", "jsxs", "classBase", "SearchCell", "InstrumentPicker", "forwardRef", "dataSource", "TableProps", "className", "columnMap", "disabled", "idProp", "itemToString", "onOpenChangeProp", "onSelect", "schema", "searchColumns", "width", "htmlAttributes", "forwardedRef", "id", "useId", "highlightedIndex", "inputProps", "isOpen", "onOpenChange", "tableHandlers", "tableRef", "value", "useInstrumentPicker", "endAdornment", "useMemo", "tableProps", "DropdownBase", "Input", "Table", "registerComponent", "Table", "useControlledTableNavigation", "Input", "cx", "useCallback", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "column", "columnMap", "row", "key", "value", "registerComponent", "useCallback", "useMemo", "useState", "useInstrumentSearch", "dataSource", "searchColumns", "searchState", "setSearchState", "baseFilterPattern", "col", "handleChange", "evt", "value", "filter", "jsx", "jsxs", "classBase", "SearchCell", "defaultTableConfig", "searchIcon", "InstrumentSearch", "TableProps", "autoFocus", "className", "dataSourceProp", "placeHolder", "searchColumns", "htmlAttributes", "_a", "dataSource", "onChange", "searchState", "useInstrumentSearch", "highlightedIndexRef", "onHighlight", "onKeyDown", "tableRef", "useControlledTableNavigation", "searchCallbackRef", "useCallback", "el", "cx", "Input", "Table", "registerComponent", "getMovingValueDirection", "isValidNumber", "numericFormatter", "memo", "useMemo", "useRef", "cx", "jsx", "jsxs", "classBase", "getValueFormatter", "decimals", "numericFormatter", "INITIAL_VALUE", "PriceTicker", "memo", "className", "price", "showArrow", "htmlAttributes", "ref", "useRef", "prevValue", "prevDirection", "formatNumber", "useMemo", "direction", "isValidNumber", "getMovingValueDirection", "cx", "asReactElements", "OverflowContainer", "useId", "Button", "cx", "React", "useMemo", "useRef", "dispatchMouseEvent", "useCallback", "useRef", "isTabMenuOptions", "options", "closeCommand", "renameCommand", "getElementDataIndex", "getIndexOfItem", "container", "query", "targetTab", "getIndexOfSelectedTab", "getIndexOfEditedItem", "isValidNumber", "MEASURES", "useCallback", "useMemo", "useRef", "useAnimatedSelectionThumb", "containerRef", "activeTabIndex", "orientation", "animationSuspendedRef", "suspendAnimation", "resumeAnimation", "onTransitionEnd", "_a", "_b", "lastSelectedRef", "offset", "size", "oldSelected", "newSelected", "positionProp", "sizeProp", "oldPosition", "oldSize", "newPosition", "duration", "_c", "_d", "useControlled", "dispatchMouseEvent", "getFocusableElement", "useCallback", "useRef", "useState", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End", "navigation", "Home", "End", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "isNavigationKey", "key", "orientation", "isMenuActivationKey", "nextItemIdx", "count", "direction", "idx", "isNonWrappedElement", "element", "getElementByPosition", "container", "index", "useKeyboardNavigation", "containerRef", "defaultHighlightedIdx", "highlightedIdxProp", "keyBoardActivation", "selectedTabIndex", "manualActivation", "mouseClickPending", "useRef", "focusedRef", "hasFocus", "setHasFocus", "useState", "forceRefresh", "highlightedIdx", "_setHighlightedIdx", "useControlled", "setHighlightedIdx", "useCallback", "value", "keyboardNavigation", "focusTab", "tabIndex", "immediateFocus", "withKeyboard", "delay", "setFocus", "focussableElement", "getFocusableElement", "onFocus", "e", "getIndexOfEditedItem", "getIndexCount", "_a", "_b", "nextFocusableItemIdx", "indexCount", "nextIdx", "nextDirection", "newIdx", "navigateChildItems", "forceFocusVisible", "highlightedTabHasMenu", "el", "activateTabMenu", "menuEl", "dispatchMouseEvent", "handleKeyDown", "handleItemClick", "_", "handleFocus", "handleContainerMouseDown", "sourceTarget", "destTarget", "useControlled", "useCallback", "defaultSelectionKeys", "isTabElement", "el", "useSelection", "defaultSelected", "highlightedIdx", "onSelectionChange", "selectedProp", "selected", "setSelected", "isControlled", "isSelectionEvent", "evt", "selectItem", "tabIndex", "handleKeyDown", "e", "targetElement", "onClick", "editKeys", "isEditKey", "key", "getElementWithIndex", "container", "index", "useTabstrip", "activeTabIndexProp", "allowDragDrop", "animateSelectionThumb", "containerRef", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "keyBoardActivation", "lastSelection", "useRef", "keyboardHookFocusTab", "highlightedIdx", "keyboardHookHandleClick", "keyboardHookHandleKeyDown", "keyboardHookSetHighlightedIndex", "keyboardHook", "useKeyboardNavigation", "selectionHookActivateTab", "selectionHookHandleClick", "selectionHookHandleKeyDown", "selectionHookSelected", "useSelection", "containerStyle", "resumeAnimation", "suspendAnimation", "useAnimatedSelectionThumb", "handleDrop", "useCallback", "fromIndex", "toIndex", "selected", "nextSelectedTab", "dragDropHookHandleMouseDown", "dragDropHook", "useDragDrop", "handleExitEditMode", "originalValue", "editedValue", "allowDeactivation", "tabIndex", "handleClick", "evt", "getEditableLabel", "targetEl", "tabInEditMode", "editableLabel", "editTab", "editableLabelEl", "dispatchMouseEvent", "handleKeyDown", "handleCloseTabFromMenu", "selectedTabIndex", "getIndexOfSelectedTab", "newActiveTabIndex", "handleRenameTabFromMenu", "handleTabMenuAction", "action", "isTabMenuOptions", "handleTabMenuClose", "onSwitchWrappedItemIntoView", "item", "navigationProps", "handleAddTabClick", "tabProps", "Fragment", "jsx", "jsxs", "createElement", "classBase", "Tabstrip", "activeTabIndexProp", "allowAddTab", "allowCloseTab", "allowDragDrop", "allowRenameTab", "animateSelectionThumb", "children", "classNameProp", "idProp", "keyBoardActivation", "location", "onActiveChange", "onAddTab", "onCloseTab", "onExitEditMode", "onMoveTab", "orientation", "showTabMenuButton", "styleProp", "tabClassName", "htmlAttributes", "rootRef", "useRef", "activeTabIndex", "focusVisible", "containerStyle", "draggedItemIndex", "onClickAddTab", "tabProps", "tabstripHook", "useTabstrip", "id", "useId", "className", "cx", "style", "tabs", "useMemo", "asReactElements", "child", "index", "tabId", "closeable", "editable", "tabLocation", "showMenuButton", "selected", "React", "Button", "OverflowContainer", "useForkRef", "cx", "forwardRef", "useCallback", "useRef", "PopupMenu", "useMemo", "cx", "jsx", "classBase", "TabMenu", "allowClose", "allowRename", "controlledComponentId", "controlledComponentTitle", "location", "onMenuAction", "onMenuClose", "index", "menuBuilder", "menuOptions", "useMemo", "_location", "options", "menuItems", "renameCommand", "closeCommand", "PopupMenu", "cx", "jsx", "jsxs", "classBase", "noop", "Tab", "forwardRef", "ariaControls", "children", "className", "closeable", "dragging", "editable", "editing", "focusVisible", "index", "label", "location", "onClick", "onClose", "onEnterEditMode", "onExitEditMode", "onFocusProp", "onKeyUp", "onMenuAction", "onMenuClose", "orientation", "selected", "showMenuButton", "tabIndex", "props", "ref", "rootRef", "useRef", "editableRef", "setForkRef", "useForkRef", "handleClick", "useCallback", "e", "handleOnExitEditMode", "originalValue", "editedValue", "allowDeactivation", "handleKeyUp", "getLabel", "EditableLabel", "handleFocus", "evt", "input", "cx", "TabMenu", "useForkRef", "useId", "cx", "forwardRef", "useRef", "listItemIndex", "listItemEl", "_a", "idx", "closestListItem", "el", "closestListItemIndex", "el", "listItemIndex", "closestListItem", "useCallback", "useMemo", "PathSeparators", "isPathSeparator", "char", "isParentPath", "parentPath", "childPath", "useItemsWithIds", "sourceProp", "idRoot", "collapsibleHeaders", "defaultExpanded", "revealSelected", "countChildItems", "item", "items", "idx", "i", "count", "isExpanded", "path", "id", "normalizeItems", "indexer", "level", "results", "flattenedSource", "all", "_a", "isCollapsibleHeader", "isNonCollapsibleGroupNode", "isLeaf", "nonCollapsible", "expanded", "normalisedItem", "childCount", "children", "sourceWithIds", "sourceItemById", "target", "sourceWithId", "useCallback", "useRef", "useControlled", "SINGLE", "CHECKBOX", "MULTI", "EXTENDED", "defaultSelectionKeys", "NO_HANDLERS", "isCollapsibleItem", "item", "groupSelectionEnabled", "groupSelection", "useSelection", "defaultSelected", "highlightedIdx", "treeNodes", "onChange", "selectedProp", "selection", "selectionKeys", "singleSelect", "multiSelect", "extendedSelect", "lastActive", "isSelectionEvent", "evt", "selected", "setSelected", "selectItemAtIndex", "idx", "id", "rangeSelect", "preserveExistingSelection", "active", "isSelected", "actsLikeSingleSelect", "actsLikeMultiSelect", "newSelected", "i", "from", "to", "handleKeyDown", "handleKeyboardNavigation", "currentIndex", "listHandlers", "handleClick", "useCallback", "useEffect", "useLayoutEffect", "useRef", "HeightOnly", "useViewportTracking", "root", "highlightedIdx", "stickyHeaders", "scrollTop", "useRef", "scrolling", "rootHeight", "rootScrollHeight", "scrollIntoView", "useCallback", "el", "targetEl", "headerHeight", "t", "h", "viewportStart", "viewportEnd", "scrollHandler", "e", "useEffect", "rootEl", "useLayoutEffect", "item", "onResize", "height", "scrollHeight", "useResizeObserver", "useCallback", "useRef", "useCallback", "useMemo", "useRef", "getNodeParentPath", "id", "pos", "steps", "isGroupNode", "node", "isHeader", "node", "PATH_SEPARATORS", "isDescendantOf", "targetPath", "getNodeById", "nodes", "id", "getIndexOfNode", "treeNodes", "i", "replaceNode", "props", "childNodes", "useControlled", "union", "set1", "sets", "result", "set", "element", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "Delete", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "verticalNavigationKeys", "horizontalNavigationKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "key", "orientation", "verticalNavigationKeys", "horizontalNavigationKeys", "nextItemIdx", "count", "key", "idx", "ArrowUp", "ArrowLeft", "isLeaf", "item", "isFocusable", "useKeyboardNavigation", "defaultHighlightedIdx", "highlightedIdxProp", "treeNodes", "onHighlight", "onKeyboardNavigation", "selected", "ArrowBwd", "ArrowFwd", "useMemo", "ArrowDown", "highlightedIdx", "setHighlightedIdx", "isControlledHighlighting", "useControlled", "setHighlightedIndex", "useCallback", "nextFocusableItemIdx", "nextIdx", "keyBoardNavigation", "useRef", "ignoreFocus", "setIgnoreFocus", "value", "handleFocus", "node", "getNodeById", "getIndexOfNode", "navigateChildItems", "e", "handleKeyDown", "isNavigationKey", "listProps", "useRef", "useState", "populateIndices", "nodes", "results", "idx", "skipToNextHeader", "node", "isHeader", "isGroupNode", "isExpanded", "useHierarchicalData", "source", "externalSource", "useRef", "statefulSource", "indexPositions", "forceUpdate", "useState", "setData", "value", "useCallback", "useRef", "NO_HANDLERS", "isToggleElement", "element", "useCollapsibleGroups", "collapsibleHeaders", "highlightedIdx", "treeNodes", "setVisibleData", "source", "fullSource", "useRef", "stateSource", "setSource", "useCallback", "value", "expandNode", "nodeList", "id", "replaceNode", "collapseNode", "handleKeyDown", "e", "ArrowRight", "Enter", "node", "ArrowLeft", "listHandlers", "listItemHandlers", "evt", "el", "closestListItem", "getNodeById", "useCallback", "useTreeKeyboardNavigation", "highlightedIdx", "hiliteItemAtIndex", "indexPositions", "source", "useCallback", "e", "ArrowLeft", "node", "parentId", "getNodeParentPath", "parentNode", "getNodeById", "idx", "getIndexOfNode", "EMPTY_ARRAY", "useTree", "defaultSelected", "sourceWithIds", "onChange", "onHighlightProp", "selectedProp", "selection", "lastSelection", "useRef", "dataHook", "useHierarchicalData", "handleKeyboardNavigation", "evt", "nextIdx", "_a", "_b", "selectionHook", "highlightedIdx", "keyboardHook", "useKeyboardNavigation", "collapsibleHook", "useCollapsibleGroups", "useSelection", "treeNavigationHook", "useTreeKeyboardNavigation", "handleClick", "useCallback", "_c", "handleKeyDown", "_d", "_e", "_f", "_g", "_h", "getActiveDescendant", "listProps", "listItemHandlers", "jsx", "jsxs", "createElement", "classBase", "isExpanded", "node", "TreeNode", "children", "idx", "props", "Tree", "forwardRef", "allowDragDrop", "className", "defaultSelected", "groupSelection", "idProp", "onHighlight", "onSelectionChange", "revealSelected", "selectedProp", "selection", "source", "htmlAttributes", "forwardedRef", "_a", "id", "useId", "rootRef", "useRef", "sourceWithIds", "sourceItemById", "useItemsWithIds", "handleSelectionChange", "evt", "selected", "sourceItems", "sourceItem", "focusVisible", "highlightedIdx", "hiliteItemAtIndex", "listProps", "listItemHandlers", "visibleData", "useTree", "useViewportTracking", "propsCommonToAllListItems", "targetEl", "closestListItemIndex", "allowGroupSelect", "groupSelectionEnabled", "addLeafNode", "list", "item", "getListItemProps", "addGroupNode", "child", "title", "i", "cx", "renderSourceContent", "items", "listItems", "useForkRef", "Tree_default"]
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["forwardRef", "useCallback", "clsx", "makePrefixer", "Button", "makePrefixer", "useId", "clsx", "forwardRef", "useForkRef", "Children", "cloneElement", "useRef", "useControlled", "useCallback", "useRef", "useState", "useCallback", "useRef", "useState", "isValidElement", "_a", "isSelected", "isValidElement", "_a", "useState", "useRef", "itemToString", "isExpanded", "useCallback", "flattenedCollection", "flattenedSource", "_b", "isLeaf", "children", "isValidElement", "toCollectionItem", "useCallback", "useEffect", "useRef", "measurements", "dimensions", "target", "useCallback", "useRef", "useState", "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", "createContext", "useContext", "date", "res", "ms", "jsx", "jsxs", "withBaseName", "makePrefixer", "forwardRef", "CalendarNavigation", "useId", "clsx", "Button", "Dropdown", "forwardRef", "clsx", "makePrefixer", "jsx", "withBaseName", "makePrefixer", "forwardRef", "CalendarWeekHeader", "clsx", "forwardRef", "useEffect", "useRef", "useState", "forwardRef", "clsx", "makePrefixer", "makePrefixer", "Tooltip", "useForkRef", "clsx", "forwardRef", "useRef", "useEffect", "makePrefixer", "useControlled", "clsx", "withBaseName", "makePrefixer", "useControlled", "_a", "isSelected", "clsx", "_a", "useEffect", "jsx", "jsxs", "withBaseName", "makePrefixer", "forwardRef", "CalendarDay", "TooltipProps", "useRef", "useForkRef", "Tooltip", "clsx", "jsx", "withBaseName", "makePrefixer", "forwardRef", "CalendarMonth", "TooltipProps", "clsx", "makePrefixer", "useIsomorphicLayoutEffect", "jsx", "withBaseName", "makePrefixer", "forwardRef", "CalendarCarousel", "useRef", "useIsomorphicLayoutEffect", "_a", "useState", "useEffect", "useControlled", "useCallback", "useEffect", "useState", "useCallback", "useControlled", "useState", "useEffect", "jsx", "jsxs", "withBaseName", "makePrefixer", "forwardRef", "Calendar", "TooltipProps", "useCallback", "clsx", "useId", "forwardRef", "useCallback", "useRef", "cx", "jsx", "classBase", "cx", "useLayoutEffectSkipFirst", "useControlled", "useCallback", "useRef", "useState", "itemToString", "useRef", "useControlled", "useState", "useCallback", "selected", "_a", "value", "useLayoutEffectSkipFirst", "jsx", "jsxs", "forwardRef", "InputProps", "ListProps", "ListItem", "itemToString", "useId", "useRef", "useCallback", "Button", "cx", "forwardRef", "useCallback", "jsx", "classBase", "CycleStateButton", "useCallback", "useMemo", "clsx", "useCallback", "clsx", "jsx", "_a", "useCallback", "clsx", "Button", "forwardRef", "clsx", "jsx", "baseClass", "forwardRef", "CalendarIconButton", "Button", "clsx", "useCallback", "useState", "_a", "useCallback", "useRef", "useState", "_a", "jsx", "jsxs", "baseClass", "useCallback", "clsx", "useMemo", "useCallback", "useMemo", "clsx", "useCallback", "clsx", "jsx", "jsxs", "baseClass", "useCallback", "clsx", "jsx", "jsxs", "baseClass", "useCallback", "_a", "clsx", "useMemo", "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", "Tooltip", "isValidNumber", "useId", "Input", "cx", "forwardRef", "useCallback", "Fragment", "jsx", "jsxs", "classBase", "forwardRef", "VuuInput", "useId", "useCallback", "isValidNumber", "Input", "cx", "Tooltip", "jsx", "classBase", "forwardRef", "ExpandoInput", "cx", "jsx", "jsxs", "jsx", "jsxs", "useId", "Input", "forwardRef", "useMemo", "jsx", "jsxs", "classBase", "useCallback", "useMemo", "useState", "itemToString", "useState", "useMemo", "useCallback", "value", "jsx", "jsxs", "classBase", "forwardRef", "InstrumentPicker", "TableProps", "itemToString", "useId", "useMemo", "Input", "registerComponent", "Table", "useControlledTableNavigation", "Input", "cx", "useCallback", "registerComponent", "jsx", "jsxs", "classBase", "SearchCell", "registerComponent", "useCallback", "useMemo", "useState", "jsx", "jsxs", "classBase", "SearchCell", "TableProps", "_a", "useControlledTableNavigation", "useCallback", "cx", "Input", "Table", "registerComponent", "isValidNumber", "memo", "useMemo", "useRef", "cx", "jsx", "jsxs", "classBase", "memo", "useRef", "useMemo", "isValidNumber", "cx", "useId", "Button", "cx", "React", "useMemo", "useRef", "dispatchMouseEvent", "useCallback", "useRef", "getElementDataIndex", "isValidNumber", "useCallback", "useMemo", "useRef", "_a", "_b", "useControlled", "dispatchMouseEvent", "useCallback", "useRef", "useState", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight", "Home", "End", "Home", "End", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown", "isNavigationKey", "nextItemIdx", "useKeyboardNavigation", "useRef", "useState", "useControlled", "useCallback", "_a", "dispatchMouseEvent", "useControlled", "useCallback", "defaultSelectionKeys", "useSelection", "useRef", "useKeyboardNavigation", "useSelection", "useCallback", "dispatchMouseEvent", "Fragment", "jsx", "jsxs", "createElement", "classBase", "useRef", "useId", "cx", "useMemo", "className", "React", "Button", "useForkRef", "cx", "forwardRef", "useCallback", "useRef", "useMemo", "cx", "jsx", "classBase", "useMemo", "cx", "jsx", "jsxs", "classBase", "noop", "forwardRef", "Tab", "useRef", "useForkRef", "useCallback", "editable", "cx", "useForkRef", "useId", "cx", "forwardRef", "useRef", "listItemIndex", "_a", "closestListItem", "closestListItemIndex", "listItemIndex", "closestListItem", "useCallback", "useMemo", "PathSeparators", "isPathSeparator", "isParentPath", "countChildItems", "count", "isExpanded", "flattenedSource", "_a", "isLeaf", "useCallback", "useRef", "useControlled", "CHECKBOX", "defaultSelectionKeys", "NO_HANDLERS", "groupSelectionEnabled", "useSelection", "isSelected", "id", "useCallback", "useEffect", "useLayoutEffect", "useRef", "HeightOnly", "useViewportTracking", "useRef", "useCallback", "useEffect", "useLayoutEffect", "useCallback", "useRef", "useCallback", "useMemo", "useRef", "isGroupNode", "isHeader", "PATH_SEPARATORS", "isDescendantOf", "useControlled", "union", "ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight", "Enter", "actionKeys", "Enter", "focusKeys", "arrowLeftRightKeys", "functionKeys", "specialKeys", "union", "isNavigationKey", "navigationKeys", "nextItemIdx", "ArrowUp", "ArrowLeft", "isLeaf", "isFocusable", "useKeyboardNavigation", "useMemo", "ArrowDown", "useControlled", "useCallback", "useRef", "isNavigationKey", "useRef", "useState", "isHeader", "isGroupNode", "useRef", "useState", "useCallback", "useRef", "NO_HANDLERS", "useCollapsibleGroups", "useRef", "useCallback", "ArrowRight", "Enter", "ArrowLeft", "closestListItem", "useCallback", "useCallback", "ArrowLeft", "EMPTY_ARRAY", "useRef", "_a", "useKeyboardNavigation", "useCollapsibleGroups", "useSelection", "useCallback", "jsx", "jsxs", "createElement", "classBase", "forwardRef", "Tree", "_a", "useId", "useRef", "selected", "sourceItems", "id", "useViewportTracking", "closestListItemIndex", "groupSelectionEnabled", "cx", "useForkRef"]
|
|
7
7
|
}
|