nntc-ui 0.2.4 → 0.2.6
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/.editorconfig +25 -0
- package/.gitattributes +64 -0
- package/.gitlab-ci.yml +40 -0
- package/.helm/Chart.yaml +5 -0
- package/.helm/values.yaml +12 -0
- package/.prettierignore +12 -0
- package/.prettierrc.json +19 -0
- package/.storybook/global.d.ts +4 -0
- package/.storybook/main.ts +12 -0
- package/.storybook/preview.tsx +59 -0
- package/.stylelintignore +3 -0
- package/.stylelintrc.json +5 -0
- package/.vscode/settings.json +10 -0
- package/Dockerfile +14 -0
- package/babel.config.json +23 -0
- package/cssModulesPluginTemplate.cjs +5 -0
- package/eslint.config.mjs +160 -0
- package/nginx.conf +14 -0
- package/package.dist.json +20 -0
- package/package.json +100 -19
- package/postcss.config.cjs +12 -0
- package/src/components/common/Button/Button.stories.tsx +93 -0
- package/src/components/common/Button/Button.tsx +59 -0
- package/src/components/common/Button/button.module.css +337 -0
- package/src/components/common/Button/index.ts +1 -0
- package/src/components/common/ButtonsGroup/ButtonsGroup.stories.tsx +52 -0
- package/src/components/common/ButtonsGroup/ButtonsGroup.tsx +25 -0
- package/src/components/common/ButtonsGroup/buttonsGroup.module.css +24 -0
- package/{components/common/ButtonsGroup/index.d.ts → src/components/common/ButtonsGroup/index.ts} +0 -1
- package/src/components/common/Checkbox/Checkbox.stories.tsx +48 -0
- package/src/components/common/Checkbox/Checkbox.tsx +82 -0
- package/src/components/common/Checkbox/checkbox.module.css +112 -0
- package/{components/common/Checkbox/index.d.ts → src/components/common/Checkbox/index.ts} +0 -1
- package/src/components/common/Checklist/Checklist.stories.tsx +138 -0
- package/src/components/common/Checklist/Checklist.tsx +159 -0
- package/src/components/common/Checklist/checklist.module.css +23 -0
- package/{components/common/Checklist/index.d.ts → src/components/common/Checklist/index.ts} +1 -1
- package/src/components/common/Checklist/models/Item.ts +4 -0
- package/src/components/common/Checklist/models/SelectedItems.ts +3 -0
- package/src/components/common/Checklist/utils/filterItems.ts +18 -0
- package/src/components/common/ColorPicker/ColorPicker.stories.tsx +198 -0
- package/src/components/common/ColorPicker/ColorPicker.tsx +157 -0
- package/src/components/common/ColorPicker/colorPicker.module.css +145 -0
- package/{components/common/ColorPicker/index.d.ts → src/components/common/ColorPicker/index.ts} +0 -1
- package/src/components/common/DateTime/DateTime.stories.tsx +249 -0
- package/src/components/common/DateTime/DateTime.tsx +236 -0
- package/src/components/common/DateTime/dateTime.module.css +21 -0
- package/{components/common/DateTime/index.d.ts → src/components/common/DateTime/index.ts} +0 -1
- package/src/components/common/DateTime/models/dayjs.ts +26 -0
- package/src/components/common/DateTime/ui/CalendarPopover/CalendarPopover.tsx +585 -0
- package/src/components/common/DateTime/ui/CalendarPopover/calendarPopover.module.css +226 -0
- package/{components/common/DateTime/ui/CalendarPopover/index.d.ts → src/components/common/DateTime/ui/CalendarPopover/index.ts} +0 -1
- package/src/components/common/DateTime/ui/TimeWheelColumn/TimeWheelColumn.tsx +106 -0
- package/{components/common/DateTime/ui/TimeWheelColumn/index.d.ts → src/components/common/DateTime/ui/TimeWheelColumn/index.ts} +0 -1
- package/src/components/common/DateTime/ui/TimeWheelColumn/timeWheelColumn.module.css +35 -0
- package/src/components/common/DateTime/utils/createCalendarDate.ts +15 -0
- package/src/components/common/FieldShell/FieldErrorIcon.tsx +39 -0
- package/src/components/common/FieldShell/FieldShell.tsx +104 -0
- package/src/components/common/FieldShell/fieldShell.module.css +456 -0
- package/{components/common/FieldShell/index.d.ts → src/components/common/FieldShell/index.ts} +0 -1
- package/src/components/common/Input/Input.stories.tsx +232 -0
- package/src/components/common/Input/Input.tsx +140 -0
- package/src/components/common/Input/index.ts +1 -0
- package/src/components/common/Input/input.module.css +49 -0
- package/src/components/common/MultiSelect/MultiSelect.stories.tsx +344 -0
- package/src/components/common/MultiSelect/MultiSelect.tsx +260 -0
- package/{components/common/MultiSelect/index.d.ts → src/components/common/MultiSelect/index.ts} +1 -1
- package/src/components/common/MultiSelect/models/Item.ts +7 -0
- package/{components/common/MultiSelect/models/TitleVariant.d.ts → src/components/common/MultiSelect/models/TitleVariant.ts} +0 -1
- package/src/components/common/MultiSelect/multiSelect.module.css +198 -0
- package/src/components/common/MultiSelect/multiSelect.stories.module.css +4 -0
- package/src/components/common/MultiSelect/ui/SelectPopover/SelectPopover.tsx +69 -0
- package/{components/common/MultiSelect/ui/SelectPopover/index.d.ts → src/components/common/MultiSelect/ui/SelectPopover/index.ts} +0 -1
- package/src/components/common/MultiSelect/utils/getTitle.ts +19 -0
- package/src/components/common/RadioButton/RadioButton.stories.tsx +134 -0
- package/src/components/common/RadioButton/RadioButton.tsx +90 -0
- package/{components/common/RadioButton/index.d.ts → src/components/common/RadioButton/index.ts} +0 -1
- package/src/components/common/RadioButton/radioButton.module.css +108 -0
- package/src/components/common/Select/Select.stories.tsx +294 -0
- package/src/components/common/Select/Select.tsx +181 -0
- package/{components/common/Select/index.d.ts → src/components/common/Select/index.ts} +1 -1
- package/src/components/common/Select/models/Divider.ts +4 -0
- package/src/components/common/Select/models/Item.ts +15 -0
- package/src/components/common/Select/select.module.css +87 -0
- package/src/components/common/Select/ui/SelectPopover/SelectPopover.tsx +49 -0
- package/{components/common/Select/ui/SelectPopover/index.d.ts → src/components/common/Select/ui/SelectPopover/index.ts} +0 -1
- package/src/components/common/WrapForLabel/WrapForLabel.stories.tsx +36 -0
- package/src/components/common/WrapForLabel/WrapForLabel.tsx +28 -0
- package/{components/common/WrapForLabel/index.d.ts → src/components/common/WrapForLabel/index.ts} +0 -1
- package/src/components/common/WrapForLabel/wrapForLabel.module.css +14 -0
- package/src/components/layout/Layout/Layout.stories.tsx +44 -0
- package/src/components/layout/Layout/Layout.tsx +24 -0
- package/{components/layout/Layout/index.d.ts → src/components/layout/Layout/index.ts} +0 -1
- package/src/components/layout/Layout/layout.module.css +16 -0
- package/src/components/layout/Surface/Surface.stories.tsx +56 -0
- package/src/components/layout/Surface/Surface.tsx +33 -0
- package/{components/layout/Surface/index.d.ts → src/components/layout/Surface/index.ts} +0 -1
- package/src/components/layout/Surface/surface.module.css +47 -0
- package/src/components/navigation/Menu/Menu.stories.tsx +324 -0
- package/src/components/navigation/Menu/Menu.tsx +157 -0
- package/{components/navigation/Menu/index.d.ts → src/components/navigation/Menu/index.ts} +1 -1
- package/src/components/navigation/Menu/menu.module.css +153 -0
- package/src/components/navigation/Menu/models/Divider.ts +4 -0
- package/src/components/navigation/Menu/models/Item.ts +20 -0
- package/src/components/navigation/Tabs/Tabs.stories.tsx +959 -0
- package/src/components/navigation/Tabs/Tabs.tsx +174 -0
- package/{components/navigation/Tabs/index.d.ts → src/components/navigation/Tabs/index.ts} +1 -1
- package/src/components/navigation/Tabs/models/Item.ts +9 -0
- package/src/components/navigation/Tabs/tabs.module.css +179 -0
- package/src/components/navigation/Tabs/tabs.stories.module.css +3 -0
- package/src/components/view/Card/Card.stories.tsx +99 -0
- package/src/components/view/Card/Card.tsx +66 -0
- package/src/components/view/Card/card.module.css +50 -0
- package/src/components/view/Card/index.ts +1 -0
- package/src/components/view/Chip/Chip.stories.tsx +219 -0
- package/src/components/view/Chip/Chip.tsx +89 -0
- package/src/components/view/Chip/chip.module.css +157 -0
- package/{components/view/Chip/index.d.ts → src/components/view/Chip/index.ts} +0 -1
- package/src/components/view/InputChip/InputChip.stories.tsx +117 -0
- package/src/components/view/InputChip/InputChip.tsx +77 -0
- package/{components/view/InputChip/index.d.ts → src/components/view/InputChip/index.ts} +0 -1
- package/src/components/view/InputChip/inputChip.module.css +188 -0
- package/src/components/view/Loader/Loader.stories.tsx +54 -0
- package/src/components/view/Loader/Loader.tsx +29 -0
- package/{components/view/Loader/index.d.ts → src/components/view/Loader/index.ts} +0 -1
- package/src/components/view/Loader/loader.gif +0 -0
- package/src/components/view/Loader/loader.module.css +8 -0
- package/src/components/view/Modal/Modal.stories.tsx +63 -0
- package/src/components/view/Modal/Modal.tsx +58 -0
- package/src/components/view/Modal/index.ts +1 -0
- package/src/components/view/Modal/modal.module.css +18 -0
- package/src/components/view/Modal/modal.stories.module.css +18 -0
- package/src/components/view/Pairs/Pairs.stories.tsx +101 -0
- package/src/components/view/Pairs/Pairs.tsx +63 -0
- package/{components/view/Pairs/index.d.ts → src/components/view/Pairs/index.ts} +0 -1
- package/src/components/view/Pairs/models/Pair.ts +4 -0
- package/src/components/view/Pairs/pairs.module.css +35 -0
- package/src/components/view/Pairs/ui/TypographyWithTooltip.tsx +31 -0
- package/src/components/view/Popover/Popover.stories.tsx +105 -0
- package/src/components/view/Popover/Popover.tsx +75 -0
- package/{components/view/Popover/index.d.ts → src/components/view/Popover/index.ts} +0 -1
- package/src/components/view/Popover/popover.module.css +23 -0
- package/src/components/view/Popover/ui/Arrow/Arrow.tsx +11 -0
- package/src/components/view/Popover/ui/Arrow/index.ts +1 -0
- package/src/components/view/Popover/ui/PopoverContent/PopoverContent.tsx +44 -0
- package/{components/view/Popover/ui/PopoverContent/index.d.ts → src/components/view/Popover/ui/PopoverContent/index.ts} +0 -1
- package/src/components/view/Popover/ui/PopoverProvider/PopoverProvider.tsx +13 -0
- package/src/components/view/Popover/ui/PopoverProvider/constants/PopoverContext.ts +5 -0
- package/src/components/view/Popover/ui/PopoverProvider/hooks/usePopover.ts +79 -0
- package/{components/view/Popover/ui/PopoverProvider/index.d.ts → src/components/view/Popover/ui/PopoverProvider/index.ts} +0 -1
- package/src/components/view/Popover/ui/PopoverProvider/models/PopoverOptions.ts +13 -0
- package/src/components/view/Popover/ui/PopoverProvider/models/PopoverState.ts +7 -0
- package/src/components/view/Popover/ui/PopoverTrigger/PopoverTrigger.tsx +36 -0
- package/{components/view/Popover/ui/PopoverTrigger/index.d.ts → src/components/view/Popover/ui/PopoverTrigger/index.ts} +0 -1
- package/src/components/view/Tooltip/Tooltip.stories.tsx +141 -0
- package/src/components/view/Tooltip/Tooltip.tsx +74 -0
- package/{components/view/Tooltip/index.d.ts → src/components/view/Tooltip/index.ts} +0 -1
- package/src/components/view/Tooltip/tooltip.module.css +93 -0
- package/src/components/view/Tooltip/ui/TooltipContent/TooltipContent.tsx +88 -0
- package/{components/view/Tooltip/ui/TooltipContent/index.d.ts → src/components/view/Tooltip/ui/TooltipContent/index.ts} +0 -1
- package/src/components/view/Tooltip/ui/TooltipProvider/TooltipProvider.tsx +13 -0
- package/src/components/view/Tooltip/ui/TooltipProvider/constants/TooltipContext.ts +5 -0
- package/src/components/view/Tooltip/ui/TooltipProvider/hooks/useTooltip.ts +76 -0
- package/{components/view/Tooltip/ui/TooltipProvider/index.d.ts → src/components/view/Tooltip/ui/TooltipProvider/index.ts} +0 -1
- package/src/components/view/Tooltip/ui/TooltipProvider/models/TooltipOptions.ts +12 -0
- package/{components/view/Tooltip/ui/TooltipProvider/models/TooltipState.d.ts → src/components/view/Tooltip/ui/TooltipProvider/models/TooltipState.ts} +1 -1
- package/src/components/view/Tooltip/ui/TooltipTrigger/TooltipTrigger.tsx +36 -0
- package/{components/view/Tooltip/ui/TooltipTrigger/index.d.ts → src/components/view/Tooltip/ui/TooltipTrigger/index.ts} +0 -1
- package/src/components/view/TreeView/TreeView.stories.tsx +174 -0
- package/src/components/view/TreeView/TreeView.tsx +76 -0
- package/{components/view/TreeView/index.d.ts → src/components/view/TreeView/index.ts} +0 -1
- package/src/components/view/TreeView/models/Item.ts +7 -0
- package/src/components/view/TreeView/treeView.module.css +3 -0
- package/src/components/view/TreeView/ui/TreeViewItem/TreeViewItem.tsx +84 -0
- package/{components/view/TreeView/ui/TreeViewItem/index.d.ts → src/components/view/TreeView/ui/TreeViewItem/index.ts} +0 -1
- package/src/components/view/TreeView/ui/TreeViewItem/treeViewItem.module.css +30 -0
- package/src/components/view/TreeView/utils/getFilteredTree.ts +23 -0
- package/src/components/view/Typography/Typography.stories.tsx +120 -0
- package/src/components/view/Typography/Typography.tsx +28 -0
- package/{components/view/Typography/index.d.ts → src/components/view/Typography/index.ts} +0 -1
- package/src/components/view/Typography/typography.module.css +132 -0
- package/src/components/view/VirtualTable/VirtualTable.stories.tsx +285 -0
- package/src/components/view/VirtualTable/VirtualTable.tsx +1159 -0
- package/src/components/view/VirtualTable/constants/baseColumns.ts +39 -0
- package/src/components/view/VirtualTable/constants/bigBaseColumns.ts +35 -0
- package/src/components/view/VirtualTable/constants/bigSampleData.ts +92 -0
- package/src/components/view/VirtualTable/constants/defaultRowHeight.ts +1 -0
- package/src/components/view/VirtualTable/constants/sampleData.ts +213 -0
- package/{components/view/VirtualTable/index.d.ts → src/components/view/VirtualTable/index.ts} +2 -1
- package/src/components/view/VirtualTable/models/AdditionalButton.ts +10 -0
- package/{components/view/VirtualTable/models/ColumnAlign.d.ts → src/components/view/VirtualTable/models/ColumnAlign.ts} +0 -1
- package/src/components/view/VirtualTable/models/FilterBy.ts +11 -0
- package/src/components/view/VirtualTable/models/SortBy.ts +11 -0
- package/{components/view/VirtualTable/models/SortType.d.ts → src/components/view/VirtualTable/models/SortType.ts} +0 -1
- package/src/components/view/VirtualTable/models/TableCell.ts +12 -0
- package/src/components/view/VirtualTable/models/TableColumn.ts +52 -0
- package/src/components/view/VirtualTable/models/TableRow.ts +6 -0
- package/{components/view/VirtualTable/models/VerticalAlign.d.ts → src/components/view/VirtualTable/models/VerticalAlign.ts} +0 -1
- package/{components/view/VirtualTable/models/VirtualTableBorders.d.ts → src/components/view/VirtualTable/models/VirtualTableBorders.ts} +0 -1
- package/src/components/view/VirtualTable/models/VirtualTableRef.ts +7 -0
- package/src/components/view/VirtualTable/ui/DateFiltration/DateFiltration.tsx +56 -0
- package/src/components/view/VirtualTable/ui/DateFiltration/dateFiltration.module.css +10 -0
- package/{components/view/VirtualTable/ui/DateFiltration/index.d.ts → src/components/view/VirtualTable/ui/DateFiltration/index.ts} +0 -1
- package/src/components/view/VirtualTable/ui/DefaultColumn/DefaultColumn.tsx +144 -0
- package/{components/view/VirtualTable/ui/DefaultColumn/index.d.ts → src/components/view/VirtualTable/ui/DefaultColumn/index.ts} +0 -1
- package/src/components/view/VirtualTable/ui/HeaderDropdown/HeaderDropdown.tsx +359 -0
- package/src/components/view/VirtualTable/ui/HeaderDropdown/headerDropdown.module.css +20 -0
- package/{components/view/VirtualTable/ui/HeaderDropdown/index.d.ts → src/components/view/VirtualTable/ui/HeaderDropdown/index.ts} +0 -1
- package/src/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.tsx +168 -0
- package/{components/view/VirtualTable/ui/NumberFiltration/index.d.ts → src/components/view/VirtualTable/ui/NumberFiltration/index.ts} +0 -1
- package/src/components/view/VirtualTable/ui/NumberFiltration/numberFiltration.module.css +27 -0
- package/src/components/view/VirtualTable/utils/alphanumericCompare.ts +29 -0
- package/src/components/view/VirtualTable/utils/dedupeFirstByColumnValue.ts +17 -0
- package/src/components/view/VirtualTable/utils/getColumns.ts +40 -0
- package/src/components/view/VirtualTable/utils/getNextHorizontalHeaders.ts +21 -0
- package/src/components/view/VirtualTable/utils/getNextVerticalHeaders.ts +18 -0
- package/src/components/view/VirtualTable/utils/getPrevHorizontalHeaders.ts +19 -0
- package/src/components/view/VirtualTable/utils/getPrevVerticalHeaders.ts +22 -0
- package/src/components/view/VirtualTable/utils/recursiveFilter.ts +15 -0
- package/src/components/view/VirtualTable/utils/recursiveSort.ts +24 -0
- package/src/components/view/VirtualTable/utils/rowMatchesFilter.ts +43 -0
- package/src/components/view/VirtualTable/utils/rowSelection.ts +125 -0
- package/src/components/view/VirtualTable/virtualTable.module.css +346 -0
- package/src/hooks/useCompatId.ts +12 -0
- package/src/hooks/useTranslation.ts +15 -0
- package/src/hooks/window/hooks/useWindowSize.ts +14 -0
- package/src/hooks/window/index.ts +1 -0
- package/src/i18n/config.ts +23 -0
- package/src/i18n/locales/en.json +23 -0
- package/src/i18n/locales/ru.json +23 -0
- package/src/icons/AddIcon.tsx +9 -0
- package/src/icons/AlertIcon.tsx +14 -0
- package/src/icons/ArrowDropDownIcon.tsx +9 -0
- package/src/icons/ArrowDropUpIcon.tsx +9 -0
- package/src/icons/AttachIcon.tsx +10 -0
- package/src/icons/BarChartIcon.tsx +9 -0
- package/src/icons/BookmarkAddIcon.tsx +12 -0
- package/src/icons/BookmarkIcon.tsx +9 -0
- package/src/icons/CheckboxDeselectedIcon.tsx +9 -0
- package/src/icons/CheckboxIcon.tsx +10 -0
- package/src/icons/CheckboxSeveralIcon.tsx +10 -0
- package/src/icons/ChevronDownIcon.tsx +9 -0
- package/src/icons/ChevronLeftIcon.tsx +9 -0
- package/src/icons/ChevronRightIcon.tsx +9 -0
- package/src/icons/ChevronUpIcon.tsx +9 -0
- package/src/icons/CircleFilledIcon.tsx +9 -0
- package/src/icons/CloseIcon.tsx +9 -0
- package/src/icons/DateRangeIcon.tsx +10 -0
- package/src/icons/DeleteIcon.tsx +16 -0
- package/src/icons/DoneIcon.tsx +9 -0
- package/src/icons/DownloadIcon.tsx +9 -0
- package/src/icons/DragIcon.tsx +21 -0
- package/src/icons/EditIcon.tsx +10 -0
- package/src/icons/ErrorOutlineIcon.tsx +14 -0
- package/src/icons/ExportTableIcon.tsx +19 -0
- package/src/icons/FileUploadIcon.tsx +9 -0
- package/src/icons/FilterClearIcon.tsx +24 -0
- package/src/icons/FilterIcon.tsx +13 -0
- package/src/icons/FullScreenOffIcon.tsx +9 -0
- package/src/icons/FullScreenOnIcon.tsx +12 -0
- package/src/icons/Icon.tsx +27 -0
- package/src/icons/InfoIcon.tsx +12 -0
- package/src/icons/ListIcon.tsx +9 -0
- package/src/icons/MoreVerticalIcon.tsx +10 -0
- package/src/icons/PointIcon.tsx +14 -0
- package/src/icons/RadioDeselectedIcon.tsx +10 -0
- package/src/icons/RadioSelectedIcon.tsx +10 -0
- package/src/icons/SaveIcon.tsx +17 -0
- package/src/icons/SearchIcon.tsx +10 -0
- package/src/icons/SelectUniqueIcon.tsx +9 -0
- package/src/icons/SettingsIcon.tsx +10 -0
- package/src/icons/SortDownIcon.tsx +9 -0
- package/src/icons/SortUpIcon.tsx +9 -0
- package/src/icons/TableChartIcon.tsx +9 -0
- package/src/icons/UploadIcon.tsx +9 -0
- package/src/icons/VisibilityIcon.tsx +18 -0
- package/src/icons/WellIcon.tsx +10 -0
- package/{icons/index.d.ts → src/icons/index.ts} +0 -1
- package/{index.d.ts → src/index.ts} +38 -3
- package/{models/ButtonVariant.d.ts → src/models/ButtonVariant.ts} +0 -1
- package/{models/CheckboxSize.d.ts → src/models/CheckboxSize.ts} +0 -1
- package/{models/ChipSize.d.ts → src/models/ChipSize.ts} +0 -1
- package/{models/ChipVariant.d.ts → src/models/ChipVariant.ts} +0 -1
- package/src/models/FieldError.ts +4 -0
- package/{models/FieldSize.d.ts → src/models/FieldSize.ts} +0 -1
- package/{models/FieldVariant.d.ts → src/models/FieldVariant.ts} +0 -1
- package/{models/Maybe.d.ts → src/models/Maybe.ts} +0 -1
- package/{models/SurfaceSize.d.ts → src/models/SurfaceSize.ts} +0 -1
- package/{models/SurfaceType.d.ts → src/models/SurfaceType.ts} +0 -1
- package/src/models/TypographyVariant.ts +20 -0
- package/src/models/UiProps.ts +3 -0
- package/src/stories/icons/Icons.stories.tsx +124 -0
- package/src/styles/global.css +142 -0
- package/src/styles/localGlobal.css +20 -0
- package/src/styles/themes/dark.css +132 -0
- package/src/styles/themes/darkBlue.css +132 -0
- package/src/styles/themes/light.css +132 -0
- package/src/theme/ThemeProvider.tsx +164 -0
- package/src/types/global.d.ts +13 -0
- package/src/types/tanstack.d.ts +40 -0
- package/{utils/index.d.ts → src/utils/index.ts} +0 -1
- package/src/utils/toFirstLetterLowerCase.ts +3 -0
- package/src/utils/toFirstLetterUpperCase.ts +3 -0
- package/tsconfig.dist.json +17 -0
- package/tsconfig.json +48 -0
- package/vite.config.ts +13 -0
- package/webpack.dist.config.cjs +105 -0
- package/werf-giterminism.yaml +19 -0
- package/werf.yaml +8 -0
- package/wiki/VirtualTable.md +660 -0
- package/components/common/Button/Button.d.ts +0 -15
- package/components/common/Button/Button.d.ts.map +0 -1
- package/components/common/Button/index.d.ts +0 -2
- package/components/common/Button/index.d.ts.map +0 -1
- package/components/common/ButtonsGroup/ButtonsGroup.d.ts +0 -11
- package/components/common/ButtonsGroup/ButtonsGroup.d.ts.map +0 -1
- package/components/common/ButtonsGroup/index.d.ts.map +0 -1
- package/components/common/Checkbox/Checkbox.d.ts +0 -12
- package/components/common/Checkbox/Checkbox.d.ts.map +0 -1
- package/components/common/Checkbox/index.d.ts.map +0 -1
- package/components/common/Checklist/Checklist.d.ts +0 -17
- package/components/common/Checklist/Checklist.d.ts.map +0 -1
- package/components/common/Checklist/index.d.ts.map +0 -1
- package/components/common/Checklist/models/Item.d.ts +0 -5
- package/components/common/Checklist/models/Item.d.ts.map +0 -1
- package/components/common/Checklist/models/SelectedItems.d.ts +0 -4
- package/components/common/Checklist/models/SelectedItems.d.ts.map +0 -1
- package/components/common/Checklist/utils/filterItems.d.ts +0 -4
- package/components/common/Checklist/utils/filterItems.d.ts.map +0 -1
- package/components/common/ColorPicker/ColorPicker.d.ts +0 -16
- package/components/common/ColorPicker/ColorPicker.d.ts.map +0 -1
- package/components/common/ColorPicker/index.d.ts.map +0 -1
- package/components/common/DateTime/DateTime.d.ts +0 -29
- package/components/common/DateTime/DateTime.d.ts.map +0 -1
- package/components/common/DateTime/index.d.ts.map +0 -1
- package/components/common/DateTime/models/dayjs.d.ts +0 -25
- package/components/common/DateTime/models/dayjs.d.ts.map +0 -1
- package/components/common/DateTime/ui/CalendarPopover/CalendarPopover.d.ts +0 -18
- package/components/common/DateTime/ui/CalendarPopover/CalendarPopover.d.ts.map +0 -1
- package/components/common/DateTime/ui/CalendarPopover/index.d.ts.map +0 -1
- package/components/common/DateTime/ui/TimeWheelColumn/TimeWheelColumn.d.ts +0 -8
- package/components/common/DateTime/ui/TimeWheelColumn/TimeWheelColumn.d.ts.map +0 -1
- package/components/common/DateTime/ui/TimeWheelColumn/index.d.ts.map +0 -1
- package/components/common/DateTime/utils/createCalendarDate.d.ts +0 -3
- package/components/common/DateTime/utils/createCalendarDate.d.ts.map +0 -1
- package/components/common/FieldShell/FieldErrorIcon.d.ts +0 -11
- package/components/common/FieldShell/FieldErrorIcon.d.ts.map +0 -1
- package/components/common/FieldShell/FieldShell.d.ts +0 -32
- package/components/common/FieldShell/FieldShell.d.ts.map +0 -1
- package/components/common/FieldShell/index.d.ts.map +0 -1
- package/components/common/Input/Input.d.ts +0 -16
- package/components/common/Input/Input.d.ts.map +0 -1
- package/components/common/Input/index.d.ts +0 -2
- package/components/common/Input/index.d.ts.map +0 -1
- package/components/common/MultiSelect/MultiSelect.d.ts +0 -26
- package/components/common/MultiSelect/MultiSelect.d.ts.map +0 -1
- package/components/common/MultiSelect/index.d.ts.map +0 -1
- package/components/common/MultiSelect/models/Item.d.ts +0 -8
- package/components/common/MultiSelect/models/Item.d.ts.map +0 -1
- package/components/common/MultiSelect/models/TitleVariant.d.ts.map +0 -1
- package/components/common/MultiSelect/ui/SelectPopover/SelectPopover.d.ts +0 -14
- package/components/common/MultiSelect/ui/SelectPopover/SelectPopover.d.ts.map +0 -1
- package/components/common/MultiSelect/ui/SelectPopover/index.d.ts.map +0 -1
- package/components/common/MultiSelect/utils/getTitle.d.ts +0 -4
- package/components/common/MultiSelect/utils/getTitle.d.ts.map +0 -1
- package/components/common/RadioButton/RadioButton.d.ts +0 -13
- package/components/common/RadioButton/RadioButton.d.ts.map +0 -1
- package/components/common/RadioButton/index.d.ts.map +0 -1
- package/components/common/Select/Select.d.ts +0 -23
- package/components/common/Select/Select.d.ts.map +0 -1
- package/components/common/Select/index.d.ts.map +0 -1
- package/components/common/Select/models/Divider.d.ts +0 -5
- package/components/common/Select/models/Divider.d.ts.map +0 -1
- package/components/common/Select/models/Item.d.ts +0 -13
- package/components/common/Select/models/Item.d.ts.map +0 -1
- package/components/common/Select/ui/SelectPopover/SelectPopover.d.ts +0 -13
- package/components/common/Select/ui/SelectPopover/SelectPopover.d.ts.map +0 -1
- package/components/common/Select/ui/SelectPopover/index.d.ts.map +0 -1
- package/components/common/WrapForLabel/WrapForLabel.d.ts +0 -12
- package/components/common/WrapForLabel/WrapForLabel.d.ts.map +0 -1
- package/components/common/WrapForLabel/index.d.ts.map +0 -1
- package/components/layout/Layout/Layout.d.ts +0 -11
- package/components/layout/Layout/Layout.d.ts.map +0 -1
- package/components/layout/Layout/index.d.ts.map +0 -1
- package/components/layout/Surface/Surface.d.ts +0 -14
- package/components/layout/Surface/Surface.d.ts.map +0 -1
- package/components/layout/Surface/index.d.ts.map +0 -1
- package/components/navigation/Menu/Menu.d.ts +0 -15
- package/components/navigation/Menu/Menu.d.ts.map +0 -1
- package/components/navigation/Menu/index.d.ts.map +0 -1
- package/components/navigation/Menu/models/Divider.d.ts +0 -5
- package/components/navigation/Menu/models/Divider.d.ts.map +0 -1
- package/components/navigation/Menu/models/Item.d.ts +0 -19
- package/components/navigation/Menu/models/Item.d.ts.map +0 -1
- package/components/navigation/Tabs/Tabs.d.ts +0 -27
- package/components/navigation/Tabs/Tabs.d.ts.map +0 -1
- package/components/navigation/Tabs/index.d.ts.map +0 -1
- package/components/navigation/Tabs/models/Item.d.ts +0 -9
- package/components/navigation/Tabs/models/Item.d.ts.map +0 -1
- package/components/view/Card/Card.d.ts +0 -18
- package/components/view/Card/Card.d.ts.map +0 -1
- package/components/view/Card/index.d.ts +0 -2
- package/components/view/Card/index.d.ts.map +0 -1
- package/components/view/Chip/Chip.d.ts +0 -18
- package/components/view/Chip/Chip.d.ts.map +0 -1
- package/components/view/Chip/index.d.ts.map +0 -1
- package/components/view/InputChip/InputChip.d.ts +0 -17
- package/components/view/InputChip/InputChip.d.ts.map +0 -1
- package/components/view/InputChip/index.d.ts.map +0 -1
- package/components/view/Loader/Loader.d.ts +0 -9
- package/components/view/Loader/Loader.d.ts.map +0 -1
- package/components/view/Loader/index.d.ts.map +0 -1
- package/components/view/Modal/Modal.d.ts +0 -11
- package/components/view/Modal/Modal.d.ts.map +0 -1
- package/components/view/Modal/index.d.ts +0 -2
- package/components/view/Modal/index.d.ts.map +0 -1
- package/components/view/Pairs/Pairs.d.ts +0 -14
- package/components/view/Pairs/Pairs.d.ts.map +0 -1
- package/components/view/Pairs/index.d.ts.map +0 -1
- package/components/view/Pairs/models/Pair.d.ts +0 -5
- package/components/view/Pairs/models/Pair.d.ts.map +0 -1
- package/components/view/Pairs/ui/TypographyWithTooltip.d.ts +0 -6
- package/components/view/Pairs/ui/TypographyWithTooltip.d.ts.map +0 -1
- package/components/view/Popover/Popover.d.ts +0 -19
- package/components/view/Popover/Popover.d.ts.map +0 -1
- package/components/view/Popover/index.d.ts.map +0 -1
- package/components/view/Popover/ui/Arrow/Arrow.d.ts +0 -2
- package/components/view/Popover/ui/Arrow/Arrow.d.ts.map +0 -1
- package/components/view/Popover/ui/Arrow/index.d.ts +0 -2
- package/components/view/Popover/ui/Arrow/index.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverContent/PopoverContent.d.ts +0 -3
- package/components/view/Popover/ui/PopoverContent/PopoverContent.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverContent/index.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/PopoverProvider.d.ts +0 -4
- package/components/view/Popover/ui/PopoverProvider/PopoverProvider.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/constants/PopoverContext.d.ts +0 -3
- package/components/view/Popover/ui/PopoverProvider/constants/PopoverContext.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/hooks/usePopover.d.ts +0 -52
- package/components/view/Popover/ui/PopoverProvider/hooks/usePopover.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/index.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/models/PopoverOptions.d.ts +0 -13
- package/components/view/Popover/ui/PopoverProvider/models/PopoverOptions.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverProvider/models/PopoverState.d.ts +0 -5
- package/components/view/Popover/ui/PopoverProvider/models/PopoverState.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverTrigger/PopoverTrigger.d.ts +0 -5
- package/components/view/Popover/ui/PopoverTrigger/PopoverTrigger.d.ts.map +0 -1
- package/components/view/Popover/ui/PopoverTrigger/index.d.ts.map +0 -1
- package/components/view/Tooltip/Tooltip.d.ts +0 -16
- package/components/view/Tooltip/Tooltip.d.ts.map +0 -1
- package/components/view/Tooltip/index.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipContent/TooltipContent.d.ts +0 -9
- package/components/view/Tooltip/ui/TooltipContent/TooltipContent.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipContent/index.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/TooltipProvider.d.ts +0 -4
- package/components/view/Tooltip/ui/TooltipProvider/TooltipProvider.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/constants/TooltipContext.d.ts +0 -3
- package/components/view/Tooltip/ui/TooltipProvider/constants/TooltipContext.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/hooks/useTooltip.d.ts +0 -51
- package/components/view/Tooltip/ui/TooltipProvider/hooks/useTooltip.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/index.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/models/TooltipOptions.d.ts +0 -12
- package/components/view/Tooltip/ui/TooltipProvider/models/TooltipOptions.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipProvider/models/TooltipState.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipTrigger/TooltipTrigger.d.ts +0 -5
- package/components/view/Tooltip/ui/TooltipTrigger/TooltipTrigger.d.ts.map +0 -1
- package/components/view/Tooltip/ui/TooltipTrigger/index.d.ts.map +0 -1
- package/components/view/TreeView/TreeView.d.ts +0 -12
- package/components/view/TreeView/TreeView.d.ts.map +0 -1
- package/components/view/TreeView/index.d.ts.map +0 -1
- package/components/view/TreeView/models/Item.d.ts +0 -8
- package/components/view/TreeView/models/Item.d.ts.map +0 -1
- package/components/view/TreeView/ui/TreeViewItem/TreeViewItem.d.ts +0 -16
- package/components/view/TreeView/ui/TreeViewItem/TreeViewItem.d.ts.map +0 -1
- package/components/view/TreeView/ui/TreeViewItem/index.d.ts.map +0 -1
- package/components/view/TreeView/utils/getFilteredTree.d.ts +0 -3
- package/components/view/TreeView/utils/getFilteredTree.d.ts.map +0 -1
- package/components/view/Typography/Typography.d.ts +0 -9
- package/components/view/Typography/Typography.d.ts.map +0 -1
- package/components/view/Typography/index.d.ts.map +0 -1
- package/components/view/VirtualTable/VirtualTable.d.ts +0 -78
- package/components/view/VirtualTable/VirtualTable.d.ts.map +0 -1
- package/components/view/VirtualTable/constants/defaultRowHeight.d.ts +0 -2
- package/components/view/VirtualTable/constants/defaultRowHeight.d.ts.map +0 -1
- package/components/view/VirtualTable/index.d.ts.map +0 -1
- package/components/view/VirtualTable/models/AdditionalButton.d.ts +0 -9
- package/components/view/VirtualTable/models/AdditionalButton.d.ts.map +0 -1
- package/components/view/VirtualTable/models/ColumnAlign.d.ts.map +0 -1
- package/components/view/VirtualTable/models/FilterBy.d.ts +0 -12
- package/components/view/VirtualTable/models/FilterBy.d.ts.map +0 -1
- package/components/view/VirtualTable/models/SortBy.d.ts +0 -11
- package/components/view/VirtualTable/models/SortBy.d.ts.map +0 -1
- package/components/view/VirtualTable/models/SortType.d.ts.map +0 -1
- package/components/view/VirtualTable/models/TableCell.d.ts +0 -15
- package/components/view/VirtualTable/models/TableCell.d.ts.map +0 -1
- package/components/view/VirtualTable/models/TableColumn.d.ts +0 -52
- package/components/view/VirtualTable/models/TableColumn.d.ts.map +0 -1
- package/components/view/VirtualTable/models/TableRow.d.ts +0 -6
- package/components/view/VirtualTable/models/TableRow.d.ts.map +0 -1
- package/components/view/VirtualTable/models/VerticalAlign.d.ts.map +0 -1
- package/components/view/VirtualTable/models/VirtualTableBorders.d.ts.map +0 -1
- package/components/view/VirtualTable/models/VirtualTableRef.d.ts +0 -8
- package/components/view/VirtualTable/models/VirtualTableRef.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/DateFiltration/DateFiltration.d.ts +0 -7
- package/components/view/VirtualTable/ui/DateFiltration/DateFiltration.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/DateFiltration/index.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/DefaultColumn/DefaultColumn.d.ts +0 -4
- package/components/view/VirtualTable/ui/DefaultColumn/DefaultColumn.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/DefaultColumn/index.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/HeaderDropdown/HeaderDropdown.d.ts +0 -23
- package/components/view/VirtualTable/ui/HeaderDropdown/HeaderDropdown.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/HeaderDropdown/index.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.d.ts +0 -7
- package/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.d.ts.map +0 -1
- package/components/view/VirtualTable/ui/NumberFiltration/index.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/alphanumericCompare.d.ts +0 -2
- package/components/view/VirtualTable/utils/alphanumericCompare.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/dedupeFirstByColumnValue.d.ts +0 -3
- package/components/view/VirtualTable/utils/dedupeFirstByColumnValue.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/getColumns.d.ts +0 -5
- package/components/view/VirtualTable/utils/getColumns.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/getNextHorizontalHeaders.d.ts +0 -4
- package/components/view/VirtualTable/utils/getNextHorizontalHeaders.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/getNextVerticalHeaders.d.ts +0 -4
- package/components/view/VirtualTable/utils/getNextVerticalHeaders.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/getPrevHorizontalHeaders.d.ts +0 -4
- package/components/view/VirtualTable/utils/getPrevHorizontalHeaders.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/getPrevVerticalHeaders.d.ts +0 -4
- package/components/view/VirtualTable/utils/getPrevVerticalHeaders.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/recursiveFilter.d.ts +0 -4
- package/components/view/VirtualTable/utils/recursiveFilter.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/recursiveSort.d.ts +0 -4
- package/components/view/VirtualTable/utils/recursiveSort.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/rowMatchesFilter.d.ts +0 -4
- package/components/view/VirtualTable/utils/rowMatchesFilter.d.ts.map +0 -1
- package/components/view/VirtualTable/utils/rowSelection.d.ts +0 -24
- package/components/view/VirtualTable/utils/rowSelection.d.ts.map +0 -1
- package/hooks/useCompatId.d.ts +0 -2
- package/hooks/useCompatId.d.ts.map +0 -1
- package/hooks/useTranslation.d.ts +0 -6
- package/hooks/useTranslation.d.ts.map +0 -1
- package/icons/AddIcon.d.ts +0 -4
- package/icons/AddIcon.d.ts.map +0 -1
- package/icons/AlertIcon.d.ts +0 -4
- package/icons/AlertIcon.d.ts.map +0 -1
- package/icons/ArrowDropDownIcon.d.ts +0 -4
- package/icons/ArrowDropDownIcon.d.ts.map +0 -1
- package/icons/ArrowDropUpIcon.d.ts +0 -4
- package/icons/ArrowDropUpIcon.d.ts.map +0 -1
- package/icons/AttachIcon.d.ts +0 -4
- package/icons/AttachIcon.d.ts.map +0 -1
- package/icons/BarChartIcon.d.ts +0 -4
- package/icons/BarChartIcon.d.ts.map +0 -1
- package/icons/BookmarkAddIcon.d.ts +0 -4
- package/icons/BookmarkAddIcon.d.ts.map +0 -1
- package/icons/BookmarkIcon.d.ts +0 -4
- package/icons/BookmarkIcon.d.ts.map +0 -1
- package/icons/CheckboxDeselectedIcon.d.ts +0 -4
- package/icons/CheckboxDeselectedIcon.d.ts.map +0 -1
- package/icons/CheckboxIcon.d.ts +0 -4
- package/icons/CheckboxIcon.d.ts.map +0 -1
- package/icons/CheckboxSeveralIcon.d.ts +0 -4
- package/icons/CheckboxSeveralIcon.d.ts.map +0 -1
- package/icons/ChevronDownIcon.d.ts +0 -4
- package/icons/ChevronDownIcon.d.ts.map +0 -1
- package/icons/ChevronLeftIcon.d.ts +0 -4
- package/icons/ChevronLeftIcon.d.ts.map +0 -1
- package/icons/ChevronRightIcon.d.ts +0 -4
- package/icons/ChevronRightIcon.d.ts.map +0 -1
- package/icons/ChevronUpIcon.d.ts +0 -4
- package/icons/ChevronUpIcon.d.ts.map +0 -1
- package/icons/CircleFilledIcon.d.ts +0 -4
- package/icons/CircleFilledIcon.d.ts.map +0 -1
- package/icons/CloseIcon.d.ts +0 -4
- package/icons/CloseIcon.d.ts.map +0 -1
- package/icons/DateRangeIcon.d.ts +0 -4
- package/icons/DateRangeIcon.d.ts.map +0 -1
- package/icons/DeleteIcon.d.ts +0 -4
- package/icons/DeleteIcon.d.ts.map +0 -1
- package/icons/DoneIcon.d.ts +0 -4
- package/icons/DoneIcon.d.ts.map +0 -1
- package/icons/DownloadIcon.d.ts +0 -4
- package/icons/DownloadIcon.d.ts.map +0 -1
- package/icons/DragIcon.d.ts +0 -4
- package/icons/DragIcon.d.ts.map +0 -1
- package/icons/EditIcon.d.ts +0 -4
- package/icons/EditIcon.d.ts.map +0 -1
- package/icons/ErrorOutlineIcon.d.ts +0 -4
- package/icons/ErrorOutlineIcon.d.ts.map +0 -1
- package/icons/ExportTableIcon.d.ts +0 -4
- package/icons/ExportTableIcon.d.ts.map +0 -1
- package/icons/FileUploadIcon.d.ts +0 -4
- package/icons/FileUploadIcon.d.ts.map +0 -1
- package/icons/FilterClearIcon.d.ts +0 -4
- package/icons/FilterClearIcon.d.ts.map +0 -1
- package/icons/FilterIcon.d.ts +0 -4
- package/icons/FilterIcon.d.ts.map +0 -1
- package/icons/FullScreenOffIcon.d.ts +0 -4
- package/icons/FullScreenOffIcon.d.ts.map +0 -1
- package/icons/FullScreenOnIcon.d.ts +0 -4
- package/icons/FullScreenOnIcon.d.ts.map +0 -1
- package/icons/Icon.d.ts +0 -8
- package/icons/Icon.d.ts.map +0 -1
- package/icons/InfoIcon.d.ts +0 -4
- package/icons/InfoIcon.d.ts.map +0 -1
- package/icons/ListIcon.d.ts +0 -4
- package/icons/ListIcon.d.ts.map +0 -1
- package/icons/MoreVerticalIcon.d.ts +0 -4
- package/icons/MoreVerticalIcon.d.ts.map +0 -1
- package/icons/PointIcon.d.ts +0 -4
- package/icons/PointIcon.d.ts.map +0 -1
- package/icons/RadioDeselectedIcon.d.ts +0 -4
- package/icons/RadioDeselectedIcon.d.ts.map +0 -1
- package/icons/RadioSelectedIcon.d.ts +0 -4
- package/icons/RadioSelectedIcon.d.ts.map +0 -1
- package/icons/SaveIcon.d.ts +0 -4
- package/icons/SaveIcon.d.ts.map +0 -1
- package/icons/SearchIcon.d.ts +0 -4
- package/icons/SearchIcon.d.ts.map +0 -1
- package/icons/SelectUniqueIcon.d.ts +0 -4
- package/icons/SelectUniqueIcon.d.ts.map +0 -1
- package/icons/SettingsIcon.d.ts +0 -4
- package/icons/SettingsIcon.d.ts.map +0 -1
- package/icons/SortDownIcon.d.ts +0 -4
- package/icons/SortDownIcon.d.ts.map +0 -1
- package/icons/SortUpIcon.d.ts +0 -4
- package/icons/SortUpIcon.d.ts.map +0 -1
- package/icons/TableChartIcon.d.ts +0 -4
- package/icons/TableChartIcon.d.ts.map +0 -1
- package/icons/UploadIcon.d.ts +0 -4
- package/icons/UploadIcon.d.ts.map +0 -1
- package/icons/VisibilityIcon.d.ts +0 -4
- package/icons/VisibilityIcon.d.ts.map +0 -1
- package/icons/WellIcon.d.ts +0 -4
- package/icons/WellIcon.d.ts.map +0 -1
- package/icons/index.d.ts.map +0 -1
- package/index.css +0 -3325
- package/index.css.map +0 -1
- package/index.d.ts.map +0 -1
- package/index.js +0 -3
- package/index.js.LICENSE.txt +0 -31
- package/index.js.map +0 -1
- package/index.mjs +0 -3
- package/index.mjs.LICENSE.txt +0 -31
- package/index.mjs.map +0 -1
- package/models/ButtonVariant.d.ts.map +0 -1
- package/models/CheckboxSize.d.ts.map +0 -1
- package/models/ChipSize.d.ts.map +0 -1
- package/models/ChipVariant.d.ts.map +0 -1
- package/models/FieldError.d.ts +0 -5
- package/models/FieldError.d.ts.map +0 -1
- package/models/FieldSize.d.ts.map +0 -1
- package/models/FieldVariant.d.ts.map +0 -1
- package/models/Maybe.d.ts.map +0 -1
- package/models/SurfaceSize.d.ts.map +0 -1
- package/models/SurfaceType.d.ts.map +0 -1
- package/models/TypographyVariant.d.ts +0 -2
- package/models/TypographyVariant.d.ts.map +0 -1
- package/models/UiProps.d.ts +0 -7
- package/models/UiProps.d.ts.map +0 -1
- package/theme/ThemeProvider.d.ts +0 -23
- package/theme/ThemeProvider.d.ts.map +0 -1
- package/utils/index.d.ts.map +0 -1
- package/utils/toFirstLetterLowerCase.d.ts +0 -2
- package/utils/toFirstLetterLowerCase.d.ts.map +0 -1
- package/utils/toFirstLetterUpperCase.d.ts +0 -2
- package/utils/toFirstLetterUpperCase.d.ts.map +0 -1
package/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://nntc-ui/webpack/runtime/create fake namespace object","webpack://nntc-ui/./node_modules/dayjs/dayjs.min.js","webpack://nntc-ui/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","webpack://nntc-ui/./node_modules/use-sync-external-store/shim/index.js","webpack://nntc-ui/./node_modules/void-elements/index.js","webpack://nntc-ui/external commonjs2 \"react\"","webpack://nntc-ui/./node_modules/classnames/index.js","webpack://nntc-ui/webpack/bootstrap","webpack://nntc-ui/webpack/runtime/compat get default export","webpack://nntc-ui/webpack/runtime/define property getters","webpack://nntc-ui/webpack/runtime/hasOwnProperty shorthand","webpack://nntc-ui/webpack/runtime/make namespace object","webpack://nntc-ui/webpack/runtime/nonce","webpack://nntc-ui/./src/components/common/Button/button.module.css?73c5","webpack://nntc-ui/external commonjs2 \"react/jsx-runtime\"","webpack://nntc-ui/./src/components/common/Button/Button.tsx","webpack://nntc-ui/./node_modules/react-merge-refs/dist/index.js","webpack://nntc-ui/./src/components/view/Typography/typography.module.css?a976","webpack://nntc-ui/./src/components/view/Typography/Typography.tsx","webpack://nntc-ui/./src/hooks/useCompatId.ts","webpack://nntc-ui/./src/icons/Icon.tsx","webpack://nntc-ui/./src/icons/CheckboxDeselectedIcon.tsx","webpack://nntc-ui/./src/icons/CheckboxIcon.tsx","webpack://nntc-ui/./src/icons/CheckboxSeveralIcon.tsx","webpack://nntc-ui/./src/components/common/Checkbox/checkbox.module.css?be92","webpack://nntc-ui/./src/components/common/Checkbox/Checkbox.tsx","webpack://nntc-ui/./node_modules/uuid/dist/rng.js","webpack://nntc-ui/./node_modules/uuid/dist/stringify.js","webpack://nntc-ui/./node_modules/uuid/dist/v4.js","webpack://nntc-ui/./src/components/view/Tooltip/tooltip.module.css?8819","webpack://nntc-ui/./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack://nntc-ui/./node_modules/tabbable/dist/index.esm.js","webpack://nntc-ui/./node_modules/@floating-ui/react/dist/floating-ui.react.utils.mjs","webpack://nntc-ui/external commonjs2 \"react-dom\"","webpack://nntc-ui/./node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack://nntc-ui/./node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack://nntc-ui/./node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack://nntc-ui/./node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","webpack://nntc-ui/./node_modules/@floating-ui/react/dist/floating-ui.react.mjs","webpack://nntc-ui/./src/components/view/Tooltip/ui/TooltipProvider/constants/TooltipContext.ts","webpack://nntc-ui/./src/components/view/Tooltip/ui/TooltipContent/TooltipContent.tsx","webpack://nntc-ui/./src/components/view/Tooltip/ui/TooltipProvider/TooltipProvider.tsx","webpack://nntc-ui/./src/components/view/Tooltip/ui/TooltipProvider/hooks/useTooltip.ts","webpack://nntc-ui/./src/components/view/Tooltip/ui/TooltipTrigger/TooltipTrigger.tsx","webpack://nntc-ui/./src/components/view/Tooltip/Tooltip.tsx","webpack://nntc-ui/./src/components/common/FieldShell/fieldShell.module.css?b051","webpack://nntc-ui/./src/components/common/FieldShell/FieldShell.tsx","webpack://nntc-ui/./src/icons/ErrorOutlineIcon.tsx","webpack://nntc-ui/./src/components/common/FieldShell/FieldErrorIcon.tsx","webpack://nntc-ui/./src/icons/CloseIcon.tsx","webpack://nntc-ui/./src/components/view/InputChip/inputChip.module.css?c684","webpack://nntc-ui/./src/components/view/InputChip/InputChip.tsx","webpack://nntc-ui/./src/components/view/Popover/popover.module.css?b235","webpack://nntc-ui/./src/components/view/Popover/ui/PopoverProvider/constants/PopoverContext.ts","webpack://nntc-ui/./src/components/view/Popover/ui/PopoverContent/PopoverContent.tsx","webpack://nntc-ui/./src/components/view/Popover/ui/PopoverProvider/PopoverProvider.tsx","webpack://nntc-ui/./src/components/view/Popover/ui/PopoverProvider/hooks/usePopover.ts","webpack://nntc-ui/./src/components/view/Popover/ui/PopoverTrigger/PopoverTrigger.tsx","webpack://nntc-ui/./src/components/view/Popover/Popover.tsx","webpack://nntc-ui/./src/icons/AddIcon.tsx","webpack://nntc-ui/./src/icons/ArrowDropDownIcon.tsx","webpack://nntc-ui/./src/icons/ArrowDropUpIcon.tsx","webpack://nntc-ui/./src/icons/AttachIcon.tsx","webpack://nntc-ui/./src/icons/BarChartIcon.tsx","webpack://nntc-ui/./src/icons/RadioDeselectedIcon.tsx","webpack://nntc-ui/./src/icons/RadioSelectedIcon.tsx","webpack://nntc-ui/./src/icons/ChevronLeftIcon.tsx","webpack://nntc-ui/./src/icons/ChevronRightIcon.tsx","webpack://nntc-ui/./src/icons/CircleFilledIcon.tsx","webpack://nntc-ui/./src/icons/DateRangeIcon.tsx","webpack://nntc-ui/./src/icons/DeleteIcon.tsx","webpack://nntc-ui/./src/icons/DoneIcon.tsx","webpack://nntc-ui/./src/icons/DragIcon.tsx","webpack://nntc-ui/./src/icons/FileUploadIcon.tsx","webpack://nntc-ui/./src/icons/FilterIcon.tsx","webpack://nntc-ui/./src/icons/FilterClearIcon.tsx","webpack://nntc-ui/./src/icons/InfoIcon.tsx","webpack://nntc-ui/./src/icons/AlertIcon.tsx","webpack://nntc-ui/./src/icons/ChevronUpIcon.tsx","webpack://nntc-ui/./src/icons/ChevronDownIcon.tsx","webpack://nntc-ui/./src/icons/ListIcon.tsx","webpack://nntc-ui/./src/icons/MoreVerticalIcon.tsx","webpack://nntc-ui/./src/icons/SearchIcon.tsx","webpack://nntc-ui/./src/icons/SelectUniqueIcon.tsx","webpack://nntc-ui/./src/icons/SettingsIcon.tsx","webpack://nntc-ui/./src/icons/SortDownIcon.tsx","webpack://nntc-ui/./src/icons/SortUpIcon.tsx","webpack://nntc-ui/./src/icons/TableChartIcon.tsx","webpack://nntc-ui/./src/icons/UploadIcon.tsx","webpack://nntc-ui/./src/icons/WellIcon.tsx","webpack://nntc-ui/./src/icons/EditIcon.tsx","webpack://nntc-ui/./src/icons/FullScreenOnIcon.tsx","webpack://nntc-ui/./src/icons/FullScreenOffIcon.tsx","webpack://nntc-ui/./src/icons/BookmarkIcon.tsx","webpack://nntc-ui/./src/icons/BookmarkAddIcon.tsx","webpack://nntc-ui/./src/icons/ExportTableIcon.tsx","webpack://nntc-ui/./src/icons/DownloadIcon.tsx","webpack://nntc-ui/./src/icons/VisibilityIcon.tsx","webpack://nntc-ui/./src/icons/PointIcon.tsx","webpack://nntc-ui/./src/icons/SaveIcon.tsx","webpack://nntc-ui/./src/components/view/Popover/ui/Arrow/Arrow.tsx","webpack://nntc-ui/./src/components/common/ButtonsGroup/ButtonsGroup.tsx","webpack://nntc-ui/./src/components/common/ButtonsGroup/buttonsGroup.module.css?fc62","webpack://nntc-ui/./src/components/navigation/Menu/menu.module.css?a1d2","webpack://nntc-ui/./src/components/navigation/Menu/Menu.tsx","webpack://nntc-ui/./src/components/common/Select/ui/SelectPopover/SelectPopover.tsx","webpack://nntc-ui/./src/components/common/Select/Select.tsx","webpack://nntc-ui/./src/components/common/Select/select.module.css?a04e","webpack://nntc-ui/./src/components/common/DateTime/ui/CalendarPopover/calendarPopover.module.css?9fc2","webpack://nntc-ui/./src/components/common/DateTime/utils/createCalendarDate.ts","webpack://nntc-ui/./src/components/common/DateTime/ui/TimeWheelColumn/TimeWheelColumn.tsx","webpack://nntc-ui/./src/components/common/DateTime/ui/TimeWheelColumn/timeWheelColumn.module.css?2182","webpack://nntc-ui/./src/components/common/DateTime/ui/CalendarPopover/CalendarPopover.tsx","webpack://nntc-ui/./src/components/common/DateTime/DateTime.tsx","webpack://nntc-ui/./src/components/common/DateTime/dateTime.module.css?c660","webpack://nntc-ui/./node_modules/react-colorful/dist/index.mjs","webpack://nntc-ui/./src/components/common/ColorPicker/ColorPicker.tsx","webpack://nntc-ui/./src/components/common/ColorPicker/colorPicker.module.css?5ead","webpack://nntc-ui/./src/components/common/Input/input.module.css?b784","webpack://nntc-ui/./src/components/common/Input/Input.tsx","webpack://nntc-ui/./src/components/common/WrapForLabel/wrapForLabel.module.css?c6a9","webpack://nntc-ui/./src/components/common/WrapForLabel/WrapForLabel.tsx","webpack://nntc-ui/./node_modules/i18next/dist/esm/i18next.js","webpack://nntc-ui/./node_modules/html-parse-stringify/dist/html-parse-stringify.module.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/utils.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/unescape.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/defaults.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/i18nInstance.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/context.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/IcuTransUtils/TranslationParserError.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/IcuTransUtils/htmlEntityDecoder.js","webpack://nntc-ui/./node_modules/react-i18next/dist/es/useTranslation.js","webpack://nntc-ui/./src/hooks/useTranslation.ts","webpack://nntc-ui/./src/components/common/Checklist/utils/filterItems.ts","webpack://nntc-ui/./src/components/common/Checklist/Checklist.tsx","webpack://nntc-ui/./src/components/common/Checklist/checklist.module.css?9f09","webpack://nntc-ui/./src/components/common/MultiSelect/ui/SelectPopover/SelectPopover.tsx","webpack://nntc-ui/./src/components/common/MultiSelect/utils/getTitle.ts","webpack://nntc-ui/./src/components/common/MultiSelect/MultiSelect.tsx","webpack://nntc-ui/./src/components/common/MultiSelect/multiSelect.module.css?a75d","webpack://nntc-ui/./src/components/common/RadioButton/radioButton.module.css?47c4","webpack://nntc-ui/./src/components/common/RadioButton/RadioButton.tsx","webpack://nntc-ui/./src/components/layout/Surface/surface.module.css?158a","webpack://nntc-ui/./src/components/layout/Surface/Surface.tsx","webpack://nntc-ui/./src/components/layout/Layout/Layout.tsx","webpack://nntc-ui/./src/components/layout/Layout/layout.module.css?46de","webpack://nntc-ui/./src/components/navigation/Tabs/tabs.module.css?6039","webpack://nntc-ui/./src/components/navigation/Tabs/Tabs.tsx","webpack://nntc-ui/./node_modules/@tanstack/table-core/build/lib/index.mjs","webpack://nntc-ui/./node_modules/@tanstack/react-table/build/lib/index.mjs","webpack://nntc-ui/./node_modules/@tanstack/virtual-core/dist/esm/utils.js","webpack://nntc-ui/./node_modules/@tanstack/virtual-core/dist/esm/index.js","webpack://nntc-ui/./node_modules/@tanstack/react-virtual/dist/esm/index.js","webpack://nntc-ui/./src/utils/toFirstLetterUpperCase.ts","webpack://nntc-ui/./src/components/view/VirtualTable/constants/defaultRowHeight.ts","webpack://nntc-ui/./src/components/view/Modal/Modal.tsx","webpack://nntc-ui/./src/components/view/Modal/modal.module.css?cd43","webpack://nntc-ui/./src/components/view/VirtualTable/virtualTable.module.css?1107","webpack://nntc-ui/./src/components/view/VirtualTable/ui/DefaultColumn/DefaultColumn.tsx","webpack://nntc-ui/./src/components/view/VirtualTable/utils/alphanumericCompare.ts","webpack://nntc-ui/./src/components/view/VirtualTable/ui/DateFiltration/DateFiltration.tsx","webpack://nntc-ui/./src/components/view/VirtualTable/ui/DateFiltration/dateFiltration.module.css?0bdb","webpack://nntc-ui/./src/components/view/VirtualTable/ui/NumberFiltration/numberFiltration.module.css?da07","webpack://nntc-ui/./src/components/view/VirtualTable/ui/NumberFiltration/NumberFiltration.tsx","webpack://nntc-ui/./src/components/view/VirtualTable/ui/HeaderDropdown/HeaderDropdown.tsx","webpack://nntc-ui/./src/components/view/VirtualTable/ui/HeaderDropdown/headerDropdown.module.css?6294","webpack://nntc-ui/./src/components/view/VirtualTable/utils/dedupeFirstByColumnValue.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/getColumns.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/getNextHorizontalHeaders.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/getPrevVerticalHeaders.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/getNextVerticalHeaders.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/getPrevHorizontalHeaders.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/rowMatchesFilter.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/recursiveFilter.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/recursiveSort.ts","webpack://nntc-ui/./src/components/view/VirtualTable/utils/rowSelection.ts","webpack://nntc-ui/./src/components/view/VirtualTable/VirtualTable.tsx","webpack://nntc-ui/./src/components/view/TreeView/treeView.module.css?0966","webpack://nntc-ui/./src/components/view/TreeView/ui/TreeViewItem/treeViewItem.module.css?14a7","webpack://nntc-ui/./src/components/view/TreeView/ui/TreeViewItem/TreeViewItem.tsx","webpack://nntc-ui/./src/components/view/TreeView/utils/getFilteredTree.ts","webpack://nntc-ui/./src/components/view/TreeView/TreeView.tsx","webpack://nntc-ui/./src/components/view/Pairs/pairs.module.css?cd15","webpack://nntc-ui/./src/components/view/Pairs/ui/TypographyWithTooltip.tsx","webpack://nntc-ui/./src/components/view/Pairs/Pairs.tsx","webpack://nntc-ui/./src/components/view/Card/card.module.css?f35a","webpack://nntc-ui/./src/components/view/Card/Card.tsx","webpack://nntc-ui/./src/components/view/Chip/chip.module.css?857b","webpack://nntc-ui/./src/components/view/Chip/Chip.tsx","webpack://nntc-ui/./src/components/view/Loader/Loader.tsx","webpack://nntc-ui/./src/components/view/Loader/loader.module.css?4a75","webpack://nntc-ui/./src/theme/ThemeProvider.tsx"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","module.exports = require(\"react\");","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","// extracted by mini-css-extract-plugin\nvar _1 = \"button-module__active__hSEWs\";\nvar _2 = \"button-module__compact__nfUBM\";\nvar _3 = \"button-module__elevated__nAlrD\";\nvar _4 = \"button-module__extraLarge__ycvek\";\nvar _5 = \"button-module__filled__D7eAr\";\nvar _6 = \"button-module__large__gt0K2\";\nvar _7 = \"button-module__medium__v66y0\";\nvar _8 = \"button-module__only-icon__zOzfl\";\nvar _9 = \"button-module__outlined__c_PHO\";\nvar _a = \"button-module__root__gX6OQ\";\nvar _b = \"button-module__small__HHNmk\";\nvar _c = \"button-module__state-layer__t1MJf\";\nvar _d = \"button-module__text__rG7nD\";\nvar _e = \"button-module__text-secondary__jXFdx\";\nvar _f = \"button-module__tonal__u6w_G\";\nvar _10 = \"button-module__with-icon__C4Cw6\";\nvar _11 = \"button-module__without-icon__GOGFF\";\nexport { _1 as \"active\", _2 as \"compact\", _3 as \"elevated\", _4 as \"extraLarge\", _5 as \"filled\", _6 as \"large\", _7 as \"medium\", _8 as \"onlyIcon\", _9 as \"outlined\", _a as \"root\", _b as \"small\", _c as \"stateLayer\", _d as \"text\", _e as \"textSecondary\", _f as \"tonal\", _10 as \"withIcon\", _11 as \"withoutIcon\" }\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react/jsx-runtime\");","import classnames from 'classnames';\nimport { ButtonHTMLAttributes, DetailedHTMLProps, ReactNode, forwardRef } from 'react';\n\nimport { ButtonVariant } from '@models/ButtonVariant';\nimport { FieldSize } from '@models/FieldSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './button.module.css';\n\nexport interface Props {\n variant?: ButtonVariant;\n componentSize?: FieldSize;\n icon?: ReactNode;\n textSecondary?: boolean;\n isActive?: boolean;\n compact?: boolean;\n}\n\nexport const Button = forwardRef<\n HTMLButtonElement,\n DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement> & UiProps<Props>\n>(function Button(\n {\n variant = 'filled',\n componentSize = 'medium',\n icon,\n textSecondary,\n isActive,\n compact,\n className,\n children,\n classes,\n ...buttonProps\n },\n propRef,\n) {\n return (\n <button\n className={classnames(\n styles.root,\n styles[variant as keyof typeof styles],\n styles[componentSize as keyof typeof styles],\n !icon ? styles.withoutIcon : !children ? styles.onlyIcon : styles.withIcon,\n isActive ? styles.active : undefined,\n textSecondary ? styles.textSecondary : undefined,\n compact ? styles.compact : undefined,\n className,\n classes?.root,\n )}\n {...buttonProps}\n ref={propRef}\n >\n <span className={classnames(styles.stateLayer, classes?.stateLayer)}>\n {icon}\n {children}\n </span>\n </button>\n );\n});\n","// src/index.ts\nimport { useMemo, version } from \"react\";\n\n// src/mergeRefsReact16.ts\nfunction mergeRefsReact16(refs) {\n return (value) => {\n for (const ref of refs) assignRef(ref, value);\n };\n}\n\n// src/mergeRefsReact19.ts\nfunction mergeRefsReact19(refs) {\n return (value) => {\n const cleanups = [];\n for (const ref of refs) {\n const cleanup = assignRef(ref, value);\n const isCleanup = typeof cleanup === \"function\";\n cleanups.push(isCleanup ? cleanup : () => assignRef(ref, null));\n }\n return () => {\n for (const cleanup of cleanups) cleanup();\n };\n };\n}\n\n// src/index.ts\nfunction assignRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\nvar mergeRefs = parseInt(version.split(\".\")[0], 10) >= 19 ? mergeRefsReact19 : mergeRefsReact16;\nfunction useMergeRefs(refs) {\n return useMemo(() => mergeRefs(refs), refs);\n}\nexport {\n assignRef,\n mergeRefs,\n useMergeRefs\n};\n","// extracted by mini-css-extract-plugin\nvar _1 = \"typography-module__body1__x76Hw\";\nvar _2 = \"typography-module__body2__xQKKj\";\nvar _3 = \"typography-module__body3__yogkL\";\nvar _4 = \"typography-module__button__dx69P\";\nvar _5 = \"typography-module__caption__cWpWz\";\nvar _6 = \"typography-module__caption2__EqwAG\";\nvar _7 = \"typography-module__doubleCaption__uInp1\";\nvar _8 = \"typography-module__h1__pRuCD\";\nvar _9 = \"typography-module__h2__tNSpQ\";\nvar _a = \"typography-module__h3__YqCF_\";\nvar _b = \"typography-module__h4__BCkqi\";\nvar _c = \"typography-module__h5__z84mf\";\nvar _d = \"typography-module__h6__C2Wqz\";\nvar _e = \"typography-module__h7__B6VO6\";\nvar _f = \"typography-module__label__C1Tlg\";\nvar _10 = \"typography-module__overline__IkqBV\";\nvar _11 = \"typography-module__subtitle1__NO_el\";\nvar _12 = \"typography-module__subtitle2__TKKn5\";\nvar _13 = \"typography-module__subtitle3__FK3eb\";\nexport { _1 as \"body1\", _2 as \"body2\", _3 as \"body3\", _4 as \"button\", _5 as \"caption\", _6 as \"caption2\", _7 as \"doubleCaption\", _8 as \"h1\", _9 as \"h2\", _a as \"h3\", _b as \"h4\", _c as \"h5\", _d as \"h6\", _e as \"h7\", _f as \"label\", _10 as \"overline\", _11 as \"subtitle1\", _12 as \"subtitle2\", _13 as \"subtitle3\" }\n","import classnames from 'classnames';\nimport { ElementType, HTMLProps, forwardRef } from 'react';\n\nimport { TypographyVariant } from '@models/TypographyVariant';\n\nimport * as styles from './typography.module.css';\n\ninterface Props {\n variant?: TypographyVariant;\n component?: ElementType;\n}\n\nexport const Typography = forwardRef<HTMLParagraphElement, HTMLProps<HTMLParagraphElement> & Props>(function Typography(\n { variant = 'body2', component, children, className, ...typographyProps },\n propRef,\n) {\n const Component = component || 'span';\n\n return (\n <Component\n className={classnames(styles[variant as keyof typeof styles], className)}\n {...typographyProps}\n ref={propRef}\n >\n {children}\n </Component>\n );\n});\n","import * as React from 'react';\nimport { useMemo } from 'react';\n\ntype ReactWithOptionalUseId = typeof React & { useId?: () => string };\n\nexport function useCompatId(): string {\n const react = React as ReactWithOptionalUseId;\n if (typeof react.useId === 'function') {\n return react.useId();\n }\n return useMemo(() => `nntc-ui-${Math.random().toString(36).slice(2, 11)}`, []);\n}\n","import React, { PropsWithChildren } from 'react';\n\nexport interface IconProps {\n size?: number;\n color?: string;\n className?: string;\n}\n\nexport const Icon: React.FC<PropsWithChildren<IconProps>> = ({\n size = 24,\n color = 'currentColor',\n className,\n children,\n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={color}\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n {children}\n </svg>\n );\n};\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const CheckboxDeselectedIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V5h14v14z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const CheckboxIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const CheckboxSeveralIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2zm0-4H7V7h10v2z\" />\n </Icon>\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"checkbox-module__checkbox__x6SCC\";\nvar _2 = \"checkbox-module__deselected__ZuA24\";\nvar _3 = \"checkbox-module__input__SjKVz\";\nvar _4 = \"checkbox-module__label__tkrMd\";\nvar _5 = \"checkbox-module__label-text__kXha_\";\nvar _6 = \"checkbox-module__pressed__mLWO0\";\nvar _7 = \"checkbox-module__root__xJtJG\";\nvar _8 = \"checkbox-module__selected__pLwVq\";\nvar _9 = \"checkbox-module__several__TYjeg\";\nexport { _1 as \"checkbox\", _2 as \"deselected\", _3 as \"input\", _4 as \"label\", _5 as \"labelText\", _6 as \"pressed\", _7 as \"root\", _8 as \"selected\", _9 as \"several\" }\n","import classnames from 'classnames';\nimport { DetailedHTMLProps, InputHTMLAttributes, forwardRef, useEffect, useRef } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { Typography } from '@components/view/Typography';\nimport { useCompatId } from '@hooks/useCompatId';\nimport { CheckboxDeselectedIcon } from '@icons/CheckboxDeselectedIcon';\nimport { CheckboxIcon } from '@icons/CheckboxIcon';\nimport { CheckboxSeveralIcon } from '@icons/CheckboxSeveralIcon';\nimport { CheckboxSize } from '@models/CheckboxSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './checkbox.module.css';\n\ninterface Props {\n label?: string;\n componentSize?: CheckboxSize;\n several?: boolean;\n}\n\nexport const Checkbox = forwardRef<\n HTMLInputElement,\n UiProps<Props> & DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\n>(function Checkbox(props, ref) {\n const { label, several, componentSize = 'medium', classes, id, ...inputProps } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const generatedId = useCompatId();\n const inputId = id ?? generatedId;\n\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const mouseupListener = () => el.classList.remove(styles.pressed);\n const mousedownListener = () => el.classList.add(styles.pressed);\n\n el.addEventListener('mousedown', mousedownListener);\n el.addEventListener('mouseup', mouseupListener);\n\n return () => {\n el.removeEventListener('mousedown', mousedownListener);\n el.removeEventListener('mouseup', mouseupListener);\n };\n }, []);\n\n const typographyVariant = componentSize === 'large' ? 'subtitle1' : 'subtitle2';\n\n return (\n <div className={classnames(styles.root, classes?.root)}>\n <input\n ref={mergeRefs([inputRef, ref])}\n type=\"checkbox\"\n className={classnames(styles.input, classes?.input)}\n id={inputId}\n title={label}\n {...inputProps}\n />\n <label htmlFor={inputId} className={classnames(styles.label, classes?.label)} title={label}>\n {several ? (\n <span className={classnames(styles.checkbox, styles.several, classes?.checkbox)}>\n <CheckboxSeveralIcon />\n </span>\n ) : (\n <>\n <span className={classnames(styles.checkbox, styles.deselected, classes?.checkbox)}>\n <CheckboxDeselectedIcon />\n </span>\n <span className={classnames(styles.checkbox, styles.selected, classes?.checkbox)}>\n <CheckboxIcon />\n </span>\n </>\n )}\n {!!label && (\n <Typography variant={typographyVariant} className={classnames(styles.labelText, classes?.labelText)}>\n {label}\n </Typography>\n )}\n </label>\n </div>\n );\n});\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","// extracted by mini-css-extract-plugin\nvar _1 = \"tooltip-module__arrow__SONUP\";\nvar _2 = \"tooltip-module__bottom-arrow__GdFYs\";\nvar _3 = \"tooltip-module__content__nH6p2\";\nvar _4 = \"tooltip-module__error__XWI8s\";\nvar _5 = \"tooltip-module__info__un5n7\";\nvar _6 = \"tooltip-module__left-arrow__BFwGV\";\nvar _7 = \"tooltip-module__right-arrow__ZFRBE\";\nvar _8 = \"tooltip-module__success__OXBJT\";\nvar _9 = \"tooltip-module__top-arrow__UHvch\";\nvar _a = \"tooltip-module__trigger__PIfJx\";\nvar _b = \"tooltip-module__warning__Xb_Wr\";\nexport { _1 as \"arrow\", _2 as \"bottomArrow\", _3 as \"content\", _4 as \"error\", _5 as \"info\", _6 as \"leftArrow\", _7 as \"rightArrow\", _8 as \"success\", _9 as \"topArrow\", _a as \"trigger\", _b as \"warning\" }\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","/*!\n* tabbable 6.4.0\n* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE\n*/\n// NOTE: separate `:not()` selectors has broader browser support than the newer\n// `:not([inert], [inert] *)` (Feb 2023)\nvar candidateSelectors = ['input:not([inert]):not([inert] *)', 'select:not([inert]):not([inert] *)', 'textarea:not([inert]):not([inert] *)', 'a[href]:not([inert]):not([inert] *)', 'button:not([inert]):not([inert] *)', '[tabindex]:not(slot):not([inert]):not([inert] *)', 'audio[controls]:not([inert]):not([inert] *)', 'video[controls]:not([inert]):not([inert] *)', '[contenteditable]:not([contenteditable=\"false\"]):not([inert]):not([inert] *)', 'details>summary:first-of-type:not([inert]):not([inert] *)', 'details:not([inert]):not([inert] *)'];\nvar candidateSelector = /* #__PURE__ */candidateSelectors.join(',');\nvar NoElement = typeof Element === 'undefined';\nvar matches = NoElement ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\nvar getRootNode = !NoElement && Element.prototype.getRootNode ? function (element) {\n var _element$getRootNode;\n return element === null || element === void 0 ? void 0 : (_element$getRootNode = element.getRootNode) === null || _element$getRootNode === void 0 ? void 0 : _element$getRootNode.call(element);\n} : function (element) {\n return element === null || element === void 0 ? void 0 : element.ownerDocument;\n};\n\n/**\n * Determines if a node is inert or in an inert ancestor.\n * @param {Node} [node]\n * @param {boolean} [lookUp] If true and `node` is not inert, looks up at ancestors to\n * see if any of them are inert. If false, only `node` itself is considered.\n * @returns {boolean} True if inert itself or by way of being in an inert ancestor.\n * False if `node` is falsy.\n */\nvar _isInert = function isInert(node, lookUp) {\n var _node$getAttribute;\n if (lookUp === void 0) {\n lookUp = true;\n }\n // CAREFUL: JSDom does not support inert at all, so we can't use the `HTMLElement.inert`\n // JS API property; we have to check the attribute, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's an active element\n var inertAtt = node === null || node === void 0 ? void 0 : (_node$getAttribute = node.getAttribute) === null || _node$getAttribute === void 0 ? void 0 : _node$getAttribute.call(node, 'inert');\n var inert = inertAtt === '' || inertAtt === 'true';\n\n // NOTE: this could also be handled with `node.matches('[inert], :is([inert] *)')`\n // if it weren't for `matches()` not being a function on shadow roots; the following\n // code works for any kind of node\n var result = inert || lookUp && node && (\n // closest does not exist on shadow roots, so we fall back to a manual\n // lookup upward, in case it is not defined.\n typeof node.closest === 'function' ? node.closest('[inert]') : _isInert(node.parentNode));\n return result;\n};\n\n/**\n * Determines if a node's content is editable.\n * @param {Element} [node]\n * @returns True if it's content-editable; false if it's not or `node` is falsy.\n */\nvar isContentEditable = function isContentEditable(node) {\n var _node$getAttribute2;\n // CAREFUL: JSDom does not support the `HTMLElement.isContentEditable` API so we have\n // to use the attribute directly to check for this, which can either be empty or 'true';\n // if it's `null` (not specified) or 'false', it's a non-editable element\n var attValue = node === null || node === void 0 ? void 0 : (_node$getAttribute2 = node.getAttribute) === null || _node$getAttribute2 === void 0 ? void 0 : _node$getAttribute2.call(node, 'contenteditable');\n return attValue === '' || attValue === 'true';\n};\n\n/**\n * @param {Element} el container to check in\n * @param {boolean} includeContainer add container to check\n * @param {(node: Element) => boolean} filter filter candidates\n * @returns {Element[]}\n */\nvar getCandidates = function getCandidates(el, includeContainer, filter) {\n // even if `includeContainer=false`, we still have to check it for inertness because\n // if it's inert (either by itself or via its parent), then all its children are inert\n if (_isInert(el)) {\n return [];\n }\n var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));\n if (includeContainer && matches.call(el, candidateSelector)) {\n candidates.unshift(el);\n }\n candidates = candidates.filter(filter);\n return candidates;\n};\n\n/**\n * @callback GetShadowRoot\n * @param {Element} element to check for shadow root\n * @returns {ShadowRoot|boolean} ShadowRoot if available or boolean indicating if a shadowRoot is attached but not available.\n */\n\n/**\n * @callback ShadowRootFilter\n * @param {Element} shadowHostNode the element which contains shadow content\n * @returns {boolean} true if a shadow root could potentially contain valid candidates.\n */\n\n/**\n * @typedef {Object} CandidateScope\n * @property {Element} scopeParent contains inner candidates\n * @property {Element[]} candidates list of candidates found in the scope parent\n */\n\n/**\n * @typedef {Object} IterativeOptions\n * @property {GetShadowRoot|boolean} getShadowRoot true if shadow support is enabled; falsy if not;\n * if a function, implies shadow support is enabled and either returns the shadow root of an element\n * or a boolean stating if it has an undisclosed shadow root\n * @property {(node: Element) => boolean} filter filter candidates\n * @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list\n * @property {ShadowRootFilter} shadowRootFilter filter shadow roots;\n */\n\n/**\n * @param {Element[]} elements list of element containers to match candidates from\n * @param {boolean} includeContainer add container list to check\n * @param {IterativeOptions} options\n * @returns {Array.<Element|CandidateScope>}\n */\nvar _getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {\n var candidates = [];\n var elementsToCheck = Array.from(elements);\n while (elementsToCheck.length) {\n var element = elementsToCheck.shift();\n if (_isInert(element, false)) {\n // no need to look up since we're drilling down\n // anything inside this container will also be inert\n continue;\n }\n if (element.tagName === 'SLOT') {\n // add shadow dom slot scope (slot itself cannot be focusable)\n var assigned = element.assignedElements();\n var content = assigned.length ? assigned : element.children;\n var nestedCandidates = _getCandidatesIteratively(content, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: nestedCandidates\n });\n }\n } else {\n // check candidate element\n var validCandidate = matches.call(element, candidateSelector);\n if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {\n candidates.push(element);\n }\n\n // iterate over shadow content if possible\n var shadowRoot = element.shadowRoot ||\n // check for an undisclosed shadow\n typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);\n\n // no inert look up because we're already drilling down and checking for inertness\n // on the way down, so all containers to this root node should have already been\n // vetted as non-inert\n var validShadowRoot = !_isInert(shadowRoot, false) && (!options.shadowRootFilter || options.shadowRootFilter(element));\n if (shadowRoot && validShadowRoot) {\n // add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed\n // shadow exists, so look at light dom children as fallback BUT create a scope for any\n // child candidates found because they're likely slotted elements (elements that are\n // children of the web component element (which has the shadow), in the light dom, but\n // slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,\n // _after_ we return from this recursive call\n var _nestedCandidates = _getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);\n if (options.flatten) {\n candidates.push.apply(candidates, _nestedCandidates);\n } else {\n candidates.push({\n scopeParent: element,\n candidates: _nestedCandidates\n });\n }\n } else {\n // there's not shadow so just dig into the element's (light dom) children\n // __without__ giving the element special scope treatment\n elementsToCheck.unshift.apply(elementsToCheck, element.children);\n }\n }\n }\n return candidates;\n};\n\n/**\n * @private\n * Determines if the node has an explicitly specified `tabindex` attribute.\n * @param {HTMLElement} node\n * @returns {boolean} True if so; false if not.\n */\nvar hasTabIndex = function hasTabIndex(node) {\n return !isNaN(parseInt(node.getAttribute('tabindex'), 10));\n};\n\n/**\n * Determine the tab index of a given node.\n * @param {HTMLElement} node\n * @returns {number} Tab order (negative, 0, or positive number).\n * @throws {Error} If `node` is falsy.\n */\nvar getTabIndex = function getTabIndex(node) {\n if (!node) {\n throw new Error('No node provided');\n }\n if (node.tabIndex < 0) {\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n // Also browsers do not return `tabIndex` correctly for contentEditable nodes;\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n if ((/^(AUDIO|VIDEO|DETAILS)$/.test(node.tagName) || isContentEditable(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n};\n\n/**\n * Determine the tab index of a given node __for sort order purposes__.\n * @param {HTMLElement} node\n * @param {boolean} [isScope] True for a custom element with shadow root or slot that, by default,\n * has tabIndex -1, but needs to be sorted by document order in order for its content to be\n * inserted into the correct sort position.\n * @returns {number} Tab order (negative, 0, or positive number).\n */\nvar getSortOrderTabIndex = function getSortOrderTabIndex(node, isScope) {\n var tabIndex = getTabIndex(node);\n if (tabIndex < 0 && isScope && !hasTabIndex(node)) {\n return 0;\n }\n return tabIndex;\n};\nvar sortOrderedTabbables = function sortOrderedTabbables(a, b) {\n return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;\n};\nvar isInput = function isInput(node) {\n return node.tagName === 'INPUT';\n};\nvar isHiddenInput = function isHiddenInput(node) {\n return isInput(node) && node.type === 'hidden';\n};\nvar isDetailsWithSummary = function isDetailsWithSummary(node) {\n var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {\n return child.tagName === 'SUMMARY';\n });\n return r;\n};\nvar getCheckedRadio = function getCheckedRadio(nodes, form) {\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].checked && nodes[i].form === form) {\n return nodes[i];\n }\n }\n};\nvar isTabbableRadio = function isTabbableRadio(node) {\n if (!node.name) {\n return true;\n }\n var radioScope = node.form || getRootNode(node);\n var queryRadios = function queryRadios(name) {\n return radioScope.querySelectorAll('input[type=\"radio\"][name=\"' + name + '\"]');\n };\n var radioSet;\n if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {\n radioSet = queryRadios(window.CSS.escape(node.name));\n } else {\n try {\n radioSet = queryRadios(node.name);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);\n return false;\n }\n }\n var checked = getCheckedRadio(radioSet, node.form);\n return !checked || checked === node;\n};\nvar isRadio = function isRadio(node) {\n return isInput(node) && node.type === 'radio';\n};\nvar isNonTabbableRadio = function isNonTabbableRadio(node) {\n return isRadio(node) && !isTabbableRadio(node);\n};\n\n// determines if a node is ultimately attached to the window's document\nvar isNodeAttached = function isNodeAttached(node) {\n var _nodeRoot;\n // The root node is the shadow root if the node is in a shadow DOM; some document otherwise\n // (but NOT _the_ document; see second 'If' comment below for more).\n // If rootNode is shadow root, it'll have a host, which is the element to which the shadow\n // is attached, and the one we need to check if it's in the document or not (because the\n // shadow, and all nodes it contains, is never considered in the document since shadows\n // behave like self-contained DOMs; but if the shadow's HOST, which is part of the document,\n // is hidden, or is not in the document itself but is detached, it will affect the shadow's\n // visibility, including all the nodes it contains). The host could be any normal node,\n // or a custom element (i.e. web component). Either way, that's the one that is considered\n // part of the document, not the shadow root, nor any of its children (i.e. the node being\n // tested).\n // To further complicate things, we have to look all the way up until we find a shadow HOST\n // that is attached (or find none) because the node might be in nested shadows...\n // If rootNode is not a shadow root, it won't have a host, and so rootNode should be the\n // document (per the docs) and while it's a Document-type object, that document does not\n // appear to be the same as the node's `ownerDocument` for some reason, so it's safer\n // to ignore the rootNode at this point, and use `node.ownerDocument`. Otherwise,\n // using `rootNode.contains(node)` will _always_ be true we'll get false-positives when\n // node is actually detached.\n // NOTE: If `nodeRootHost` or `node` happens to be the `document` itself (which is possible\n // if a tabbable/focusable node was quickly added to the DOM, focused, and then removed\n // from the DOM as in https://github.com/focus-trap/focus-trap-react/issues/905), then\n // `ownerDocument` will be `null`, hence the optional chaining on it.\n var nodeRoot = node && getRootNode(node);\n var nodeRootHost = (_nodeRoot = nodeRoot) === null || _nodeRoot === void 0 ? void 0 : _nodeRoot.host;\n\n // in some cases, a detached node will return itself as the root instead of a document or\n // shadow root object, in which case, we shouldn't try to look further up the host chain\n var attached = false;\n if (nodeRoot && nodeRoot !== node) {\n var _nodeRootHost, _nodeRootHost$ownerDo, _node$ownerDocument;\n attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && (_nodeRootHost$ownerDo = _nodeRootHost.ownerDocument) !== null && _nodeRootHost$ownerDo !== void 0 && _nodeRootHost$ownerDo.contains(nodeRootHost) || node !== null && node !== void 0 && (_node$ownerDocument = node.ownerDocument) !== null && _node$ownerDocument !== void 0 && _node$ownerDocument.contains(node));\n while (!attached && nodeRootHost) {\n var _nodeRoot2, _nodeRootHost2, _nodeRootHost2$ownerD;\n // since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,\n // which means we need to get the host's host and check if that parent host is contained\n // in (i.e. attached to) the document\n nodeRoot = getRootNode(nodeRootHost);\n nodeRootHost = (_nodeRoot2 = nodeRoot) === null || _nodeRoot2 === void 0 ? void 0 : _nodeRoot2.host;\n attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && (_nodeRootHost2$ownerD = _nodeRootHost2.ownerDocument) !== null && _nodeRootHost2$ownerD !== void 0 && _nodeRootHost2$ownerD.contains(nodeRootHost));\n }\n }\n return attached;\n};\nvar isZeroArea = function isZeroArea(node) {\n var _node$getBoundingClie = node.getBoundingClientRect(),\n width = _node$getBoundingClie.width,\n height = _node$getBoundingClie.height;\n return width === 0 && height === 0;\n};\nvar isHidden = function isHidden(node, _ref) {\n var displayCheck = _ref.displayCheck,\n getShadowRoot = _ref.getShadowRoot;\n if (displayCheck === 'full-native') {\n if ('checkVisibility' in node) {\n // Chrome >= 105, Edge >= 105, Firefox >= 106, Safari >= 17.4\n // @see https://developer.mozilla.org/en-US/docs/Web/API/Element/checkVisibility#browser_compatibility\n var visible = node.checkVisibility({\n // Checking opacity might be desirable for some use cases, but natively,\n // opacity zero elements _are_ focusable and tabbable.\n checkOpacity: false,\n opacityProperty: false,\n contentVisibilityAuto: true,\n visibilityProperty: true,\n // This is an alias for `visibilityProperty`. Contemporary browsers\n // support both. However, this alias has wider browser support (Chrome\n // >= 105 and Firefox >= 106, vs. Chrome >= 121 and Firefox >= 122), so\n // we include it anyway.\n checkVisibilityCSS: true\n });\n return !visible;\n }\n // Fall through to manual visibility checks\n }\n\n // NOTE: visibility will be `undefined` if node is detached from the document\n // (see notes about this further down), which means we will consider it visible\n // (this is legacy behavior from a very long way back)\n // NOTE: we check this regardless of `displayCheck=\"none\"` because this is a\n // _visibility_ check, not a _display_ check\n if (getComputedStyle(node).visibility === 'hidden') {\n return true;\n }\n var isDirectSummary = matches.call(node, 'details>summary:first-of-type');\n var nodeUnderDetails = isDirectSummary ? node.parentElement : node;\n if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {\n return true;\n }\n if (!displayCheck || displayCheck === 'full' ||\n // full-native can run this branch when it falls through in case\n // Element#checkVisibility is unsupported\n displayCheck === 'full-native' || displayCheck === 'legacy-full') {\n if (typeof getShadowRoot === 'function') {\n // figure out if we should consider the node to be in an undisclosed shadow and use the\n // 'non-zero-area' fallback\n var originalNode = node;\n while (node) {\n var parentElement = node.parentElement;\n var rootNode = getRootNode(node);\n if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow\n ) {\n // node has an undisclosed shadow which means we can only treat it as a black box, so we\n // fall back to a non-zero-area test\n return isZeroArea(node);\n } else if (node.assignedSlot) {\n // iterate up slot\n node = node.assignedSlot;\n } else if (!parentElement && rootNode !== node.ownerDocument) {\n // cross shadow boundary\n node = rootNode.host;\n } else {\n // iterate up normal dom\n node = parentElement;\n }\n }\n node = originalNode;\n }\n // else, `getShadowRoot` might be true, but all that does is enable shadow DOM support\n // (i.e. it does not also presume that all nodes might have undisclosed shadows); or\n // it might be a falsy value, which means shadow DOM support is disabled\n\n // Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)\n // now we can just test to see if it would normally be visible or not, provided it's\n // attached to the main document.\n // NOTE: We must consider case where node is inside a shadow DOM and given directly to\n // `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.\n\n if (isNodeAttached(node)) {\n // this works wherever the node is: if there's at least one client rect, it's\n // somehow displayed; it also covers the CSS 'display: contents' case where the\n // node itself is hidden in place of its contents; and there's no need to search\n // up the hierarchy either\n return !node.getClientRects().length;\n }\n\n // Else, the node isn't attached to the document, which means the `getClientRects()`\n // API will __always__ return zero rects (this can happen, for example, if React\n // is used to render nodes onto a detached tree, as confirmed in this thread:\n // https://github.com/facebook/react/issues/9117#issuecomment-284228870)\n //\n // It also means that even window.getComputedStyle(node).display will return `undefined`\n // because styles are only computed for nodes that are in the document.\n //\n // NOTE: THIS HAS BEEN THE CASE FOR YEARS. It is not new, nor is it caused by tabbable\n // somehow. Though it was never stated officially, anyone who has ever used tabbable\n // APIs on nodes in detached containers has actually implicitly used tabbable in what\n // was later (as of v5.2.0 on Apr 9, 2021) called `displayCheck=\"none\"` mode -- essentially\n // considering __everything__ to be visible because of the innability to determine styles.\n //\n // v6.0.0: As of this major release, the default 'full' option __no longer treats detached\n // nodes as visible with the 'none' fallback.__\n if (displayCheck !== 'legacy-full') {\n return true; // hidden\n }\n // else, fallback to 'none' mode and consider the node visible\n } else if (displayCheck === 'non-zero-area') {\n // NOTE: Even though this tests that the node's client rect is non-zero to determine\n // whether it's displayed, and that a detached node will __always__ have a zero-area\n // client rect, we don't special-case for whether the node is attached or not. In\n // this mode, we do want to consider nodes that have a zero area to be hidden at all\n // times, and that includes attached or not.\n return isZeroArea(node);\n }\n\n // visible, as far as we can tell, or per current `displayCheck=none` mode, we assume\n // it's visible\n return false;\n};\n\n// form fields (nested) inside a disabled fieldset are not focusable/tabbable\n// unless they are in the _first_ <legend> element of the top-most disabled\n// fieldset\nvar isDisabledFromFieldset = function isDisabledFromFieldset(node) {\n if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {\n var parentNode = node.parentElement;\n // check if `node` is contained in a disabled <fieldset>\n while (parentNode) {\n if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {\n // look for the first <legend> among the children of the disabled <fieldset>\n for (var i = 0; i < parentNode.children.length; i++) {\n var child = parentNode.children.item(i);\n // when the first <legend> (in document order) is found\n if (child.tagName === 'LEGEND') {\n // if its parent <fieldset> is not nested in another disabled <fieldset>,\n // return whether `node` is a descendant of its first <legend>\n return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);\n }\n }\n // the disabled <fieldset> containing `node` has no <legend>\n return true;\n }\n parentNode = parentNode.parentElement;\n }\n }\n\n // else, node's tabbable/focusable state should not be affected by a fieldset's\n // enabled/disabled state\n return false;\n};\nvar isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {\n if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||\n // For a details element with a summary, the summary element gets the focus\n isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {\n return false;\n }\n return true;\n};\nvar isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {\n if (isNonTabbableRadio(node) || getTabIndex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {\n return false;\n }\n return true;\n};\nvar isShadowRootTabbable = function isShadowRootTabbable(shadowHostNode) {\n var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);\n if (isNaN(tabIndex) || tabIndex >= 0) {\n return true;\n }\n // If a custom element has an explicit negative tabindex,\n // browsers will not allow tab targeting said element's children.\n return false;\n};\n\n/**\n * @param {Array.<Element|CandidateScope>} candidates\n * @returns Element[]\n */\nvar _sortByOrder = function sortByOrder(candidates) {\n var regularTabbables = [];\n var orderedTabbables = [];\n candidates.forEach(function (item, i) {\n var isScope = !!item.scopeParent;\n var element = isScope ? item.scopeParent : item;\n var candidateTabindex = getSortOrderTabIndex(element, isScope);\n var elements = isScope ? _sortByOrder(item.candidates) : element;\n if (candidateTabindex === 0) {\n isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);\n } else {\n orderedTabbables.push({\n documentOrder: i,\n tabIndex: candidateTabindex,\n item: item,\n isScope: isScope,\n content: elements\n });\n }\n });\n return orderedTabbables.sort(sortOrderedTabbables).reduce(function (acc, sortable) {\n sortable.isScope ? acc.push.apply(acc, sortable.content) : acc.push(sortable.content);\n return acc;\n }, []).concat(regularTabbables);\n};\nvar tabbable = function tabbable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorTabbable.bind(null, options),\n flatten: false,\n getShadowRoot: options.getShadowRoot,\n shadowRootFilter: isShadowRootTabbable\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));\n }\n return _sortByOrder(candidates);\n};\nvar focusable = function focusable(container, options) {\n options = options || {};\n var candidates;\n if (options.getShadowRoot) {\n candidates = _getCandidatesIteratively([container], options.includeContainer, {\n filter: isNodeMatchingSelectorFocusable.bind(null, options),\n flatten: true,\n getShadowRoot: options.getShadowRoot\n });\n } else {\n candidates = getCandidates(container, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));\n }\n return candidates;\n};\nvar isTabbable = function isTabbable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, candidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorTabbable(options, node);\n};\nvar focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe:not([inert]):not([inert] *)').join(',');\nvar isFocusable = function isFocusable(node, options) {\n options = options || {};\n if (!node) {\n throw new Error('No node provided');\n }\n if (matches.call(node, focusableCandidateSelector) === false) {\n return false;\n }\n return isNodeMatchingSelectorFocusable(options, node);\n};\n\nexport { focusable, getTabIndex, isFocusable, isTabbable, tabbable };\n//# sourceMappingURL=index.esm.js.map\n","import { isShadowRoot, isHTMLElement } from '@floating-ui/utils/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport { floor } from '@floating-ui/utils';\nimport { tabbable } from 'tabbable';\n\n// Avoid Chrome DevTools blue warning.\nfunction getPlatform() {\n const uaData = navigator.userAgentData;\n if (uaData != null && uaData.platform) {\n return uaData.platform;\n }\n return navigator.platform;\n}\nfunction getUserAgent() {\n const uaData = navigator.userAgentData;\n if (uaData && Array.isArray(uaData.brands)) {\n return uaData.brands.map(_ref => {\n let {\n brand,\n version\n } = _ref;\n return brand + \"/\" + version;\n }).join(' ');\n }\n return navigator.userAgent;\n}\nfunction isSafari() {\n // Chrome DevTools does not complain about navigator.vendor\n return /apple/i.test(navigator.vendor);\n}\nfunction isAndroid() {\n const re = /android/i;\n return re.test(getPlatform()) || re.test(getUserAgent());\n}\nfunction isMac() {\n return getPlatform().toLowerCase().startsWith('mac') && !navigator.maxTouchPoints;\n}\nfunction isJSDOM() {\n return getUserAgent().includes('jsdom/');\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst TYPEABLE_SELECTOR = \"input:not([type='hidden']):not([disabled]),\" + \"[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\";\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction activeElement(doc) {\n let activeElement = doc.activeElement;\n while (((_activeElement = activeElement) == null || (_activeElement = _activeElement.shadowRoot) == null ? void 0 : _activeElement.activeElement) != null) {\n var _activeElement;\n activeElement = activeElement.shadowRoot.activeElement;\n }\n return activeElement;\n}\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction isEventTargetWithin(event, node) {\n if (node == null) {\n return false;\n }\n if ('composedPath' in event) {\n return event.composedPath().includes(node);\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support composedPath, but browsers without shadow dom don't\n const e = event;\n return e.target != null && node.contains(e.target);\n}\nfunction isRootElement(element) {\n return element.matches('html,body');\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\nfunction isTypeableElement(element) {\n return isHTMLElement(element) && element.matches(TYPEABLE_SELECTOR);\n}\nfunction isTypeableCombobox(element) {\n if (!element) return false;\n return element.getAttribute('role') === 'combobox' && isTypeableElement(element);\n}\nfunction matchesFocusVisible(element) {\n // We don't want to block focus from working with `visibleOnly`\n // (JSDOM doesn't match `:focus-visible` when the element has `:focus`)\n if (!element || isJSDOM()) return true;\n try {\n return element.matches(':focus-visible');\n } catch (_e) {\n return true;\n }\n}\nfunction getFloatingFocusElement(floatingElement) {\n if (!floatingElement) {\n return null;\n }\n // Try to find the element that has `{...getFloatingProps()}` spread on it.\n // This indicates the floating element is acting as a positioning wrapper, and\n // so focus should be managed on the child element with the event handlers and\n // aria props.\n return floatingElement.hasAttribute(FOCUSABLE_ATTRIBUTE) ? floatingElement : floatingElement.querySelector(\"[\" + FOCUSABLE_ATTRIBUTE + \"]\") || floatingElement;\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nfunction getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getNodeChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\nfunction getNodeAncestors(nodes, id) {\n var _nodes$find;\n let allAncestors = [];\n let currentParentId = (_nodes$find = nodes.find(node => node.id === id)) == null ? void 0 : _nodes$find.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode == null ? void 0 : currentNode.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}\n\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n}\nfunction isReactEvent(event) {\n return 'nativeEvent' in event;\n}\n\n// License: https://github.com/adobe/react-spectrum/blob/b35d5c02fe900badccd0cf1a8f23bb593419f238/packages/@react-aria/utils/src/isVirtualEvent.ts\nfunction isVirtualClick(event) {\n // FIXME: Firefox is now emitting a deprecation warning for `mozInputSource`.\n // Try to find a workaround for this. `react-aria` source still has the check.\n if (event.mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n if (isAndroid() && event.pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n return event.detail === 0 && !event.pointerType;\n}\nfunction isVirtualPointerEvent(event) {\n if (isJSDOM()) return false;\n return !isAndroid() && event.width === 0 && event.height === 0 || isAndroid() && event.width === 1 && event.height === 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'mouse' ||\n // iOS VoiceOver returns 0.333• for width/height.\n event.width < 1 && event.height < 1 && event.pressure === 0 && event.detail === 0 && event.pointerType === 'touch';\n}\nfunction isMouseLikePointerType(pointerType, strict) {\n // On some Linux machines with Chromium, mouse inputs return a `pointerType`\n // of \"pen\": https://github.com/floating-ui/floating-ui/issues/2015\n const values = ['mouse', 'pen'];\n if (!strict) {\n values.push('', undefined);\n }\n return values.includes(pointerType);\n}\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\nconst useInsertionEffect = SafeReact.useInsertionEffect;\nconst useSafeInsertionEffect = useInsertionEffect || (fn => fn());\nfunction useEffectEvent(callback) {\n const ref = React.useRef(() => {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error('Cannot call an event handler while rendering.');\n }\n });\n useSafeInsertionEffect(() => {\n ref.current = callback;\n });\n return React.useCallback(function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return ref.current == null ? void 0 : ref.current(...args);\n }, []);\n}\n\nfunction isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nfunction isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nfunction getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n disabledIndices\n });\n}\nfunction getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nfunction findNonDisabledListIndex(listRef, _temp) {\n let {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n } = _temp === void 0 ? {} : _temp;\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nfunction getGridNavigatedIndex(listRef, _ref) {\n let {\n event,\n orientation,\n loop,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n } = _ref;\n let nextIndex = prevIndex;\n if (event.key === ARROW_UP) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loop && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === ARROW_DOWN) {\n stop && stopEvent(event);\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loop && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n stop && stopEvent(event);\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loop && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loop) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n if (loop && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nfunction createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach((_ref2, index) => {\n let {\n width,\n height\n } = _ref2;\n if (width > cols) {\n if (process.env.NODE_ENV !== \"production\") {\n throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i++) {\n for (let j = 0; j < height; j++) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex++;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) return -1;\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === 'function') {\n return disabledIndices(index);\n } else if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = listRef.current[index];\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nconst getTabbableOptions = () => ({\n getShadowRoot: true,\n displayCheck:\n // JSDOM does not support the `tabbable` library. To solve this we can\n // check if `ResizeObserver` is a real function (not polyfilled), which\n // determines if the current environment is JSDOM-like.\n typeof ResizeObserver === 'function' && ResizeObserver.toString().includes('[native code]') ? 'full' : 'none'\n});\nfunction getTabbableIn(container, dir) {\n const list = tabbable(container, getTabbableOptions());\n const len = list.length;\n if (len === 0) return;\n const active = activeElement(getDocument(container));\n const index = list.indexOf(active);\n const nextIndex = index === -1 ? dir === 1 ? 0 : len - 1 : index + dir;\n return list[nextIndex];\n}\nfunction getNextTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, 1) || referenceElement;\n}\nfunction getPreviousTabbable(referenceElement) {\n return getTabbableIn(getDocument(referenceElement).body, -1) || referenceElement;\n}\nfunction isOutsideEvent(event, container) {\n const containerElement = container || event.currentTarget;\n const relatedTarget = event.relatedTarget;\n return !relatedTarget || !contains(containerElement, relatedTarget);\n}\nfunction disableFocusInside(container) {\n const tabbableElements = tabbable(container, getTabbableOptions());\n tabbableElements.forEach(element => {\n element.dataset.tabindex = element.getAttribute('tabindex') || '';\n element.setAttribute('tabindex', '-1');\n });\n}\nfunction enableFocusInside(container) {\n const elements = container.querySelectorAll('[data-tabindex]');\n elements.forEach(element => {\n const tabindex = element.dataset.tabindex;\n delete element.dataset.tabindex;\n if (tabindex) {\n element.setAttribute('tabindex', tabindex);\n } else {\n element.removeAttribute('tabindex');\n }\n });\n}\n\nexport { activeElement, contains, createGridCellMap, disableFocusInside, enableFocusInside, findNonDisabledListIndex, getDeepestNode, getDocument, getFloatingFocusElement, getGridCellIndexOfCorner, getGridCellIndices, getGridNavigatedIndex, getMaxListIndex, getMinListIndex, getNextTabbable, getNodeAncestors, getNodeChildren, getPlatform, getPreviousTabbable, getTabbableOptions, getTarget, getUserAgent, isAndroid, isDifferentGridRow, isEventTargetWithin, isIndexOutOfListBounds, isJSDOM, isListIndexDisabled, isMac, isMouseLikePointerType, isOutsideEvent, isReactEvent, isRootElement, isSafari, isTypeableCombobox, isTypeableElement, isVirtualClick, isVirtualPointerEvent, matchesFocusVisible, stopEvent, useEffectEvent, useLatestRef, index as useModernLayoutEffect };\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","import * as React from 'react';\nimport { useModernLayoutEffect, useEffectEvent, getMinListIndex, getMaxListIndex, createGridCellMap, isListIndexDisabled, getGridNavigatedIndex, getGridCellIndexOfCorner, getGridCellIndices, findNonDisabledListIndex, isIndexOutOfListBounds, useLatestRef, getDocument as getDocument$1, isMouseLikePointerType, contains as contains$1, isSafari, enableFocusInside, isOutsideEvent, getPreviousTabbable, getNextTabbable, disableFocusInside, isTypeableCombobox, getFloatingFocusElement, getTabbableOptions, getNodeAncestors, activeElement, getNodeChildren as getNodeChildren$1, stopEvent, getTarget as getTarget$1, isVirtualClick, isVirtualPointerEvent, getPlatform, isTypeableElement, isReactEvent, isRootElement, isEventTargetWithin, matchesFocusVisible, isMac, getDeepestNode, getUserAgent } from '@floating-ui/react/utils';\nimport { jsx, jsxs, Fragment } from 'react/jsx-runtime';\nimport { getComputedStyle, isElement, isShadowRoot, getNodeName, isNode, isHTMLElement, getWindow, isLastTraversableNode, getParentNode, isWebKit } from '@floating-ui/utils/dom';\nimport { tabbable, isTabbable, focusable } from 'tabbable';\nimport * as ReactDOM from 'react-dom';\nimport { getOverflowAncestors, useFloating as useFloating$1, offset } from '@floating-ui/react-dom';\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, getOverflowAncestors, hide, inline, limitShift, offset, platform, shift, size } from '@floating-ui/react-dom';\nimport { evaluate, max, min, round } from '@floating-ui/utils';\n\n/**\n * Merges an array of refs into a single memoized callback ref or `null`.\n * @see https://floating-ui.com/docs/react-utils#usemergerefs\n */\nfunction useMergeRefs(refs) {\n const cleanupRef = React.useRef(undefined);\n const refEffect = React.useCallback(instance => {\n const cleanups = refs.map(ref => {\n if (ref == null) {\n return;\n }\n if (typeof ref === 'function') {\n const refCallback = ref;\n const refCleanup = refCallback(instance);\n return typeof refCleanup === 'function' ? refCleanup : () => {\n refCallback(null);\n };\n }\n ref.current = instance;\n return () => {\n ref.current = null;\n };\n });\n return () => {\n cleanups.forEach(refCleanup => refCleanup == null ? void 0 : refCleanup());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return value => {\n if (cleanupRef.current) {\n cleanupRef.current();\n cleanupRef.current = undefined;\n }\n if (value != null) {\n cleanupRef.current = refEffect(value);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nconst FloatingListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n map: /*#__PURE__*/new Map(),\n elementsRef: {\n current: []\n }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\n const {\n children,\n elementsRef,\n labelsRef\n } = props;\n const [nodes, setNodes] = React.useState(() => new Set());\n const register = React.useCallback(node => {\n setNodes(prevSet => new Set(prevSet).add(node));\n }, []);\n const unregister = React.useCallback(node => {\n setNodes(prevSet => {\n const set = new Set(prevSet);\n set.delete(node);\n return set;\n });\n }, []);\n const map = React.useMemo(() => {\n const newMap = new Map();\n const sortedNodes = Array.from(nodes.keys()).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n newMap.set(node, index);\n });\n return newMap;\n }, [nodes]);\n return /*#__PURE__*/jsx(FloatingListContext.Provider, {\n value: React.useMemo(() => ({\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n }), [register, unregister, map, elementsRef, labelsRef]),\n children: children\n });\n}\n/**\n * Used to register a list item and its index (DOM position) in the\n * `FloatingList`.\n * @see https://floating-ui.com/docs/FloatingList#uselistitem\n */\nfunction useListItem(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n label\n } = props;\n const {\n register,\n unregister,\n map,\n elementsRef,\n labelsRef\n } = React.useContext(FloatingListContext);\n const [index, setIndex] = React.useState(null);\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index !== null) {\n elementsRef.current[index] = node;\n if (labelsRef) {\n var _node$textContent;\n const isLabelDefined = label !== undefined;\n labelsRef.current[index] = isLabelDefined ? label : (_node$textContent = node == null ? void 0 : node.textContent) != null ? _node$textContent : null;\n }\n }\n }, [index, elementsRef, labelsRef, label]);\n useModernLayoutEffect(() => {\n const node = componentRef.current;\n if (node) {\n register(node);\n return () => {\n unregister(node);\n };\n }\n }, [register, unregister]);\n useModernLayoutEffect(() => {\n const index = componentRef.current ? map.get(componentRef.current) : null;\n if (index != null) {\n setIndex(index);\n }\n }, [map]);\n return React.useMemo(() => ({\n ref,\n index: index == null ? -1 : index\n }), [index, ref]);\n}\n\nconst FOCUSABLE_ATTRIBUTE = 'data-floating-ui-focusable';\nconst ACTIVE_KEY = 'active';\nconst SELECTED_KEY = 'selected';\nconst ARROW_LEFT = 'ArrowLeft';\nconst ARROW_RIGHT = 'ArrowRight';\nconst ARROW_UP = 'ArrowUp';\nconst ARROW_DOWN = 'ArrowDown';\n\nfunction renderJsx(render, computedProps) {\n if (typeof render === 'function') {\n return render(computedProps);\n }\n if (render) {\n return /*#__PURE__*/React.cloneElement(render, computedProps);\n }\n return /*#__PURE__*/jsx(\"div\", {\n ...computedProps\n });\n}\nconst CompositeContext = /*#__PURE__*/React.createContext({\n activeIndex: 0,\n onNavigate: () => {}\n});\nconst horizontalKeys = [ARROW_LEFT, ARROW_RIGHT];\nconst verticalKeys = [ARROW_UP, ARROW_DOWN];\nconst allKeys = [...horizontalKeys, ...verticalKeys];\n\n/**\n * Creates a single tab stop whose items are navigated by arrow keys, which\n * provides list navigation outside of floating element contexts.\n *\n * This is useful to enable navigation of a list of items that aren’t part of a\n * floating element. A menubar is an example of a composite, with each reference\n * element being an item.\n * @see https://floating-ui.com/docs/Composite\n */\nconst Composite = /*#__PURE__*/React.forwardRef(function Composite(props, forwardedRef) {\n const {\n render,\n orientation = 'both',\n loop = true,\n rtl = false,\n cols = 1,\n disabledIndices,\n activeIndex: externalActiveIndex,\n onNavigate: externalSetActiveIndex,\n itemSizes,\n dense = false,\n ...domProps\n } = props;\n const [internalActiveIndex, internalSetActiveIndex] = React.useState(0);\n const activeIndex = externalActiveIndex != null ? externalActiveIndex : internalActiveIndex;\n const onNavigate = useEffectEvent(externalSetActiveIndex != null ? externalSetActiveIndex : internalSetActiveIndex);\n const elementsRef = React.useRef([]);\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const contextValue = React.useMemo(() => ({\n activeIndex,\n onNavigate\n }), [activeIndex, onNavigate]);\n const isGrid = cols > 1;\n function handleKeyDown(event) {\n if (!allKeys.includes(event.key)) return;\n let nextIndex = activeIndex;\n const minIndex = getMinListIndex(elementsRef, disabledIndices);\n const maxIndex = getMaxListIndex(elementsRef, disabledIndices);\n const horizontalEndKey = rtl ? ARROW_LEFT : ARROW_RIGHT;\n const horizontalStartKey = rtl ? ARROW_RIGHT : ARROW_LEFT;\n if (isGrid) {\n const sizes = itemSizes || Array.from({\n length: elementsRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(elementsRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const maybeNextIndex = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex ? elementsRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || elementsRef.current.map((_, index) => isListIndexDisabled(elementsRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(activeIndex > maxIndex ? minIndex : activeIndex, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction we're\n // moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === horizontalEndKey ? 'tr' : 'tl')\n })];\n if (maybeNextIndex != null) {\n nextIndex = maybeNextIndex;\n }\n }\n const toEndKeys = {\n horizontal: [horizontalEndKey],\n vertical: [ARROW_DOWN],\n both: [horizontalEndKey, ARROW_DOWN]\n }[orientation];\n const toStartKeys = {\n horizontal: [horizontalStartKey],\n vertical: [ARROW_UP],\n both: [horizontalStartKey, ARROW_UP]\n }[orientation];\n const preventedKeys = isGrid ? allKeys : {\n horizontal: horizontalKeys,\n vertical: verticalKeys,\n both: allKeys\n }[orientation];\n if (nextIndex === activeIndex && [...toEndKeys, ...toStartKeys].includes(event.key)) {\n if (loop && nextIndex === maxIndex && toEndKeys.includes(event.key)) {\n nextIndex = minIndex;\n } else if (loop && nextIndex === minIndex && toStartKeys.includes(event.key)) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(elementsRef, {\n startingIndex: nextIndex,\n decrement: toStartKeys.includes(event.key),\n disabledIndices\n });\n }\n }\n if (nextIndex !== activeIndex && !isIndexOutOfListBounds(elementsRef, nextIndex)) {\n var _elementsRef$current$;\n event.stopPropagation();\n if (preventedKeys.includes(event.key)) {\n event.preventDefault();\n }\n onNavigate(nextIndex);\n (_elementsRef$current$ = elementsRef.current[nextIndex]) == null || _elementsRef$current$.focus();\n }\n }\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: forwardedRef,\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n onKeyDown(e) {\n domProps.onKeyDown == null || domProps.onKeyDown(e);\n renderElementProps.onKeyDown == null || renderElementProps.onKeyDown(e);\n handleKeyDown(e);\n }\n };\n return /*#__PURE__*/jsx(CompositeContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/jsx(FloatingList, {\n elementsRef: elementsRef,\n children: renderJsx(render, computedProps)\n })\n });\n});\n/**\n * @see https://floating-ui.com/docs/Composite\n */\nconst CompositeItem = /*#__PURE__*/React.forwardRef(function CompositeItem(props, forwardedRef) {\n const {\n render,\n ...domProps\n } = props;\n const renderElementProps = render && typeof render !== 'function' ? render.props : {};\n const {\n activeIndex,\n onNavigate\n } = React.useContext(CompositeContext);\n const {\n ref,\n index\n } = useListItem();\n const mergedRef = useMergeRefs([ref, forwardedRef, renderElementProps.ref]);\n const isActive = activeIndex === index;\n const computedProps = {\n ...domProps,\n ...renderElementProps,\n ref: mergedRef,\n tabIndex: isActive ? 0 : -1,\n 'data-active': isActive ? '' : undefined,\n onFocus(e) {\n domProps.onFocus == null || domProps.onFocus(e);\n renderElementProps.onFocus == null || renderElementProps.onFocus(e);\n onNavigate(index);\n }\n };\n return renderJsx(render, computedProps);\n});\n\n// https://github.com/mui/material-ui/issues/41190#issuecomment-2040873379\nconst SafeReact = {\n ...React\n};\n\nlet serverHandoffComplete = false;\nlet count = 0;\nconst genId = () => // Ensure the id is unique with multiple independent versions of Floating UI\n// on <React 18\n\"floating-ui-\" + Math.random().toString(36).slice(2, 6) + count++;\nfunction useFloatingId() {\n const [id, setId] = React.useState(() => serverHandoffComplete ? genId() : undefined);\n useModernLayoutEffect(() => {\n if (id == null) {\n setId(genId());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n React.useEffect(() => {\n serverHandoffComplete = true;\n }, []);\n return id;\n}\nconst useReactId = SafeReact.useId;\n\n/**\n * Uses React 18's built-in `useId()` when available, or falls back to a\n * slightly less performant (requiring a double render) implementation for\n * earlier React versions.\n * @see https://floating-ui.com/docs/react-utils#useid\n */\nconst useId = useReactId || useFloatingId;\n\nlet devMessageSet;\nif (process.env.NODE_ENV !== \"production\") {\n devMessageSet = /*#__PURE__*/new Set();\n}\nfunction warn() {\n var _devMessageSet;\n for (var _len = arguments.length, messages = new Array(_len), _key = 0; _key < _len; _key++) {\n messages[_key] = arguments[_key];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet = devMessageSet) != null && _devMessageSet.has(message))) {\n var _devMessageSet2;\n (_devMessageSet2 = devMessageSet) == null || _devMessageSet2.add(message);\n console.warn(message);\n }\n}\nfunction error() {\n var _devMessageSet3;\n for (var _len2 = arguments.length, messages = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n messages[_key2] = arguments[_key2];\n }\n const message = \"Floating UI: \" + messages.join(' ');\n if (!((_devMessageSet3 = devMessageSet) != null && _devMessageSet3.has(message))) {\n var _devMessageSet4;\n (_devMessageSet4 = devMessageSet) == null || _devMessageSet4.add(message);\n console.error(message);\n }\n}\n\n/**\n * Renders a pointing arrow triangle.\n * @see https://floating-ui.com/docs/FloatingArrow\n */\nconst FloatingArrow = /*#__PURE__*/React.forwardRef(function FloatingArrow(props, ref) {\n const {\n context: {\n placement,\n elements: {\n floating\n },\n middlewareData: {\n arrow,\n shift\n }\n },\n width = 14,\n height = 7,\n tipRadius = 0,\n strokeWidth = 0,\n staticOffset,\n stroke,\n d,\n style: {\n transform,\n ...restStyle\n } = {},\n ...rest\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (!ref) {\n warn('The `ref` prop is required for `FloatingArrow`.');\n }\n }\n const clipPathId = useId();\n const [isRTL, setIsRTL] = React.useState(false);\n\n // https://github.com/floating-ui/floating-ui/issues/2932\n useModernLayoutEffect(() => {\n if (!floating) return;\n const isRTL = getComputedStyle(floating).direction === 'rtl';\n if (isRTL) {\n setIsRTL(true);\n }\n }, [floating]);\n if (!floating) {\n return null;\n }\n const [side, alignment] = placement.split('-');\n const isVerticalSide = side === 'top' || side === 'bottom';\n let computedStaticOffset = staticOffset;\n if (isVerticalSide && shift != null && shift.x || !isVerticalSide && shift != null && shift.y) {\n computedStaticOffset = null;\n }\n\n // Strokes must be double the border width, this ensures the stroke's width\n // works as you'd expect.\n const computedStrokeWidth = strokeWidth * 2;\n const halfStrokeWidth = computedStrokeWidth / 2;\n const svgX = width / 2 * (tipRadius / -8 + 1);\n const svgY = height / 2 * tipRadius / 4;\n const isCustomShape = !!d;\n const yOffsetProp = computedStaticOffset && alignment === 'end' ? 'bottom' : 'top';\n let xOffsetProp = computedStaticOffset && alignment === 'end' ? 'right' : 'left';\n if (computedStaticOffset && isRTL) {\n xOffsetProp = alignment === 'end' ? 'left' : 'right';\n }\n const arrowX = (arrow == null ? void 0 : arrow.x) != null ? computedStaticOffset || arrow.x : '';\n const arrowY = (arrow == null ? void 0 : arrow.y) != null ? computedStaticOffset || arrow.y : '';\n const dValue = d || 'M0,0' + (\" H\" + width) + (\" L\" + (width - svgX) + \",\" + (height - svgY)) + (\" Q\" + width / 2 + \",\" + height + \" \" + svgX + \",\" + (height - svgY)) + ' Z';\n const rotation = {\n top: isCustomShape ? 'rotate(180deg)' : '',\n left: isCustomShape ? 'rotate(90deg)' : 'rotate(-90deg)',\n bottom: isCustomShape ? '' : 'rotate(180deg)',\n right: isCustomShape ? 'rotate(-90deg)' : 'rotate(90deg)'\n }[side];\n return /*#__PURE__*/jsxs(\"svg\", {\n ...rest,\n \"aria-hidden\": true,\n ref: ref,\n width: isCustomShape ? width : width + computedStrokeWidth,\n height: width,\n viewBox: \"0 0 \" + width + \" \" + (height > width ? height : width),\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n [xOffsetProp]: arrowX,\n [yOffsetProp]: arrowY,\n [side]: isVerticalSide || isCustomShape ? '100%' : \"calc(100% - \" + computedStrokeWidth / 2 + \"px)\",\n transform: [rotation, transform].filter(t => !!t).join(' '),\n ...restStyle\n },\n children: [computedStrokeWidth > 0 && /*#__PURE__*/jsx(\"path\", {\n clipPath: \"url(#\" + clipPathId + \")\",\n fill: \"none\",\n stroke: stroke\n // Account for the stroke on the fill path rendered below.\n ,\n strokeWidth: computedStrokeWidth + (d ? 0 : 1),\n d: dValue\n }), /*#__PURE__*/jsx(\"path\", {\n stroke: computedStrokeWidth && !d ? rest.fill : 'none',\n d: dValue\n }), /*#__PURE__*/jsx(\"clipPath\", {\n id: clipPathId,\n children: /*#__PURE__*/jsx(\"rect\", {\n x: -halfStrokeWidth,\n y: halfStrokeWidth * (isCustomShape ? -1 : 1),\n width: width + computedStrokeWidth,\n height: width\n })\n })]\n });\n});\n\nfunction createEventEmitter() {\n const map = new Map();\n return {\n emit(event, data) {\n var _map$get;\n (_map$get = map.get(event)) == null || _map$get.forEach(listener => listener(data));\n },\n on(event, listener) {\n if (!map.has(event)) {\n map.set(event, new Set());\n }\n map.get(event).add(listener);\n },\n off(event, listener) {\n var _map$get2;\n (_map$get2 = map.get(event)) == null || _map$get2.delete(listener);\n }\n };\n}\n\nconst FloatingNodeContext = /*#__PURE__*/React.createContext(null);\nconst FloatingTreeContext = /*#__PURE__*/React.createContext(null);\n\n/**\n * Returns the parent node id for nested floating elements, if available.\n * Returns `null` for top-level floating elements.\n */\nconst useFloatingParentNodeId = () => {\n var _React$useContext;\n return ((_React$useContext = React.useContext(FloatingNodeContext)) == null ? void 0 : _React$useContext.id) || null;\n};\n\n/**\n * Returns the nearest floating tree context, if available.\n */\nconst useFloatingTree = () => React.useContext(FloatingTreeContext);\n\n/**\n * Registers a node into the `FloatingTree`, returning its id.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction useFloatingNodeId(customParentId) {\n const id = useId();\n const tree = useFloatingTree();\n const reactParentId = useFloatingParentNodeId();\n const parentId = customParentId || reactParentId;\n useModernLayoutEffect(() => {\n if (!id) return;\n const node = {\n id,\n parentId\n };\n tree == null || tree.addNode(node);\n return () => {\n tree == null || tree.removeNode(node);\n };\n }, [tree, id, parentId]);\n return id;\n}\n/**\n * Provides parent node context for nested floating elements.\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingNode(props) {\n const {\n children,\n id\n } = props;\n const parentId = useFloatingParentNodeId();\n return /*#__PURE__*/jsx(FloatingNodeContext.Provider, {\n value: React.useMemo(() => ({\n id,\n parentId\n }), [id, parentId]),\n children: children\n });\n}\n/**\n * Provides context for nested floating elements when they are not children of\n * each other on the DOM.\n * This is not necessary in all cases, except when there must be explicit communication between parent and child floating elements. It is necessary for:\n * - The `bubbles` option in the `useDismiss()` Hook\n * - Nested virtual list navigation\n * - Nested floating elements that each open on hover\n * - Custom communication between parent and child floating elements\n * @see https://floating-ui.com/docs/FloatingTree\n */\nfunction FloatingTree(props) {\n const {\n children\n } = props;\n const nodesRef = React.useRef([]);\n const addNode = React.useCallback(node => {\n nodesRef.current = [...nodesRef.current, node];\n }, []);\n const removeNode = React.useCallback(node => {\n nodesRef.current = nodesRef.current.filter(n => n !== node);\n }, []);\n const [events] = React.useState(() => createEventEmitter());\n return /*#__PURE__*/jsx(FloatingTreeContext.Provider, {\n value: React.useMemo(() => ({\n nodesRef,\n addNode,\n removeNode,\n events\n }), [addNode, removeNode, events]),\n children: children\n });\n}\n\nfunction createAttribute(name) {\n return \"data-floating-ui-\" + name;\n}\n\nfunction clearTimeoutIfSet(timeoutRef) {\n if (timeoutRef.current !== -1) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = -1;\n }\n}\n\nconst safePolygonIdentifier = /*#__PURE__*/createAttribute('safe-polygon');\nfunction getDelay(value, prop, pointerType) {\n if (pointerType && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'function') {\n const result = value();\n if (typeof result === 'number') {\n return result;\n }\n return result == null ? void 0 : result[prop];\n }\n return value == null ? void 0 : value[prop];\n}\nfunction getRestMs(value) {\n if (typeof value === 'function') {\n return value();\n }\n return value;\n}\n/**\n * Opens the floating element while hovering over the reference element, like\n * CSS `:hover`.\n * @see https://floating-ui.com/docs/useHover\n */\nfunction useHover(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n events,\n elements\n } = context;\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true\n } = props;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const handleCloseRef = useLatestRef(handleClose);\n const delayRef = useLatestRef(delay);\n const openRef = useLatestRef(open);\n const restMsRef = useLatestRef(restMs);\n const pointerTypeRef = React.useRef();\n const timeoutRef = React.useRef(-1);\n const handlerRef = React.useRef();\n const restTimeoutRef = React.useRef(-1);\n const blockMouseMoveRef = React.useRef(true);\n const performedPointerEventsMutationRef = React.useRef(false);\n const unbindMouseMoveRef = React.useRef(() => {});\n const restTimeoutPendingRef = React.useRef(false);\n const isHoverOpen = useEffectEvent(() => {\n var _dataRef$current$open;\n const type = (_dataRef$current$open = dataRef.current.openEvent) == null ? void 0 : _dataRef$current$open.type;\n return (type == null ? void 0 : type.includes('mouse')) && type !== 'mousedown';\n });\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n open\n } = _ref;\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n blockMouseMoveRef.current = true;\n restTimeoutPendingRef.current = false;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [enabled, events]);\n React.useEffect(() => {\n if (!enabled) return;\n if (!handleCloseRef.current) return;\n if (!open) return;\n function onLeave(event) {\n if (isHoverOpen()) {\n onOpenChange(false, event, 'hover');\n }\n }\n const html = getDocument$1(elements.floating).documentElement;\n html.addEventListener('mouseleave', onLeave);\n return () => {\n html.removeEventListener('mouseleave', onLeave);\n };\n }, [elements.floating, open, onOpenChange, enabled, handleCloseRef, isHoverOpen]);\n const closeWithDelay = React.useCallback(function (event, runElseBranch, reason) {\n if (runElseBranch === void 0) {\n runElseBranch = true;\n }\n if (reason === void 0) {\n reason = 'hover';\n }\n const closeDelay = getDelay(delayRef.current, 'close', pointerTypeRef.current);\n if (closeDelay && !handlerRef.current) {\n clearTimeoutIfSet(timeoutRef);\n timeoutRef.current = window.setTimeout(() => onOpenChange(false, event, reason), closeDelay);\n } else if (runElseBranch) {\n clearTimeoutIfSet(timeoutRef);\n onOpenChange(false, event, reason);\n }\n }, [delayRef, onOpenChange]);\n const cleanupMouseMoveHandler = useEffectEvent(() => {\n unbindMouseMoveRef.current();\n handlerRef.current = undefined;\n });\n const clearPointerEvents = useEffectEvent(() => {\n if (performedPointerEventsMutationRef.current) {\n const body = getDocument$1(elements.floating).body;\n body.style.pointerEvents = '';\n body.removeAttribute(safePolygonIdentifier);\n performedPointerEventsMutationRef.current = false;\n }\n });\n const isClickLikeOpenEvent = useEffectEvent(() => {\n return dataRef.current.openEvent ? ['click', 'mousedown'].includes(dataRef.current.openEvent.type) : false;\n });\n\n // Registering the mouse events on the reference directly to bypass React's\n // delegation system. If the cursor was on a disabled element and then entered\n // the reference (no gap), `mouseenter` doesn't fire in the delegation system.\n React.useEffect(() => {\n if (!enabled) return;\n function onReferenceMouseEnter(event) {\n clearTimeoutIfSet(timeoutRef);\n blockMouseMoveRef.current = false;\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current) || getRestMs(restMsRef.current) > 0 && !getDelay(delayRef.current, 'open')) {\n return;\n }\n const openDelay = getDelay(delayRef.current, 'open', pointerTypeRef.current);\n if (openDelay) {\n timeoutRef.current = window.setTimeout(() => {\n if (!openRef.current) {\n onOpenChange(true, event, 'hover');\n }\n }, openDelay);\n } else if (!open) {\n onOpenChange(true, event, 'hover');\n }\n }\n function onReferenceMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n clearPointerEvents();\n return;\n }\n unbindMouseMoveRef.current();\n const doc = getDocument$1(elements.floating);\n clearTimeoutIfSet(restTimeoutRef);\n restTimeoutPendingRef.current = false;\n if (handleCloseRef.current && dataRef.current.floatingContext) {\n // Prevent clearing `onScrollMouseLeave` timeout.\n if (!open) {\n clearTimeoutIfSet(timeoutRef);\n }\n handlerRef.current = handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, true, 'safe-polygon');\n }\n }\n });\n const handler = handlerRef.current;\n doc.addEventListener('mousemove', handler);\n unbindMouseMoveRef.current = () => {\n doc.removeEventListener('mousemove', handler);\n };\n return;\n }\n\n // Allow interactivity without `safePolygon` on touch devices. With a\n // pointer, a short close delay is an alternative, so it should work\n // consistently.\n const shouldClose = pointerTypeRef.current === 'touch' ? !contains$1(elements.floating, event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Ensure the floating element closes after scrolling even if the pointer\n // did not move.\n // https://github.com/floating-ui/floating-ui/discussions/1692\n function onScrollMouseLeave(event) {\n if (isClickLikeOpenEvent()) return;\n if (!dataRef.current.floatingContext) return;\n handleCloseRef.current == null || handleCloseRef.current({\n ...dataRef.current.floatingContext,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n })(event);\n }\n function onFloatingMouseEnter() {\n clearTimeoutIfSet(timeoutRef);\n }\n function onFloatingMouseLeave(event) {\n if (!isClickLikeOpenEvent()) {\n closeWithDelay(event, false);\n }\n }\n if (isElement(elements.domReference)) {\n const reference = elements.domReference;\n const floating = elements.floating;\n if (open) {\n reference.addEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.addEventListener('mousemove', onReferenceMouseEnter, {\n once: true\n });\n }\n reference.addEventListener('mouseenter', onReferenceMouseEnter);\n reference.addEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.addEventListener('mouseleave', onScrollMouseLeave);\n floating.addEventListener('mouseenter', onFloatingMouseEnter);\n floating.addEventListener('mouseleave', onFloatingMouseLeave);\n }\n return () => {\n if (open) {\n reference.removeEventListener('mouseleave', onScrollMouseLeave);\n }\n if (move) {\n reference.removeEventListener('mousemove', onReferenceMouseEnter);\n }\n reference.removeEventListener('mouseenter', onReferenceMouseEnter);\n reference.removeEventListener('mouseleave', onReferenceMouseLeave);\n if (floating) {\n floating.removeEventListener('mouseleave', onScrollMouseLeave);\n floating.removeEventListener('mouseenter', onFloatingMouseEnter);\n floating.removeEventListener('mouseleave', onFloatingMouseLeave);\n }\n };\n }\n }, [elements, enabled, context, mouseOnly, move, closeWithDelay, cleanupMouseMoveHandler, clearPointerEvents, onOpenChange, open, openRef, tree, delayRef, handleCloseRef, dataRef, isClickLikeOpenEvent, restMsRef]);\n\n // Block pointer-events of every element other than the reference and floating\n // while the floating element is open and has a `handleClose` handler. Also\n // handles nested floating elements.\n // https://github.com/floating-ui/floating-ui/issues/1722\n useModernLayoutEffect(() => {\n var _handleCloseRef$curre;\n if (!enabled) return;\n if (open && (_handleCloseRef$curre = handleCloseRef.current) != null && (_handleCloseRef$curre = _handleCloseRef$curre.__options) != null && _handleCloseRef$curre.blockPointerEvents && isHoverOpen()) {\n performedPointerEventsMutationRef.current = true;\n const floatingEl = elements.floating;\n if (isElement(elements.domReference) && floatingEl) {\n var _tree$nodesRef$curren;\n const body = getDocument$1(elements.floating).body;\n body.setAttribute(safePolygonIdentifier, '');\n const ref = elements.domReference;\n const parentFloating = tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null ? void 0 : _tree$nodesRef$curren.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n body.style.pointerEvents = 'none';\n ref.style.pointerEvents = 'auto';\n floatingEl.style.pointerEvents = 'auto';\n return () => {\n body.style.pointerEvents = '';\n ref.style.pointerEvents = '';\n floatingEl.style.pointerEvents = '';\n };\n }\n }\n }, [enabled, open, parentId, elements, tree, handleCloseRef, isHoverOpen]);\n useModernLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n restTimeoutPendingRef.current = false;\n cleanupMouseMoveHandler();\n clearPointerEvents();\n }\n }, [open, cleanupMouseMoveHandler, clearPointerEvents]);\n React.useEffect(() => {\n return () => {\n cleanupMouseMoveHandler();\n clearTimeoutIfSet(timeoutRef);\n clearTimeoutIfSet(restTimeoutRef);\n clearPointerEvents();\n };\n }, [enabled, elements.domReference, cleanupMouseMoveHandler, clearPointerEvents]);\n const reference = React.useMemo(() => {\n function setPointerRef(event) {\n pointerTypeRef.current = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n function handleMouseMove() {\n if (!blockMouseMoveRef.current && !openRef.current) {\n onOpenChange(true, nativeEvent, 'hover');\n }\n }\n if (mouseOnly && !isMouseLikePointerType(pointerTypeRef.current)) {\n return;\n }\n if (open || getRestMs(restMsRef.current) === 0) {\n return;\n }\n\n // Ignore insignificant movements to account for tremors.\n if (restTimeoutPendingRef.current && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n clearTimeoutIfSet(restTimeoutRef);\n if (pointerTypeRef.current === 'touch') {\n handleMouseMove();\n } else {\n restTimeoutPendingRef.current = true;\n restTimeoutRef.current = window.setTimeout(handleMouseMove, getRestMs(restMsRef.current));\n }\n }\n };\n }, [mouseOnly, onOpenChange, open, openRef, restMsRef]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst NOOP = () => {};\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n delay: 0,\n initialDelay: 0,\n timeoutMs: 0,\n currentId: null,\n setCurrentId: NOOP,\n setState: NOOP,\n isInstantPhase: false\n});\n\n/**\n * @deprecated\n * Use the return value of `useDelayGroup()` instead.\n */\nconst useDelayGroupContext = () => React.useContext(FloatingDelayGroupContext);\n/**\n * Provides context for a group of floating elements that should share a\n * `delay`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const [state, setState] = React.useReducer((prev, next) => ({\n ...prev,\n ...next\n }), {\n delay,\n timeoutMs,\n initialDelay: delay,\n currentId: null,\n isInstantPhase: false\n });\n const initialCurrentIdRef = React.useRef(null);\n const setCurrentId = React.useCallback(currentId => {\n setState({\n currentId\n });\n }, []);\n useModernLayoutEffect(() => {\n if (state.currentId) {\n if (initialCurrentIdRef.current === null) {\n initialCurrentIdRef.current = state.currentId;\n } else if (!state.isInstantPhase) {\n setState({\n isInstantPhase: true\n });\n }\n } else {\n if (state.isInstantPhase) {\n setState({\n isInstantPhase: false\n });\n }\n initialCurrentIdRef.current = null;\n }\n }, [state.currentId, state.isInstantPhase]);\n return /*#__PURE__*/jsx(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n ...state,\n setState,\n setCurrentId\n }), [state, setCurrentId]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n id: optionId,\n enabled = true\n } = options;\n const id = optionId != null ? optionId : floatingId;\n const groupContext = useDelayGroupContext();\n const {\n currentId,\n setCurrentId,\n initialDelay,\n setState,\n timeoutMs\n } = groupContext;\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!currentId) return;\n setState({\n delay: {\n open: 1,\n close: getDelay(initialDelay, 'close')\n }\n });\n if (currentId !== id) {\n onOpenChange(false);\n }\n }, [enabled, id, onOpenChange, setState, currentId, initialDelay]);\n useModernLayoutEffect(() => {\n function unset() {\n onOpenChange(false);\n setState({\n delay: initialDelay,\n currentId: null\n });\n }\n if (!enabled) return;\n if (!currentId) return;\n if (!open && currentId === id) {\n if (timeoutMs) {\n const timeout = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeout);\n };\n }\n unset();\n }\n }, [enabled, open, setState, currentId, id, onOpenChange, initialDelay, timeoutMs]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (setCurrentId === NOOP || !open) return;\n setCurrentId(id);\n }, [enabled, open, setCurrentId, id]);\n return groupContext;\n}\n\nconst NextFloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n hasProvider: false,\n timeoutMs: 0,\n delayRef: {\n current: 0\n },\n initialDelayRef: {\n current: 0\n },\n timeoutIdRef: {\n current: -1\n },\n currentIdRef: {\n current: null\n },\n currentContextRef: {\n current: null\n }\n});\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useNextDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction NextFloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const delayRef = React.useRef(delay);\n const initialDelayRef = React.useRef(delay);\n const currentIdRef = React.useRef(null);\n const currentContextRef = React.useRef(null);\n const timeoutIdRef = React.useRef(-1);\n return /*#__PURE__*/jsx(NextFloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n hasProvider: true,\n delayRef,\n initialDelayRef,\n currentIdRef,\n timeoutMs,\n currentContextRef,\n timeoutIdRef\n }), [timeoutMs]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `NextFloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n */\nfunction useNextDelayGroup(context, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n open,\n onOpenChange,\n floatingId\n } = context;\n const {\n enabled = true\n } = options;\n const groupContext = React.useContext(NextFloatingDelayGroupContext);\n const {\n currentIdRef,\n delayRef,\n timeoutMs,\n initialDelayRef,\n currentContextRef,\n hasProvider,\n timeoutIdRef\n } = groupContext;\n const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n useModernLayoutEffect(() => {\n function unset() {\n var _currentContextRef$cu;\n setIsInstantPhase(false);\n (_currentContextRef$cu = currentContextRef.current) == null || _currentContextRef$cu.setIsInstantPhase(false);\n currentIdRef.current = null;\n currentContextRef.current = null;\n delayRef.current = initialDelayRef.current;\n }\n if (!enabled) return;\n if (!currentIdRef.current) return;\n if (!open && currentIdRef.current === floatingId) {\n setIsInstantPhase(false);\n if (timeoutMs) {\n timeoutIdRef.current = window.setTimeout(unset, timeoutMs);\n return () => {\n clearTimeout(timeoutIdRef.current);\n };\n }\n unset();\n }\n }, [enabled, open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n const prevContext = currentContextRef.current;\n const prevId = currentIdRef.current;\n currentContextRef.current = {\n onOpenChange,\n setIsInstantPhase\n };\n currentIdRef.current = floatingId;\n delayRef.current = {\n open: 0,\n close: getDelay(initialDelayRef.current, 'close')\n };\n if (prevId !== null && prevId !== floatingId) {\n clearTimeoutIfSet(timeoutIdRef);\n setIsInstantPhase(true);\n prevContext == null || prevContext.setIsInstantPhase(true);\n prevContext == null || prevContext.onOpenChange(false);\n } else {\n setIsInstantPhase(false);\n prevContext == null || prevContext.setIsInstantPhase(false);\n }\n }, [enabled, open, floatingId, onOpenChange, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeoutIdRef]);\n useModernLayoutEffect(() => {\n return () => {\n currentContextRef.current = null;\n };\n }, [currentContextRef]);\n return React.useMemo(() => ({\n hasProvider,\n delayRef,\n isInstantPhase\n }), [hasProvider, delayRef, isInstantPhase]);\n}\n\nlet rafId = 0;\nfunction enqueueFocus(el, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n preventScroll = false,\n cancelPrevious = true,\n sync = false\n } = options;\n cancelPrevious && cancelAnimationFrame(rafId);\n const exec = () => el == null ? void 0 : el.focus({\n preventScroll\n });\n if (sync) {\n exec();\n } else {\n rafId = requestAnimationFrame(exec);\n }\n}\n\nfunction contains(parent, child) {\n if (!parent || !child) {\n return false;\n }\n const rootNode = child.getRootNode == null ? void 0 : child.getRootNode();\n\n // First, attempt with faster native method\n if (parent.contains(child)) {\n return true;\n }\n\n // then fallback to custom implementation with Shadow DOM support\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) {\n return true;\n }\n // @ts-ignore\n next = next.parentNode || next.host;\n }\n }\n\n // Give up, the result is false\n return false;\n}\nfunction getTarget(event) {\n if ('composedPath' in event) {\n return event.composedPath()[0];\n }\n\n // TS thinks `event` is of type never as it assumes all browsers support\n // `composedPath()`, but browsers without shadow DOM don't.\n return event.target;\n}\nfunction getDocument(node) {\n return (node == null ? void 0 : node.ownerDocument) || document;\n}\n\n// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nconst counters = {\n inert: /*#__PURE__*/new WeakMap(),\n 'aria-hidden': /*#__PURE__*/new WeakMap(),\n none: /*#__PURE__*/new WeakMap()\n};\nfunction getCounterMap(control) {\n if (control === 'inert') return counters.inert;\n if (control === 'aria-hidden') return counters['aria-hidden'];\n return counters.none;\n}\nlet uncontrolledElementsSet = /*#__PURE__*/new WeakSet();\nlet markerMap = {};\nlet lockCount$1 = 0;\nconst supportsInert = () => typeof HTMLElement !== 'undefined' && 'inert' in HTMLElement.prototype;\nfunction unwrapHost(node) {\n if (!node) {\n return null;\n }\n return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode);\n}\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert) {\n const markerName = 'data-floating-ui-inert';\n const controlAttribute = inert ? 'inert' : ariaHidden ? 'aria-hidden' : null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const elementsToKeep = new Set();\n const elementsToStop = new Set(avoidElements);\n const hiddenElements = [];\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n const markerCounter = markerMap[markerName];\n avoidElements.forEach(keep);\n deep(body);\n elementsToKeep.clear();\n function keep(el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n el.parentNode && keep(el.parentNode);\n }\n function deep(parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n [].forEach.call(parent.children, node => {\n if (getNodeName(node) === 'script') return;\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n const attr = controlAttribute ? node.getAttribute(controlAttribute) : null;\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterMap = getCounterMap(controlAttribute);\n const counterValue = (counterMap.get(node) || 0) + 1;\n const markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledElementsSet.add(node);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n if (!alreadyHidden && controlAttribute) {\n node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n }\n }\n });\n }\n lockCount$1++;\n return () => {\n hiddenElements.forEach(element => {\n const counterMap = getCounterMap(controlAttribute);\n const currentCounterValue = counterMap.get(element) || 0;\n const counterValue = currentCounterValue - 1;\n const markerValue = (markerCounter.get(element) || 0) - 1;\n counterMap.set(element, counterValue);\n markerCounter.set(element, markerValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet.delete(element);\n }\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n lockCount$1--;\n if (!lockCount$1) {\n counters.inert = new WeakMap();\n counters['aria-hidden'] = new WeakMap();\n counters.none = new WeakMap();\n uncontrolledElementsSet = new WeakSet();\n markerMap = {};\n }\n };\n}\nfunction markOthers(avoidElements, ariaHidden, inert) {\n if (ariaHidden === void 0) {\n ariaHidden = false;\n }\n if (inert === void 0) {\n inert = false;\n }\n const body = getDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements.concat(Array.from(body.querySelectorAll('[aria-live],[role=\"status\"],output'))), body, ariaHidden, inert);\n}\n\nconst HIDDEN_STYLES = {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: '1px',\n margin: '-1px',\n overflow: 'hidden',\n padding: 0,\n position: 'fixed',\n whiteSpace: 'nowrap',\n width: '1px',\n top: 0,\n left: 0\n};\nconst FocusGuard = /*#__PURE__*/React.forwardRef(function FocusGuard(props, ref) {\n const [role, setRole] = React.useState();\n useModernLayoutEffect(() => {\n if (isSafari()) {\n // Unlike other screen readers such as NVDA and JAWS, the virtual cursor\n // on VoiceOver does trigger the onFocus event, so we can use the focus\n // trap element. On Safari, only buttons trigger the onFocus event.\n // NB: \"group\" role in the Sandbox no longer appears to work, must be a\n // button role.\n setRole('button');\n }\n }, []);\n const restProps = {\n ref,\n tabIndex: 0,\n // Role is only for VoiceOver\n role,\n 'aria-hidden': role ? undefined : true,\n [createAttribute('focus-guard')]: '',\n style: HIDDEN_STYLES\n };\n return /*#__PURE__*/jsx(\"span\", {\n ...props,\n ...restProps\n });\n});\n\nconst HIDDEN_OWNER_STYLES = {\n clipPath: 'inset(50%)',\n position: 'fixed',\n top: 0,\n left: 0\n};\nconst PortalContext = /*#__PURE__*/React.createContext(null);\nconst attr = /*#__PURE__*/createAttribute('portal');\n/**\n * @see https://floating-ui.com/docs/FloatingPortal#usefloatingportalnode\n */\nfunction useFloatingPortalNode(props) {\n if (props === void 0) {\n props = {};\n }\n const {\n id,\n root\n } = props;\n const uniqueId = useId();\n const portalContext = usePortalContext();\n const [portalNode, setPortalNode] = React.useState(null);\n const portalNodeRef = React.useRef(null);\n useModernLayoutEffect(() => {\n return () => {\n portalNode == null || portalNode.remove();\n // Allow the subsequent layout effects to create a new node on updates.\n // The portal node will still be cleaned up on unmount.\n // https://github.com/floating-ui/floating-ui/issues/2454\n queueMicrotask(() => {\n portalNodeRef.current = null;\n });\n };\n }, [portalNode]);\n useModernLayoutEffect(() => {\n // Wait for the uniqueId to be generated before creating the portal node in\n // React <18 (using `useFloatingId` instead of the native `useId`).\n // https://github.com/floating-ui/floating-ui/issues/2778\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n const existingIdRoot = id ? document.getElementById(id) : null;\n if (!existingIdRoot) return;\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n existingIdRoot.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, uniqueId]);\n useModernLayoutEffect(() => {\n // Wait for the root to exist before creating the portal node. The root must\n // be stored in state, not a ref, for this to work reactively.\n if (root === null) return;\n if (!uniqueId) return;\n if (portalNodeRef.current) return;\n let container = root || (portalContext == null ? void 0 : portalContext.portalNode);\n if (container && !isNode(container)) container = container.current;\n container = container || document.body;\n let idWrapper = null;\n if (id) {\n idWrapper = document.createElement('div');\n idWrapper.id = id;\n container.appendChild(idWrapper);\n }\n const subRoot = document.createElement('div');\n subRoot.id = uniqueId;\n subRoot.setAttribute(attr, '');\n container = idWrapper || container;\n container.appendChild(subRoot);\n portalNodeRef.current = subRoot;\n setPortalNode(subRoot);\n }, [id, root, uniqueId, portalContext]);\n return portalNode;\n}\n/**\n * Portals the floating element into a given container element — by default,\n * outside of the app root and into the body.\n * This is necessary to ensure the floating element can appear outside any\n * potential parent containers that cause clipping (such as `overflow: hidden`),\n * while retaining its location in the React tree.\n * @see https://floating-ui.com/docs/FloatingPortal\n */\nfunction FloatingPortal(props) {\n const {\n children,\n id,\n root,\n preserveTabOrder = true\n } = props;\n const portalNode = useFloatingPortalNode({\n id,\n root\n });\n const [focusManagerState, setFocusManagerState] = React.useState(null);\n const beforeOutsideRef = React.useRef(null);\n const afterOutsideRef = React.useRef(null);\n const beforeInsideRef = React.useRef(null);\n const afterInsideRef = React.useRef(null);\n const modal = focusManagerState == null ? void 0 : focusManagerState.modal;\n const open = focusManagerState == null ? void 0 : focusManagerState.open;\n const shouldRenderGuards =\n // The FocusManager and therefore floating element are currently open/\n // rendered.\n !!focusManagerState &&\n // Guards are only for non-modal focus management.\n !focusManagerState.modal &&\n // Don't render if unmount is transitioning.\n focusManagerState.open && preserveTabOrder && !!(root || portalNode);\n\n // https://codesandbox.io/s/tabbable-portal-f4tng?file=/src/TabbablePortal.tsx\n React.useEffect(() => {\n if (!portalNode || !preserveTabOrder || modal) {\n return;\n }\n\n // Make sure elements inside the portal element are tabbable only when the\n // portal has already been focused, either by tabbing into a focus trap\n // element outside or using the mouse.\n function onFocus(event) {\n if (portalNode && isOutsideEvent(event)) {\n const focusing = event.type === 'focusin';\n const manageFocus = focusing ? enableFocusInside : disableFocusInside;\n manageFocus(portalNode);\n }\n }\n // Listen to the event on the capture phase so they run before the focus\n // trap elements onFocus prop is called.\n portalNode.addEventListener('focusin', onFocus, true);\n portalNode.addEventListener('focusout', onFocus, true);\n return () => {\n portalNode.removeEventListener('focusin', onFocus, true);\n portalNode.removeEventListener('focusout', onFocus, true);\n };\n }, [portalNode, preserveTabOrder, modal]);\n React.useEffect(() => {\n if (!portalNode) return;\n if (open) return;\n enableFocusInside(portalNode);\n }, [open, portalNode]);\n return /*#__PURE__*/jsxs(PortalContext.Provider, {\n value: React.useMemo(() => ({\n preserveTabOrder,\n beforeOutsideRef,\n afterOutsideRef,\n beforeInsideRef,\n afterInsideRef,\n portalNode,\n setFocusManagerState\n }), [preserveTabOrder, portalNode]),\n children: [shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: beforeOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _beforeInsideRef$curr;\n (_beforeInsideRef$curr = beforeInsideRef.current) == null || _beforeInsideRef$curr.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n }\n }\n }), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(\"span\", {\n \"aria-owns\": portalNode.id,\n style: HIDDEN_OWNER_STYLES\n }), portalNode && /*#__PURE__*/ReactDOM.createPortal(children, portalNode), shouldRenderGuards && portalNode && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"outside\",\n ref: afterOutsideRef,\n onFocus: event => {\n if (isOutsideEvent(event, portalNode)) {\n var _afterInsideRef$curre;\n (_afterInsideRef$curre = afterInsideRef.current) == null || _afterInsideRef$curre.focus();\n } else {\n const domReference = focusManagerState ? focusManagerState.domReference : null;\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n (focusManagerState == null ? void 0 : focusManagerState.closeOnFocusOut) && (focusManagerState == null ? void 0 : focusManagerState.onOpenChange(false, event.nativeEvent, 'focus-out'));\n }\n }\n })]\n });\n}\nconst usePortalContext = () => React.useContext(PortalContext);\n\nfunction useLiteMergeRefs(refs) {\n return React.useMemo(() => {\n return value => {\n refs.forEach(ref => {\n if (ref) {\n ref.current = value;\n }\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}\n\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction clearDisconnectedPreviouslyFocusedElements() {\n previouslyFocusedElements = previouslyFocusedElements.filter(elementRef => {\n var _elementRef$deref;\n return (_elementRef$deref = elementRef.deref()) == null ? void 0 : _elementRef$deref.isConnected;\n });\n}\nfunction addPreviouslyFocusedElement(element) {\n clearDisconnectedPreviouslyFocusedElements();\n if (element && getNodeName(element) !== 'body') {\n previouslyFocusedElements.push(new WeakRef(element));\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n }\n}\nfunction getPreviouslyFocusedElement() {\n clearDisconnectedPreviouslyFocusedElements();\n const elementRef = previouslyFocusedElements[previouslyFocusedElements.length - 1];\n return elementRef == null ? void 0 : elementRef.deref();\n}\nfunction getFirstTabbableElement(container) {\n const tabbableOptions = getTabbableOptions();\n if (isTabbable(container, tabbableOptions)) {\n return container;\n }\n return tabbable(container, tabbableOptions)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement, orderRef) {\n var _floatingFocusElement;\n if (!orderRef.current.includes('floating') && !((_floatingFocusElement = floatingFocusElement.getAttribute('role')) != null && _floatingFocusElement.includes('dialog'))) {\n return;\n }\n const options = getTabbableOptions();\n const focusableElements = focusable(floatingFocusElement, options);\n const tabbableContent = focusableElements.filter(element => {\n const dataTabIndex = element.getAttribute('data-tabindex') || '';\n return isTabbable(element, options) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n });\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n if (orderRef.current.includes('floating') || tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n }\n } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n floatingFocusElement.setAttribute('data-tabindex', '-1');\n }\n}\nconst VisuallyHiddenDismiss = /*#__PURE__*/React.forwardRef(function VisuallyHiddenDismiss(props, ref) {\n return /*#__PURE__*/jsx(\"button\", {\n ...props,\n type: \"button\",\n ref: ref,\n tabIndex: -1,\n style: HIDDEN_STYLES\n });\n});\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n */\nfunction FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n order = ['content'],\n guards: _guards = true,\n initialFocus = 0,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n visuallyHiddenDismiss = false,\n closeOnFocusOut = true,\n outsideElementsInert = false,\n getInsideElements: _getInsideElements = () => []\n } = props;\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements: {\n domReference,\n floating\n }\n } = context;\n const getNodeId = useEffectEvent(() => {\n var _dataRef$current$floa;\n return (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n });\n const getInsideElements = useEffectEvent(_getInsideElements);\n const ignoreInitialFocus = typeof initialFocus === 'number' && initialFocus < 0;\n // If the reference is a combobox and is typeable (e.g. input/textarea),\n // there are different focus semantics. The guards should not be rendered, but\n // aria-hidden should be applied to all nodes still. Further, the visually\n // hidden dismiss button should only appear at the end of the list, not the\n // start.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n\n // Force the guards to be rendered if the `inert` attribute is not supported.\n const inertSupported = supportsInert();\n const guards = inertSupported ? _guards : true;\n const useInert = !guards || inertSupported && outsideElementsInert;\n const orderRef = useLatestRef(order);\n const initialFocusRef = useLatestRef(initialFocus);\n const returnFocusRef = useLatestRef(returnFocus);\n const tree = useFloatingTree();\n const portalContext = usePortalContext();\n const startDismissButtonRef = React.useRef(null);\n const endDismissButtonRef = React.useRef(null);\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const tabbableIndexRef = React.useRef(-1);\n const blurTimeoutRef = React.useRef(-1);\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useEffectEvent(function (container) {\n if (container === void 0) {\n container = floatingFocusElement;\n }\n return container ? tabbable(container, getTabbableOptions()) : [];\n });\n const getTabbableElements = useEffectEvent(container => {\n const content = getTabbableContent(container);\n return orderRef.current.map(type => {\n if (domReference && type === 'reference') {\n return domReference;\n }\n if (floatingFocusElement && type === 'floating') {\n return floatingFocusElement;\n }\n return content;\n }).filter(Boolean).flat();\n });\n React.useEffect(() => {\n if (disabled) return;\n if (!modal) return;\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains$1(floatingFocusElement, activeElement(getDocument$1(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n const els = getTabbableElements();\n const target = getTarget$1(event);\n if (orderRef.current[0] === 'reference' && target === domReference) {\n stopEvent(event);\n if (event.shiftKey) {\n enqueueFocus(els[els.length - 1]);\n } else {\n enqueueFocus(els[1]);\n }\n }\n if (orderRef.current[1] === 'floating' && target === floatingFocusElement && event.shiftKey) {\n stopEvent(event);\n enqueueFocus(els[0]);\n }\n }\n }\n const doc = getDocument$1(floatingFocusElement);\n doc.addEventListener('keydown', onKeyDown);\n return () => {\n doc.removeEventListener('keydown', onKeyDown);\n };\n }, [disabled, domReference, floatingFocusElement, modal, orderRef, isUntrappedTypeableCombobox, getTabbableContent, getTabbableElements]);\n React.useEffect(() => {\n if (disabled) return;\n if (!floating) return;\n function handleFocusIn(event) {\n const target = getTarget$1(event);\n const tabbableContent = getTabbableContent();\n const tabbableIndex = tabbableContent.indexOf(target);\n if (tabbableIndex !== -1) {\n tabbableIndexRef.current = tabbableIndex;\n }\n }\n floating.addEventListener('focusin', handleFocusIn);\n return () => {\n floating.removeEventListener('focusin', handleFocusIn);\n };\n }, [disabled, floating, getTabbableContent]);\n React.useEffect(() => {\n if (disabled) return;\n if (!closeOnFocusOut) return;\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n setTimeout(() => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n const currentTarget = event.currentTarget;\n const target = getTarget$1(event);\n queueMicrotask(() => {\n const nodeId = getNodeId();\n const movedToUnrelatedNode = !(contains$1(domReference, relatedTarget) || contains$1(floating, relatedTarget) || contains$1(relatedTarget, floating) || contains$1(portalContext == null ? void 0 : portalContext.portalNode, relatedTarget) || relatedTarget != null && relatedTarget.hasAttribute(createAttribute('focus-guard')) || tree && (getNodeChildren$1(tree.nodesRef.current, nodeId).find(node => {\n var _node$context, _node$context2;\n return contains$1((_node$context = node.context) == null ? void 0 : _node$context.elements.floating, relatedTarget) || contains$1((_node$context2 = node.context) == null ? void 0 : _node$context2.elements.domReference, relatedTarget);\n }) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => {\n var _node$context3, _node$context4, _node$context5;\n return [(_node$context3 = node.context) == null ? void 0 : _node$context3.elements.floating, getFloatingFocusElement((_node$context4 = node.context) == null ? void 0 : _node$context4.elements.floating)].includes(relatedTarget) || ((_node$context5 = node.context) == null ? void 0 : _node$context5.elements.domReference) === relatedTarget;\n })));\n if (currentTarget === domReference && floatingFocusElement) {\n handleTabIndex(floatingFocusElement, orderRef);\n }\n\n // Restore focus to the previous tabbable element index to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && currentTarget !== domReference && !(target != null && target.isConnected) && activeElement(getDocument$1(floatingFocusElement)) === getDocument$1(floatingFocusElement).body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n }\n const prevTabbableIndex = tabbableIndexRef.current;\n const tabbableContent = getTabbableContent();\n const nodeToFocus = tabbableContent[prevTabbableIndex] || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // https://github.com/floating-ui/floating-ui/issues/3060\n if (dataRef.current.insideReactTree) {\n dataRef.current.insideReactTree = false;\n return;\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current &&\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n relatedTarget !== getPreviouslyFocusedElement()) {\n preventReturnFocusRef.current = true;\n onOpenChange(false, event, 'focus-out');\n }\n });\n }\n const shouldHandleBlurCapture = Boolean(!tree && portalContext);\n function markInsideReactTree() {\n clearTimeoutIfSet(blurTimeoutRef);\n dataRef.current.insideReactTree = true;\n blurTimeoutRef.current = window.setTimeout(() => {\n dataRef.current.insideReactTree = false;\n });\n }\n if (floating && isHTMLElement(domReference)) {\n domReference.addEventListener('focusout', handleFocusOutside);\n domReference.addEventListener('pointerdown', handlePointerDown);\n floating.addEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.addEventListener('focusout', markInsideReactTree, true);\n }\n return () => {\n domReference.removeEventListener('focusout', handleFocusOutside);\n domReference.removeEventListener('pointerdown', handlePointerDown);\n floating.removeEventListener('focusout', handleFocusOutside);\n if (shouldHandleBlurCapture) {\n floating.removeEventListener('focusout', markInsideReactTree, true);\n }\n };\n }\n }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, onOpenChange, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, orderRef, dataRef]);\n const beforeGuardRef = React.useRef(null);\n const afterGuardRef = React.useRef(null);\n const mergedBeforeGuardRef = useLiteMergeRefs([beforeGuardRef, portalContext == null ? void 0 : portalContext.beforeInsideRef]);\n const mergedAfterGuardRef = useLiteMergeRefs([afterGuardRef, portalContext == null ? void 0 : portalContext.afterInsideRef]);\n React.useEffect(() => {\n var _portalContext$portal, _ancestors$find;\n if (disabled) return;\n if (!floating) return;\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from((portalContext == null || (_portalContext$portal = portalContext.portalNode) == null ? void 0 : _portalContext$portal.querySelectorAll(\"[\" + createAttribute('portal') + \"]\")) || []);\n const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n const rootAncestorComboboxDomReference = (_ancestors$find = ancestors.find(node => {\n var _node$context6;\n return isTypeableCombobox(((_node$context6 = node.context) == null ? void 0 : _node$context6.elements.domReference) || null);\n })) == null || (_ancestors$find = _ancestors$find.context) == null ? void 0 : _ancestors$find.elements.domReference;\n const insideElements = [floating, rootAncestorComboboxDomReference, ...portalNodes, ...getInsideElements(), startDismissButtonRef.current, endDismissButtonRef.current, beforeGuardRef.current, afterGuardRef.current, portalContext == null ? void 0 : portalContext.beforeOutsideRef.current, portalContext == null ? void 0 : portalContext.afterOutsideRef.current, orderRef.current.includes('reference') || isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const cleanup = modal || isUntrappedTypeableCombobox ? markOthers(insideElements, !useInert, useInert) : markOthers(insideElements);\n return () => {\n cleanup();\n };\n }, [disabled, domReference, floating, modal, orderRef, portalContext, isUntrappedTypeableCombobox, guards, useInert, tree, getNodeId, getInsideElements]);\n useModernLayoutEffect(() => {\n if (disabled || !isHTMLElement(floatingFocusElement)) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const focusableElements = getTabbableElements(floatingFocusElement);\n const initialFocusValue = initialFocusRef.current;\n const elToFocus = (typeof initialFocusValue === 'number' ? focusableElements[initialFocusValue] : initialFocusValue.current) || floatingFocusElement;\n const focusAlreadyInsideFloatingEl = contains$1(floatingFocusElement, previouslyFocusedElement);\n if (!ignoreInitialFocus && !focusAlreadyInsideFloatingEl && open) {\n enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement\n });\n }\n });\n }, [disabled, open, floatingFocusElement, ignoreInitialFocus, getTabbableElements, initialFocusRef]);\n useModernLayoutEffect(() => {\n if (disabled || !floatingFocusElement) return;\n const doc = getDocument$1(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n addPreviouslyFocusedElement(previouslyFocusedElement);\n\n // Dismissing via outside press should always ignore `returnFocus` to\n // prevent unwanted scrolling.\n function onOpenChange(_ref) {\n let {\n reason,\n event,\n nested\n } = _ref;\n if (['hover', 'safe-polygon'].includes(reason) && event.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (reason !== 'outside-press') return;\n if (nested) {\n preventReturnFocusRef.current = false;\n } else if (isVirtualClick(event) || isVirtualPointerEvent(event)) {\n preventReturnFocusRef.current = false;\n } else {\n let isPreventScrollSupported = false;\n document.createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n if (isPreventScrollSupported) {\n preventReturnFocusRef.current = false;\n } else {\n preventReturnFocusRef.current = true;\n }\n }\n }\n events.on('openchange', onOpenChange);\n const fallbackEl = doc.createElement('span');\n fallbackEl.setAttribute('tabindex', '-1');\n fallbackEl.setAttribute('aria-hidden', 'true');\n Object.assign(fallbackEl.style, HIDDEN_STYLES);\n if (isInsidePortal && domReference) {\n domReference.insertAdjacentElement('afterend', fallbackEl);\n }\n function getReturnElement() {\n if (typeof returnFocusRef.current === 'boolean') {\n const el = domReference || getPreviouslyFocusedElement();\n return el && el.isConnected ? el : fallbackEl;\n }\n return returnFocusRef.current.current || fallbackEl;\n }\n return () => {\n events.off('openchange', onOpenChange);\n const activeEl = activeElement(doc);\n const isFocusInsideFloatingTree = contains$1(floating, activeEl) || tree && getNodeChildren$1(tree.nodesRef.current, getNodeId(), false).some(node => {\n var _node$context7;\n return contains$1((_node$context7 = node.context) == null ? void 0 : _node$context7.elements.floating, activeEl);\n });\n const returnElement = getReturnElement();\n queueMicrotask(() => {\n // This is `returnElement`, if it's tabbable, or its first tabbable child.\n const tabbableReturnElement = getFirstTabbableElement(returnElement);\n if (\n // eslint-disable-next-line react-hooks/exhaustive-deps\n returnFocusRef.current && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n tabbableReturnElement.focus({\n preventScroll: true\n });\n }\n fallbackEl.remove();\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, dataRef, events, tree, isInsidePortal, domReference, getNodeId]);\n React.useEffect(() => {\n // The `returnFocus` cleanup behavior is inside a microtask; ensure we\n // wait for it to complete before resetting the flag.\n queueMicrotask(() => {\n preventReturnFocusRef.current = false;\n });\n return () => {\n queueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n };\n }, [disabled]);\n\n // Synchronize the `context` & `modal` value to the FloatingPortal context.\n // It will decide whether or not it needs to render its own guards.\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!portalContext) return;\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange,\n domReference\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, onOpenChange, closeOnFocusOut, domReference]);\n useModernLayoutEffect(() => {\n if (disabled) return;\n if (!floatingFocusElement) return;\n handleTabIndex(floatingFocusElement, orderRef);\n }, [disabled, floatingFocusElement, orderRef]);\n function renderDismissButton(location) {\n if (disabled || !visuallyHiddenDismiss || !modal) {\n return null;\n }\n return /*#__PURE__*/jsx(VisuallyHiddenDismiss, {\n ref: location === 'start' ? startDismissButtonRef : endDismissButtonRef,\n onClick: event => onOpenChange(false, event.nativeEvent),\n children: typeof visuallyHiddenDismiss === 'string' ? visuallyHiddenDismiss : 'Dismiss'\n });\n }\n const shouldRenderGuards = !disabled && guards && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/jsxs(Fragment, {\n children: [shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedBeforeGuardRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableElements();\n enqueueFocus(order[0] === 'reference' ? els[0] : els[els.length - 1]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable == null || nextTabbable.focus();\n } else {\n var _portalContext$before;\n (_portalContext$before = portalContext.beforeOutsideRef.current) == null || _portalContext$before.focus();\n }\n }\n }\n }), !isUntrappedTypeableCombobox && renderDismissButton('start'), children, renderDismissButton('end'), shouldRenderGuards && /*#__PURE__*/jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedAfterGuardRef,\n onFocus: event => {\n if (modal) {\n enqueueFocus(getTabbableElements()[0]);\n } else if (portalContext != null && portalContext.preserveTabOrder && portalContext.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable == null || prevTabbable.focus();\n } else {\n var _portalContext$afterO;\n (_portalContext$afterO = portalContext.afterOutsideRef.current) == null || _portalContext$afterO.focus();\n }\n }\n }\n })]\n });\n}\n\nlet lockCount = 0;\nconst scrollbarProperty = '--floating-ui-scrollbar-width';\nfunction enableScrollLock() {\n const platform = getPlatform();\n const isIOS = /iP(hone|ad|od)|iOS/.test(platform) ||\n // iPads can claim to be MacIntel\n platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n const bodyStyle = document.body.style;\n // RTL <body> scrollbar\n const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;\n const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';\n const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;\n const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;\n const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;\n bodyStyle.overflow = 'hidden';\n bodyStyle.setProperty(scrollbarProperty, scrollbarWidth + \"px\");\n if (scrollbarWidth) {\n bodyStyle[paddingProp] = scrollbarWidth + \"px\";\n }\n\n // Only iOS doesn't respect `overflow: hidden` on document.body, and this\n // technique has fewer side effects.\n if (isIOS) {\n var _window$visualViewpor, _window$visualViewpor2;\n // iOS 12 does not support `visualViewport`.\n const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? void 0 : _window$visualViewpor.offsetLeft) || 0;\n const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? void 0 : _window$visualViewpor2.offsetTop) || 0;\n Object.assign(bodyStyle, {\n position: 'fixed',\n top: -(scrollY - Math.floor(offsetTop)) + \"px\",\n left: -(scrollX - Math.floor(offsetLeft)) + \"px\",\n right: '0'\n });\n }\n return () => {\n Object.assign(bodyStyle, {\n overflow: '',\n [paddingProp]: ''\n });\n bodyStyle.removeProperty(scrollbarProperty);\n if (isIOS) {\n Object.assign(bodyStyle, {\n position: '',\n top: '',\n left: '',\n right: ''\n });\n window.scrollTo(scrollX, scrollY);\n }\n };\n}\nlet cleanup = () => {};\n\n/**\n * Provides base styling for a fixed overlay element to dim content or block\n * pointer events behind a floating element.\n * It's a regular `<div>`, so it can be styled via any CSS solution you prefer.\n * @see https://floating-ui.com/docs/FloatingOverlay\n */\nconst FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {\n const {\n lockScroll = false,\n ...rest\n } = props;\n useModernLayoutEffect(() => {\n if (!lockScroll) return;\n lockCount++;\n if (lockCount === 1) {\n cleanup = enableScrollLock();\n }\n return () => {\n lockCount--;\n if (lockCount === 0) {\n cleanup();\n }\n };\n }, [lockScroll]);\n return /*#__PURE__*/jsx(\"div\", {\n ref: ref,\n ...rest,\n style: {\n position: 'fixed',\n overflow: 'auto',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...rest.style\n }\n });\n});\n\nfunction isButtonTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'BUTTON';\n}\nfunction isAnchorTarget(event) {\n return isHTMLElement(event.target) && event.target.tagName === 'A';\n}\nfunction isSpaceIgnored(element) {\n return isTypeableElement(element);\n}\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nfunction useClick(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n dataRef,\n elements: {\n domReference\n }\n } = context;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n keyboardHandlers = true,\n stickIfOpen = true\n } = props;\n const pointerTypeRef = React.useRef();\n const didKeyDownRef = React.useRef(false);\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0) return;\n if (eventOption === 'click') return;\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'mousedown' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n // Prevent stealing focus from the floating element\n event.preventDefault();\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onClick(event) {\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerTypeRef.current) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) return;\n if (open && toggle && (dataRef.current.openEvent && stickIfOpen ? dataRef.current.openEvent.type === 'click' : true)) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n },\n onKeyDown(event) {\n pointerTypeRef.current = undefined;\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event)) {\n return;\n }\n if (event.key === ' ' && !isSpaceIgnored(domReference)) {\n // Prevent scrolling\n event.preventDefault();\n didKeyDownRef.current = true;\n }\n if (isAnchorTarget(event)) {\n return;\n }\n if (event.key === 'Enter') {\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n },\n onKeyUp(event) {\n if (event.defaultPrevented || !keyboardHandlers || isButtonTarget(event) || isSpaceIgnored(domReference)) {\n return;\n }\n if (event.key === ' ' && didKeyDownRef.current) {\n didKeyDownRef.current = false;\n if (open && toggle) {\n onOpenChange(false, event.nativeEvent, 'click');\n } else {\n onOpenChange(true, event.nativeEvent, 'click');\n }\n }\n }\n }), [dataRef, domReference, eventOption, ignoreMouse, keyboardHandlers, onOpenChange, open, stickIfOpen, toggle]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n var _data$dataRef$current;\n const domRect = (domElement == null ? void 0 : domElement.getBoundingClientRect()) || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(((_data$dataRef$current = data.dataRef.current.openEvent) == null ? void 0 : _data$dataRef$current.type) || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nfunction useClientPoint(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n dataRef,\n elements: {\n floating,\n domReference\n },\n refs\n } = context;\n const {\n enabled = true,\n axis = 'both',\n x = null,\n y = null\n } = props;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const setReference = useEffectEvent((x, y) => {\n if (initialRef.current) return;\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n refs.setPositionReference(createVirtualElement(domReference, {\n x,\n y,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useEffectEvent(event => {\n if (x != null || y != null) return;\n if (!open) {\n setReference(event.clientX, event.clientY);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n const addListener = React.useCallback(() => {\n // Explicitly specified `x`/`y` coordinates shouldn't add a listener.\n if (!openCheck || !enabled || x != null || y != null) return;\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget$1(event);\n if (!contains$1(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n win.addEventListener('mousemove', handleMouseMove);\n const cleanup = () => {\n win.removeEventListener('mousemove', handleMouseMove);\n cleanupListenerRef.current = null;\n };\n cleanupListenerRef.current = cleanup;\n return cleanup;\n }\n refs.setPositionReference(domReference);\n }, [openCheck, enabled, x, y, floating, dataRef, refs, domReference, setReference]);\n React.useEffect(() => {\n return addListener();\n }, [addListener, reactive]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n useModernLayoutEffect(() => {\n if (enabled && (x != null || y != null)) {\n initialRef.current = false;\n setReference(x, y);\n }\n }, [enabled, x, y, setReference]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(_ref) {\n let {\n pointerType\n } = _ref;\n setPointerType(pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nconst bubbleHandlerKeys = {\n pointerdown: 'onPointerDown',\n mousedown: 'onMouseDown',\n click: 'onClick'\n};\nconst captureHandlerKeys = {\n pointerdown: 'onPointerDownCapture',\n mousedown: 'onMouseDownCapture',\n click: 'onClickCapture'\n};\nconst normalizeProp = normalizable => {\n var _normalizable$escapeK, _normalizable$outside;\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : (_normalizable$escapeK = normalizable == null ? void 0 : normalizable.escapeKey) != null ? _normalizable$escapeK : false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : (_normalizable$outside = normalizable == null ? void 0 : normalizable.outsidePress) != null ? _normalizable$outside : true\n };\n};\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nfunction useDismiss(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n elements,\n dataRef\n } = context;\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: unstable_outsidePress = true,\n outsidePressEvent = 'pointerdown',\n referencePress = false,\n referencePressEvent = 'pointerdown',\n ancestorScroll = false,\n bubbles,\n capture\n } = props;\n const tree = useFloatingTree();\n const outsidePressFn = useEffectEvent(typeof unstable_outsidePress === 'function' ? unstable_outsidePress : () => false);\n const outsidePress = typeof unstable_outsidePress === 'function' ? outsidePressFn : unstable_outsidePress;\n const endedOrStartedInsideRef = React.useRef(false);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const {\n escapeKey: escapeKeyCapture,\n outsidePress: outsidePressCapture\n } = normalizeProp(capture);\n const isComposingRef = React.useRef(false);\n const closeOnEscapeKeyDown = useEffectEvent(event => {\n var _dataRef$current$floa;\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n const nodeId = (_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.nodeId;\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (!escapeKeyBubbles) {\n event.stopPropagation();\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context;\n if ((_child$context = child.context) != null && _child$context.open && !child.context.dataRef.current.__escapeKeyBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n }\n onOpenChange(false, isReactEvent(event) ? event.nativeEvent : event, 'escape-key');\n });\n const closeOnEscapeKeyDownCapture = useEffectEvent(event => {\n var _getTarget2;\n const callback = () => {\n var _getTarget;\n closeOnEscapeKeyDown(event);\n (_getTarget = getTarget$1(event)) == null || _getTarget.removeEventListener('keydown', callback);\n };\n (_getTarget2 = getTarget$1(event)) == null || _getTarget2.addEventListener('keydown', callback);\n });\n const closeOnPressOutside = useEffectEvent(event => {\n var _dataRef$current$floa2;\n // Given developers can stop the propagation of the synthetic event,\n // we can only be confident with a positive value.\n const insideReactTree = dataRef.current.insideReactTree;\n dataRef.current.insideReactTree = false;\n\n // When click outside is lazy (`click` event), handle dragging.\n // Don't close if:\n // - The click started inside the floating element.\n // - The click ended inside the floating element.\n const endedOrStartedInside = endedOrStartedInsideRef.current;\n endedOrStartedInsideRef.current = false;\n if (outsidePressEvent === 'click' && endedOrStartedInside) {\n return;\n }\n if (insideReactTree) {\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n const target = getTarget$1(event);\n const inertSelector = \"[\" + createAttribute('inert') + \"]\";\n const markers = getDocument$1(elements.floating).querySelectorAll(inertSelector);\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains$1(target, elements.floating) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n Array.from(markers).every(marker => !contains$1(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n if (isHTMLElement(target) && floating) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n const nodeId = (_dataRef$current$floa2 = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa2.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren$1(tree.nodesRef.current, nodeId).some(node => {\n var _node$context;\n return isEventTargetWithin(event, (_node$context = node.context) == null ? void 0 : _node$context.elements.floating);\n });\n if (isEventTargetWithin(event, elements.floating) || isEventTargetWithin(event, elements.domReference) || targetIsInsideChildren) {\n return;\n }\n const children = tree ? getNodeChildren$1(tree.nodesRef.current, nodeId) : [];\n if (children.length > 0) {\n let shouldDismiss = true;\n children.forEach(child => {\n var _child$context2;\n if ((_child$context2 = child.context) != null && _child$context2.open && !child.context.dataRef.current.__outsidePressBubbles) {\n shouldDismiss = false;\n return;\n }\n });\n if (!shouldDismiss) {\n return;\n }\n }\n onOpenChange(false, event, 'outside-press');\n });\n const closeOnPressOutsideCapture = useEffectEvent(event => {\n var _getTarget4;\n const callback = () => {\n var _getTarget3;\n closeOnPressOutside(event);\n (_getTarget3 = getTarget$1(event)) == null || _getTarget3.removeEventListener(outsidePressEvent, callback);\n };\n (_getTarget4 = getTarget$1(event)) == null || _getTarget4.addEventListener(outsidePressEvent, callback);\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n let compositionTimeout = -1;\n function onScroll(event) {\n onOpenChange(false, event, 'ancestor-scroll');\n }\n function handleCompositionStart() {\n window.clearTimeout(compositionTimeout);\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout = window.setTimeout(() => {\n isComposingRef.current = false;\n },\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n isWebKit() ? 5 : 0);\n }\n const doc = getDocument$1(elements.floating);\n if (escapeKey) {\n doc.addEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.addEventListener('compositionstart', handleCompositionStart);\n doc.addEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.addEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n let ancestors = [];\n if (ancestorScroll) {\n if (isElement(elements.domReference)) {\n ancestors = getOverflowAncestors(elements.domReference);\n }\n if (isElement(elements.floating)) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.floating));\n }\n if (!isElement(elements.reference) && elements.reference && elements.reference.contextElement) {\n ancestors = ancestors.concat(getOverflowAncestors(elements.reference.contextElement));\n }\n }\n\n // Ignore the visual viewport for scrolling dismissal (allow pinch-zoom)\n ancestors = ancestors.filter(ancestor => {\n var _doc$defaultView;\n return ancestor !== ((_doc$defaultView = doc.defaultView) == null ? void 0 : _doc$defaultView.visualViewport);\n });\n ancestors.forEach(ancestor => {\n ancestor.addEventListener('scroll', onScroll, {\n passive: true\n });\n });\n return () => {\n if (escapeKey) {\n doc.removeEventListener('keydown', escapeKeyCapture ? closeOnEscapeKeyDownCapture : closeOnEscapeKeyDown, escapeKeyCapture);\n doc.removeEventListener('compositionstart', handleCompositionStart);\n doc.removeEventListener('compositionend', handleCompositionEnd);\n }\n outsidePress && doc.removeEventListener(outsidePressEvent, outsidePressCapture ? closeOnPressOutsideCapture : closeOnPressOutside, outsidePressCapture);\n ancestors.forEach(ancestor => {\n ancestor.removeEventListener('scroll', onScroll);\n });\n window.clearTimeout(compositionTimeout);\n };\n }, [dataRef, elements, escapeKey, outsidePress, outsidePressEvent, open, onOpenChange, ancestorScroll, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, escapeKeyCapture, closeOnEscapeKeyDownCapture, closeOnPressOutside, outsidePressCapture, closeOnPressOutsideCapture]);\n React.useEffect(() => {\n dataRef.current.insideReactTree = false;\n }, [dataRef, outsidePress, outsidePressEvent]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n ...(referencePress && {\n [bubbleHandlerKeys[referencePressEvent]]: event => {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n },\n ...(referencePressEvent !== 'click' && {\n onClick(event) {\n onOpenChange(false, event.nativeEvent, 'reference-press');\n }\n })\n })\n }), [closeOnEscapeKeyDown, onOpenChange, referencePress, referencePressEvent]);\n const floating = React.useMemo(() => {\n function setMouseDownOrUpInside(event) {\n if (event.button !== 0) {\n return;\n }\n endedOrStartedInsideRef.current = true;\n }\n return {\n onKeyDown: closeOnEscapeKeyDown,\n onMouseDown: setMouseDownOrUpInside,\n onMouseUp: setMouseDownOrUpInside,\n [captureHandlerKeys[outsidePressEvent]]: () => {\n dataRef.current.insideReactTree = true;\n }\n };\n }, [closeOnEscapeKeyDown, outsidePressEvent, dataRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction useFloatingRootContext(options) {\n const {\n open = false,\n onOpenChange: onOpenChangeProp,\n elements: elementsProp\n } = options;\n const floatingId = useId();\n const dataRef = React.useRef({});\n const [events] = React.useState(() => createEventEmitter());\n const nested = useFloatingParentNodeId() != null;\n if (process.env.NODE_ENV !== \"production\") {\n const optionDomReference = elementsProp.reference;\n if (optionDomReference && !isElement(optionDomReference)) {\n error('Cannot pass a virtual element to the `elements.reference` option,', 'as it must be a real DOM element. Use `refs.setPositionReference()`', 'instead.');\n }\n }\n const [positionReference, setPositionReference] = React.useState(elementsProp.reference);\n const onOpenChange = useEffectEvent((open, event, reason) => {\n dataRef.current.openEvent = open ? event : undefined;\n events.emit('openchange', {\n open,\n event,\n reason,\n nested\n });\n onOpenChangeProp == null || onOpenChangeProp(open, event, reason);\n });\n const refs = React.useMemo(() => ({\n setPositionReference\n }), []);\n const elements = React.useMemo(() => ({\n reference: positionReference || elementsProp.reference || null,\n floating: elementsProp.floating || null,\n domReference: elementsProp.reference\n }), [positionReference, elementsProp.reference, elementsProp.floating]);\n return React.useMemo(() => ({\n dataRef,\n open,\n onOpenChange,\n elements,\n events,\n floatingId,\n refs\n }), [open, onOpenChange, elements, events, floatingId, refs]);\n}\n\n/**\n * Provides data to position a floating element and context to add interactions.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n nodeId\n } = options;\n const internalRootContext = useFloatingRootContext({\n ...options,\n elements: {\n reference: null,\n floating: null,\n ...options.elements\n }\n });\n const rootContext = options.rootContext || internalRootContext;\n const computedElements = rootContext.elements;\n const [_domReference, setDomReference] = React.useState(null);\n const [positionReference, _setPositionReference] = React.useState(null);\n const optionDomReference = computedElements == null ? void 0 : computedElements.domReference;\n const domReference = optionDomReference || _domReference;\n const domReferenceRef = React.useRef(null);\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n if (domReference) {\n domReferenceRef.current = domReference;\n }\n }, [domReference]);\n const position = useFloating$1({\n ...options,\n elements: {\n ...computedElements,\n ...(positionReference && {\n reference: positionReference\n })\n }\n });\n const setPositionReference = React.useCallback(node => {\n const computedPositionReference = isElement(node) ? {\n getBoundingClientRect: () => node.getBoundingClientRect(),\n getClientRects: () => node.getClientRects(),\n contextElement: node\n } : node;\n // Store the positionReference in state if the DOM reference is specified externally via the\n // `elements.reference` option. This ensures that it won't be overridden on future renders.\n _setPositionReference(computedPositionReference);\n position.refs.setReference(computedPositionReference);\n }, [position.refs]);\n const setReference = React.useCallback(node => {\n if (isElement(node) || node === null) {\n domReferenceRef.current = node;\n setDomReference(node);\n }\n\n // Backwards-compatibility for passing a virtual element to `reference`\n // after it has set the DOM reference.\n if (isElement(position.refs.reference.current) || position.refs.reference.current === null ||\n // Don't allow setting virtual elements using the old technique back to\n // `null` to support `positionReference` + an unstable `reference`\n // callback ref.\n node !== null && !isElement(node)) {\n position.refs.setReference(node);\n }\n }, [position.refs]);\n const refs = React.useMemo(() => ({\n ...position.refs,\n setReference,\n setPositionReference,\n domReference: domReferenceRef\n }), [position.refs, setReference, setPositionReference]);\n const elements = React.useMemo(() => ({\n ...position.elements,\n domReference: domReference\n }), [position.elements, domReference]);\n const context = React.useMemo(() => ({\n ...position,\n ...rootContext,\n refs,\n elements,\n nodeId\n }), [position, refs, elements, nodeId, rootContext]);\n useModernLayoutEffect(() => {\n rootContext.dataRef.current.floatingContext = context;\n const node = tree == null ? void 0 : tree.nodesRef.current.find(node => node.id === nodeId);\n if (node) {\n node.context = context;\n }\n });\n return React.useMemo(() => ({\n ...position,\n context,\n refs,\n elements\n }), [position, refs, elements, context]);\n}\n\nfunction isMacSafari() {\n return isMac() && isSafari();\n}\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nfunction useFocus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n onOpenChange,\n events,\n dataRef,\n elements\n } = context;\n const {\n enabled = true,\n visibleOnly = true\n } = props;\n const blockFocusRef = React.useRef(false);\n const timeoutRef = React.useRef(-1);\n const keyboardModalityRef = React.useRef(true);\n React.useEffect(() => {\n if (!enabled) return;\n const win = getWindow(elements.domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n if (!open && isHTMLElement(elements.domReference) && elements.domReference === activeElement(getDocument$1(elements.domReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n win.addEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.addEventListener('keydown', onKeyDown, true);\n win.addEventListener('pointerdown', onPointerDown, true);\n }\n return () => {\n win.removeEventListener('blur', onBlur);\n if (isMacSafari()) {\n win.removeEventListener('keydown', onKeyDown, true);\n win.removeEventListener('pointerdown', onPointerDown, true);\n }\n };\n }, [elements.domReference, open, enabled]);\n React.useEffect(() => {\n if (!enabled) return;\n function onOpenChange(_ref) {\n let {\n reason\n } = _ref;\n if (reason === 'reference-press' || reason === 'escape-key') {\n blockFocusRef.current = true;\n }\n }\n events.on('openchange', onOpenChange);\n return () => {\n events.off('openchange', onOpenChange);\n };\n }, [events, enabled]);\n React.useEffect(() => {\n return () => {\n clearTimeoutIfSet(timeoutRef);\n };\n }, []);\n const reference = React.useMemo(() => ({\n onMouseLeave() {\n blockFocusRef.current = false;\n },\n onFocus(event) {\n if (blockFocusRef.current) return;\n const target = getTarget$1(event.nativeEvent);\n if (visibleOnly && isElement(target)) {\n // Safari fails to match `:focus-visible` if focus was initially\n // outside the document.\n if (isMacSafari() && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n onOpenChange(true, event.nativeEvent, 'focus');\n },\n onBlur(event) {\n blockFocusRef.current = false;\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeoutRef.current = window.setTimeout(() => {\n var _dataRef$current$floa;\n const activeEl = activeElement(elements.domReference ? elements.domReference.ownerDocument : document);\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === elements.domReference) return;\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains$1((_dataRef$current$floa = dataRef.current.floatingContext) == null ? void 0 : _dataRef$current$floa.refs.floating.current, activeEl) || contains$1(elements.domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n onOpenChange(false, nativeEvent, 'focus');\n });\n }\n }), [dataRef, elements.domReference, onOpenChange, visibleOnly]);\n return React.useMemo(() => enabled ? {\n reference\n } : {}, [enabled, reference]);\n}\n\nfunction mergeProps(userProps, propsList, elementKey) {\n const map = new Map();\n const isItem = elementKey === 'item';\n let domUserProps = userProps;\n if (isItem && userProps) {\n const {\n [ACTIVE_KEY]: _,\n [SELECTED_KEY]: __,\n ...validProps\n } = userProps;\n domUserProps = validProps;\n }\n return {\n ...(elementKey === 'floating' && {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n }),\n ...domUserProps,\n ...propsList.map(value => {\n const propsOrGetProps = value ? value[elementKey] : null;\n if (typeof propsOrGetProps === 'function') {\n return userProps ? propsOrGetProps(userProps) : null;\n }\n return propsOrGetProps;\n }).concat(userProps).reduce((acc, props) => {\n if (!props) {\n return acc;\n }\n Object.entries(props).forEach(_ref => {\n let [key, value] = _ref;\n if (isItem && [ACTIVE_KEY, SELECTED_KEY].includes(key)) {\n return;\n }\n if (key.indexOf('on') === 0) {\n if (!map.has(key)) {\n map.set(key, []);\n }\n if (typeof value === 'function') {\n var _map$get;\n (_map$get = map.get(key)) == null || _map$get.push(value);\n acc[key] = function () {\n var _map$get2;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return (_map$get2 = map.get(key)) == null ? void 0 : _map$get2.map(fn => fn(...args)).find(val => val !== undefined);\n };\n }\n } else {\n acc[key] = value;\n }\n });\n return acc;\n }, {})\n };\n}\n/**\n * Merges an array of interaction hooks' props into prop getters, allowing\n * event handler functions to be composed together without overwriting one\n * another.\n * @see https://floating-ui.com/docs/useInteractions\n */\nfunction useInteractions(propsList) {\n if (propsList === void 0) {\n propsList = [];\n }\n const referenceDeps = propsList.map(key => key == null ? void 0 : key.reference);\n const floatingDeps = propsList.map(key => key == null ? void 0 : key.floating);\n const itemDeps = propsList.map(key => key == null ? void 0 : key.item);\n const getReferenceProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'reference'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n referenceDeps);\n const getFloatingProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'floating'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n floatingDeps);\n const getItemProps = React.useCallback(userProps => mergeProps(userProps, propsList, 'item'),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n itemDeps);\n return React.useMemo(() => ({\n getReferenceProps,\n getFloatingProps,\n getItemProps\n }), [getReferenceProps, getFloatingProps, getItemProps]);\n}\n\nconst ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nfunction useListNavigation(context, props) {\n const {\n open,\n onOpenChange,\n elements,\n floatingId\n } = context;\n const {\n listRef,\n activeIndex,\n onNavigate: unstable_onNavigate = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loop = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n scrollItemIntoView = true,\n virtualItemRef,\n itemSizes,\n dense = false\n } = props;\n if (process.env.NODE_ENV !== \"production\") {\n if (allowEscape) {\n if (!loop) {\n warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(elements.floating);\n const floatingFocusElementRef = useLatestRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree();\n useModernLayoutEffect(() => {\n context.dataRef.current.orientation = orientation;\n }, [context, orientation]);\n const onNavigate = useEffectEvent(() => {\n unstable_onNavigate(indexRef.current === -1 ? null : indexRef.current);\n });\n const typeableComboboxReference = isTypeableCombobox(elements.domReference);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex != null ? selectedIndex : -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!elements.floating);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useLatestRef(disabledIndices);\n const latestOpenRef = useLatestRef(open);\n const scrollItemIntoViewRef = useLatestRef(scrollItemIntoView);\n const selectedIndexRef = useLatestRef(selectedIndex);\n const [activeId, setActiveId] = React.useState();\n const [virtualId, setVirtualId] = React.useState();\n const focusItem = useEffectEvent(() => {\n function runFocus(item) {\n if (virtual) {\n var _item$id;\n if ((_item$id = item.id) != null && _item$id.endsWith('-fui-option')) {\n item.id = floatingId + \"-\" + Math.random().toString(16).slice(2, 10);\n }\n setActiveId(item.id);\n tree == null || tree.events.emit('virtualfocus', item);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n } else {\n enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) return;\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const scrollIntoViewOptions = scrollItemIntoViewRef.current;\n const shouldScrollIntoView = scrollIntoViewOptions && item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView == null || waitedItem.scrollIntoView(typeof scrollIntoViewOptions === 'boolean' ? {\n block: 'nearest',\n inline: 'nearest'\n } : scrollIntoViewOptions);\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (open && elements.floating) {\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n indexRef.current = selectedIndex;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, elements.floating, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!open) return;\n if (!elements.floating) return;\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs++;\n } else {\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef, disabledIndicesRef.current) : getMaxListIndex(listRef, disabledIndicesRef.current);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, elements.floating, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useModernLayoutEffect(() => {\n var _nodes$find;\n if (!enabled || elements.floating || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = (_nodes$find = nodes.find(node => node.id === parentId)) == null || (_nodes$find = _nodes$find.context) == null ? void 0 : _nodes$find.elements.floating;\n const activeEl = activeElement(getDocument$1(elements.floating));\n const treeContainsActiveEl = nodes.some(node => node.context && contains$1(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, elements.floating, tree, parentId, virtual]);\n useModernLayoutEffect(() => {\n if (!enabled) return;\n if (!tree) return;\n if (!virtual) return;\n if (parentId) return;\n function handleVirtualFocus(item) {\n setVirtualId(item.id);\n if (virtualItemRef) {\n virtualItemRef.current = item;\n }\n }\n tree.events.on('virtualfocus', handleVirtualFocus);\n return () => {\n tree.events.off('virtualfocus', handleVirtualFocus);\n };\n }, [enabled, tree, virtual, parentId, virtualItemRef]);\n useModernLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!elements.floating;\n });\n useModernLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(currentTarget) {\n if (!latestOpenRef.current) return;\n const index = listRef.current.indexOf(currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate();\n }\n }\n const props = {\n onFocus(_ref) {\n let {\n currentTarget\n } = _ref;\n forceSyncFocusRef.current = true;\n syncCurrentTarget(currentTarget);\n },\n onClick: _ref2 => {\n let {\n currentTarget\n } = _ref2;\n return currentTarget.focus({\n preventScroll: true\n });\n },\n // Safari\n onMouseMove(_ref3) {\n let {\n currentTarget\n } = _ref3;\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(currentTarget);\n }\n },\n onPointerLeave(_ref4) {\n let {\n pointerType\n } = _ref4;\n if (!isPointerModalityRef.current || pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n if (!focusItemOnHover) {\n return;\n }\n indexRef.current = -1;\n onNavigate();\n if (!virtual) {\n var _floatingFocusElement;\n (_floatingFocusElement = floatingFocusElementRef.current) == null || _floatingFocusElement.focus({\n preventScroll: true\n });\n }\n }\n };\n return props;\n }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, virtual]);\n const getParentOrientation = React.useCallback(() => {\n var _tree$nodesRef$curren;\n return parentOrientation != null ? parentOrientation : tree == null || (_tree$nodesRef$curren = tree.nodesRef.current.find(node => node.id === parentId)) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.context) == null || (_tree$nodesRef$curren = _tree$nodesRef$curren.dataRef) == null ? void 0 : _tree$nodesRef$curren.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useEffectEvent(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n onOpenChange(false, event.nativeEvent, 'list-navigation');\n if (isHTMLElement(elements.domReference)) {\n if (virtual) {\n tree == null || tree.events.emit('virtualfocus', elements.domReference);\n } else {\n elements.domReference.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate();\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate();\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = itemSizes || Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, dense);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loop,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, index) => isListIndexDisabled(listRef, index, disabledIndices) ? index : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate();\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate();\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loop) {\n indexRef.current = currentIndex >= maxIndex ? allowEscape && currentIndex !== listRef.current.length ? -1 : minIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else {\n if (loop) {\n indexRef.current = currentIndex <= minIndex ? allowEscape && currentIndex !== -1 ? listRef.current.length : maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate();\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': virtualId || activeId\n };\n }, [virtual, open, hasActiveIndex, virtualId, activeId]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown: commonOnKeyDown,\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, orientation, typeableComboboxReference]);\n const reference = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n ...ariaActiveDescendantProp,\n onKeyDown(event) {\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isHomeOrEndKey = ['Home', 'End'].includes(event.key);\n const isMoveKey = isArrowKey || isHomeOrEndKey;\n const isCrossOpenKey = isCrossOrientationOpenKey(event.key, orientation, rtl);\n const isCrossCloseKey = isCrossOrientationCloseKey(event.key, orientation, rtl, cols);\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && open) {\n const rootNode = tree == null ? void 0 : tree.nodesRef.current.find(node => node.parentId == null);\n const deepestNode = tree && rootNode ? getDeepestNode(tree.nodesRef.current, rootNode.id) : null;\n if (isMoveKey && deepestNode && virtualItemRef) {\n const eventObject = new KeyboardEvent('keydown', {\n key: event.key,\n bubbles: true\n });\n if (isCrossOpenKey || isCrossCloseKey) {\n var _deepestNode$context, _deepestNode$context2;\n const isCurrentTarget = ((_deepestNode$context = deepestNode.context) == null ? void 0 : _deepestNode$context.elements.domReference) === event.currentTarget;\n const dispatchItem = isCrossCloseKey && !isCurrentTarget ? (_deepestNode$context2 = deepestNode.context) == null ? void 0 : _deepestNode$context2.elements.domReference : isCrossOpenKey ? listRef.current.find(item => (item == null ? void 0 : item.id) === activeId) : null;\n if (dispatchItem) {\n stopEvent(event);\n dispatchItem.dispatchEvent(eventObject);\n setVirtualId(undefined);\n }\n }\n if ((isMainKey || isHomeOrEndKey) && deepestNode.context) {\n if (deepestNode.context.open && deepestNode.parentId && event.currentTarget !== deepestNode.context.elements.domReference) {\n var _deepestNode$context$;\n stopEvent(event);\n (_deepestNode$context$ = deepestNode.context.elements.domReference) == null || _deepestNode$context$.dispatchEvent(eventObject);\n return;\n }\n }\n }\n return commonOnKeyDown(event);\n }\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!open && !openOnArrowKeyDown && isArrowKey) {\n return;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (open) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate();\n } else {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n }\n }\n return;\n }\n if (isMainKey) {\n if (selectedIndex != null) {\n indexRef.current = selectedIndex;\n }\n stopEvent(event);\n if (!open && openOnArrowKeyDown) {\n onOpenChange(true, event.nativeEvent, 'list-navigation');\n } else {\n commonOnKeyDown(event);\n }\n if (open) {\n onNavigate();\n }\n }\n },\n onFocus() {\n if (open && !virtual) {\n indexRef.current = -1;\n onNavigate();\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [activeId, ariaActiveDescendantProp, cols, commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, onOpenChange, open, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndex, tree, virtual, virtualItemRef]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\nconst componentRoleToAriaRoleMap = /*#__PURE__*/new Map([['select', 'listbox'], ['combobox', 'listbox'], ['label', false]]);\n\n/**\n * Adds base screen reader props to the reference and floating elements for a\n * given floating element `role`.\n * @see https://floating-ui.com/docs/useRole\n */\nfunction useRole(context, props) {\n var _elements$domReferenc, _componentRoleToAriaR;\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements,\n floatingId: defaultFloatingId\n } = context;\n const {\n enabled = true,\n role = 'dialog'\n } = props;\n const defaultReferenceId = useId();\n const referenceId = ((_elements$domReferenc = elements.domReference) == null ? void 0 : _elements$domReferenc.id) || defaultReferenceId;\n const floatingId = React.useMemo(() => {\n var _getFloatingFocusElem;\n return ((_getFloatingFocusElem = getFloatingFocusElement(elements.floating)) == null ? void 0 : _getFloatingFocusElem.id) || defaultFloatingId;\n }, [elements.floating, defaultFloatingId]);\n const ariaRole = (_componentRoleToAriaR = componentRoleToAriaRoleMap.get(role)) != null ? _componentRoleToAriaR : role;\n const parentId = useFloatingParentNodeId();\n const isNested = parentId != null;\n const reference = React.useMemo(() => {\n if (ariaRole === 'tooltip' || role === 'label') {\n return {\n [\"aria-\" + (role === 'label' ? 'labelledby' : 'describedby')]: open ? floatingId : undefined\n };\n }\n return {\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': ariaRole === 'alertdialog' ? 'dialog' : ariaRole,\n 'aria-controls': open ? floatingId : undefined,\n ...(ariaRole === 'listbox' && {\n role: 'combobox'\n }),\n ...(ariaRole === 'menu' && {\n id: referenceId\n }),\n ...(ariaRole === 'menu' && isNested && {\n role: 'menuitem'\n }),\n ...(role === 'select' && {\n 'aria-autocomplete': 'none'\n }),\n ...(role === 'combobox' && {\n 'aria-autocomplete': 'list'\n })\n };\n }, [ariaRole, floatingId, isNested, open, referenceId, role]);\n const floating = React.useMemo(() => {\n const floatingProps = {\n id: floatingId,\n ...(ariaRole && {\n role: ariaRole\n })\n };\n if (ariaRole === 'tooltip' || role === 'label') {\n return floatingProps;\n }\n return {\n ...floatingProps,\n ...(ariaRole === 'menu' && {\n 'aria-labelledby': referenceId\n })\n };\n }, [ariaRole, floatingId, referenceId, role]);\n const item = React.useCallback(_ref => {\n let {\n active,\n selected\n } = _ref;\n const commonProps = {\n role: 'option',\n ...(active && {\n id: floatingId + \"-fui-option\"\n })\n };\n\n // For `menu`, we are unable to tell if the item is a `menuitemradio`\n // or `menuitemcheckbox`. For backwards-compatibility reasons, also\n // avoid defaulting to `menuitem` as it may overwrite custom role props.\n switch (role) {\n case 'select':\n case 'combobox':\n return {\n ...commonProps,\n 'aria-selected': selected\n };\n }\n return {};\n }, [floatingId, role]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item\n } : {}, [enabled, reference, floating, item]);\n}\n\n// Converts a JS style key like `backgroundColor` to a CSS transition-property\n// like `background-color`.\nconst camelCaseToKebabCase = str => str.replace(/[A-Z]+(?![a-z])|[A-Z]/g, ($, ofs) => (ofs ? '-' : '') + $.toLowerCase());\nfunction execWithArgsOrReturn(valueOrFn, args) {\n return typeof valueOrFn === 'function' ? valueOrFn(args) : valueOrFn;\n}\nfunction useDelayUnmount(open, durationMs) {\n const [isMounted, setIsMounted] = React.useState(open);\n if (open && !isMounted) {\n setIsMounted(true);\n }\n React.useEffect(() => {\n if (!open && isMounted) {\n const timeout = setTimeout(() => setIsMounted(false), durationMs);\n return () => clearTimeout(timeout);\n }\n }, [open, isMounted, durationMs]);\n return isMounted;\n}\n/**\n * Provides a status string to apply CSS transitions to a floating element,\n * correctly handling placement-aware transitions.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstatus\n */\nfunction useTransitionStatus(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n open,\n elements: {\n floating\n }\n } = context;\n const {\n duration = 250\n } = props;\n const isNumberDuration = typeof duration === 'number';\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [status, setStatus] = React.useState('unmounted');\n const isMounted = useDelayUnmount(open, closeDuration);\n if (!isMounted && status === 'close') {\n setStatus('unmounted');\n }\n useModernLayoutEffect(() => {\n if (!floating) return;\n if (open) {\n setStatus('initial');\n const frame = requestAnimationFrame(() => {\n // Ensure it opens before paint. With `FloatingDelayGroup`,\n // this avoids a flicker when moving between floating elements\n // to ensure one is always open with no missing frames.\n ReactDOM.flushSync(() => {\n setStatus('open');\n });\n });\n return () => {\n cancelAnimationFrame(frame);\n };\n }\n setStatus('close');\n }, [open, floating]);\n return {\n isMounted,\n status\n };\n}\n/**\n * Provides styles to apply CSS transitions to a floating element, correctly\n * handling placement-aware transitions. Wrapper around `useTransitionStatus`.\n * @see https://floating-ui.com/docs/useTransition#usetransitionstyles\n */\nfunction useTransitionStyles(context, props) {\n if (props === void 0) {\n props = {};\n }\n const {\n initial: unstable_initial = {\n opacity: 0\n },\n open: unstable_open,\n close: unstable_close,\n common: unstable_common,\n duration = 250\n } = props;\n const placement = context.placement;\n const side = placement.split('-')[0];\n const fnArgs = React.useMemo(() => ({\n side,\n placement\n }), [side, placement]);\n const isNumberDuration = typeof duration === 'number';\n const openDuration = (isNumberDuration ? duration : duration.open) || 0;\n const closeDuration = (isNumberDuration ? duration : duration.close) || 0;\n const [styles, setStyles] = React.useState(() => ({\n ...execWithArgsOrReturn(unstable_common, fnArgs),\n ...execWithArgsOrReturn(unstable_initial, fnArgs)\n }));\n const {\n isMounted,\n status\n } = useTransitionStatus(context, {\n duration\n });\n const initialRef = useLatestRef(unstable_initial);\n const openRef = useLatestRef(unstable_open);\n const closeRef = useLatestRef(unstable_close);\n const commonRef = useLatestRef(unstable_common);\n useModernLayoutEffect(() => {\n const initialStyles = execWithArgsOrReturn(initialRef.current, fnArgs);\n const closeStyles = execWithArgsOrReturn(closeRef.current, fnArgs);\n const commonStyles = execWithArgsOrReturn(commonRef.current, fnArgs);\n const openStyles = execWithArgsOrReturn(openRef.current, fnArgs) || Object.keys(initialStyles).reduce((acc, key) => {\n acc[key] = '';\n return acc;\n }, {});\n if (status === 'initial') {\n setStyles(styles => ({\n transitionProperty: styles.transitionProperty,\n ...commonStyles,\n ...initialStyles\n }));\n }\n if (status === 'open') {\n setStyles({\n transitionProperty: Object.keys(openStyles).map(camelCaseToKebabCase).join(','),\n transitionDuration: openDuration + \"ms\",\n ...commonStyles,\n ...openStyles\n });\n }\n if (status === 'close') {\n const styles = closeStyles || initialStyles;\n setStyles({\n transitionProperty: Object.keys(styles).map(camelCaseToKebabCase).join(','),\n transitionDuration: closeDuration + \"ms\",\n ...commonStyles,\n ...styles\n });\n }\n }, [closeDuration, closeRef, initialRef, openRef, commonRef, openDuration, status, fnArgs]);\n return {\n isMounted,\n styles\n };\n}\n\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nfunction useTypeahead(context, props) {\n var _ref;\n const {\n open,\n dataRef\n } = context;\n const {\n listRef,\n activeIndex,\n onMatch: unstable_onMatch,\n onTypingChange: unstable_onTypingChange,\n enabled = true,\n findMatch = null,\n resetMs = 750,\n ignoreKeys = [],\n selectedIndex = null\n } = props;\n const timeoutIdRef = React.useRef(-1);\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef((_ref = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref : -1);\n const matchIndexRef = React.useRef(null);\n const onMatch = useEffectEvent(unstable_onMatch);\n const onTypingChange = useEffectEvent(unstable_onTypingChange);\n const findMatchRef = useLatestRef(findMatch);\n const ignoreKeysRef = useLatestRef(ignoreKeys);\n useModernLayoutEffect(() => {\n if (open) {\n clearTimeoutIfSet(timeoutIdRef);\n matchIndexRef.current = null;\n stringRef.current = '';\n }\n }, [open]);\n useModernLayoutEffect(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n var _ref2;\n prevIndexRef.current = (_ref2 = selectedIndex != null ? selectedIndex : activeIndex) != null ? _ref2 : -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useEffectEvent(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n } else {\n if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange(value);\n }\n }\n });\n const onKeyDown = useEffectEvent(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = findMatchRef.current ? findMatchRef.current(orderedList, string) : orderedList.find(text => (text == null ? void 0 : text.toLocaleLowerCase().indexOf(string.toLocaleLowerCase())) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null || ignoreKeysRef.current.includes(event.key) ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => {\n var _text$, _text$2;\n return text ? ((_text$ = text[0]) == null ? void 0 : _text$.toLocaleLowerCase()) !== ((_text$2 = text[1]) == null ? void 0 : _text$2.toLocaleLowerCase()) : true;\n });\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n clearTimeoutIfSet(timeoutIdRef);\n timeoutIdRef.current = window.setTimeout(() => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n }, resetMs);\n const prevIndex = prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatch(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const reference = React.useMemo(() => ({\n onKeyDown\n }), [onKeyDown]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n }\n };\n }, [onKeyDown, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}\n\nfunction getArgsWithCustomFloatingHeight(state, height) {\n return {\n ...state,\n rects: {\n ...state.rects,\n floating: {\n ...state.rects.floating,\n height\n }\n }\n };\n}\n/**\n * Positions the floating element such that an inner element inside of it is\n * anchored to the reference element.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nconst inner = props => ({\n name: 'inner',\n options: props,\n async fn(state) {\n const {\n listRef,\n overflowRef,\n onFallbackChange,\n offset: innerOffset = 0,\n index = 0,\n minItemsVisible = 4,\n referenceOverflowThreshold = 0,\n scrollRef,\n ...detectOverflowOptions\n } = evaluate(props, state);\n const {\n rects,\n platform,\n elements: {\n floating\n }\n } = state;\n const item = listRef.current[index];\n const scrollEl = (scrollRef == null ? void 0 : scrollRef.current) || floating;\n\n // Valid combinations:\n // 1. Floating element is the scrollRef and has a border (default)\n // 2. Floating element is not the scrollRef, floating element has a border\n // 3. Floating element is not the scrollRef, scrollRef has a border\n // Floating > {...getFloatingProps()} wrapper > scrollRef > items is not\n // allowed as VoiceOver doesn't work.\n const clientTop = floating.clientTop || scrollEl.clientTop;\n const floatingIsBordered = floating.clientTop !== 0;\n const scrollElIsBordered = scrollEl.clientTop !== 0;\n const floatingIsScrollEl = floating === scrollEl;\n if (process.env.NODE_ENV !== \"production\") {\n if (!state.placement.startsWith('bottom')) {\n warn('`placement` side must be \"bottom\" when using the `inner`', 'middleware.');\n }\n }\n if (!item) {\n return {};\n }\n const nextArgs = {\n ...state,\n ...(await offset(-item.offsetTop - floating.clientTop - rects.reference.height / 2 - item.offsetHeight / 2 - innerOffset).fn(state))\n };\n const overflow = await platform.detectOverflow(getArgsWithCustomFloatingHeight(nextArgs, scrollEl.scrollHeight + clientTop + floating.clientTop), detectOverflowOptions);\n const refOverflow = await platform.detectOverflow(nextArgs, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const diffY = max(0, overflow.top);\n const nextY = nextArgs.y + diffY;\n const isScrollable = scrollEl.scrollHeight > scrollEl.clientHeight;\n const rounder = isScrollable ? v => v : round;\n const maxHeight = rounder(max(0, scrollEl.scrollHeight + (floatingIsBordered && floatingIsScrollEl || scrollElIsBordered ? clientTop * 2 : 0) - diffY - max(0, overflow.bottom)));\n scrollEl.style.maxHeight = maxHeight + \"px\";\n scrollEl.scrollTop = diffY;\n\n // There is not enough space, fallback to standard anchored positioning\n if (onFallbackChange) {\n const shouldFallback = scrollEl.offsetHeight < item.offsetHeight * min(minItemsVisible, listRef.current.length) - 1 || refOverflow.top >= -referenceOverflowThreshold || refOverflow.bottom >= -referenceOverflowThreshold;\n ReactDOM.flushSync(() => onFallbackChange(shouldFallback));\n }\n if (overflowRef) {\n overflowRef.current = await platform.detectOverflow(getArgsWithCustomFloatingHeight({\n ...nextArgs,\n y: nextY\n }, scrollEl.offsetHeight + clientTop + floating.clientTop), detectOverflowOptions);\n }\n return {\n y: nextY\n };\n }\n});\n/**\n * Changes the `inner` middleware's `offset` upon a `wheel` event to\n * expand the floating element's height, revealing more list items.\n * @see https://floating-ui.com/docs/inner\n * @deprecated\n */\nfunction useInnerOffset(context, props) {\n const {\n open,\n elements\n } = context;\n const {\n enabled = true,\n overflowRef,\n scrollRef,\n onChange: unstable_onChange\n } = props;\n const onChange = useEffectEvent(unstable_onChange);\n const controlledScrollingRef = React.useRef(false);\n const prevScrollTopRef = React.useRef(null);\n const initialOverflowRef = React.useRef(null);\n React.useEffect(() => {\n if (!enabled) return;\n function onWheel(e) {\n if (e.ctrlKey || !el || overflowRef.current == null) {\n return;\n }\n const dY = e.deltaY;\n const isAtTop = overflowRef.current.top >= -0.5;\n const isAtBottom = overflowRef.current.bottom >= -0.5;\n const remainingScroll = el.scrollHeight - el.clientHeight;\n const sign = dY < 0 ? -1 : 1;\n const method = dY < 0 ? 'max' : 'min';\n if (el.scrollHeight <= el.clientHeight) {\n return;\n }\n if (!isAtTop && dY > 0 || !isAtBottom && dY < 0) {\n e.preventDefault();\n ReactDOM.flushSync(() => {\n onChange(d => d + Math[method](dY, remainingScroll * sign));\n });\n } else if (/firefox/i.test(getUserAgent())) {\n // Needed to propagate scrolling during momentum scrolling phase once\n // it gets limited by the boundary. UX improvement, not critical.\n el.scrollTop += dY;\n }\n }\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (open && el) {\n el.addEventListener('wheel', onWheel);\n\n // Wait for the position to be ready.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n if (overflowRef.current != null) {\n initialOverflowRef.current = {\n ...overflowRef.current\n };\n }\n });\n return () => {\n prevScrollTopRef.current = null;\n initialOverflowRef.current = null;\n el.removeEventListener('wheel', onWheel);\n };\n }\n }, [enabled, open, elements.floating, overflowRef, scrollRef, onChange]);\n const floating = React.useMemo(() => ({\n onKeyDown() {\n controlledScrollingRef.current = true;\n },\n onWheel() {\n controlledScrollingRef.current = false;\n },\n onPointerMove() {\n controlledScrollingRef.current = false;\n },\n onScroll() {\n const el = (scrollRef == null ? void 0 : scrollRef.current) || elements.floating;\n if (!overflowRef.current || !el || !controlledScrollingRef.current) {\n return;\n }\n if (prevScrollTopRef.current !== null) {\n const scrollDiff = el.scrollTop - prevScrollTopRef.current;\n if (overflowRef.current.bottom < -0.5 && scrollDiff < -1 || overflowRef.current.top < -0.5 && scrollDiff > 1) {\n ReactDOM.flushSync(() => onChange(d => d + scrollDiff));\n }\n }\n\n // [Firefox] Wait for the height change to have been applied.\n requestAnimationFrame(() => {\n prevScrollTopRef.current = el.scrollTop;\n });\n }\n }), [elements.floating, onChange, overflowRef, scrollRef]);\n return React.useMemo(() => enabled ? {\n floating\n } : {}, [enabled, floating]);\n}\n\nfunction getNodeChildren(nodes, id, onlyOpenChildren) {\n if (onlyOpenChildren === void 0) {\n onlyOpenChildren = true;\n }\n const directChildren = nodes.filter(node => {\n var _node$context;\n return node.parentId === id && (!onlyOpenChildren || ((_node$context = node.context) == null ? void 0 : _node$context.open));\n });\n return directChildren.flatMap(child => [child, ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\n\nfunction isPointInPolygon(point, polygon) {\n const [x, y] = point;\n let isInside = false;\n const length = polygon.length;\n for (let i = 0, j = length - 1; i < length; j = i++) {\n const [xi, yi] = polygon[i] || [0, 0];\n const [xj, yj] = polygon[j] || [0, 0];\n const intersect = yi >= y !== yj >= y && x <= (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) {\n isInside = !isInside;\n }\n }\n return isInside;\n}\nfunction isInside(point, rect) {\n return point[0] >= rect.x && point[0] <= rect.x + rect.width && point[1] >= rect.y && point[1] <= rect.y + rect.height;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nfunction safePolygon(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n buffer = 0.5,\n blockPointerEvents = false,\n requireIntent = true\n } = options;\n const timeoutRef = {\n current: -1\n };\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n function getCursorSpeed(x, y) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return null;\n }\n const deltaX = x - lastX;\n const deltaY = y - lastY;\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n const speed = distance / elapsedTime; // px / ms\n\n lastX = x;\n lastY = y;\n lastCursorTime = currentTime;\n return speed;\n }\n const fn = _ref => {\n let {\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n } = _ref;\n return function onMouseMove(event) {\n function close() {\n clearTimeoutIfSet(timeoutRef);\n onClose();\n }\n clearTimeoutIfSet(timeoutRef);\n if (!elements.domReference || !elements.floating || placement == null || x == null || y == null) {\n return;\n }\n const {\n clientX,\n clientY\n } = event;\n const clientPoint = [clientX, clientY];\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(elements.floating, target);\n const isOverReferenceEl = contains(elements.domReference, target);\n const refRect = elements.domReference.getBoundingClientRect();\n const rect = elements.floating.getBoundingClientRect();\n const side = placement.split('-')[0];\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isOverReferenceRect = isInside(clientPoint, refRect);\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n }\n if (isOverReferenceEl && !isLeave) {\n hasLanded = true;\n return;\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(elements.floating, event.relatedTarget)) {\n return;\n }\n\n // If any nested child is open, abort.\n if (tree && getNodeChildren(tree.nodesRef.current, nodeId).length) {\n return;\n }\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n return close();\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let rectPoly = [];\n switch (side) {\n case 'top':\n rectPoly = [[left, refRect.top + 1], [left, rect.bottom - 1], [right, rect.bottom - 1], [right, refRect.top + 1]];\n break;\n case 'bottom':\n rectPoly = [[left, rect.top + 1], [left, refRect.bottom - 1], [right, refRect.bottom - 1], [right, rect.top + 1]];\n break;\n case 'left':\n rectPoly = [[rect.right - 1, bottom], [rect.right - 1, top], [refRect.left + 1, top], [refRect.left + 1, bottom]];\n break;\n case 'right':\n rectPoly = [[refRect.right - 1, bottom], [refRect.right - 1, top], [rect.left + 1, top], [rect.left + 1, bottom]];\n break;\n }\n function getPolygon(_ref2) {\n let [x, y] = _ref2;\n switch (side) {\n case 'top':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y + buffer + 1];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.bottom - buffer : isFloatingWider ? rect.bottom - buffer : rect.top], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.bottom - buffer : rect.top : rect.bottom - buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'bottom':\n {\n const cursorPointOne = [isFloatingWider ? x + buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const cursorPointTwo = [isFloatingWider ? x - buffer / 2 : cursorLeaveFromRight ? x + buffer * 4 : x - buffer * 4, y - buffer];\n const commonPoints = [[rect.left, cursorLeaveFromRight ? rect.top + buffer : isFloatingWider ? rect.top + buffer : rect.bottom], [rect.right, cursorLeaveFromRight ? isFloatingWider ? rect.top + buffer : rect.bottom : rect.top + buffer]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n case 'left':\n {\n const cursorPointOne = [x + buffer + 1, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x + buffer + 1, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.right - buffer : isFloatingTaller ? rect.right - buffer : rect.left, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.right - buffer : rect.left : rect.right - buffer, rect.bottom]];\n return [...commonPoints, cursorPointOne, cursorPointTwo];\n }\n case 'right':\n {\n const cursorPointOne = [x - buffer, isFloatingTaller ? y + buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const cursorPointTwo = [x - buffer, isFloatingTaller ? y - buffer / 2 : cursorLeaveFromBottom ? y + buffer * 4 : y - buffer * 4];\n const commonPoints = [[cursorLeaveFromBottom ? rect.left + buffer : isFloatingTaller ? rect.left + buffer : rect.right, rect.top], [cursorLeaveFromBottom ? isFloatingTaller ? rect.left + buffer : rect.right : rect.left + buffer, rect.bottom]];\n return [cursorPointOne, cursorPointTwo, ...commonPoints];\n }\n }\n }\n if (isPointInPolygon([clientX, clientY], rectPoly)) {\n return;\n }\n if (hasLanded && !isOverReferenceRect) {\n return close();\n }\n if (!isLeave && requireIntent) {\n const cursorSpeed = getCursorSpeed(event.clientX, event.clientY);\n const cursorSpeedThreshold = 0.1;\n if (cursorSpeed !== null && cursorSpeed < cursorSpeedThreshold) {\n return close();\n }\n }\n if (!isPointInPolygon([clientX, clientY], getPolygon([x, y]))) {\n close();\n } else if (!hasLanded && requireIntent) {\n timeoutRef.current = window.setTimeout(close, 40);\n }\n };\n };\n fn.__options = {\n blockPointerEvents\n };\n return fn;\n}\n\nexport { Composite, CompositeItem, FloatingArrow, FloatingDelayGroup, FloatingFocusManager, FloatingList, FloatingNode, FloatingOverlay, FloatingPortal, FloatingTree, NextFloatingDelayGroup, inner, safePolygon, useClick, useClientPoint, useDelayGroup, useDelayGroupContext, useDismiss, useFloating, useFloatingNodeId, useFloatingParentNodeId, useFloatingPortalNode, useFloatingRootContext, useFloatingTree, useFocus, useHover, useId, useInnerOffset, useInteractions, useListItem, useListNavigation, useMergeRefs, useNextDelayGroup, useRole, useTransitionStatus, useTransitionStyles, useTypeahead };\n","import { createContext } from 'react';\n\nimport { TooltipState } from '../models/TooltipState';\n\nexport const TooltipContext = createContext<TooltipState>(null);\n","import { FloatingPortal, useMergeRefs } from '@floating-ui/react';\nimport classnames from 'classnames';\nimport { HTMLProps, forwardRef, useContext } from 'react';\n\nimport { TooltipContext } from '../TooltipProvider/constants/TooltipContext';\n\ninterface Props {\n styles?: {\n [key: string]: string;\n };\n}\n\nexport const TooltipContent = forwardRef<HTMLDivElement, HTMLProps<HTMLDivElement> & Props>(function TooltipContent(\n { styles, style, children, ...props },\n propRef,\n) {\n const context = useContext(TooltipContext);\n if (!context) {\n return null;\n }\n\n const { context: floatingContext, ...otherContext } = context;\n\n const ref = useMergeRefs([otherContext.refs.setFloating, propRef]);\n\n if (!floatingContext.open) return null;\n\n let arrowClassName = '';\n let invertX: boolean | null = null;\n let invertY: boolean | null = null;\n switch (otherContext.placement) {\n case 'top':\n case 'top-end':\n case 'top-start':\n arrowClassName = 'topArrow';\n invertY = false;\n break;\n case 'bottom':\n case 'bottom-end':\n case 'bottom-start':\n arrowClassName = 'bottomArrow';\n invertY = true;\n break;\n case 'left':\n case 'left-end':\n case 'left-start':\n arrowClassName = 'leftArrow';\n invertX = true;\n break;\n case 'right':\n case 'right-end':\n case 'right-start':\n arrowClassName = 'rightArrow';\n invertX = false;\n break;\n\n default:\n break;\n }\n\n return (\n <FloatingPortal root={otherContext.root}>\n <div\n ref={ref}\n style={{\n ...otherContext.floatingStyles,\n ...style,\n }}\n {...otherContext.getFloatingProps(props)}\n >\n {children}\n {!otherContext.withoutArrow && (\n <div\n className={styles && classnames(styles.arrow, styles[arrowClassName as keyof typeof styles])}\n ref={otherContext.arrowRef}\n style={{\n position: 'absolute',\n left: invertY === null && invertX === false ? 0 : otherContext.middlewareData.arrow?.x,\n right: invertY === null && invertX === true ? 0 : otherContext.middlewareData.arrow?.x,\n top: invertX === null && invertY === true ? 0 : otherContext.middlewareData.arrow?.y,\n bottom: invertX === null && invertY === false ? 0 : otherContext.middlewareData.arrow?.y,\n }}\n />\n )}\n </div>\n </FloatingPortal>\n );\n});\n","import { PropsWithChildren } from 'react';\n\nimport { TooltipContext } from './constants/TooltipContext';\nimport { useTooltip } from './hooks/useTooltip';\nimport { TooltipOptions } from './models/TooltipOptions';\n\nexport const TooltipProvider = (props: PropsWithChildren<TooltipOptions>) => {\n const { children, ...options } = props;\n\n const tooltip = useTooltip(options);\n\n return <TooltipContext.Provider value={tooltip}>{children}</TooltipContext.Provider>;\n};\n","import {\n arrow,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useMemo, useState } from 'react';\n\nimport { TooltipOptions } from '../models/TooltipOptions';\n\nexport function useTooltip(props: TooltipOptions = {}) {\n const {\n initialOpen = false,\n placement = 'top',\n open: controlledOpen,\n onOpenChange: setControlledOpen,\n withoutArrow,\n arrowRef,\n root,\n } = props;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(initialOpen);\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n const data = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(12),\n flip({\n crossAxis: placement.includes('-'),\n fallbackAxisSideDirection: 'start',\n padding: 5,\n }),\n shift({ padding: 5 }),\n ...(!withoutArrow && arrowRef?.current ? [arrow({ element: arrowRef })] : []),\n ],\n });\n\n const { context } = data;\n\n const hover = useHover(context, {\n move: false,\n enabled: controlledOpen == null,\n });\n const focus = useFocus(context, {\n enabled: controlledOpen == null,\n });\n const dismiss = useDismiss(context);\n const role = useRole(context, { role: 'tooltip' });\n\n const interactions = useInteractions([hover, focus, dismiss, role]);\n\n return useMemo(\n () => ({\n open,\n setOpen,\n withoutArrow,\n arrowRef,\n root,\n ...interactions,\n ...data,\n }),\n [open, setOpen, interactions, data, root],\n );\n}\n","import { useMergeRefs } from '@floating-ui/react';\nimport { HTMLProps, cloneElement, forwardRef, isValidElement, useContext } from 'react';\n\nimport { TooltipContext } from '../TooltipProvider/constants/TooltipContext';\n\nexport const TooltipTrigger = forwardRef<HTMLElement, HTMLProps<HTMLElement> & { wrapTrigger?: boolean }>(\n function TooltipTrigger({ children, wrapTrigger = false, ...props }, propRef) {\n const context = useContext(TooltipContext);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const childrenRef = (children as any).ref;\n const ref = useMergeRefs([context?.refs.setReference, propRef, childrenRef]);\n\n if (!context) {\n return null;\n }\n\n if (!wrapTrigger && isValidElement(children)) {\n return cloneElement(\n children,\n context.getReferenceProps({\n ref,\n ...props,\n ...(children.props as object),\n 'data-state': context.open ? 'open' : 'closed',\n } as object),\n );\n }\n\n return (\n <div ref={ref} data-state={context.open ? 'open' : 'closed'} {...context.getReferenceProps(props)}>\n {children}\n </div>\n );\n },\n);\n","import { Placement } from '@floating-ui/react';\nimport classnames from 'classnames';\nimport { MutableRefObject, PropsWithChildren, ReactElement, ReactNode, useRef, useState } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './tooltip.module.css';\nimport { TooltipContent } from './ui/TooltipContent';\nimport { TooltipProvider } from './ui/TooltipProvider';\nimport { TooltipTrigger } from './ui/TooltipTrigger';\n\ninterface Props {\n label?: ReactNode | string;\n clickable?: boolean;\n initialOpen?: boolean;\n placement?: Placement;\n withoutArrow?: boolean;\n wrapTrigger?: boolean;\n alertType?: 'success' | 'warning' | 'error' | 'info' | 'default';\n root?: HTMLElement | MutableRefObject<HTMLElement | null> | null;\n}\n\nexport function Tooltip(props: PropsWithChildren<UiProps<Props>>): ReactElement | null {\n const {\n label,\n clickable,\n initialOpen,\n placement,\n withoutArrow,\n wrapTrigger,\n alertType = 'default',\n root,\n children,\n classes,\n } = props;\n\n const [showTooltip, setShowTooltip] = useState(false);\n\n const arrowRef = useRef(null);\n\n if (!label) {\n return children ? <>{children}</> : null;\n }\n\n if (!children) {\n return null;\n }\n\n return (\n <TooltipProvider\n placement={placement}\n initialOpen={initialOpen}\n open={clickable ? showTooltip : undefined}\n onOpenChange={clickable ? setShowTooltip : undefined}\n withoutArrow={withoutArrow}\n arrowRef={arrowRef}\n root={root}\n >\n <TooltipTrigger\n wrapTrigger={wrapTrigger}\n onClick={clickable ? () => setShowTooltip((prev) => !prev) : undefined}\n className={wrapTrigger ? classnames(styles.trigger, classes?.trigger) : undefined}\n >\n {children}\n </TooltipTrigger>\n <TooltipContent\n className={classnames(styles.content, styles[alertType as keyof typeof styles], classes?.content)}\n styles={styles}\n >\n {label}\n </TooltipContent>\n </TooltipProvider>\n );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"fieldShell-module__arrow__dXtPp\";\nvar _2 = \"fieldShell-module__chips__Eyi_K\";\nvar _3 = \"fieldShell-module__end-icon__ajeP3\";\nvar _4 = \"fieldShell-module__error-icon__Nyh0h\";\nvar _5 = \"fieldShell-module__error-name__LUg8D\";\nvar _6 = \"fieldShell-module__full-width__bYt_Z\";\nvar _7 = \"fieldShell-module__input__mpHQB\";\nvar _8 = \"fieldShell-module__label__fdgQq\";\nvar _9 = \"fieldShell-module__label-row__bOAYh\";\nvar _a = \"fieldShell-module__root__vQ9PI\";\nvar _b = \"fieldShell-module__start-icon__FNrDk\";\nvar _c = \"fieldShell-module__wrapper__OLPGQ\";\nexport { _1 as \"arrow\", _2 as \"chips\", _3 as \"endIcon\", _4 as \"errorIcon\", _5 as \"errorName\", _6 as \"fullWidth\", _7 as \"input\", _8 as \"label\", _9 as \"labelRow\", _a as \"root\", _b as \"startIcon\", _c as \"wrapper\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, MouseEventHandler, ReactNode, forwardRef } from 'react';\n\nimport { Tooltip } from '@components/view/Tooltip';\nimport { Typography } from '@components/view/Typography';\nimport { FieldError } from '@models/FieldError';\nimport { FieldSize } from '@models/FieldSize';\nimport { FieldVariant } from '@models/FieldVariant';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './fieldShell.module.css';\n\nexport type { FieldVariant, FieldSize, FieldError };\n\ninterface Props {\n variant?: FieldVariant;\n componentSize?: FieldSize;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n labelExtra?: ReactNode;\n inputId?: string;\n onLabelClick?: MouseEventHandler;\n hasStartIcon?: boolean;\n hasEndIcon?: boolean;\n hasDualEndIcon?: boolean;\n hasErrorIcon?: boolean;\n hasClearButton?: boolean;\n hasArrow?: boolean;\n chipsMode?: boolean;\n children: ReactNode;\n}\n\n/**\n * Внутренняя обёртка поля ввода: лейбл + контейнер с фоном/рамкой.\n * Общая геометрия и состояния задаются через data-атрибуты,\n * чтобы CSS-модули компонентов могли на них ссылаться.\n */\nexport const FieldShell = forwardRef<HTMLDivElement, UiProps<Props> & HTMLAttributes<HTMLDivElement>>(\n function FieldShell(\n {\n variant = 'outlined',\n componentSize = 'medium',\n fullWidth,\n label,\n error,\n labelExtra,\n inputId,\n onLabelClick,\n hasStartIcon,\n hasEndIcon,\n hasDualEndIcon,\n hasErrorIcon,\n hasClearButton,\n hasArrow,\n chipsMode,\n children,\n classes,\n className,\n ...rest\n },\n ref,\n ) {\n return (\n <div data-size={componentSize} className={classnames(styles.root, fullWidth && styles.fullWidth, classes?.root)}>\n {!!label && (\n <div className={classnames(styles.labelRow, classes?.labelRow)}>\n <Typography\n className={classnames(styles.label, classes?.label)}\n component={'label'}\n variant=\"caption\"\n htmlFor={inputId}\n onClick={onLabelClick}\n >\n {label}\n {labelExtra}\n </Typography>\n {!!error && (\n <Tooltip label={error.description} alertType=\"error\">\n <span className={classnames(styles.errorName, classes?.errorName)}>{error.name}</span>\n </Tooltip>\n )}\n </div>\n )}\n <div\n ref={ref}\n data-variant={variant}\n data-error={error ? '' : undefined}\n data-start-icon={hasStartIcon ? '' : undefined}\n data-end-icon={hasEndIcon ? '' : undefined}\n data-dual-end-icon={hasDualEndIcon ? '' : undefined}\n data-error-icon={hasErrorIcon ? '' : undefined}\n data-clear={hasClearButton ? '' : undefined}\n data-arrow={hasArrow ? '' : undefined}\n data-chips={chipsMode ? '' : undefined}\n className={classnames(styles.wrapper, className, classes?.wrapper)}\n {...rest}\n >\n {children}\n </div>\n </div>\n );\n },\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ErrorOutlineIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={\n 'M11 15h2v2h-2v-2zm0-8h2v6h-2V7zm1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48' +\n ' 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z'\n }\n />\n </Icon>\n);\n","import classnames from 'classnames';\n\nimport { Tooltip } from '@components/view/Tooltip';\nimport { ErrorOutlineIcon } from '@icons/ErrorOutlineIcon';\nimport { FieldError } from '@models/FieldError';\nimport { FieldSize } from '@models/FieldSize';\nimport { PropsObject } from '@models/UiProps';\n\nimport * as styles from './fieldShell.module.css';\n\nfunction errorIconTooltipLabel(error: FieldError) {\n return (\n <>\n {error.name}\n <br />\n {error.description}\n </>\n );\n}\n\ninterface Props {\n error: FieldError;\n componentSize?: FieldSize;\n className?: string | PropsObject;\n}\n\nexport function FieldErrorIcon(props: Props) {\n const { error, componentSize = 'medium', className } = props;\n\n const iconSize = componentSize === 'large' || componentSize === 'extraLarge' ? 24 : 20;\n\n return (\n <Tooltip label={errorIconTooltipLabel(error)} alertType=\"error\">\n <span className={classnames(styles.endIcon, styles.errorIcon, className)}>\n <ErrorOutlineIcon size={iconSize} />\n </span>\n </Tooltip>\n );\n}\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const CloseIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n </Icon>\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"inputChip-module__clickable__XZjD7\";\nvar _2 = \"inputChip-module__disabled__Zk_O4\";\nvar _3 = \"inputChip-module__extraLarge__s_SFd\";\nvar _4 = \"inputChip-module__filled__mSiU7\";\nvar _5 = \"inputChip-module__icon__phvLA\";\nvar _6 = \"inputChip-module__large__PPvr0\";\nvar _7 = \"inputChip-module__medium__VruGz\";\nvar _8 = \"inputChip-module__outlined__j4EHe\";\nvar _9 = \"inputChip-module__remove__Z6QBd\";\nvar _a = \"inputChip-module__root__DWnVf\";\nvar _b = \"inputChip-module__small__XrLEF\";\nvar _c = \"inputChip-module__text__dhqTV\";\nvar _d = \"inputChip-module__with-icon__DZMe4\";\nexport { _1 as \"clickable\", _2 as \"disabled\", _3 as \"extraLarge\", _4 as \"filled\", _5 as \"icon\", _6 as \"large\", _7 as \"medium\", _8 as \"outlined\", _9 as \"remove\", _a as \"root\", _b as \"small\", _c as \"text\", _d as \"withIcon\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, MouseEvent, PropsWithChildren, ReactNode, forwardRef } from 'react';\n\nimport { CloseIcon } from '@icons/CloseIcon';\nimport { ChipVariant } from '@models/ChipVariant';\nimport { FieldSize } from '@models/FieldSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './inputChip.module.css';\n\ntype Style = keyof typeof styles;\n\nexport interface Props {\n variant?: ChipVariant;\n componentSize?: FieldSize;\n icon?: ReactNode;\n disabled?: boolean;\n onClick?: () => void;\n onRemove?: () => void;\n}\n\nexport const InputChip = forwardRef<\n HTMLDivElement,\n PropsWithChildren<UiProps<Props>> & Omit<HTMLAttributes<HTMLDivElement>, 'onClick'>\n>(function InputChip(\n {\n variant = 'filled',\n componentSize = 'medium',\n icon,\n disabled,\n onClick,\n onRemove,\n children,\n classes,\n className,\n ...rest\n },\n ref,\n) {\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n if (!disabled) onRemove?.();\n };\n\n return (\n <div\n ref={ref}\n className={classnames(\n styles.root,\n styles[variant as Style],\n styles[componentSize as Style],\n !!icon && styles.withIcon,\n disabled && styles.disabled,\n onClick && !disabled && styles.clickable,\n className,\n classes?.root,\n )}\n tabIndex={onClick && !disabled ? 0 : undefined}\n {...rest}\n onClick={disabled ? undefined : onClick}\n >\n {!!icon && <span className={classnames(styles.icon, classes?.icon)}>{icon}</span>}\n <span className={classnames(styles.text, classes?.text)}>{children}</span>\n {!!onRemove && (\n <button\n type=\"button\"\n className={classnames(styles.remove, classes?.remove)}\n onClick={handleRemove}\n disabled={disabled}\n aria-label=\"Удалить\"\n >\n <CloseIcon />\n </button>\n )}\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"popover-module__content__cXVJ_\";\nvar _2 = \"popover-module__trigger__hYNqD\";\nexport { _1 as \"content\", _2 as \"trigger\" }\n","import { createContext } from 'react';\n\nimport { PopoverState } from '../models/PopoverState';\n\nexport const PopoverContext = createContext<PopoverState>(null);\n","import { FloatingFocusManager, FloatingPortal, useMergeRefs } from '@floating-ui/react';\nimport { HTMLProps, forwardRef, useContext, useLayoutEffect } from 'react';\n\nimport { useCompatId } from '@hooks/useCompatId';\n\nimport { PopoverContext } from '../PopoverProvider/constants/PopoverContext';\n\nexport const PopoverContent = forwardRef<HTMLDivElement, HTMLProps<HTMLDivElement>>(function PopoverContent(\n { style, children, ...props },\n propRef,\n) {\n const context = useContext(PopoverContext);\n if (!context) {\n return null;\n }\n const { context: floatingContext, ...otherContext } = context;\n\n const ref = useMergeRefs([otherContext.refs.setFloating, propRef]);\n\n const id = useCompatId();\n\n useLayoutEffect(() => {\n context.setDescriptionId(id);\n return () => context.setDescriptionId(undefined);\n }, [id, context.setDescriptionId]);\n\n if (!floatingContext.open) return null;\n\n return (\n <FloatingPortal root={otherContext.root}>\n <FloatingFocusManager context={floatingContext} modal={otherContext.modal}>\n <div\n id={id}\n ref={ref}\n style={{ ...otherContext.floatingStyles, ...style }}\n aria-describedby={otherContext.descriptionId}\n {...otherContext.getFloatingProps(props)}\n >\n {children}\n </div>\n </FloatingFocusManager>\n </FloatingPortal>\n );\n});\n","import { PropsWithChildren } from 'react';\n\nimport { PopoverContext } from './constants/PopoverContext';\nimport { usePopover } from './hooks/usePopover';\nimport { PopoverOptions } from './models/PopoverOptions';\n\nexport const PopoverProvider = (props: PropsWithChildren<PopoverOptions>) => {\n const { children, modal = false, ...options } = props;\n\n const popover = usePopover({ modal, ...options });\n\n return <PopoverContext.Provider value={popover}>{children}</PopoverContext.Provider>;\n};\n","import {\n autoUpdate,\n flip,\n offset,\n shift,\n useClick,\n useDismiss,\n useFloating,\n useInteractions,\n useRole,\n} from '@floating-ui/react';\nimport { useLayoutEffect, useMemo, useState } from 'react';\n\nimport { PopoverOptions } from '../models/PopoverOptions';\n\nexport function usePopover(props: PopoverOptions = {}) {\n const {\n initialOpen = false,\n placement = 'bottom',\n modal,\n root,\n open: controlledOpen,\n onOpenChange: setControlledOpen,\n containerOffset = 12,\n layoutVersion,\n } = props;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(initialOpen);\n const [descriptionId, setDescriptionId] = useState<string | undefined>();\n\n const open = controlledOpen ?? uncontrolledOpen;\n const setOpen = setControlledOpen ?? setUncontrolledOpen;\n\n const { update, ...data } = useFloating({\n placement,\n open,\n onOpenChange: setOpen,\n whileElementsMounted: autoUpdate,\n middleware: [\n offset(containerOffset),\n flip({\n crossAxis: placement.includes('-'),\n fallbackAxisSideDirection: 'end',\n padding: 5,\n }),\n shift({ padding: 5 }),\n ],\n });\n\n const { context } = data;\n\n useLayoutEffect(() => {\n if (open) {\n update();\n }\n }, [open, layoutVersion, update]);\n\n const click = useClick(context, {\n enabled: controlledOpen == undefined,\n });\n const dismiss = useDismiss(context);\n const role = useRole(context);\n\n const interactions = useInteractions([click, dismiss, role]);\n\n return useMemo(\n () => ({\n open,\n setOpen,\n ...interactions,\n ...data,\n update,\n modal,\n root,\n descriptionId,\n setDescriptionId,\n }),\n [open, setOpen, interactions, data, update, modal, root, descriptionId],\n );\n}\n","import { useMergeRefs } from '@floating-ui/react';\nimport { HTMLProps, cloneElement, forwardRef, isValidElement, useContext } from 'react';\n\nimport { PopoverContext } from '../PopoverProvider/constants/PopoverContext';\n\nexport const PopoverTrigger = forwardRef<HTMLElement, HTMLProps<HTMLElement> & { wrapTrigger?: boolean }>(\n function PopoverTrigger({ children, wrapTrigger = false, ...props }, propRef) {\n const context = useContext(PopoverContext);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const childrenRef = (children as any).ref;\n const ref = useMergeRefs([context?.refs.setReference, propRef, childrenRef]);\n\n if (!context) {\n return null;\n }\n\n if (!wrapTrigger && isValidElement(children)) {\n return cloneElement(\n children,\n context.getReferenceProps({\n ref,\n ...props,\n ...(children.props as object),\n 'data-state': context.open ? 'open' : 'closed',\n } as object),\n );\n }\n\n return (\n <div ref={ref} data-state={context.open ? 'open' : 'closed'} {...context.getReferenceProps(props)}>\n {children}\n </div>\n );\n },\n);\n","import { Placement } from '@floating-ui/react';\nimport classnames from 'classnames';\nimport { CSSProperties, MutableRefObject, PropsWithChildren, ReactNode, useState } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './popover.module.css';\nimport { PopoverContent } from './ui/PopoverContent';\nimport { PopoverProvider } from './ui/PopoverProvider';\nimport { PopoverTrigger } from './ui/PopoverTrigger';\n\ninterface Props {\n description?: ReactNode | string;\n clickable?: boolean;\n initialOpen?: boolean;\n placement?: Placement;\n wrapTrigger?: boolean;\n containerOffset?: number;\n root?: HTMLElement | MutableRefObject<HTMLElement | null> | null;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n contentStyle?: CSSProperties;\n layoutVersion?: number;\n}\n\nexport function Popover(props: PropsWithChildren<UiProps<Props>>) {\n const {\n description,\n clickable,\n initialOpen,\n placement,\n wrapTrigger,\n containerOffset,\n root,\n open,\n onOpenChange,\n children,\n classes,\n contentStyle,\n layoutVersion,\n } = props;\n\n const [showTooltip, setShowTooltip] = useState(false);\n\n if (!children) {\n return null;\n }\n\n if (!description) {\n return children;\n }\n\n return (\n <PopoverProvider\n placement={placement}\n initialOpen={initialOpen}\n open={open !== undefined ? open : clickable ? showTooltip : undefined}\n onOpenChange={onOpenChange !== undefined ? onOpenChange : clickable ? setShowTooltip : undefined}\n containerOffset={containerOffset}\n root={root}\n layoutVersion={layoutVersion}\n >\n <PopoverTrigger\n wrapTrigger={wrapTrigger}\n onClick={clickable ? () => setShowTooltip((prev) => !prev) : undefined}\n className={classnames(wrapTrigger ? styles.trigger : undefined, classes?.trigger)}\n >\n {children}\n </PopoverTrigger>\n <PopoverContent className={classnames(styles.content, classes?.content)} style={contentStyle}>\n {description}\n </PopoverContent>\n </PopoverProvider>\n );\n}\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const AddIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ArrowDropDownIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M7 10l5 5 5-5z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ArrowDropUpIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M7 14l5-5 5 5z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const AttachIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const BarChartIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M5 9.2h3V19H5zM10.6 5h2.8v14h-2.8zm5.6 8H19v6h-2.8z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const RadioDeselectedIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const RadioSelectedIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ChevronLeftIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ChevronRightIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const CircleFilledIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const DateRangeIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 002 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zM9 14H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm-8 4H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const DeleteIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d={\n 'M14.5 3H9.5L8.5 4H5V6H19V4H15.5L14.5 3ZM16 9V19H8V9H16ZM6' +\n ' 7H18V19C18 20.1 17.1 21 16 21H8C6.9 21 6 20.1 6 19V7Z'\n }\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const DoneIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const DragIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={\n 'M9 4C7.9 4 7 4.9 7 6C7 7.1 7.9 8 9 8C10.1 8 11 7.1 11 6C11 4.9 10.1 4 9' +\n ' 4ZM7 12C7 10.9 7.9 10 9 10C10.1 10 11 10.9 11 12C11 13.1 10.1 14 9 14C7.9' +\n ' 14 7 13.1 7 12ZM9 20C10.1 20 11 19.1 11 18C11 16.9 10.1 16 9 16C7.9 16 7' +\n ' 16.9 7 18C7 19.1 7.9 20 9 20ZM17 6C17 7.1 16.1 8 15 8C13.9 8 13 7.1 13 6C13' +\n ' 4.9 13.9 4 15 4C16.1 4 17 4.9 17 6ZM15 10C13.9 10 13 10.9 13 12C13 13.1 13.9' +\n ' 14 15 14C16.1 14 17 13.1 17 12C17 10.9 16.1 10 15 10ZM13 18C13 16.9 13.9 16' +\n ' 15 16C16.1 16 17 16.9 17 18C17 19.1 16.1 20 15 20C13.9 20 13 19.1 13 18Z'\n }\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const FileUploadIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const FilterIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={`M4.24993 5.61C6.26993 8.2 9.99993 13 9.99993 13V19C9.99993 19.55 10.4499\n 20 10.9999 20H12.9999C13.5499 20 13.9999 19.55 13.9999 19V13C13.9999 13 17.7199 8.2\n 19.7399 5.61C20.2499 4.95 19.7799 4 18.9499 4H5.03993C4.20993 4 3.73993 4.95 4.24993 5.61Z`}\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const FilterClearIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <g clip-path=\"url(#clip0_851_25267)\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d={`M7.00015 4L3.46792 0.467773L2.05371 1.88199L4.4002 4.22847C4.01467 4.55071 3.89485 5.1506 4.24984\n 5.61C6.26984 8.2 9.99984 13 9.99984 13V19C9.99984 19.55 10.4498 20 10.9998 20H12.9998C13.5498 20\n 13.9998 19.55 13.9998 19V13.8281L18.9708 18.7991L20.385 17.3849L20.3849 17.3847L14.8734 11.8733L7.00015\n 4ZM16.1091 10.2805C17.2922 8.75591 18.7289 6.90619 19.7398 5.61C20.2498 4.95 19.7798 4 18.9498\n 4H9.82861L16.1091 10.2805Z`}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_851_25267\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const InfoIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={`M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10\n 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z`}\n ></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const AlertIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={\n 'M23 21.5H1L12 2.5L23 21.5ZM4.47005 19.5H19.53L12 6.48959L4.47005 19.5Z' +\n 'M13 18.5H11V16.5H13V18.5ZM13 10.5V14.5H11V10.5H13Z'\n }\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ChevronUpIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 8.29498L6 14.295L7.41 15.705L12 11.125L16.59 15.705L18 14.295L12 8.29498Z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ChevronDownIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M16.59 8.29498L12 12.875L7.41 8.29498L6 9.70498L12 15.705L18 9.70498L16.59 8.29498Z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ListIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const MoreVerticalIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SearchIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SelectUniqueIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M3 5h18v2H3V5zm0 6h18v2H3v-2zm0 6h10v2H3v-2z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SettingsIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.07.62-.07.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SortDownIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 18V16H21V18H3ZM3 6H9V8H3V6ZM15 11H3V13H15V11Z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SortUpIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M3 6V8H21V6H3ZM3 18H9V16H3V18ZM15 13H3V11H15V13Z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const TableChartIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const UploadIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const WellIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-1-13h2v6h-2zm0 8h2v2h-2z\" />\n </Icon>\n);\n","/* eslint-disable max-len */\nimport React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const EditIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M18.3688 3.29L20.7088 5.63C21.0988 6.02 21.0988 6.65 20.7088 7.04L18.8788 8.87L15.1288 5.12L16.9588 3.29C17.1488 3.1 17.3988 3 17.6588 3C17.9188 3 18.1688 3.09 18.3688 3.29ZM2.99878 17.25V21H6.74878L17.8088 9.94L14.0588 6.19L2.99878 17.25ZM5.91878 19H4.99878V18.08L14.0588 9.02L14.9788 9.94L5.91878 19Z\" />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const FullScreenOnIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={`M3 5v4h2V5h4V3H5c-1.1 0-2 .9-2 2zm2 10H3v4c0 1.1.9 2 2\n 2h4v-2H5v-4zm14 4h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zm0-16h-4v2h4v4h2V5c0-1.1-.9-2-2-2z`}\n ></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const FullScreenOffIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z\"></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const BookmarkIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M17 3H7c-1.1 0-2 .9-2 2v16l7-3 7 3V5c0-1.1-.9-2-2-2zm0 15-5-2.18L7 18V5h10v13z\"></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const BookmarkAddIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={`M17 11v6.97l-5-2.14-5 2.14V5h6V3H7c-1.1 0-2\n .9-2 2v16l7-3 7 3V11h-2zm4-4h-2v2h-2V7h-2V5h2V3h2v2h2v2z`}\n ></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const ExportTableIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n fill=\"currentColor\"\n d={`m16.2 20.5 2.8-2.8V20h1v-4h-4v1h2.3l-2.8 2.8zM5 21q-.824\n 0-1.412-.587A1.93 1.93 0 0 1 3 19V5Q3 4.176 3.588 3.588A1.93\n 1.93 0 0 1 5 3h14q.824 0 1.413.588Q21 4.175 21 5v6.7a8 8 0\n 0 0-.975-.387A6 6 0 0 0 19 11.075V5H5v14h6.05q.076.55.237\n 1.05.163.5.388.95zm0-3v1V5v8.075V11zm2-1h4.075q.076-.525.238-1.025T11.675\n 15H7zm0-4h6.1q.8-.75 1.787-1.25A7 7 0 0 1 17 11.075V11H7zm0-4h10V7H7zm15\n 14q-2.075 0-3.537-1.462Q13 20.074 13 18q0-2.075 1.463-3.537Q15.926 13\n 18 13q2.075 0 3.538 1.463T23 18t-1.462 3.538Q20.074 23 18 23`}\n ></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const DownloadIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zm-8 2V5h2v6h1.17L12 13.17 9.83 11H11zm-6 7h14v2H5z\"></path>\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const VisibilityIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={`M12 6.375C15.75 6.375 18.9525 8.7075 20.25 12C18.9525 15.2925 15.75 17.625 12 17.625C8.25\n 17.625 5.0475 15.2925 3.75 12C5.0475 8.7075 8.25 6.375 12 6.375ZM12 7.875C9.15755 7.87505\n 6.62225 9.47254 5.38477 12C6.62225 14.52746 9.15755 16.12495 12 16.125C14.8425\n 16.125 17.3777 14.5275 18.6152 12C17.3777 9.4725 14.8425 7.875 12 7.875ZM12\n 8.625C13.86 8.625 15.375 10.14 15.375 12C15.375 13.86 13.86 15.375 12 15.375C10.14 15.375\n 8.625 13.86 8.625 12C8.625 10.14 10.14 8.625 12 8.625ZM12 10.125C10.965 10.125 10.125 10.965\n 10.125 12C10.125 13.035 10.965 13.875 12 13.875C13.035 13.875 13.875 13.035\n 13.875 12C13.875 10.965 13.035 10.125 12 10.125Z`}\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const PointIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n d={\n 'M12 8C9.79086 8 8 9.79086 8 12C8 14.2091 9.79086 16 12 ' +\n '16C14.2091 16 16 14.2091 16 12C16 9.79086 14.2091 8 12 8V8Z'\n }\n />\n </Icon>\n);\n","import React from 'react';\n\nimport { Icon, IconProps } from './Icon';\n\nexport const SaveIcon: React.FC<IconProps> = (props) => (\n <Icon {...props}>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d={\n 'M5 3H17L21 7V19C21 20.1 20.1 21 19 21H5C3.89 21 3 20.1 3 19V5C3 3.9 3.89 3 5 3ZM19' +\n ' 19V7.83L16.17 5H5V19H19ZM12 12C10.34 12 9 13.34 9 15C9 16.66 10.34 18 12 18C13.66' +\n ' 18 15 16.66 15 15C15 13.34 13.66 12 12 12ZM15 6H6V10H15V6Z'\n }\n />\n </Icon>\n);\n","import { useContext } from 'react';\n\nimport { ArrowDropDownIcon, ArrowDropUpIcon } from '@icons/index';\n\nimport { PopoverContext } from '../PopoverProvider/constants/PopoverContext';\n\nexport function Arrow() {\n const popoverContext = useContext(PopoverContext);\n\n return popoverContext?.open ? <ArrowDropUpIcon /> : <ArrowDropDownIcon />;\n}\n","import classNames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, forwardRef } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './buttonsGroup.module.css';\n\ninterface Props {\n fillEvenly?: boolean;\n}\n\nexport const ButtonsGroup = forwardRef<\n HTMLDivElement,\n PropsWithChildren<UiProps<Props>> & HTMLAttributes<HTMLDivElement>\n>(function ButtonsGroup({ children, fillEvenly, classes, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={classNames(styles.root, fillEvenly && styles.fillEvenly, className, classes?.root)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"buttonsGroup-module__fill-evenly__J5T6H\";\nvar _2 = \"buttonsGroup-module__root__rBp1o\";\nexport { _1 as \"fillEvenly\", _2 as \"root\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"menu-module__divider__kik9c\";\nvar _2 = \"menu-module__extraLarge__RIQUR\";\nvar _3 = \"menu-module__item__DO2AJ\";\nvar _4 = \"menu-module__item-actions__ecU8y\";\nvar _5 = \"menu-module__item-description__BxxnF\";\nvar _6 = \"menu-module__item-disabled__E7Z4s\";\nvar _7 = \"menu-module__item-icon___HDe4\";\nvar _8 = \"menu-module__item-selected__m9VFe\";\nvar _9 = \"menu-module__item-text-block__zgpGT\";\nvar _a = \"menu-module__item-title__gcK7P\";\nvar _b = \"menu-module__item-title-top__PSYWj\";\nvar _c = \"menu-module__large__jYm_Q\";\nvar _d = \"menu-module__medium__Jev6c\";\nvar _e = \"menu-module__root__pR_5h\";\nvar _f = \"menu-module__small__uGqFV\";\nvar _10 = \"menu-module__state-layer__m8uMf\";\nexport { _1 as \"divider\", _2 as \"extraLarge\", _3 as \"item\", _4 as \"itemActions\", _5 as \"itemDescription\", _6 as \"itemDisabled\", _7 as \"itemIcon\", _8 as \"itemSelected\", _9 as \"itemTextBlock\", _a as \"itemTitle\", _b as \"itemTitleTop\", _c as \"large\", _d as \"medium\", _e as \"root\", _f as \"small\", _10 as \"stateLayer\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, MouseEvent, forwardRef, useCallback } from 'react';\n\nimport { Button } from '@components/common/Button';\nimport { ButtonsGroup } from '@components/common/ButtonsGroup';\nimport { FieldSize } from '@models/FieldSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './menu.module.css';\nimport { Divider } from './models/Divider';\nimport { Item } from './models/Item';\n\ntype DescriptionPosition = 'right' | 'bottom';\n\ninterface Props {\n items: (Item | Divider)[];\n componentSize?: FieldSize;\n descriptionPosition?: DescriptionPosition;\n}\n\nexport const Menu = forwardRef<HTMLDivElement, UiProps<Props> & HTMLAttributes<HTMLDivElement>>(function Menu(\n { items, componentSize = 'medium', descriptionPosition = 'right', classes, className, ...rest },\n ref,\n) {\n const handleClick = useCallback(\n (item: Item) => (e: MouseEvent<HTMLButtonElement | HTMLDivElement>) => {\n item?.onClick?.();\n e.currentTarget.blur();\n },\n [],\n );\n\n return (\n <div\n ref={ref}\n className={classnames(styles.root, styles[componentSize as keyof typeof styles], className, classes?.root)}\n {...rest}\n >\n {' '}\n {items.map((item, index) => {\n const Component = item.type === 'item' && item.subButtons?.length ? 'div' : 'button';\n return item.type === 'item' ? (\n <Component\n tabIndex={-10}\n key={`menu-item-${item.name}-${index}`}\n className={classnames(\n styles.item,\n item.selected ? styles.itemSelected : undefined,\n item.disabled ? styles.itemDisabled : undefined,\n classes?.item,\n item.selected ? classes?.itemSelected : undefined,\n item.disabled ? classes?.itemDisabled : undefined,\n )}\n onClick={!item.disabled ? handleClick(item) : undefined}\n title={item.name}\n >\n <span className={classnames(styles.stateLayer)}>\n {!!item.icon && (\n <span\n className={classnames(\n styles.itemIcon,\n classes?.itemIcon,\n item.selected ? classes?.itemSelectedIcon : undefined,\n item.disabled ? classes?.itemDisabledIcon : undefined,\n )}\n >\n {item.icon}\n </span>\n )}\n {descriptionPosition === 'bottom' && !!item.description ? (\n <span className={classnames(styles.itemTextBlock)}>\n <span\n className={classnames(\n styles.itemTitleTop,\n styles.itemTitle,\n classes?.itemTitle,\n item.selected ? classes?.itemSelectedTitle : undefined,\n item.disabled ? classes?.itemDisabledTitle : undefined,\n )}\n >\n {item.name}\n </span>\n <span\n className={classnames(\n styles.itemDescription,\n classes?.itemDescription,\n item.selected ? classes?.itemSelectedDescription : undefined,\n item.disabled ? classes?.itemDisabledDescription : undefined,\n )}\n >\n {item.description}\n </span>\n </span>\n ) : (\n <>\n <span\n className={classnames(\n styles.itemTitle,\n classes?.itemTitle,\n item.selected ? classes?.itemSelectedTitle : undefined,\n item.disabled ? classes?.itemDisabledTitle : undefined,\n )}\n >\n {item.name}\n </span>\n {!!item.description && (\n <span\n className={classnames(\n styles.itemDescription,\n classes?.itemDescription,\n item.selected ? classes?.itemSelectedDescription : undefined,\n item.disabled ? classes?.itemDisabledDescription : undefined,\n )}\n >\n {item.description}\n </span>\n )}\n </>\n )}\n {!!item.subButtons?.length && (\n <div\n className={classnames(\n styles.itemActions,\n classes?.itemActions,\n item.selected ? classes?.itemSelectedActions : undefined,\n item.disabled ? classes?.itemDisabledActions : undefined,\n )}\n >\n <ButtonsGroup>\n {item.subButtons.map((sb, sbIndex) => (\n <Button\n key={`subButton-${sbIndex}`}\n variant={sb.variant}\n componentSize={componentSize}\n textSecondary={sb.textSecondary}\n isActive={sb.isActive}\n icon={sb.icon}\n onClick={(e) => {\n e.stopPropagation();\n sb.onClick?.();\n }}\n />\n ))}\n </ButtonsGroup>\n </div>\n )}\n </span>\n </Component>\n ) : (\n <div key={`menu-divider-${item.name}-${index}`} className={classnames(styles.divider, classes?.divider)}>\n {item.name}\n </div>\n );\n })}\n </div>\n );\n});\n","import { useContext } from 'react';\n\nimport { FieldSize } from '@components/common/FieldShell';\nimport { Menu } from '@components/navigation/Menu';\nimport { Divider as MenuDivider } from '@components/navigation/Menu/models/Divider';\nimport { Item as MenuItem } from '@components/navigation/Menu/models/Item';\nimport { PopoverContext } from '@components/view/Popover/ui/PopoverProvider/constants/PopoverContext';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport { Divider } from '../../models/Divider';\nimport { Item, MaybeItem } from '../../models/Item';\n\ninterface Props {\n items: (Item | Divider)[];\n componentSize?: FieldSize;\n selectedValue?: string;\n changeSelectedItem: (item: MaybeItem) => void;\n}\n\nexport function SelectPopover(props: UiProps<Props>) {\n const { items, componentSize, selectedValue, changeSelectedItem, classes } = props;\n\n const popoverContext = useContext(PopoverContext);\n\n return (\n <Menu\n componentSize={componentSize}\n classes={classes?.menu as PropsObject | undefined}\n items={items.map((i) =>\n i.type === 'divider'\n ? ({ type: 'divider', name: i.name } as MenuDivider)\n : ({\n type: 'item',\n name: i.name,\n icon: i.icon,\n description: i.description,\n disabled: i.disabled,\n selected: i.value === selectedValue,\n onClick: () => {\n changeSelectedItem(i);\n if (popoverContext) {\n popoverContext.setOpen(false);\n }\n },\n } as MenuItem),\n )}\n />\n );\n}\n","import classnames from 'classnames';\nimport {\n DetailedHTMLProps,\n InputHTMLAttributes,\n MouseEvent,\n ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { mergeRefs } from 'react-merge-refs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { FieldError, FieldErrorIcon, FieldShell, FieldSize, FieldVariant } from '@components/common/FieldShell';\nimport * as fieldStyles from '@components/common/FieldShell/fieldShell.module.css';\nimport { InputChip } from '@components/view/InputChip';\nimport { Popover } from '@components/view/Popover';\nimport { Arrow } from '@components/view/Popover/ui/Arrow';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport { Divider } from './models/Divider';\nimport { Item, MaybeItem } from './models/Item';\nimport * as styles from './select.module.css';\nimport { SelectPopover } from './ui/SelectPopover';\n\ninterface Props {\n variant?: FieldVariant;\n componentSize?: FieldSize;\n icon?: ReactNode;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n placeholder?: string;\n items: (Item | Divider)[];\n onValueChange?: (newItem: MaybeItem) => void;\n selected?: MaybeItem;\n chips?: boolean;\n}\n\nexport const Select = forwardRef<\n HTMLInputElement,\n UiProps<Props> & DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\n>(function Select(props, ref) {\n const {\n variant = 'filled',\n componentSize = 'medium',\n icon,\n fullWidth,\n label,\n error,\n placeholder,\n items,\n defaultValue,\n onValueChange,\n selected,\n chips,\n classes,\n disabled,\n id,\n ...inputProps\n } = props;\n\n const isLocalState = defaultValue && !selected;\n\n const [localSelectedItem, setlocalSelectedItem] = useState<MaybeItem>(\n isLocalState ? (items.find((i) => i.type === 'item' && i.value === defaultValue) as MaybeItem) : undefined,\n );\n\n const selectedItem = isLocalState ? localSelectedItem : selected;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverTargetRef = useRef<HTMLDivElement>(null);\n\n const inputClickHandler = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n if (!disabled) popoverTargetRef?.current?.click();\n },\n [popoverTargetRef],\n );\n\n const changeSelectedItem = (item: MaybeItem) => {\n if (isLocalState) setlocalSelectedItem(item);\n onValueChange?.(item);\n };\n\n useEffect(() => {\n if (selectedItem) {\n const current = items.find((i) => i.type === 'item' && i.value === selectedItem?.value) as MaybeItem;\n if (!current) changeSelectedItem(current);\n }\n }, [items, selectedItem]);\n\n const inputId = id ?? uuidv4();\n const showErrorIcon = !!error && !label;\n\n return (\n <FieldShell\n variant={variant}\n componentSize={componentSize}\n fullWidth={fullWidth}\n label={label}\n error={error}\n inputId={inputId}\n onLabelClick={inputClickHandler}\n hasStartIcon={!!icon || !!selectedItem?.icon}\n hasArrow\n hasErrorIcon={showErrorIcon}\n chipsMode={chips && !!selectedItem}\n classes={{\n ...(classes as PropsObject | undefined),\n wrapper: classnames(\n icon ? styles.withIcon : undefined,\n selectedItem?.icon ? styles.withItemIcon : undefined,\n classes?.wrapper,\n ),\n }}\n >\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classnames(fieldStyles.input, styles.input, classes?.input)}\n placeholder={chips && selectedItem ? undefined : placeholder}\n {...inputProps}\n value={chips ? '' : (selectedItem?.name ?? '')}\n onChange={() => {}}\n onClick={inputClickHandler}\n disabled={disabled}\n />\n {chips && !!selectedItem && (\n <span className={classnames(fieldStyles.chips, classes?.chips)}>\n <InputChip\n componentSize={componentSize}\n disabled={disabled}\n onClick={() => popoverTargetRef?.current?.click()}\n onRemove={() => changeSelectedItem(undefined)}\n >\n {selectedItem.name}\n </InputChip>\n </span>\n )}\n {!!icon && (\n <span onClick={inputClickHandler} className={classnames(styles.icon, classes?.icon)}>\n {icon}\n </span>\n )}\n {!!selectedItem?.icon && (\n <span onClick={inputClickHandler} className={classnames(styles.itemIcon, classes?.itemIcon)}>\n {selectedItem?.icon}\n </span>\n )}\n <span onClick={inputClickHandler} className={classnames(fieldStyles.arrow, classes?.arrow)}>\n <Arrow />\n </span>\n {showErrorIcon && error && (\n <FieldErrorIcon error={error} componentSize={componentSize} className={classes?.errorIcon} />\n )}\n <Popover\n placement=\"bottom-start\"\n classes={{\n content: classnames(styles.popoverContent, 'styledScroll', classes?.popoverContent),\n ...(classes?.popover as PropsObject | undefined),\n }}\n containerOffset={4}\n description={\n <SelectPopover\n items={items}\n classes={classes}\n componentSize={componentSize}\n selectedValue={selectedItem?.value}\n changeSelectedItem={changeSelectedItem}\n />\n }\n >\n <div ref={popoverTargetRef} className={classnames(styles.popoverTarget)} />\n </Popover>\n </FieldShell>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"select-module__icon__eKwKi\";\nvar _2 = \"select-module__input__ajhdt\";\nvar _3 = \"select-module__item-icon__qWzAS\";\nvar _4 = \"select-module__popover-content__jWbFy\";\nvar _5 = \"select-module__popover-target__utEyc\";\nvar _6 = \"select-module__with-icon__sdr2r\";\nvar _7 = \"select-module__with-item-icon__j4VL9\";\nexport { _1 as \"icon\", _2 as \"input\", _3 as \"itemIcon\", _4 as \"popoverContent\", _5 as \"popoverTarget\", _6 as \"withIcon\", _7 as \"withItemIcon\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"calendarPopover-module__button__Dpl18\";\nvar _2 = \"calendarPopover-module__buttons-container__sW9eE\";\nvar _3 = \"calendarPopover-module__calendar-container__fGMyq\";\nvar _4 = \"calendarPopover-module__cell__fwBxE\";\nvar _5 = \"calendarPopover-module__cell-circle__PykI1\";\nvar _6 = \"calendarPopover-module__cell-data__fnxK0\";\nvar _7 = \"calendarPopover-module__cell-selection__jmUxe\";\nvar _8 = \"calendarPopover-module__cell-selection-first__bRcBr\";\nvar _9 = \"calendarPopover-module__cell-selection-last__hyv9Z\";\nvar _a = \"calendarPopover-module__cells-container__B6mTs\";\nvar _b = \"calendarPopover-module__date-time-mode__eJCHs\";\nvar _c = \"calendarPopover-module__medium__pk6es\";\nvar _d = \"calendarPopover-module__month__FCpIG\";\nvar _e = \"calendarPopover-module__month-cell-selection__phhRr\";\nvar _f = \"calendarPopover-module__month-cell-selection-first__lSKG9\";\nvar _10 = \"calendarPopover-module__month-cell-selection-last__IKh98\";\nvar _11 = \"calendarPopover-module__month-view__wNOC9\";\nvar _12 = \"calendarPopover-module__navigation-arrow__oiWet\";\nvar _13 = \"calendarPopover-module__navigation-container__Hut1m\";\nvar _14 = \"calendarPopover-module__navigation-title__sp73c\";\nvar _15 = \"calendarPopover-module__navigation-value__Ht40y\";\nvar _16 = \"calendarPopover-module__root__R8QOY\";\nvar _17 = \"calendarPopover-module__small__GlV62\";\nvar _18 = \"calendarPopover-module__time-container__x4jnu\";\nvar _19 = \"calendarPopover-module__time-divider__aRbbR\";\nvar _1a = \"calendarPopover-module__time-selection-marker__bVI6A\";\nvar _1b = \"calendarPopover-module__year__BTz_s\";\nexport { _1 as \"button\", _2 as \"buttonsContainer\", _3 as \"calendarContainer\", _4 as \"cell\", _5 as \"cellCircle\", _6 as \"cellData\", _7 as \"cellSelection\", _8 as \"cellSelectionFirst\", _9 as \"cellSelectionLast\", _a as \"cellsContainer\", _b as \"dateTimeMode\", _c as \"medium\", _d as \"month\", _e as \"monthCellSelection\", _f as \"monthCellSelectionFirst\", _10 as \"monthCellSelectionLast\", _11 as \"monthView\", _12 as \"navigationArrow\", _13 as \"navigationContainer\", _14 as \"navigationTitle\", _15 as \"navigationValue\", _16 as \"root\", _17 as \"small\", _18 as \"timeContainer\", _19 as \"timeDivider\", _1a as \"timeSelectionMarker\", _1b as \"year\" }\n","import { DayjsFactory, DayjsInstance } from '../models/dayjs';\n\nexport const createCalendarDate = (\n dayjs: DayjsFactory,\n year: number,\n month: number,\n day = 1,\n useUtc = false,\n): DayjsInstance => {\n if (useUtc) {\n return dayjs(Date.UTC(year, month, day));\n }\n\n return dayjs(new Date(year, month, day));\n};\n","import classNames from 'classnames';\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Typography } from '@components/view/Typography';\n\nimport * as styles from './timeWheelColumn.module.css';\n\nconst TIME_ITEM_HEIGHT = 36;\nconst TIME_CYCLE_REPEAT = 3;\n\ninterface Props {\n values: number[];\n selectedValue: number;\n onSelect: (value: number) => void;\n}\n\nexport function TimeWheelColumn(props: Props) {\n const { values, selectedValue, onSelect } = props;\n const valuesLength = values.length;\n const centerPosition = (valuesLength + selectedValue) * TIME_ITEM_HEIGHT;\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const cycledValues = useMemo(() => {\n const repeatedValues: number[] = [];\n for (let i = 0; i < TIME_CYCLE_REPEAT; i += 1) {\n repeatedValues.push(...values);\n }\n return repeatedValues;\n }, [values]);\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n if (Math.abs(container.scrollTop - centerPosition) <= 1) {\n return;\n }\n\n container.scrollTop = centerPosition;\n }, [centerPosition]);\n\n const normalizeValue = useCallback(\n (index: number) => {\n const normalizedIndex = ((index % valuesLength) + valuesLength) % valuesLength;\n return values[normalizedIndex];\n },\n [values, valuesLength],\n );\n\n const handleScroll = useCallback(() => {\n const container = containerRef.current;\n if (!container) {\n return;\n }\n\n const nearestIndex = Math.round(container.scrollTop / TIME_ITEM_HEIGHT);\n const nextValue = normalizeValue(nearestIndex);\n\n if (nextValue !== selectedValue) {\n onSelect(nextValue);\n }\n\n if (nearestIndex < valuesLength || nearestIndex >= valuesLength * 2) {\n container.scrollTop = (valuesLength + nextValue) * TIME_ITEM_HEIGHT;\n }\n }, [normalizeValue, onSelect, selectedValue, valuesLength]);\n\n const scrollToValue = useCallback(\n (value: number) => () => {\n const container = containerRef.current;\n if (!container) {\n onSelect(value);\n return;\n }\n\n container.scrollTo({\n top: (valuesLength + value) * TIME_ITEM_HEIGHT,\n behavior: 'smooth',\n });\n onSelect(value);\n },\n [onSelect, valuesLength],\n );\n\n return (\n <div ref={containerRef} className={classNames(styles.timeWheel)} onScroll={handleScroll} tabIndex={-1}>\n {cycledValues.map((value, index) => (\n <button\n key={`time-item-${value}-${index}`}\n type=\"button\"\n className={classNames(\n styles.timeWheelButton,\n styles.timeWheelItem,\n value === selectedValue && styles.timeWheelItemActive,\n )}\n onClick={scrollToValue(value)}\n >\n <Typography variant=\"subtitle1\">{`${value}`.padStart(2, '0')}</Typography>\n </button>\n ))}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"timeWheelColumn-module__time-wheel__fk6Jj\";\nvar _2 = \"timeWheelColumn-module__time-wheel-button__c61An\";\nvar _3 = \"timeWheelColumn-module__time-wheel-item__Gjqub\";\nvar _4 = \"timeWheelColumn-module__time-wheel-item-active__PLWg9\";\nexport { _1 as \"timeWheel\", _2 as \"timeWheelButton\", _3 as \"timeWheelItem\", _4 as \"timeWheelItemActive\" }\n","import classNames from 'classnames';\nimport defaultDayjs from 'dayjs';\nimport { MouseEvent, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { Button } from '@components/common/Button';\nimport { ButtonsGroup } from '@components/common/ButtonsGroup';\nimport { Typography } from '@components/view/Typography';\nimport { ChevronLeftIcon } from '@icons/ChevronLeftIcon';\nimport { ChevronRightIcon } from '@icons/ChevronRightIcon';\nimport { ChipSize } from '@models/ChipSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './calendarPopover.module.css';\nimport type { DayjsFactory, DayjsInstance } from '../../models/dayjs';\nimport { createCalendarDate } from '../../utils/createCalendarDate';\nimport { TimeWheelColumn } from '../TimeWheelColumn';\n\ntype ViewType = 'month' | 'year' | 'yearsRange';\ntype ValueType = 'date' | 'year' | 'dateTime';\n\ninterface Props {\n dayjs?: DayjsFactory;\n componentSize: ChipSize;\n isPeriod?: boolean;\n valueType?: ValueType;\n initStartDate?: string;\n initEndDate?: string;\n changeDates: (newStartDate?: string, newEndDate?: string) => void;\n onClear?: () => void;\n useUtc?: boolean;\n}\n\nexport function CalendarPopover(props: UiProps<Props>) {\n const {\n dayjs: dayjsFromProps,\n componentSize,\n isPeriod = true,\n valueType = 'date',\n initStartDate,\n initEndDate,\n changeDates,\n onClear,\n useUtc = false,\n classes,\n } = props;\n\n const dayjs: DayjsFactory = dayjsFromProps ?? (defaultDayjs as DayjsFactory);\n const isDateTimeSingle = valueType === 'dateTime' && !isPeriod;\n\n const [viewType, setViewType] = useState<ViewType>(valueType === 'year' ? 'yearsRange' : 'month');\n const [currentItem, setCurrentItem] = useState<{ year: number; month: number }>(() => {\n if (initStartDate) {\n const initial = dayjs(initStartDate);\n\n return { year: initial.year(), month: initial.month() };\n }\n\n const now = dayjs();\n\n return { year: now.year(), month: now.month() };\n });\n const [startDate, setStartDate] = useState(\n initStartDate\n ? isDateTimeSingle\n ? dayjs(initStartDate).second(0).millisecond(0).valueOf()\n : dayjs(initStartDate).startOf('D').valueOf()\n : undefined,\n );\n const [endDate, setEndDate] = useState(initEndDate ? dayjs(initEndDate).startOf('D').valueOf() : undefined);\n const [selectedHour, setSelectedHour] = useState(isDateTimeSingle && initStartDate ? dayjs(initStartDate).hour() : 0);\n const [selectedMinute, setSelectedMinute] = useState(\n isDateTimeSingle && initStartDate ? dayjs(initStartDate).minute() : 0,\n );\n\n const hours = useMemo(() => [...Array(24)].map((__, index) => index), []);\n const minutes = useMemo(() => [...Array(60)].map((__, index) => index), []);\n\n const startDateDay = useMemo(\n () => (startDate ? dayjs(startDate).startOf('D').valueOf() : undefined),\n [startDate, dayjs],\n );\n const endDateDay = useMemo(() => (endDate ? dayjs(endDate).startOf('D').valueOf() : undefined), [endDate, dayjs]);\n\n const startDateMonth = useMemo(\n () => (startDateDay ? dayjs(startDateDay).startOf('M').valueOf() : undefined),\n [startDateDay, dayjs],\n );\n const endDateMonth = useMemo(\n () => (endDateDay ? dayjs(endDateDay).startOf('M').valueOf() : undefined),\n [endDateDay, dayjs],\n );\n const startYear = useMemo(() => (startDateDay ? dayjs(startDateDay).year() : undefined), [startDateDay, dayjs]);\n const endYear = useMemo(() => (endDateDay ? dayjs(endDateDay).year() : undefined), [endDateDay, dayjs]);\n\n const currentDate = useMemo(\n () =>\n createCalendarDate(dayjs, currentItem.year, currentItem.month, 1, useUtc).startOf(\n viewType === 'month' ? 'M' : 'y',\n ),\n [currentItem, viewType, dayjs, useUtc],\n );\n\n const daysInMonth = currentDate.daysInMonth();\n const firstDayOfWeek = currentDate.startOf('M').day();\n\n let emptyCellsCount = firstDayOfWeek - 1;\n if (emptyCellsCount < 0) {\n emptyCellsCount = 6;\n }\n\n useEffect(() => {\n if (!startDate && !endDate) {\n onClear?.();\n changeDates();\n return;\n }\n\n if (valueType === 'year') {\n if (!isPeriod && startDate) {\n changeDates(dayjs(startDate).format('YYYY'));\n return;\n }\n\n if (isPeriod && startDate && endDate) {\n changeDates(dayjs(startDate).format('YYYY'), dayjs(endDate).format('YYYY'));\n return;\n }\n\n return;\n }\n\n if (isDateTimeSingle && startDate) {\n changeDates(dayjs(startDate).second(0).millisecond(0).format());\n return;\n }\n\n if (!isPeriod && startDate) {\n changeDates(dayjs(startDate).format());\n return;\n }\n\n if (isPeriod && startDate && endDate) {\n changeDates(dayjs(startDate).format(), dayjs(endDate).format());\n }\n }, [startDate, endDate, isPeriod, valueType, isDateTimeSingle, dayjs, changeDates, onClear]);\n\n const applyTimeToDate = useCallback(\n (dateValue: number, hour: number, minute: number) =>\n dayjs(dateValue).startOf('D').hour(hour).minute(minute).second(0).millisecond(0).valueOf(),\n [dayjs],\n );\n\n useEffect(() => {\n if (!isDateTimeSingle || !startDate) {\n return;\n }\n\n const nextDate = applyTimeToDate(startDate, selectedHour, selectedMinute);\n if (nextDate !== startDate) {\n setStartDate(nextDate);\n }\n }, [isDateTimeSingle, startDate, selectedHour, selectedMinute, applyTimeToDate]);\n\n const changeCurrentItem = useCallback(\n (count: number) => () => {\n const baseDate = createCalendarDate(dayjs, currentItem.year, currentItem.month, 1, useUtc);\n const step = viewType === 'yearsRange' ? count * 20 : count;\n const unit = viewType === 'month' ? 'month' : 'year';\n const tempDate = baseDate.add(step, unit);\n\n setCurrentItem({\n month: tempDate.month(),\n year: tempDate.year(),\n });\n },\n [viewType, currentItem, dayjs, useUtc],\n );\n\n const changeViewType = useCallback(() => {\n if (valueType === 'year') {\n return;\n }\n\n if (viewType === 'month') {\n setViewType('year');\n } else if (viewType === 'year') {\n setViewType('yearsRange');\n } else {\n setViewType('month');\n }\n }, [viewType, valueType]);\n\n const openMonthView = useCallback(\n (date: DayjsInstance) => () => {\n setCurrentItem({ month: date.month(), year: date.year() });\n setViewType('month');\n },\n [],\n );\n\n const setYear = useCallback(\n (cellYear: number) => () => {\n const cellDate = createCalendarDate(dayjs, cellYear, 0, 1, useUtc).startOf('y').valueOf();\n\n if (!isPeriod) {\n if (isDateTimeSingle && startDateDay === cellDate) {\n setStartDate(undefined);\n } else if (!isDateTimeSingle && startDate === cellDate) {\n setStartDate(undefined);\n } else {\n setStartDate(isDateTimeSingle ? applyTimeToDate(cellDate, selectedHour, selectedMinute) : cellDate);\n }\n setEndDate(undefined);\n return;\n }\n\n if (startDate && endDate) {\n if (cellDate === startDate) {\n setStartDate(undefined);\n } else if (cellDate === endDate) {\n setEndDate(undefined);\n } else {\n setStartDate(cellDate);\n setEndDate(undefined);\n }\n } else if (startDate) {\n if (cellDate === startDate) {\n setStartDate(undefined);\n } else if (cellDate < startDate) {\n setEndDate(startDate);\n setStartDate(cellDate);\n } else {\n setEndDate(cellDate);\n }\n } else if (endDate) {\n if (cellDate === endDate) {\n setEndDate(undefined);\n } else if (cellDate < endDate) {\n setStartDate(cellDate);\n } else {\n setStartDate(endDate);\n setEndDate(cellDate);\n }\n } else {\n setStartDate(cellDate);\n }\n },\n [\n applyTimeToDate,\n endDate,\n isDateTimeSingle,\n isPeriod,\n selectedHour,\n selectedMinute,\n startDate,\n startDateDay,\n dayjs,\n useUtc,\n ],\n );\n\n const yearsRangeStart = useMemo(() => {\n const year = currentDate.year();\n return Math.floor(year / 20) * 20;\n }, [currentDate]);\n\n const setDate = useCallback(\n (cellDate: number) => () => {\n if (!isPeriod) {\n if (startDate === cellDate) {\n setStartDate(undefined);\n } else {\n setStartDate(cellDate);\n }\n setEndDate(undefined);\n return;\n }\n\n if (startDate && endDate) {\n if (cellDate === startDate) {\n setStartDate(undefined);\n } else if (cellDate === endDate) {\n setEndDate(undefined);\n } else {\n setStartDate(cellDate);\n setEndDate(undefined);\n }\n } else if (startDate) {\n if (cellDate === startDate) {\n setStartDate(undefined);\n } else if (cellDate < startDate) {\n setEndDate(startDate);\n setStartDate(cellDate);\n } else {\n setEndDate(cellDate);\n }\n } else if (endDate) {\n if (cellDate === endDate) {\n setEndDate(undefined);\n } else if (cellDate < endDate) {\n setStartDate(cellDate);\n } else {\n setStartDate(endDate);\n setEndDate(cellDate);\n }\n } else {\n setStartDate(cellDate);\n }\n },\n [startDate, endDate, isPeriod],\n );\n\n const reset = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n setStartDate(undefined);\n setEndDate(undefined);\n if (isDateTimeSingle) {\n setSelectedHour(0);\n setSelectedMinute(0);\n }\n e.currentTarget.blur();\n },\n [isDateTimeSingle],\n );\n\n const today = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n const now = dayjs();\n\n setCurrentItem({\n year: now.year(),\n month: now.month(),\n });\n e.currentTarget.blur();\n },\n [dayjs],\n );\n\n return (\n <div\n className={classNames(\n styles.root,\n styles[componentSize as keyof typeof styles],\n isDateTimeSingle && styles.dateTimeMode,\n classes?.root,\n )}\n >\n <div className={classNames(styles.calendarContainer, viewType === 'month' && styles.monthView)}>\n <div className={classNames(styles.buttonsContainer, classes?.buttonsContainer)}>\n <ButtonsGroup fillEvenly>\n <Button componentSize=\"small\" variant=\"text\" textSecondary tabIndex={-1} onClick={reset}>\n Сбросить\n </Button>\n {valueType !== 'year' && (\n <Button componentSize=\"small\" variant=\"text\" textSecondary tabIndex={-1} onClick={today}>\n Сегодня\n </Button>\n )}\n </ButtonsGroup>\n </div>\n <div className={classNames(styles.navigationContainer, classes?.navigationContainer)}>\n <button\n type=\"button\"\n className={classNames(styles.button, styles.navigationArrow, classes?.navigationArrow)}\n onClick={changeCurrentItem(-1)}\n aria-label=\"Предыдущий период\"\n >\n <ChevronLeftIcon />\n </button>\n <button\n type=\"button\"\n className={classNames(styles.button, styles.navigationValue, classes?.navigationValue)}\n onClick={changeViewType}\n >\n <Typography variant=\"subtitle1\" className={classNames(styles.navigationTitle, classes?.navigationTitle)}>\n {viewType === 'month' && currentDate.format('MMMM YYYY')}\n {viewType === 'year' && currentDate.format('YYYY')}\n {viewType === 'yearsRange' && `${yearsRangeStart} - ${yearsRangeStart + 19}`}\n </Typography>\n </button>\n <button\n type=\"button\"\n className={classNames(styles.button, styles.navigationArrow, classes?.navigationArrow)}\n onClick={changeCurrentItem(1)}\n aria-label=\"Следующий период\"\n >\n <ChevronRightIcon />\n </button>\n </div>\n <div className={classNames(styles.cellsContainer, classes?.cellsContainer)}>\n {viewType === 'yearsRange' && (\n <>\n {[...Array(20)].map((__, index) => {\n const cellYear = yearsRangeStart + index;\n\n const handleClick =\n valueType === 'year'\n ? setYear(cellYear)\n : () => {\n setCurrentItem({ month: 0, year: cellYear });\n setViewType('year');\n };\n\n const showCircle = valueType === 'year';\n const isCircleActive =\n showCircle && startYear !== undefined && (cellYear === startYear || cellYear === endYear);\n\n let isYearInRange = false;\n let isFirstInRange = false;\n let isLastInRange = false;\n\n if (startYear !== undefined) {\n if (!isPeriod) {\n if (valueType !== 'year' && cellYear === startYear) {\n isYearInRange = true;\n }\n } else if (endYear !== undefined) {\n if (startYear === endYear) {\n if (cellYear === startYear) {\n isYearInRange = true;\n }\n } else if (cellYear >= startYear && cellYear <= endYear) {\n isYearInRange = true;\n if (cellYear === startYear) {\n isFirstInRange = true;\n } else if (cellYear === endYear) {\n isLastInRange = true;\n }\n }\n }\n }\n\n return (\n <button\n type=\"button\"\n key={`cell-year-${cellYear}`}\n className={classNames(styles.button, styles.cell, styles.year, classes?.cell, classes?.year)}\n onClick={handleClick}\n >\n {isCircleActive && <span className={classNames(styles.cellCircle, classes?.cellCircle)} />}\n {isYearInRange && (\n <span\n className={classNames(\n styles.cellSelection,\n classes?.cellSelection,\n isFirstInRange && styles.cellSelectionFirst,\n isFirstInRange && classes?.cellSelectionFirst,\n isLastInRange && styles.cellSelectionLast,\n isLastInRange && classes?.cellSelectionLast,\n )}\n />\n )}\n <Typography variant=\"subtitle1\" className={classNames(styles.cellData, classes?.cellData)}>\n {cellYear}\n </Typography>\n </button>\n );\n })}\n </>\n )}\n\n {viewType === 'year' && (\n <>\n {[...Array(12)].map((__, index) => {\n const cellDate = currentDate.add(index, 'M');\n const cellDateValue = cellDate.valueOf();\n\n const isMonthSelected = isPeriod\n ? startDateMonth !== undefined &&\n endDateMonth !== undefined &&\n cellDateValue >= startDateMonth &&\n cellDateValue <= endDateMonth\n : startDateMonth !== undefined && cellDateValue === startDateMonth;\n\n let isMonthInRange = false;\n let isFirstMonthInRange = false;\n let isLastMonthInRange = false;\n\n if (isPeriod && valueType !== 'year' && startDateMonth !== undefined && endDateMonth !== undefined) {\n if (startDateMonth === endDateMonth) {\n if (cellDateValue === startDateMonth) {\n isMonthInRange = true;\n }\n } else if (cellDateValue >= startDateMonth && cellDateValue <= endDateMonth) {\n isMonthInRange = true;\n if (cellDateValue === startDateMonth) {\n isFirstMonthInRange = true;\n } else if (cellDateValue === endDateMonth) {\n isLastMonthInRange = true;\n }\n }\n } else if (!isPeriod && valueType !== 'year' && startDateMonth !== undefined) {\n if (cellDateValue === startDateMonth) {\n isMonthInRange = true;\n }\n } else {\n isMonthInRange = isMonthSelected;\n }\n\n return (\n <button\n type=\"button\"\n key={`cell-month-${index}`}\n className={classNames(styles.button, styles.cell, styles.month, classes?.cell, classes?.month)}\n onClick={openMonthView(cellDate)}\n >\n {isMonthInRange && (\n <span\n className={classNames(\n styles.monthCellSelection,\n classes?.monthCellSelection,\n isFirstMonthInRange && styles.monthCellSelectionFirst,\n isFirstMonthInRange && classes?.monthCellSelectionFirst,\n isLastMonthInRange && styles.monthCellSelectionLast,\n isLastMonthInRange && classes?.monthCellSelectionLast,\n )}\n />\n )}\n <Typography variant=\"subtitle1\" className={classNames(styles.cellData, classes?.cellData)}>\n {cellDate.format('MMMM')}\n </Typography>\n </button>\n );\n })}\n </>\n )}\n\n {viewType === 'month' && (\n <>\n {[...Array(emptyCellsCount)].map((__, index) => (\n <div key={`empty-cell-${index}`} className={classNames(styles.cell, classes?.cell)}></div>\n ))}\n {[...Array(daysInMonth)].map((__, index) => {\n const cellDate = currentDate.add(index, 'd').valueOf();\n\n return (\n <button\n type=\"button\"\n key={`cell-${index}`}\n className={classNames(styles.button, styles.cell, classes?.cell)}\n onClick={setDate(cellDate)}\n >\n {(cellDate === startDateDay || cellDate === endDateDay) && (\n <span className={classNames(styles.cellCircle, classes?.cellCircle)} />\n )}\n {startDateDay !== undefined &&\n endDateDay !== undefined &&\n cellDate >= startDateDay &&\n cellDate <= endDateDay && (\n <span\n className={classNames(\n styles.cellSelection,\n classes?.cellSelection,\n cellDate === startDateDay && styles.cellSelectionFirst,\n cellDate === startDateDay && classes?.cellSelectionFirst,\n cellDate === endDateDay && styles.cellSelectionLast,\n cellDate === endDateDay && classes?.cellSelectionLast,\n )}\n />\n )}\n <Typography\n variant=\"subtitle1\"\n className={classNames(styles.cellData, classes?.cellData)}\n >{`${index + 1}`}</Typography>\n </button>\n );\n })}\n </>\n )}\n </div>\n </div>\n\n {isDateTimeSingle && (\n <div className={classNames(styles.timeContainer)}>\n <div className={classNames(styles.timeSelectionMarker)} />\n <TimeWheelColumn values={hours} selectedValue={selectedHour} onSelect={setSelectedHour} />\n <Typography variant=\"subtitle1\" className={classNames(styles.timeDivider)}>\n :\n </Typography>\n <TimeWheelColumn values={minutes} selectedValue={selectedMinute} onSelect={setSelectedMinute} />\n </div>\n )}\n </div>\n );\n}\n","import classnames from 'classnames';\nimport defaultDayjs from 'dayjs';\nimport { FocusEvent, InputHTMLAttributes, forwardRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { FieldError, FieldErrorIcon, FieldShell, FieldSize, FieldVariant } from '@components/common/FieldShell';\nimport * as fieldStyles from '@components/common/FieldShell/fieldShell.module.css';\nimport { Popover } from '@components/view/Popover';\nimport { useCompatId } from '@hooks/useCompatId';\nimport { DateRangeIcon } from '@icons/DateRangeIcon';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport * as styles from './dateTime.module.css';\nimport type { DayjsFactory } from './models/dayjs';\nimport { CalendarPopover } from './ui/CalendarPopover';\n\ntype Variant = FieldVariant;\ntype Size = FieldSize;\ntype ValueType = 'date' | 'year' | 'dateTime';\n\ninterface Props {\n variant?: Variant;\n isPeriod?: boolean;\n valueType?: ValueType;\n defaultOpen?: boolean;\n componentSize?: Size;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n placeholder?: string;\n values?: (string | undefined)[];\n defaultValues?: (string | undefined)[];\n onClear?: () => void;\n onValueChange?: (values: (string | undefined)[]) => void;\n dayjs?: DayjsFactory;\n useUtc?: boolean;\n}\n\nexport const DateTime = forwardRef<HTMLInputElement, UiProps<Props> & InputHTMLAttributes<HTMLInputElement>>(\n (\n {\n variant = 'filled',\n isPeriod = false,\n valueType = 'date',\n defaultOpen = false,\n componentSize = 'medium',\n fullWidth,\n label,\n error,\n placeholder,\n defaultValues,\n values,\n onClear,\n onValueChange,\n dayjs: dayjsFromProps,\n useUtc = false,\n classes,\n id,\n onFocus,\n onBlur,\n ...inputProps\n },\n ref,\n ) => {\n const dayjs: DayjsFactory = dayjsFromProps ?? (defaultDayjs as DayjsFactory);\n\n const [stateValues, setStateValues] = useState<(string | undefined)[] | undefined>(\n values !== undefined ? values : defaultValues,\n );\n const [isPopoverOpen, setIsPopoverOpen] = useState(defaultOpen);\n\n const stateValuesRef = useRef<(string | undefined)[] | undefined>(stateValues);\n\n useEffect(() => {\n if (values !== undefined) {\n setStateValues(values);\n }\n }, [values]);\n\n useEffect(() => {\n if (values === undefined && defaultValues !== undefined) {\n setStateValues(defaultValues);\n }\n }, [defaultValues, values]);\n\n useEffect(() => {\n stateValuesRef.current = stateValues;\n }, [stateValues]);\n\n const effectiveValueType: ValueType = isPeriod && valueType === 'dateTime' ? 'date' : valueType;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const reactId = useCompatId();\n const inputId = id ?? reactId;\n\n const inputFocusHandler = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n setIsPopoverOpen(true);\n onFocus?.(event);\n },\n [onFocus],\n );\n\n const inputBlurHandler = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (isPopoverOpen) {\n return;\n }\n\n onBlur?.(event);\n },\n [isPopoverOpen, onBlur],\n );\n\n const popoverOpenChangeHandler = useCallback(\n (open: boolean) => {\n setIsPopoverOpen(open);\n\n if (!open) {\n const currentValues = stateValuesRef.current;\n if (currentValues !== undefined) {\n onValueChange?.(currentValues);\n }\n\n const inputElement = inputRef.current;\n\n if (!inputElement) {\n return;\n }\n\n if (document.activeElement === inputElement) {\n inputElement.blur();\n return;\n }\n\n onBlur?.({ target: inputElement, currentTarget: inputElement } as FocusEvent<HTMLInputElement>);\n }\n },\n [onBlur, onValueChange],\n );\n\n const iconClickHandler = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n const showErrorIcon = !!error && !label;\n\n const changeDates = useCallback(\n (newStartDate?: string, newEndDate?: string) => {\n const newValues = isPeriod ? [newStartDate, newEndDate] : [newStartDate];\n const prevValues = stateValuesRef.current;\n const prevLength = prevValues?.length ?? 0;\n const isSameValues =\n prevLength === newValues.length && prevValues?.every((value, index) => value === newValues[index]);\n\n if (isSameValues) {\n return;\n }\n\n stateValuesRef.current = newValues;\n setStateValues(newValues);\n },\n [isPeriod],\n );\n\n return (\n <FieldShell\n variant={variant}\n componentSize={componentSize}\n fullWidth={fullWidth}\n label={label}\n error={error}\n inputId={inputId}\n hasArrow\n hasErrorIcon={showErrorIcon}\n classes={classes}\n >\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classnames(fieldStyles.input, styles.input, classes?.input)}\n placeholder={placeholder}\n {...inputProps}\n value={\n stateValues?.[0]\n ? isPeriod && stateValues[1]\n ? `${dayjs(stateValues[0]).format(effectiveValueType === 'year' ? 'YYYY' : 'DD.MM.YYYY')} - ${dayjs(\n stateValues[1],\n ).format(effectiveValueType === 'year' ? 'YYYY' : 'DD.MM.YYYY')}`\n : `${dayjs(stateValues[0]).format(\n effectiveValueType === 'year'\n ? 'YYYY'\n : effectiveValueType === 'dateTime'\n ? 'DD.MM.YYYY HH:mm'\n : 'DD.MM.YYYY',\n )}`\n : ''\n }\n onChange={() => {}}\n onFocus={inputFocusHandler}\n onBlur={inputBlurHandler}\n />\n <span onClick={iconClickHandler} className={classnames(fieldStyles.arrow, classes?.icon)}>\n <DateRangeIcon />\n </span>\n {showErrorIcon && error && (\n <FieldErrorIcon error={error} componentSize={componentSize} className={classes?.errorIcon} />\n )}\n <Popover\n placement=\"bottom-start\"\n open={isPopoverOpen}\n onOpenChange={popoverOpenChangeHandler}\n classes={{ ...(classes?.popover as PropsObject | undefined), content: styles.popoverContent }}\n containerOffset={4}\n description={\n <CalendarPopover\n dayjs={dayjs}\n useUtc={useUtc}\n classes={classes}\n componentSize={componentSize === 'small' || componentSize === 'medium' ? componentSize : 'medium'}\n isPeriod={isPeriod}\n valueType={effectiveValueType}\n initStartDate={stateValues?.[0]}\n initEndDate={stateValues?.[1]}\n changeDates={changeDates}\n onClear={onClear}\n />\n }\n >\n <div className={classnames(styles.popoverTarget)} />\n </Popover>\n </FieldShell>\n );\n },\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"dateTime-module__input__p1lxx\";\nvar _2 = \"dateTime-module__popover-content__I6nGv\";\nvar _3 = \"dateTime-module__popover-target__PS8vx\";\nexport { _1 as \"input\", _2 as \"popoverContent\", _3 as \"popoverTarget\" }\n","import e,{useRef as r,useMemo as t,useEffect as n,useState as o,useCallback as a,useLayoutEffect as l}from\"react\";function u(){return(u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function c(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function i(e){var t=r(e),n=r(function(e){t.current&&t.current(e)});return t.current=e,n.current}var s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},f=function(e){return\"touches\"in e},v=function(e){return e&&e.ownerDocument.defaultView||self},d=function(e,r,t){var n=e.getBoundingClientRect(),o=f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return{left:s((o.pageX-(n.left+v(e).pageXOffset))/n.width),top:s((o.pageY-(n.top+v(e).pageYOffset))/n.height)}},h=function(e){!f(e)&&e.preventDefault()},m=e.memo(function(o){var a=o.onMove,l=o.onKey,s=c(o,[\"onMove\",\"onKey\"]),m=r(null),g=i(a),p=i(l),b=r(null),_=r(!1),x=t(function(){var e=function(e){h(e),(f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(d(m.current,e,b.current)):t(!1)},r=function(){return t(!1)};function t(t){var n=_.current,o=v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?\"touchmove\":\"mousemove\",e),a(n?\"touchend\":\"mouseup\",r)}return[function(e){var r=e.nativeEvent,n=m.current;if(n&&(h(r),!function(e,r){return r&&!f(e)}(r,_.current)&&n)){if(f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier)}n.focus(),g(d(n,r,b.current)),t(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},t]},[p,g]),C=x[0],E=x[1],H=x[2];return n(function(){return H},[H]),e.createElement(\"div\",u({},s,{onTouchStart:C,onMouseDown:C,className:\"react-colorful__interactive\",ref:m,onKeyDown:E,tabIndex:0,role:\"slider\"}))}),g=function(e){return e.filter(Boolean).join(\" \")},p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=g([\"react-colorful__pointer\",r.className]);return e.createElement(\"div\",{className:l,style:{top:100*a+\"%\",left:100*n+\"%\"}},e.createElement(\"div\",{className:\"react-colorful__pointer-fill\",style:{backgroundColor:t}}))},b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},_={grad:.9,turn:360,rad:360/(2*Math.PI)},x=function(e){return L(C(e))},C=function(e){return\"#\"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?b(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?b(parseInt(e.substring(6,8),16)/255,2):1}},E=function(e,r){return void 0===r&&(r=\"deg\"),Number(e)*(_[r]||1)},H=function(e){var r=/hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?N({h:E(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},M=H,N=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},w=function(e){return K(I(e))},y=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return{h:b(e.h),s:b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:b(o/2),a:b(n,2)}},q=function(e){var r=y(e);return\"hsl(\"+r.h+\", \"+r.s+\"%, \"+r.l+\"%)\"},k=function(e){var r=y(e);return\"hsla(\"+r.h+\", \"+r.s+\"%, \"+r.l+\"%, \"+r.a+\")\"},I=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return{r:b(255*[n,u,l,l,c,n][i]),g:b(255*[c,n,n,u,l,l][i]),b:b(255*[l,l,c,n,n,u][i]),a:b(o,2)}},O=function(e){var r=/hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?A({h:E(r[1],r[2]),s:Number(r[3]),v:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},j=O,z=function(e){var r=/rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?L({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},B=z,D=function(e){var r=e.toString(16);return r.length<2?\"0\"+r:r},K=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=o<1?D(b(255*o)):\"\";return\"#\"+D(r)+D(t)+D(n)+a},L=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return{h:b(60*(u<0?u+6:u)),s:b(a?l/a*100:0),v:b(a/255*100),a:o}},A=function(e){return{h:b(e.h),s:b(e.s),v:b(e.v),a:b(e.a,2)}},S=e.memo(function(r){var t=r.hue,n=r.onChange,o=g([\"react-colorful__hue\",r.className]);return e.createElement(\"div\",{className:o},e.createElement(m,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:s(t+360*e.left,0,360)})},\"aria-label\":\"Hue\",\"aria-valuenow\":b(t),\"aria-valuemax\":\"360\",\"aria-valuemin\":\"0\"},e.createElement(p,{className:\"react-colorful__hue-pointer\",left:t/360,color:q({h:t,s:100,v:100,a:1})})))}),T=e.memo(function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:q({h:t.h,s:100,v:100,a:1})};return e.createElement(\"div\",{className:\"react-colorful__saturation\",style:o},e.createElement(m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:s(t.s+100*e.left,0,100),v:s(t.v-100*e.top,0,100)})},\"aria-label\":\"Color\",\"aria-valuetext\":\"Saturation \"+b(t.s)+\"%, Brightness \"+b(t.v)+\"%\"},e.createElement(p,{className:\"react-colorful__saturation-pointer\",top:1-t.v/100,left:t.s/100,color:q(t)})))}),F=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},P=function(e,r){return e.replace(/\\s/g,\"\")===r.replace(/\\s/g,\"\")},X=function(e,r){return e.toLowerCase()===r.toLowerCase()||F(C(e),C(r))};function Y(e,t,l){var u=i(l),c=o(function(){return e.toHsva(t)}),s=c[0],f=c[1],v=r({color:t,hsva:s});n(function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r)}},[t,e]),n(function(){var r;F(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))},[s,e,u]);var d=a(function(e){f(function(r){return Object.assign({},r,e)})},[]);return[s,d]}var R,V=\"undefined\"!=typeof window?l:n,$=function(){return R||(\"undefined\"!=typeof __webpack_nonce__?__webpack_nonce__:void 0)},G=function(e){R=e},J=new Map,Q=function(e){V(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!J.has(r)){var t=r.createElement(\"style\");t.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:\"\";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\'data:image/svg+xml;charset=utf-8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill-opacity=\".05\"><path d=\"M8 0h8v8H8zM0 8h8v8H0z\"/></svg>\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',J.set(r,t);var n=$();n&&t.setAttribute(\"nonce\",n),r.head.appendChild(t)}},[])},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=c(t,[\"className\",\"colorModel\",\"color\",\"onChange\"]),f=r(null);Q(f);var v=Y(o,l,i),d=v[0],h=v[1],m=g([\"react-colorful\",n]);return e.createElement(\"div\",u({},s,{ref:f,className:m}),e.createElement(T,{hsva:d,onChange:h}),e.createElement(S,{hue:d.h,onChange:h,className:\"react-colorful__last-control\"}))},W={defaultColor:\"000\",toHsva:x,fromHsva:function(e){return w({h:e.h,s:e.s,v:e.v,a:1})},equal:X},Z=function(r){return e.createElement(U,u({},r,{colorModel:W}))},ee=function(r){var t=r.className,n=r.hsva,o=r.onChange,a={backgroundImage:\"linear-gradient(90deg, \"+k(Object.assign({},n,{a:0}))+\", \"+k(Object.assign({},n,{a:1}))+\")\"},l=g([\"react-colorful__alpha\",t]),u=b(100*n.a);return e.createElement(\"div\",{className:l},e.createElement(\"div\",{className:\"react-colorful__alpha-gradient\",style:a}),e.createElement(m,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:s(n.a+e.left)})},\"aria-label\":\"Alpha\",\"aria-valuetext\":u+\"%\",\"aria-valuenow\":u,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"},e.createElement(p,{className:\"react-colorful__alpha-pointer\",left:n.a,color:k(n)})))},re=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=c(t,[\"className\",\"colorModel\",\"color\",\"onChange\"]),f=r(null);Q(f);var v=Y(o,l,i),d=v[0],h=v[1],m=g([\"react-colorful\",n]);return e.createElement(\"div\",u({},s,{ref:f,className:m}),e.createElement(T,{hsva:d,onChange:h}),e.createElement(S,{hue:d.h,onChange:h}),e.createElement(ee,{hsva:d,onChange:h,className:\"react-colorful__last-control\"}))},te={defaultColor:\"0001\",toHsva:x,fromHsva:w,equal:X},ne=function(r){return e.createElement(re,u({},r,{colorModel:te}))},oe={defaultColor:{h:0,s:0,l:0,a:1},toHsva:N,fromHsva:y,equal:F},ae=function(r){return e.createElement(re,u({},r,{colorModel:oe}))},le={defaultColor:\"hsla(0, 0%, 0%, 1)\",toHsva:H,fromHsva:k,equal:P},ue=function(r){return e.createElement(re,u({},r,{colorModel:le}))},ce={defaultColor:{h:0,s:0,l:0},toHsva:function(e){return N({h:e.h,s:e.s,l:e.l,a:1})},fromHsva:function(e){return{h:(r=y(e)).h,s:r.s,l:r.l};var r},equal:F},ie=function(r){return e.createElement(U,u({},r,{colorModel:ce}))},se={defaultColor:\"hsl(0, 0%, 0%)\",toHsva:M,fromHsva:q,equal:P},fe=function(r){return e.createElement(U,u({},r,{colorModel:se}))},ve={defaultColor:{h:0,s:0,v:0,a:1},toHsva:function(e){return e},fromHsva:A,equal:F},de=function(r){return e.createElement(re,u({},r,{colorModel:ve}))},he={defaultColor:\"hsva(0, 0%, 0%, 1)\",toHsva:O,fromHsva:function(e){var r=A(e);return\"hsva(\"+r.h+\", \"+r.s+\"%, \"+r.v+\"%, \"+r.a+\")\"},equal:P},me=function(r){return e.createElement(re,u({},r,{colorModel:he}))},ge={defaultColor:{h:0,s:0,v:0},toHsva:function(e){return{h:e.h,s:e.s,v:e.v,a:1}},fromHsva:function(e){var r=A(e);return{h:r.h,s:r.s,v:r.v}},equal:F},pe=function(r){return e.createElement(U,u({},r,{colorModel:ge}))},be={defaultColor:\"hsv(0, 0%, 0%)\",toHsva:j,fromHsva:function(e){var r=A(e);return\"hsv(\"+r.h+\", \"+r.s+\"%, \"+r.v+\"%)\"},equal:P},_e=function(r){return e.createElement(U,u({},r,{colorModel:be}))},xe={defaultColor:{r:0,g:0,b:0,a:1},toHsva:L,fromHsva:I,equal:F},Ce=function(r){return e.createElement(re,u({},r,{colorModel:xe}))},Ee={defaultColor:\"rgba(0, 0, 0, 1)\",toHsva:z,fromHsva:function(e){var r=I(e);return\"rgba(\"+r.r+\", \"+r.g+\", \"+r.b+\", \"+r.a+\")\"},equal:P},He=function(r){return e.createElement(re,u({},r,{colorModel:Ee}))},Me={defaultColor:{r:0,g:0,b:0},toHsva:function(e){return L({r:e.r,g:e.g,b:e.b,a:1})},fromHsva:function(e){return{r:(r=I(e)).r,g:r.g,b:r.b};var r},equal:F},Ne=function(r){return e.createElement(U,u({},r,{colorModel:Me}))},we={defaultColor:\"rgb(0, 0, 0)\",toHsva:B,fromHsva:function(e){var r=I(e);return\"rgb(\"+r.r+\", \"+r.g+\", \"+r.b+\")\"},equal:P},ye=function(r){return e.createElement(U,u({},r,{colorModel:we}))},qe=/^#?([0-9A-F]{3,8})$/i,ke=function(r){var t=r.color,l=void 0===t?\"\":t,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,m=r.process,g=c(r,[\"color\",\"onChange\",\"onBlur\",\"escape\",\"validate\",\"format\",\"process\"]),p=o(function(){return v(l)}),b=p[0],_=p[1],x=i(s),C=i(f),E=a(function(e){var r=v(e.target.value);_(r),d(r)&&x(m?m(r):r)},[v,m,d,x]),H=a(function(e){d(e.target.value)||_(v(l)),C(e)},[l,v,d,C]);return n(function(){_(v(l))},[l,v]),e.createElement(\"input\",u({},g,{value:h?h(b):b,spellCheck:\"false\",onChange:E,onBlur:H}))},Ie=function(e){return\"#\"+e},Oe=function(r){var t=r.prefixed,n=r.alpha,o=c(r,[\"prefixed\",\"alpha\"]),l=a(function(e){return e.replace(/([^0-9A-F]+)/gi,\"\").substring(0,n?8:6)},[n]),i=a(function(e){return function(e,r){var t=qe.exec(e),n=t?t[1].length:0;return 3===n||6===n||!!r&&4===n||!!r&&8===n}(e,n)},[n]);return e.createElement(ke,u({},o,{escape:l,format:t?Ie:void 0,process:Ie,validate:i}))};export{ne as HexAlphaColorPicker,Oe as HexColorInput,Z as HexColorPicker,ie as HslColorPicker,fe as HslStringColorPicker,ae as HslaColorPicker,ue as HslaStringColorPicker,pe as HsvColorPicker,_e as HsvStringColorPicker,de as HsvaColorPicker,me as HsvaStringColorPicker,Ne as RgbColorPicker,ye as RgbStringColorPicker,Ce as RgbaColorPicker,He as RgbaStringColorPicker,G as setNonce};\n//# sourceMappingURL=index.module.js.map\n","import classNames from 'classnames';\nimport { DetailedHTMLProps, InputHTMLAttributes, MouseEvent, forwardRef, useCallback, useRef, useState } from 'react';\nimport { HexColorPicker } from 'react-colorful';\nimport { mergeRefs } from 'react-merge-refs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { FieldError, FieldErrorIcon, FieldShell, FieldSize, FieldVariant } from '@components/common/FieldShell';\nimport * as fieldStyles from '@components/common/FieldShell/fieldShell.module.css';\nimport { Popover } from '@components/view/Popover';\nimport { Arrow } from '@components/view/Popover/ui/Arrow';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport * as styles from './colorPicker.module.css';\n\ninterface Props {\n variant?: FieldVariant;\n componentSize?: FieldSize;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n onValueChange?: (newValue: string) => void;\n}\n\nexport const ColorPicker = forwardRef<\n HTMLInputElement,\n UiProps<Props> & DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\n>(function ColorPicker(props, ref) {\n const {\n variant = 'outlined',\n componentSize = 'medium',\n fullWidth,\n label,\n error,\n classes,\n placeholder,\n disabled,\n defaultValue,\n id,\n onValueChange,\n ...inputProps\n } = props;\n\n const [color, setColor] = useState(defaultValue?.toString() ?? '#AABBCC');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverTargetRef = useRef<HTMLDivElement>(null);\n\n const changeColorHandler = useCallback((newColor: string) => {\n setColor(newColor.toUpperCase());\n onValueChange?.(newColor.toUpperCase());\n }, []);\n\n const inputClickHandler = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n if (!disabled) popoverTargetRef?.current?.click();\n },\n [popoverTargetRef, disabled],\n );\n\n const inputId = id ?? uuidv4();\n const showErrorIcon = !!error && !label;\n\n return (\n <FieldShell\n variant={variant}\n componentSize={componentSize}\n fullWidth={fullWidth}\n label={label}\n error={error}\n inputId={inputId}\n onLabelClick={inputClickHandler}\n hasStartIcon\n hasArrow\n hasErrorIcon={showErrorIcon}\n classes={{ ...(classes as PropsObject | undefined), root: classNames(styles.root, classes?.root) }}\n >\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classNames(fieldStyles.input, styles.input, classes?.input)}\n placeholder={placeholder}\n {...inputProps}\n value={color}\n onChange={() => {}}\n onClick={inputClickHandler}\n disabled={disabled}\n />\n <span\n onClick={inputClickHandler}\n className={classNames(styles.swatch, classes?.icon)}\n style={{ backgroundColor: color }}\n />\n <span onClick={inputClickHandler} className={classNames(fieldStyles.arrow, classes?.arrow)}>\n <Arrow />\n </span>\n {showErrorIcon && error && (\n <FieldErrorIcon error={error} componentSize={componentSize} className={classes?.errorIcon} />\n )}\n <Popover\n placement=\"bottom-start\"\n classes={{\n content: classNames(styles.popoverContent, classes?.popoverContent),\n ...(classes?.popover as PropsObject | undefined),\n }}\n containerOffset={4}\n description={<HexColorPicker color={color} onChange={changeColorHandler} />}\n >\n <div ref={popoverTargetRef} className={classNames(styles.popoverTarget)} />\n </Popover>\n </FieldShell>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"colorPicker-module__input__gaesN\";\nvar _2 = \"colorPicker-module__popover-content__lql7r\";\nvar _3 = \"colorPicker-module__popover-target__M5buG\";\nvar _4 = \"colorPicker-module__root__yWPxF\";\nvar _5 = \"colorPicker-module__swatch__MvnQ3\";\nexport { _1 as \"input\", _2 as \"popoverContent\", _3 as \"popoverTarget\", _4 as \"root\", _5 as \"swatch\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"input-module__attach-icon__W3URr\";\nvar _2 = \"input-module__field-icon__OVtdo\";\nvar _3 = \"input-module__file-display__GKw0F\";\nvar _4 = \"input-module__file-input__Hj1fC\";\nvar _5 = \"input-module__file-name__AVwRH\";\nvar _6 = \"input-module__input__Xce3x\";\nvar _7 = \"input-module__placeholder__QpTXt\";\nexport { _1 as \"attachIcon\", _2 as \"fieldIcon\", _3 as \"fileDisplay\", _4 as \"fileInput\", _5 as \"fileName\", _6 as \"input\", _7 as \"placeholder\" }\n","import classnames from 'classnames';\nimport { ChangeEvent, InputHTMLAttributes, KeyboardEvent, ReactNode, forwardRef, useRef, useState } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { FieldError, FieldErrorIcon, FieldShell, FieldSize, FieldVariant } from '@components/common/FieldShell';\nimport * as fieldStyles from '@components/common/FieldShell/fieldShell.module.css';\nimport { useCompatId } from '@hooks/useCompatId';\nimport { AttachIcon } from '@icons/AttachIcon';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './input.module.css';\n\nexport type { FieldError };\n\ninterface Props {\n variant?: FieldVariant;\n componentSize?: FieldSize;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n}\n\nexport const Input = forwardRef<HTMLInputElement, UiProps<Props> & InputHTMLAttributes<HTMLInputElement>>(\n (\n {\n variant = 'outlined',\n componentSize = 'medium',\n fullWidth,\n label,\n error,\n startIcon,\n endIcon,\n classes,\n placeholder,\n id,\n type,\n onChange,\n ...inputProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [fileName, setFileName] = useState('');\n\n const reactId = useCompatId();\n const inputId = id ?? reactId;\n const isFile = type === 'file';\n const showErrorIcon = !!error && !isFile && !label;\n const showEndIcon = !isFile && !!endIcon;\n\n const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n setFileName(file?.name ?? '');\n onChange?.(e);\n };\n\n const handleFileKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n const iconClickHandler = () => {\n inputRef.current?.focus();\n };\n\n return (\n <FieldShell\n variant={variant}\n componentSize={componentSize}\n fullWidth={fullWidth}\n label={label}\n error={error}\n inputId={inputId}\n hasStartIcon={!isFile && !!startIcon}\n hasEndIcon={showEndIcon || showErrorIcon}\n hasDualEndIcon={showEndIcon && showErrorIcon}\n classes={classes}\n >\n {isFile ? (\n <>\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classnames(styles.fileInput, classes?.fileInput)}\n type=\"file\"\n onChange={handleFileChange}\n {...inputProps}\n />\n <div\n role=\"button\"\n tabIndex={0}\n className={classnames(fieldStyles.input, styles.fileDisplay, classes?.input)}\n onClick={() => inputRef.current?.click()}\n onKeyDown={handleFileKeyDown}\n >\n <span className={classnames(styles.fileName, !fileName && styles.placeholder)}>\n {fileName || placeholder}\n </span>\n <AttachIcon size={20} className={styles.attachIcon} />\n </div>\n </>\n ) : (\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classnames(fieldStyles.input, styles.input, classes?.input)}\n placeholder={placeholder}\n type={type}\n autoComplete=\"off\"\n onChange={onChange}\n {...inputProps}\n />\n )}\n {!!startIcon && !isFile && (\n <span\n onClick={iconClickHandler}\n className={classnames(fieldStyles.startIcon, styles.fieldIcon, classes?.startIcon)}\n >\n {startIcon}\n </span>\n )}\n {showEndIcon && (\n <span\n onClick={iconClickHandler}\n className={classnames(fieldStyles.endIcon, styles.fieldIcon, classes?.endIcon)}\n >\n {endIcon}\n </span>\n )}\n {showErrorIcon && error && (\n <FieldErrorIcon error={error} componentSize={componentSize} className={classes?.errorIcon} />\n )}\n </FieldShell>\n );\n },\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"wrapForLabel-module__medium__xK1gW\";\nvar _2 = \"wrapForLabel-module__root__qo0J8\";\nvar _3 = \"wrapForLabel-module__small__esSsd\";\nexport { _1 as \"medium\", _2 as \"root\", _3 as \"small\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, forwardRef } from 'react';\n\nimport { ChipSize } from '@models/ChipSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './wrapForLabel.module.css';\n\ntype Style = keyof typeof styles;\n\ninterface Props {\n componentSize?: ChipSize;\n}\n\nexport const WrapForLabel = forwardRef<\n HTMLDivElement,\n PropsWithChildren<UiProps<Props>> & HTMLAttributes<HTMLDivElement>\n>(function WrapForLabel({ componentSize = 'medium', children, classes, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={classnames(styles.root, styles[componentSize as Style], className, classes?.root)}\n {...rest}\n >\n {children}\n </div>\n );\n});\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n};\nconst makeString = object => {\n if (object == null) return '';\n return String(object);\n};\nconst copy = (a, s, t) => {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.includes('###') ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n const stack = !isString(path) ? path : path.split('.');\n let stackIndex = 0;\n while (stackIndex < stack.length - 1) {\n if (canNotTraverseDeeper(object)) return {};\n const key = cleanKey(stack[stackIndex]);\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n ++stackIndex;\n }\n if (canNotTraverseDeeper(object)) return {};\n return {\n obj: object,\n k: cleanKey(stack[stackIndex])\n };\n};\nconst setPath = (object, path, newValue) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n if (obj !== undefined || path.length === 1) {\n obj[k] = newValue;\n return;\n }\n let e = path[path.length - 1];\n let p = path.slice(0, path.length - 1);\n let last = getLastOfPath(object, p, Object);\n while (last.obj === undefined && p.length) {\n e = `${p[p.length - 1]}.${e}`;\n p = p.slice(0, p.length - 1);\n last = getLastOfPath(object, p, Object);\n if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n last.obj = undefined;\n }\n }\n last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nconst _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nconst escape = data => {\n if (isString(data)) {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n};\nclass RegExpCache {\n constructor(capacity) {\n this.capacity = capacity;\n this.regExpMap = new Map();\n this.regExpQueue = [];\n }\n getRegExp(pattern) {\n const regExpFromCache = this.regExpMap.get(pattern);\n if (regExpFromCache !== undefined) {\n return regExpFromCache;\n }\n const regExpNew = new RegExp(pattern);\n if (this.regExpQueue.length === this.capacity) {\n this.regExpMap.delete(this.regExpQueue.shift());\n }\n this.regExpMap.set(pattern, regExpNew);\n this.regExpQueue.push(pattern);\n return regExpNew;\n }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => !nsSeparator.includes(c) && !keySeparator.includes(c));\n if (possibleChars.length === 0) return true;\n const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n if (!obj) return undefined;\n if (obj[path]) {\n if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n return obj[path];\n }\n const tokens = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < tokens.length;) {\n if (!current || typeof current !== 'object') {\n return undefined;\n }\n let next;\n let nextPath = '';\n for (let j = i; j < tokens.length; ++j) {\n if (j !== i) {\n nextPath += keySeparator;\n }\n nextPath += tokens[j];\n next = current[nextPath];\n if (next !== undefined) {\n if (['string', 'number', 'boolean'].includes(typeof next) && j < tokens.length - 1) {\n continue;\n }\n i += j - i + 1;\n break;\n }\n }\n current = next;\n }\n return current;\n};\nconst getCleanedCode = code => code?.replace(/_/g, '-');\n\nconst consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n console?.[type]?.apply?.(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger, options = {}) {\n this.init(concreteLogger, options);\n }\n init(concreteLogger, options = {}) {\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log(...args) {\n return this.forward(args, 'log', '', true);\n }\n warn(...args) {\n return this.forward(args, 'warn', '', true);\n }\n error(...args) {\n return this.forward(args, 'error', '');\n }\n deprecate(...args) {\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n args = args.map(a => isString(a) ? a.replace(/[\\r\\n\\x00-\\x1F\\x7F]/g, ' ') : a);\n if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n if (!this.observers[event]) this.observers[event] = new Map();\n const numListeners = this.observers[event].get(listener) || 0;\n this.observers[event].set(listener, numListeners + 1);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event].delete(listener);\n }\n once(event, listener) {\n const wrapper = (...args) => {\n listener(...args);\n this.off(event, wrapper);\n };\n this.on(event, wrapper);\n return this;\n }\n emit(event, ...args) {\n if (this.observers[event]) {\n const cloned = Array.from(this.observers[event].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(...args);\n }\n });\n }\n if (this.observers['*']) {\n const cloned = Array.from(this.observers['*'].entries());\n cloned.forEach(([observer, numTimesAdded]) => {\n for (let i = 0; i < numTimesAdded; i++) {\n observer(event, ...args);\n }\n });\n }\n }\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data, options = {\n ns: ['translation'],\n defaultNS: 'translation'\n }) {\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (!this.options.ns.includes(ns)) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key, options = {}) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path;\n if (lng.includes('.')) {\n path = lng.split('.');\n } else {\n path = [lng, ns];\n if (key) {\n if (Array.isArray(key)) {\n path.push(...key);\n } else if (isString(key) && keySeparator) {\n path.push(...key.split(keySeparator));\n } else {\n path.push(key);\n }\n }\n }\n const result = getPath(this.data, path);\n if (!result && !ns && !key && lng.includes('.')) {\n lng = path[0];\n ns = path[1];\n key = path.slice(2).join('.');\n }\n if (result || !ignoreJSONStructure || !isString(key)) return result;\n return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n }\n addResource(lng, ns, key, value, options = {\n silent: false\n }) {\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.includes('.')) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources, options = {\n silent: false\n }) {\n for (const m in resources) {\n if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n silent: false,\n skipCopy: false\n }) {\n let path = [lng, ns];\n if (lng.includes('.')) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n });\n return value;\n }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n const state = [];\n const handler = Object.create(null);\n let proxy;\n handler.get = (target, key) => {\n proxy?.revoke?.();\n if (key === PATH_KEY) return state;\n state.push(key);\n proxy = Proxy.revocable(target, handler);\n return proxy.proxy;\n };\n return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n const {\n [PATH_KEY]: path\n } = selector(createProxy());\n const keySeparator = opts?.keySeparator ?? '.';\n const nsSeparator = opts?.nsSeparator ?? ':';\n if (path.length > 1 && nsSeparator) {\n const ns = opts?.ns;\n const nsArray = Array.isArray(ns) ? ns : null;\n if (nsArray && nsArray.length > 1 && nsArray.slice(1).includes(path[0])) {\n return `${path[0]}${nsSeparator}${path.slice(1).join(keySeparator)}`;\n }\n }\n return path.join(keySeparator);\n}\n\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n constructor(services, options = {}) {\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n this.checkedLoadedFor = {};\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key, o = {\n interpolation: {}\n }) {\n const opt = {\n ...o\n };\n if (key == null) return false;\n const resolved = this.resolve(key, opt);\n if (resolved?.res === undefined) return false;\n const isObject = shouldHandleAsObject(resolved.res);\n if (opt.returnObjects === false && isObject) {\n return false;\n }\n return true;\n }\n extractFromKey(key, opt) {\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n let namespaces = opt.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.includes(nsSeparator);\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.includes(parts[0])) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n return {\n key,\n namespaces: isString(namespaces) ? [namespaces] : namespaces\n };\n }\n translate(keys, o, lastKey) {\n let opt = typeof o === 'object' ? {\n ...o\n } : o;\n if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n opt = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof opt === 'object') opt = {\n ...opt\n };\n if (!opt) opt = {};\n if (keys == null) return '';\n if (typeof keys === 'function') keys = keysFromSelector(keys, {\n ...this.options,\n ...opt\n });\n if (!Array.isArray(keys)) keys = [String(keys)];\n keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : String(k));\n const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], opt);\n const namespace = namespaces[namespaces.length - 1];\n let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const lng = opt.lng || this.language;\n const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng?.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(opt)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, opt);\n let res = resolved?.res;\n const resUsedKey = resolved?.usedKey || key;\n const resExactUsedKey = resolved?.exactUsedKey || key;\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const hasDefaultValue = Translator.hasDefaultValue(opt);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n ordinal: false\n }) : '';\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n let resForObjHndl = res;\n if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n resForObjHndl = defaultValue;\n }\n const handleAsObject = shouldHandleAsObject(resForObjHndl);\n const resType = Object.prototype.toString.apply(resForObjHndl);\n if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && !noObject.includes(resType) && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n if (!opt.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n ...opt,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = Array.isArray(resForObjHndl);\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in resForObjHndl) {\n if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n if (hasDefaultValue && !res) {\n copy[m] = this.translate(deepKey, {\n ...opt,\n defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n } else {\n copy[m] = this.translate(deepKey, {\n ...opt,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n }\n if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, needsPluralHandling && !updateMissing ? `${key}${this.pluralResolver.getSuffix(lng, opt.count, opt)}` : key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...opt,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n } else {\n lngs.push(opt.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n } else if (this.backendConnector?.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n const suffixes = this.pluralResolver.getSuffixes(language, opt);\n if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && !suffixes.includes(`${this.options.pluralSeparator}zero`)) {\n suffixes.push(`${this.options.pluralSeparator}zero`);\n }\n suffixes.forEach(suffix => {\n send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n res = `${namespace}${nsSeparator}${key}`;\n }\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(opt);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, opt, resolved, lastKey) {\n if (this.i18nFormat?.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...opt\n }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!opt.skipInterpolation) {\n if (opt.interpolation) this.interpolator.init({\n ...opt,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...opt.interpolation\n }\n }\n });\n const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) opt.nest = false;\n }\n if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n if (lastKey?.[0] === args[0] && !opt.context) {\n this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return this.translate(...args, key);\n }, opt);\n if (opt.interpolation) this.interpolator.reset();\n }\n const postProcess = opt.postProcess || this.options.postProcess;\n const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(opt)\n },\n ...opt\n } : opt, this);\n }\n return res;\n }\n resolve(keys, opt = {}) {\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (isString(keys)) keys = [keys];\n if (Array.isArray(keys)) keys = keys.map(k => typeof k === 'function' ? keysFromSelector(k, {\n ...this.options,\n ...opt\n }) : k);\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, opt);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!this.checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n this.checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat?.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n if (opt.ordinal && pluralSuffix.startsWith(ordinalPrefix)) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, opt);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key, options = {}) {\n if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails(options = {}) {\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && !isString(options.replace);\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && option.startsWith(prefix) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || !code.includes('-')) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (isString(code) && code.includes('-')) {\n let formattedCode;\n try {\n formattedCode = Intl.getCanonicalLocales(code)[0];\n } catch (e) {}\n if (formattedCode && this.options.lowerCaseLng) {\n formattedCode = formattedCode.toLowerCase();\n }\n if (formattedCode) return formattedCode;\n if (this.options.lowerCaseLng) {\n return code.toLowerCase();\n }\n return code;\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(code);\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngScOnly = this.getScriptPartFromCode(code);\n if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return true;\n if (!supportedLng.includes('-') && !lngOnly.includes('-')) return false;\n if (supportedLng.includes('-') && !lngOnly.includes('-') && supportedLng.slice(0, supportedLng.indexOf('-')) === lngOnly) return true;\n if (supportedLng.startsWith(lngOnly) && lngOnly.length > 1) return true;\n return false;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (isString(fallbacks)) fallbacks = [fallbacks];\n if (Array.isArray(fallbacks)) return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (isString(code) && (code.includes('-') || code.includes('_'))) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (isString(code)) {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (!codes.includes(fc)) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nconst dummyRule = {\n select: count => count === 1 ? 'one' : 'other',\n resolvedOptions: () => ({\n pluralCategories: ['one', 'other']\n })\n};\nclass PluralResolver {\n constructor(languageUtils, options = {}) {\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.pluralRulesCache = {};\n }\n clearCache() {\n this.pluralRulesCache = {};\n }\n getRule(code, options = {}) {\n const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n const type = options.ordinal ? 'ordinal' : 'cardinal';\n const cacheKey = JSON.stringify({\n cleanedCode,\n type\n });\n if (cacheKey in this.pluralRulesCache) {\n return this.pluralRulesCache[cacheKey];\n }\n let rule;\n try {\n rule = new Intl.PluralRules(cleanedCode, {\n type\n });\n } catch (err) {\n if (typeof Intl === 'undefined') {\n this.logger.error('No Intl support, please use an Intl polyfill!');\n return dummyRule;\n }\n if (!code.match(/-|_/)) return dummyRule;\n const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n rule = this.getRule(lngPart, options);\n }\n this.pluralRulesCache[cacheKey] = rule;\n return rule;\n }\n needsPlural(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n return rule?.resolvedOptions().pluralCategories.length > 1;\n }\n getPluralFormsOfKey(code, key, options = {}) {\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code, options = {}) {\n let rule = this.getRule(code, options);\n if (!rule) rule = this.getRule('dev', options);\n if (!rule) return [];\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n getSuffix(code, count, options = {}) {\n const rule = this.getRule(code, options);\n if (rule) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return this.getSuffix('dev', count, options);\n }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && isString(key)) {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n constructor(options = {}) {\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options?.interpolation?.format || (value => value);\n this.init(options);\n }\n init(options = {}) {\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const {\n escape: escape$1,\n escapeValue,\n useRawValueToEscape,\n prefix,\n prefixEscaped,\n suffix,\n suffixEscaped,\n formatSeparator,\n unescapeSuffix,\n unescapePrefix,\n nestingPrefix,\n nestingPrefixEscaped,\n nestingSuffix,\n nestingSuffixEscaped,\n nestingOptionsSeparator,\n maxReplaces,\n alwaysFormat\n } = options.interpolation;\n this.escape = escape$1 !== undefined ? escape$1 : escape;\n this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n this.formatSeparator = formatSeparator || ',';\n this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix ? regexEscape(unescapePrefix) : '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix ? regexEscape(unescapeSuffix) : '';\n this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n this.maxReplaces = maxReplaces || 1000;\n this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const getOrResetRegExp = (existingRegExp, pattern) => {\n if (existingRegExp?.source === pattern) {\n existingRegExp.lastIndex = 0;\n return existingRegExp;\n }\n return new RegExp(pattern, 'g');\n };\n this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n const handleFormat = key => {\n if (!key.includes(this.formatSeparator)) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n if (!this.escapeValue && typeof str === 'string' && /\\$t\\([^)]*\\{[^}]*\\{\\{/.test(str)) {\n this.logger.warn('nesting options string contains interpolated variables with escapeValue: false — ' + 'if any of those values are attacker-controlled they can inject additional ' + 'nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing ' + 'it to t(), or keep escapeValue: true.');\n }\n const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = isString(temp) ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (!isString(value) && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc, options = {}) {\n let match;\n let value;\n let clonedOptions;\n const handleHasOptions = (key, inheritedOptions) => {\n const sep = this.nestingOptionsSeparator;\n if (!key.includes(sep)) return key;\n const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n if (clonedOptions.defaultValue && clonedOptions.defaultValue.includes(this.prefix)) delete clonedOptions.defaultValue;\n return key;\n };\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n if (keyEndIndex !== -1) {\n formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n match[1] = match[1].slice(0, keyEndIndex);\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && !isString(value)) return value;\n if (!isString(value)) value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (formatters.length) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nconst parseFormatStr = formatStr => {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.includes('(')) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].slice(0, -1);\n if (formatName === 'currency' && !optStr.includes(':')) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && !optStr.includes(':')) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (opt) {\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n const trimmedKey = key.trim();\n if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n if (val === 'false') formatOptions[trimmedKey] = false;\n if (val === 'true') formatOptions[trimmedKey] = true;\n if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n }\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n};\nconst createCachedFormatter = fn => {\n const cache = {};\n return (v, l, o) => {\n let optForCache = o;\n if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n optForCache = {\n ...optForCache,\n [o.interpolationkey]: undefined\n };\n }\n const key = l + JSON.stringify(optForCache);\n let frm = cache[key];\n if (!frm) {\n frm = fn(getCleanedCode(l), o);\n cache[key] = frm;\n }\n return frm(v);\n };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n constructor(options = {}) {\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.init(options);\n }\n init(services, options = {\n interpolation: {}\n }) {\n this.formatSeparator = options.interpolation.formatSeparator || ',';\n const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n this.formats = {\n number: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: cf((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: cf((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: cf((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: cf((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng, options = {}) {\n if (!format) return value;\n if (value == null) return value;\n const formats = format.split(this.formatSeparator);\n if (formats.length > 1 && formats[0].indexOf('(') > 1 && !formats[0].includes(')') && formats.find(f => f.includes(')'))) {\n const lastIndex = formats.findIndex(f => f.includes(')'));\n formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n }\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nconst removePending = (q, name) => {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n};\nclass Connector extends EventEmitter {\n constructor(backend, store, services, options = {}) {\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n this.backend?.init?.(services, options.backend, options);\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (!err && data) {\n this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n skipCopy: true\n });\n }\n this.state[name] = err ? -1 : 2;\n if (err && data) this.state[name] = 0;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read(lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces, options = {}, callback) {\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n if (isString(namespaces)) namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name, prefix = '') {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend?.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nconst get = () => ({\n debug: false,\n initAsync: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: args => {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (isString(args[1])) ret.defaultValue = args[1];\n if (isString(args[2])) ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n },\n cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n if (isString(options.ns)) options.ns = [options.ns];\n if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && !options.supportedLngs.includes('cimode')) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n};\nclass I18n extends EventEmitter {\n constructor(options = {}, callback) {\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initAsync) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init(options = {}, callback) {\n this.isInitializing = true;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (options.defaultNS == null && options.ns) {\n if (isString(options.ns)) {\n options.defaultNS = options.ns;\n } else if (!options.ns.includes('translation')) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n }\n const createClassOnDemand = ClassOrObject => {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n };\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator\n });\n if (formatter) {\n s.formatter = createClassOnDemand(formatter);\n if (s.formatter.init) s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', (event, ...args) => {\n this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = (...args) => this.store[fcName](...args);\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = (...args) => {\n this.store[fcName](...args);\n return this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n this.isInitializing = false;\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if ((this.languages || this.isLanguageChangingTo) && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initAsync) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language, callback = noop) {\n let usedCallback = callback;\n const usedLng = isString(language) ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (!toLoad.includes(l)) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n this.options.preload?.forEach?.(l => append(l));\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (typeof lngs === 'function') {\n callback = lngs;\n lngs = undefined;\n }\n if (typeof ns === 'function') {\n callback = ns;\n ns = undefined;\n }\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].includes(l)) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].includes(lngInLngs)) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n if (!this.resolvedLanguage && !this.languages.includes(l) && this.store.hasLanguageSomeTranslations(l)) {\n this.resolvedLanguage = l;\n this.languages.unshift(l);\n }\n }\n changeLanguage(lng, callback) {\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n if (this.isLanguageChangingTo === lng) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n }\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve((...args) => this.t(...args));\n if (callback) callback(err, (...args) => this.t(...args));\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const fl = isString(lngs) ? lngs : lngs && lngs[0];\n const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n this.services.languageDetector?.cacheUserLanguage?.(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n const fixedT = (key, opts, ...rest) => {\n let o;\n if (typeof opts !== 'object') {\n o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n o = {\n ...opts\n };\n }\n o.lng = o.lng || fixedT.lng;\n o.lngs = o.lngs || fixedT.lngs;\n o.ns = o.ns || fixedT.ns;\n if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const selectorOpts = {\n ...this.options,\n ...o\n };\n if (typeof o.keyPrefix === 'function') o.keyPrefix = keysFromSelector(o.keyPrefix, selectorOpts);\n const keySeparator = this.options.keySeparator || '.';\n let resultKey;\n if (o.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => {\n if (typeof k === 'function') k = keysFromSelector(k, selectorOpts);\n return `${o.keyPrefix}${keySeparator}${k}`;\n });\n } else {\n if (typeof key === 'function') key = keysFromSelector(key, selectorOpts);\n resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n }\n return this.t(resultKey, o);\n };\n if (isString(lng)) {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t(...args) {\n return this.translator?.translate(...args);\n }\n exists(...args) {\n return this.translator?.exists(...args);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns, options = {}) {\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 0 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (isString(ns)) ns = [ns];\n ns.forEach(n => {\n if (!this.options.ns.includes(n)) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (isString(lngs)) lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => !preloaded.includes(lng) && this.services.languageUtils.isSupportedCode(lng));\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n try {\n const l = new Intl.Locale(lng);\n if (l && l.getTextInfo) {\n const ti = l.getTextInfo();\n if (ti && ti.direction) return ti.direction;\n }\n } catch (e) {}\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n return rtlLngs.includes(languageUtils.getLanguagePartFromCode(lng)) || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance(options = {}, callback) {\n const instance = new I18n(options, callback);\n instance.createInstance = I18n.createInstance;\n return instance;\n }\n cloneInstance(options = {}, callback = noop) {\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n prev[l] = {\n ...this.store.data[l]\n };\n prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n acc[n] = {\n ...prev[l][n]\n };\n return acc;\n }, prev[l]);\n return prev;\n }, {});\n clone.store = new ResourceStore(clonedData, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n if (options.interpolation) {\n const defOpts = get();\n const mergedInterpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation,\n ...options.interpolation\n };\n const mergedForInterpolator = {\n ...mergedOptions,\n interpolation: mergedInterpolation\n };\n clone.services.interpolator = new Interpolator(mergedForInterpolator);\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', (event, ...args) => {\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import e from\"void-elements\";var t=/\\s([^'\"/\\s><]+?)[\\s/>]|([^\\s=]+)=\\s?(\".*?\"|'.*?')/g;function n(n){var r={type:\"tag\",name:\"\",voidElement:!1,attrs:{},children:[]},i=n.match(/<\\/?([^\\s]+?)[/\\s>]/);if(i&&(r.name=i[1],(e[i[1]]||\"/\"===n.charAt(n.length-2))&&(r.voidElement=!0),r.name.startsWith(\"!--\"))){var s=n.indexOf(\"--\\x3e\");return{type:\"comment\",comment:-1!==s?n.slice(4,s):\"\"}}for(var a=new RegExp(t),c=null;null!==(c=a.exec(n));)if(c[0].trim())if(c[1]){var o=c[1].trim(),l=[o,\"\"];o.indexOf(\"=\")>-1&&(l=o.split(\"=\")),r.attrs[l[0]]=l[1],a.lastIndex--}else c[2]&&(r.attrs[c[2]]=c[3].trim().substring(1,c[3].length-1));return r}var r=/<[a-zA-Z0-9\\-\\!\\/](?:\"[^\"]*\"|'[^']*'|[^'\">])*>/g,i=/^\\s*$/,s=Object.create(null);function a(e,t){switch(t.type){case\"text\":return e+t.content;case\"tag\":return e+=\"<\"+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+'=\"'+e[n]+'\"');return t.length?\" \"+t.join(\" \"):\"\"}(t.attrs):\"\")+(t.voidElement?\"/>\":\">\"),t.voidElement?e:e+t.children.reduce(a,\"\")+\"</\"+t.name+\">\";case\"comment\":return e+\"\\x3c!--\"+t.comment+\"--\\x3e\"}}var c={parse:function(e,t){t||(t={}),t.components||(t.components=s);var a,c=[],o=[],l=-1,m=!1;if(0!==e.indexOf(\"<\")){var u=e.indexOf(\"<\");c.push({type:\"text\",content:-1===u?e:e.substring(0,u)})}return e.replace(r,function(r,s){if(m){if(r!==\"</\"+a.name+\">\")return;m=!1}var u,f=\"/\"!==r.charAt(1),h=r.startsWith(\"\\x3c!--\"),p=s+r.length,d=e.charAt(p);if(h){var v=n(r);return l<0?(c.push(v),c):((u=o[l]).children.push(v),c)}if(f&&(l++,\"tag\"===(a=n(r)).type&&t.components[a.name]&&(a.type=\"component\",m=!0),a.voidElement||m||!d||\"<\"===d||a.children.push({type:\"text\",content:e.slice(p,e.indexOf(\"<\",p))}),0===l&&c.push(a),(u=o[l-1])&&u.children.push(a),o[l]=a),(!f||a.voidElement)&&(l>-1&&(a.voidElement||a.name===r.slice(2,-1))&&(l--,a=-1===l?c:o[l]),!m&&\"<\"!==d&&d)){u=-1===l?c:o[l].children;var x=e.indexOf(\"<\",p),g=e.slice(p,-1===x?void 0:x);i.test(g)&&(g=\" \"),(x>-1&&l+u.length>=0||\" \"!==g)&&u.push({type:\"text\",content:g})}}),c},stringify:function(e){return e.reduce(function(e,t){return e+a(\"\",t)},\"\")}};export default c;\n//# sourceMappingURL=html-parse-stringify.module.js.map\n","export const warn = (i18n, code, msg, rest) => {\n const args = [msg, {\n code,\n ...(rest || {})\n }];\n if (i18n?.services?.logger?.forward) {\n return i18n.services.logger.forward(args, 'warn', 'react-i18next::', true);\n }\n if (isString(args[0])) args[0] = `react-i18next:: ${args[0]}`;\n if (i18n?.services?.logger?.warn) {\n i18n.services.logger.warn(...args);\n } else if (console?.warn) {\n console.warn(...args);\n }\n};\nconst alreadyWarned = {};\nexport const warnOnce = (i18n, code, msg, rest) => {\n if (isString(msg) && alreadyWarned[msg]) return;\n if (isString(msg)) alreadyWarned[msg] = new Date();\n warn(i18n, code, msg, rest);\n};\nconst loadedClb = (i18n, cb) => () => {\n if (i18n.isInitialized) {\n cb();\n } else {\n const initialized = () => {\n setTimeout(() => {\n i18n.off('initialized', initialized);\n }, 0);\n cb();\n };\n i18n.on('initialized', initialized);\n }\n};\nexport const loadNamespaces = (i18n, ns, cb) => {\n i18n.loadNamespaces(ns, loadedClb(i18n, cb));\n};\nexport const loadLanguages = (i18n, lng, ns, cb) => {\n if (isString(ns)) ns = [ns];\n if (i18n.options.preload && i18n.options.preload.indexOf(lng) > -1) return loadNamespaces(i18n, ns, cb);\n ns.forEach(n => {\n if (i18n.options.ns.indexOf(n) < 0) i18n.options.ns.push(n);\n });\n i18n.loadLanguages(lng, loadedClb(i18n, cb));\n};\nexport const hasLoadedNamespace = (ns, i18n, options = {}) => {\n if (!i18n.languages || !i18n.languages.length) {\n warnOnce(i18n, 'NO_LANGUAGES', 'i18n.languages were undefined or empty', {\n languages: i18n.languages\n });\n return true;\n }\n return i18n.hasLoadedNamespace(ns, {\n lng: options.lng,\n precheck: (i18nInstance, loadNotPending) => {\n if (options.bindI18n && options.bindI18n.indexOf('languageChanging') > -1 && i18nInstance.services.backendConnector.backend && i18nInstance.isLanguageChangingTo && !loadNotPending(i18nInstance.isLanguageChangingTo, ns)) return false;\n }\n });\n};\nexport const getDisplayName = Component => Component.displayName || Component.name || (isString(Component) && Component.length > 0 ? Component : 'Unknown');\nexport const isString = obj => typeof obj === 'string';\nexport const isObject = obj => typeof obj === 'object' && obj !== null;","const matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nconst htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nconst unescapeHtmlEntity = m => htmlEntities[m];\nexport const unescape = text => text.replace(matchHtmlEntity, unescapeHtmlEntity);","import { unescape } from './unescape.js';\nlet defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape,\n transDefaultProps: undefined\n};\nexport const setDefaults = (options = {}) => {\n defaultOptions = {\n ...defaultOptions,\n ...options\n };\n};\nexport const getDefaults = () => defaultOptions;","let i18nInstance;\nexport const setI18n = instance => {\n i18nInstance = instance;\n};\nexport const getI18n = () => i18nInstance;","import { createContext } from 'react';\nimport { getDefaults, setDefaults } from './defaults.js';\nimport { getI18n, setI18n } from './i18nInstance.js';\nimport { initReactI18next } from './initReactI18next.js';\nexport { getDefaults, setDefaults, getI18n, setI18n, initReactI18next };\nexport const I18nContext = createContext();\nexport class ReportNamespaces {\n constructor() {\n this.usedNamespaces = {};\n }\n addUsedNamespaces(namespaces) {\n namespaces.forEach(ns => {\n if (!this.usedNamespaces[ns]) this.usedNamespaces[ns] = true;\n });\n }\n getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n}\nexport const composeInitialProps = ForComponent => async ctx => {\n const componentsInitialProps = (await ForComponent.getInitialProps?.(ctx)) ?? {};\n const i18nInitialProps = getInitialProps();\n return {\n ...componentsInitialProps,\n ...i18nInitialProps\n };\n};\nexport const getInitialProps = () => {\n const i18n = getI18n();\n if (!i18n) {\n console.warn('react-i18next:: getInitialProps: You will need to pass in an i18next instance by using initReactI18next');\n return {};\n }\n const namespaces = i18n.reportNamespaces?.getUsedNamespaces() ?? [];\n const ret = {};\n const initialI18nStore = {};\n i18n.languages.forEach(l => {\n initialI18nStore[l] = {};\n namespaces.forEach(ns => {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n};","export class TranslationParserError extends Error {\n constructor(message, position, translationString) {\n super(message);\n this.name = 'TranslationParserError';\n this.position = position;\n this.translationString = translationString;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TranslationParserError);\n }\n }\n}","const commonEntities = {\n ' ': '\\u00A0',\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '©': '©',\n '®': '®',\n '™': '™',\n '…': '…',\n '–': '–',\n '—': '—',\n '‘': '\\u2018',\n '’': '\\u2019',\n '‚': '\\u201A',\n '“': '\\u201C',\n '”': '\\u201D',\n '„': '\\u201E',\n '†': '†',\n '‡': '‡',\n '•': '•',\n '′': '′',\n '″': '″',\n '‹': '‹',\n '›': '›',\n '§': '§',\n '¶': '¶',\n '·': '·',\n ' ': '\\u2002',\n ' ': '\\u2003',\n ' ': '\\u2009',\n '€': '€',\n '£': '£',\n '¥': '¥',\n '¢': '¢',\n '¤': '¤',\n '×': '×',\n '÷': '÷',\n '−': '−',\n '±': '±',\n '≠': '≠',\n '≤': '≤',\n '≥': '≥',\n '≈': '≈',\n '≡': '≡',\n '∞': '∞',\n '∫': '∫',\n '∑': '∑',\n '∏': '∏',\n '√': '√',\n '∂': '∂',\n '‰': '‰',\n '°': '°',\n 'µ': 'µ',\n '←': '←',\n '↑': '↑',\n '→': '→',\n '↓': '↓',\n '↔': '↔',\n '↵': '↵',\n '⇐': '⇐',\n '⇑': '⇑',\n '⇒': '⇒',\n '⇓': '⇓',\n '⇔': '⇔',\n 'α': 'α',\n 'β': 'β',\n 'γ': 'γ',\n 'δ': 'δ',\n 'ε': 'ε',\n 'ζ': 'ζ',\n 'η': 'η',\n 'θ': 'θ',\n 'ι': 'ι',\n 'κ': 'κ',\n 'λ': 'λ',\n 'μ': 'μ',\n 'ν': 'ν',\n 'ξ': 'ξ',\n 'ο': 'ο',\n 'π': 'π',\n 'ρ': 'ρ',\n 'σ': 'σ',\n 'τ': 'τ',\n 'υ': 'υ',\n 'φ': 'φ',\n 'χ': 'χ',\n 'ψ': 'ψ',\n 'ω': 'ω',\n 'Α': 'Α',\n 'Β': 'Β',\n 'Γ': 'Γ',\n 'Δ': 'Δ',\n 'Ε': 'Ε',\n 'Ζ': 'Ζ',\n 'Η': 'Η',\n 'Θ': 'Θ',\n 'Ι': 'Ι',\n 'Κ': 'Κ',\n 'Λ': 'Λ',\n 'Μ': 'Μ',\n 'Ν': 'Ν',\n 'Ξ': 'Ξ',\n 'Ο': 'Ο',\n 'Π': 'Π',\n 'Ρ': 'Ρ',\n 'Σ': 'Σ',\n 'Τ': 'Τ',\n 'Υ': 'Υ',\n 'Φ': 'Φ',\n 'Χ': 'Χ',\n 'Ψ': 'Ψ',\n 'Ω': 'Ω',\n 'À': 'À',\n 'Á': 'Á',\n 'Â': 'Â',\n 'Ã': 'Ã',\n 'Ä': 'Ä',\n 'Å': 'Å',\n 'Æ': 'Æ',\n 'Ç': 'Ç',\n 'È': 'È',\n 'É': 'É',\n 'Ê': 'Ê',\n 'Ë': 'Ë',\n 'Ì': 'Ì',\n 'Í': 'Í',\n 'Î': 'Î',\n 'Ï': 'Ï',\n 'Ð': 'Ð',\n 'Ñ': 'Ñ',\n 'Ò': 'Ò',\n 'Ó': 'Ó',\n 'Ô': 'Ô',\n 'Õ': 'Õ',\n 'Ö': 'Ö',\n 'Ø': 'Ø',\n 'Ù': 'Ù',\n 'Ú': 'Ú',\n 'Û': 'Û',\n 'Ü': 'Ü',\n 'Ý': 'Ý',\n 'Þ': 'Þ',\n 'ß': 'ß',\n 'à': 'à',\n 'á': 'á',\n 'â': 'â',\n 'ã': 'ã',\n 'ä': 'ä',\n 'å': 'å',\n 'æ': 'æ',\n 'ç': 'ç',\n 'è': 'è',\n 'é': 'é',\n 'ê': 'ê',\n 'ë': 'ë',\n 'ì': 'ì',\n 'í': 'í',\n 'î': 'î',\n 'ï': 'ï',\n 'ð': 'ð',\n 'ñ': 'ñ',\n 'ò': 'ò',\n 'ó': 'ó',\n 'ô': 'ô',\n 'õ': 'õ',\n 'ö': 'ö',\n 'ø': 'ø',\n 'ù': 'ù',\n 'ú': 'ú',\n 'û': 'û',\n 'ü': 'ü',\n 'ý': 'ý',\n 'þ': 'þ',\n 'ÿ': 'ÿ',\n '¡': '¡',\n '¿': '¿',\n 'ƒ': 'ƒ',\n 'ˆ': 'ˆ',\n '˜': '˜',\n 'Œ': 'Œ',\n 'œ': 'œ',\n 'Š': 'Š',\n 'š': 'š',\n 'Ÿ': 'Ÿ',\n 'ª': 'ª',\n 'º': 'º',\n '¯': '¯',\n '´': '´',\n '¸': '¸',\n '¹': '¹',\n '²': '²',\n '³': '³',\n '¼': '¼',\n '½': '½',\n '¾': '¾',\n '♠': '♠',\n '♣': '♣',\n '♥': '♥',\n '♦': '♦',\n '◊': '◊',\n '‾': '‾',\n '⁄': '⁄',\n '℘': '℘',\n 'ℑ': 'ℑ',\n 'ℜ': 'ℜ',\n 'ℵ': 'ℵ'\n};\nconst entityPattern = new RegExp(Object.keys(commonEntities).map(entity => entity.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')).join('|'), 'g');\nexport const decodeHtmlEntities = text => text.replace(entityPattern, match => commonEntities[match]).replace(/&#(\\d+);/g, (_, num) => String.fromCharCode(parseInt(num, 10))).replace(/&#x([0-9a-fA-F]+);/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));","import { useContext, useCallback, useMemo, useEffect, useRef, useState } from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { getI18n, getDefaults, ReportNamespaces, I18nContext } from './context.js';\nimport { warnOnce, loadNamespaces, loadLanguages, hasLoadedNamespace, isString, isObject } from './utils.js';\nconst notReadyT = (k, optsOrDefaultValue) => {\n if (isString(optsOrDefaultValue)) return optsOrDefaultValue;\n if (isObject(optsOrDefaultValue) && isString(optsOrDefaultValue.defaultValue)) return optsOrDefaultValue.defaultValue;\n if (typeof k === 'function') return '';\n if (Array.isArray(k)) {\n const last = k[k.length - 1];\n return typeof last === 'function' ? '' : last;\n }\n return k;\n};\nconst notReadySnapshot = {\n t: notReadyT,\n ready: false\n};\nconst dummySubscribe = () => () => {};\nexport const useTranslation = (ns, props = {}) => {\n const {\n i18n: i18nFromProps\n } = props;\n const {\n i18n: i18nFromContext,\n defaultNS: defaultNSFromContext\n } = useContext(I18nContext) || {};\n const i18n = i18nFromProps || i18nFromContext || getI18n();\n if (i18n && !i18n.reportNamespaces) i18n.reportNamespaces = new ReportNamespaces();\n if (!i18n) {\n warnOnce(i18n, 'NO_I18NEXT_INSTANCE', 'useTranslation: You will need to pass in an i18next instance by using initReactI18next');\n }\n const i18nOptions = useMemo(() => ({\n ...getDefaults(),\n ...i18n?.options?.react,\n ...props\n }), [i18n, props]);\n const {\n useSuspense,\n keyPrefix\n } = i18nOptions;\n const nsOrContext = ns || defaultNSFromContext || i18n?.options?.defaultNS;\n const unstableNamespaces = isString(nsOrContext) ? [nsOrContext] : nsOrContext || ['translation'];\n const namespaces = useMemo(() => unstableNamespaces, unstableNamespaces);\n i18n?.reportNamespaces?.addUsedNamespaces?.(namespaces);\n const revisionRef = useRef(0);\n const subscribe = useCallback(callback => {\n if (!i18n) return dummySubscribe;\n const {\n bindI18n,\n bindI18nStore\n } = i18nOptions;\n const wrappedCallback = () => {\n revisionRef.current += 1;\n callback();\n };\n if (bindI18n) i18n.on(bindI18n, wrappedCallback);\n if (bindI18nStore) i18n.store.on(bindI18nStore, wrappedCallback);\n return () => {\n if (bindI18n) bindI18n.split(' ').forEach(e => i18n.off(e, wrappedCallback));\n if (bindI18nStore) bindI18nStore.split(' ').forEach(e => i18n.store.off(e, wrappedCallback));\n };\n }, [i18n, i18nOptions]);\n const snapshotRef = useRef();\n const getSnapshot = useCallback(() => {\n if (!i18n) {\n return notReadySnapshot;\n }\n const calculatedReady = !!(i18n.isInitialized || i18n.initializedStoreOnce) && namespaces.every(n => hasLoadedNamespace(n, i18n, i18nOptions));\n const currentLng = props.lng || i18n.language;\n const currentRevision = revisionRef.current;\n const lastSnapshot = snapshotRef.current;\n if (lastSnapshot && lastSnapshot.ready === calculatedReady && lastSnapshot.lng === currentLng && lastSnapshot.keyPrefix === keyPrefix && lastSnapshot.revision === currentRevision) {\n return lastSnapshot;\n }\n const calculatedT = i18n.getFixedT(currentLng, i18nOptions.nsMode === 'fallback' ? namespaces : namespaces[0], keyPrefix);\n const newSnapshot = {\n t: calculatedT,\n ready: calculatedReady,\n lng: currentLng,\n keyPrefix,\n revision: currentRevision\n };\n snapshotRef.current = newSnapshot;\n return newSnapshot;\n }, [i18n, namespaces, keyPrefix, i18nOptions, props.lng]);\n const [loadCount, setLoadCount] = useState(0);\n const {\n t,\n ready\n } = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n useEffect(() => {\n if (i18n && !ready && !useSuspense) {\n const onLoaded = () => setLoadCount(c => c + 1);\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n }\n }, [i18n, props.lng, namespaces, ready, useSuspense, loadCount]);\n const finalI18n = i18n || {};\n const wrapperRef = useRef(null);\n const wrapperLangRef = useRef();\n const createI18nWrapper = original => {\n const descriptors = Object.getOwnPropertyDescriptors(original);\n if (descriptors.__original) delete descriptors.__original;\n const wrapper = Object.create(Object.getPrototypeOf(original), descriptors);\n if (!Object.prototype.hasOwnProperty.call(wrapper, '__original')) {\n try {\n Object.defineProperty(wrapper, '__original', {\n value: original,\n writable: false,\n enumerable: false,\n configurable: false\n });\n } catch (_) {}\n }\n return wrapper;\n };\n const ret = useMemo(() => {\n const original = finalI18n;\n const lang = original?.language;\n let i18nWrapper = original;\n if (original) {\n if (wrapperRef.current && wrapperRef.current.__original === original) {\n if (wrapperLangRef.current !== lang) {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n } else {\n i18nWrapper = wrapperRef.current;\n }\n } else {\n i18nWrapper = createI18nWrapper(original);\n wrapperRef.current = i18nWrapper;\n wrapperLangRef.current = lang;\n }\n }\n const effectiveT = !ready && !useSuspense ? (...args) => {\n warnOnce(i18n, 'USE_T_BEFORE_READY', 'useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.');\n return t(...args);\n } : t;\n const arr = [effectiveT, i18nWrapper, ready];\n arr.t = effectiveT;\n arr.i18n = i18nWrapper;\n arr.ready = ready;\n return arr;\n }, [t, finalI18n, ready, finalI18n.resolvedLanguage, finalI18n.language, finalI18n.languages]);\n if (i18n && useSuspense && !ready) {\n throw new Promise(resolve => {\n const onLoaded = () => resolve();\n if (props.lng) {\n loadLanguages(i18n, props.lng, namespaces, onLoaded);\n } else {\n loadNamespaces(i18n, namespaces, onLoaded);\n }\n });\n }\n return ret;\n};","import { useTranslation as useTranslationOriginal } from 'react-i18next';\n\nexport const useTranslation = () => {\n const { t, i18n } = useTranslationOriginal();\n\n const changeLanguage = (language: 'ru' | 'en') => {\n i18n.changeLanguage(language);\n };\n\n return {\n t,\n currentLanguage: i18n.language as 'ru' | 'en',\n changeLanguage,\n };\n};\n","import { Item } from '../models/Item';\nimport { SelectedItems } from '../models/SelectedItems';\n\nexport const filterItems = (items: Item[], filterText: string, selectedItems: SelectedItems) => {\n if (!filterText) {\n return items.filter((item) => !selectedItems[item.value]);\n }\n\n const reduceCallback = (filteredItems: Item[], item: Item) => {\n if (item.name.toUpperCase().includes(filterText.toUpperCase()) && !selectedItems[item.value]) {\n filteredItems.push({ ...item });\n }\n\n return filteredItems;\n };\n\n return items.reduce(reduceCallback, []);\n};\n","import classnames from 'classnames';\nimport { ChangeEvent, HTMLAttributes, forwardRef, useCallback, useMemo, useState } from 'react';\n\nimport { Typography } from '@components/view/Typography';\nimport { useTranslation } from '@hooks/useTranslation';\nimport { SearchIcon } from '@icons/SearchIcon';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport * as styles from './checklist.module.css';\nimport { Button } from '../Button';\nimport { Checkbox } from '../Checkbox';\nimport { Input } from '../Input';\nimport { Item } from './models/Item';\nimport { SelectedItems } from './models/SelectedItems';\nimport { filterItems } from './utils/filterItems';\n\ninterface Props {\n items: Item[];\n selected: SelectedItems;\n disableSearch?: boolean;\n isDisabled?: boolean;\n actionWithSelected: (value: SelectedItems) => void;\n onChangeItem?: (item: Item) => void;\n}\n\nexport const Checklist = forwardRef<HTMLDivElement, UiProps<Props> & HTMLAttributes<HTMLDivElement>>(function Checklist(\n { items, selected, disableSearch, isDisabled, actionWithSelected, onChangeItem, classes, className, ...rest },\n ref,\n) {\n const { t } = useTranslation();\n\n const [filterSubstring, setFilterSubstring] = useState('');\n\n // Мемоизация отфильтрованных элементов\n const filteredItems = useMemo(() => {\n return filterItems(items, filterSubstring, selected);\n }, [items, filterSubstring, selected]);\n\n // Мемоизация списка выбранных элементов\n const selectedItemsList = useMemo(() => {\n return items.filter((item) => !!selected[item.value]);\n }, [items, selected]);\n\n const handleClick = useCallback(\n (item: Item) => {\n const value = !selected[item.value];\n\n if (onChangeItem) {\n onChangeItem(item);\n }\n\n const newSelected = { ...selected, [item.value]: value };\n actionWithSelected(newSelected);\n },\n [selected, onChangeItem, actionWithSelected],\n );\n\n const onSelectAll = useCallback(() => {\n const newSelected = { ...selected };\n filteredItems.forEach((item) => {\n newSelected[item.value] = true;\n });\n actionWithSelected(newSelected);\n }, [selected, filteredItems, actionWithSelected]);\n\n const onUnSelectAll = useCallback(() => {\n // Очищаем только те элементы, которые были выбраны\n const newSelected = { ...selected };\n selectedItemsList.forEach((item) => {\n delete newSelected[item.value];\n });\n actionWithSelected(newSelected);\n }, [selected, selectedItemsList, actionWithSelected]);\n\n const handleFilterChange = useCallback((e: ChangeEvent<HTMLInputElement>) => {\n setFilterSubstring(e.target.value);\n }, []);\n\n const handleCheckboxChange = useCallback(\n (item: Item) => (e: ChangeEvent<HTMLInputElement>) => {\n e.stopPropagation();\n handleClick(item);\n },\n [handleClick],\n );\n\n return (\n <div ref={ref} className={classnames(styles.root, className, classes?.root)} {...rest}>\n {' '}\n {!disableSearch && (\n <Input\n variant=\"outlined\"\n startIcon={<SearchIcon />}\n placeholder={t('Поиск...')}\n disabled={isDisabled}\n value={filterSubstring}\n fullWidth\n classes={classes?.searchInput as PropsObject | undefined}\n onChange={handleFilterChange}\n />\n )}\n <div className={classnames(styles.scrolled, 'styledScroll', classes?.scrolled)}>\n {selectedItemsList.length > 0 && (\n <>\n <div className={classnames(styles.actionWrap, classes?.actionWrap)}>\n <Typography className={classnames(classes?.typography)}>{t('Выбранное')}</Typography>\n <Button\n variant=\"text\"\n componentSize=\"small\"\n compact\n disabled={isDisabled}\n onClick={onUnSelectAll}\n className={classnames(classes?.button)}\n >\n {t('Отменить')}\n </Button>\n </div>\n <div>\n {selectedItemsList.map((item) => (\n <Checkbox\n key={`selected-${item.value}`}\n label={item.name}\n checked={!!selected[item.value]}\n onChange={handleCheckboxChange(item)}\n disabled={isDisabled}\n classes={classes?.checkbox as PropsObject | undefined}\n />\n ))}\n </div>\n </>\n )}\n {!isDisabled && !!filteredItems.length && (\n <Button\n variant=\"text\"\n componentSize=\"small\"\n compact\n disabled={isDisabled}\n onClick={onSelectAll}\n className={classnames(classes?.button)}\n >\n {t('Выбрать все')}\n </Button>\n )}\n <div>\n {filteredItems.map((item) => (\n <Checkbox\n key={`filtered-${item.value}`}\n label={item.name}\n checked={!!selected[item.value]}\n onChange={handleCheckboxChange(item)}\n disabled={isDisabled}\n classes={classes?.checkbox as PropsObject | undefined}\n />\n ))}\n </div>\n </div>\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"checklist-module__action-wrap__rW_zg\";\nvar _2 = \"checklist-module__root__AKDzG\";\nvar _3 = \"checklist-module__scrolled__mpmGi\";\nexport { _1 as \"actionWrap\", _2 as \"root\", _3 as \"scrolled\" }\n","import classNames from 'classnames';\nimport { useCallback, useMemo } from 'react';\n\nimport { Checklist, Item as ChecklistItem, SelectedItems } from '@components/common/Checklist';\nimport { FieldSize } from '@components/common/FieldShell';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport { Item } from '../../models/Item';\n\ninterface Props {\n items: Item[];\n componentSize?: FieldSize;\n selected: string[] | null;\n onSelectedChange: (items: Item[]) => void;\n enableSearch?: boolean;\n disabled?: boolean;\n}\n\nexport function SelectPopover(props: UiProps<Props>) {\n const { items, selected, onSelectedChange, classes, enableSearch = false, disabled } = props;\n\n const checklistItems = useMemo<ChecklistItem[]>(\n () =>\n items.map((item) => ({\n name: item.name,\n value: item.value,\n })),\n [items],\n );\n\n const selectedItems = useMemo<SelectedItems>(() => {\n const result: SelectedItems = {};\n selected?.forEach((value) => {\n result[value] = true;\n });\n return result;\n }, [selected]);\n\n const handleActionWithSelected = useCallback(\n (newSelected: SelectedItems) => {\n const values = Object.entries(newSelected).reduce<Item[]>((acc, [value, isSelected]) => {\n if (isSelected) {\n const item = items.find((i) => i.value === value);\n if (item) {\n acc.push(item);\n }\n }\n return acc;\n }, []);\n onSelectedChange(values);\n },\n [onSelectedChange, items],\n );\n\n const { checklistWrapper, ...checklistClasses } = (classes as PropsObject | undefined) ?? {};\n\n return (\n <div className={classNames(checklistWrapper)}>\n <Checklist\n disableSearch={!enableSearch}\n isDisabled={disabled}\n items={checklistItems}\n selected={selectedItems}\n actionWithSelected={handleActionWithSelected}\n classes={checklistClasses as PropsObject | undefined}\n />\n </div>\n );\n}\n","import { Item } from '../models/Item';\nimport { TitleVariant } from '../models/TitleVariant';\n\nexport const getTitle = (titleType: TitleVariant, activeItems: Item[], t: (v: string) => string) => {\n switch (titleType) {\n case 'allValue': {\n return activeItems.map((i) => i.name).join(', ');\n }\n case 'numberValue': {\n return `${t('Выбрано элементов')}: ` + activeItems.length;\n }\n case 'firstValue': {\n return `${activeItems[0]?.name} ${activeItems.length > 1 ? ' +' + (activeItems.length - 1) : ''}`;\n }\n case 'chips': {\n return '';\n }\n }\n};\n","import classnames from 'classnames';\nimport {\n DetailedHTMLProps,\n InputHTMLAttributes,\n MouseEvent,\n ReactNode,\n forwardRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { mergeRefs } from 'react-merge-refs';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { FieldError, FieldErrorIcon, FieldShell, FieldSize, FieldVariant } from '@components/common/FieldShell';\nimport * as fieldStyles from '@components/common/FieldShell/fieldShell.module.css';\nimport { InputChip } from '@components/view/InputChip';\nimport { Popover } from '@components/view/Popover';\nimport { Arrow } from '@components/view/Popover/ui/Arrow';\nimport { CloseIcon } from '@icons/CloseIcon';\nimport { PropsObject, UiProps } from '@models/UiProps';\n\nimport { Item } from './models/Item';\nimport { TitleVariant } from './models/TitleVariant';\nimport * as styles from './multiSelect.module.css';\nimport { SelectPopover } from './ui/SelectPopover';\nimport { getTitle } from './utils/getTitle';\n\ninterface Props {\n variant?: FieldVariant;\n componentSize?: FieldSize;\n icon?: ReactNode;\n fullWidth?: boolean;\n label?: string;\n error?: FieldError;\n placeholder?: string;\n items: Item[];\n onValueChange?: (newItem: Item[] | null) => void;\n selected: string[] | null;\n titleType?: TitleVariant;\n showSelectedCount?: boolean;\n enableSearch?: boolean;\n popoverInComponent?: boolean;\n}\n\nexport const MultiSelect = forwardRef<\n HTMLInputElement,\n UiProps<Props> & DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\n>(function MultiSelect(props, ref) {\n const {\n variant = 'filled',\n componentSize = 'medium',\n icon,\n fullWidth,\n label,\n error,\n placeholder,\n items,\n onValueChange,\n selected,\n classes,\n disabled,\n id,\n titleType = 'allValue',\n showSelectedCount = false,\n enableSearch = false,\n popoverInComponent = false,\n ...inputProps\n } = props;\n\n const chips = titleType === 'chips';\n\n const { t } = useTranslation();\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverTargetRef = useRef<HTMLDivElement>(null);\n\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [popoverWidth, setPopoverWidth] = useState<number>();\n const [popoverLayoutVersion, setPopoverLayoutVersion] = useState(0);\n\n const activeItems = useMemo(() => items.filter((i) => selected?.includes(i.value)), [selected, items]);\n\n useLayoutEffect(() => {\n const element = wrapperRef.current;\n if (!element) {\n return;\n }\n\n const updateLayout = () => {\n const { width } = element.getBoundingClientRect();\n setPopoverWidth(width);\n setPopoverLayoutVersion((prev) => prev + 1);\n };\n\n updateLayout();\n\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const resizeObserver = new ResizeObserver(updateLayout);\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n useLayoutEffect(() => {\n if (chips) {\n setPopoverLayoutVersion((prev) => prev + 1);\n }\n }, [chips, activeItems.length]);\n\n const inputClickHandler = useCallback(\n (e: MouseEvent) => {\n e.preventDefault();\n if (!disabled) {\n setIsPopoverOpen((prev) => !prev);\n }\n },\n [disabled],\n );\n\n const handleSelectedChange = useCallback(\n (newItems: Item[]) => {\n onValueChange?.(newItems);\n },\n [onValueChange],\n );\n\n const title = useMemo(() => {\n if (!activeItems.length) return '';\n return getTitle(titleType, activeItems, t);\n }, [titleType, activeItems, t]);\n\n const clearHandler = () => {\n onValueChange?.(null);\n };\n const inputId = id ?? uuidv4();\n const showErrorIcon = !!error && !label;\n\n return (\n <FieldShell\n variant={variant}\n componentSize={componentSize}\n fullWidth={fullWidth}\n label={label}\n error={error}\n labelExtra={\n showSelectedCount && activeItems.length > 0 ? (\n <span\n className={classnames(styles.labelSelectedCount, classes?.labelSelectedCount)}\n >{` (${activeItems.length})`}</span>\n ) : undefined\n }\n inputId={inputId}\n onLabelClick={inputClickHandler}\n ref={wrapperRef}\n hasStartIcon={!!icon}\n hasArrow\n hasErrorIcon={showErrorIcon}\n hasClearButton={!!activeItems.length}\n chipsMode={chips}\n classes={classes}\n >\n <input\n ref={mergeRefs([inputRef, ref])}\n id={inputId}\n className={classnames(fieldStyles.input, styles.input, classes?.input)}\n placeholder={chips && activeItems.length ? undefined : placeholder}\n {...inputProps}\n value={chips ? '' : title}\n onClick={inputClickHandler}\n disabled={disabled}\n readOnly\n title={chips ? undefined : activeItems.map((i) => i.name).join(', ')}\n autoComplete={'off'}\n />\n {chips && !!activeItems.length && (\n <span className={classnames(fieldStyles.chips, styles.chips, classes?.chips)}>\n {activeItems.map((item) => (\n <InputChip\n key={item.value}\n componentSize={componentSize}\n disabled={disabled}\n onClick={() => {\n if (!disabled) setIsPopoverOpen((prev) => !prev);\n }}\n onRemove={() => {\n const rest = activeItems.filter((i) => i.value !== item.value);\n onValueChange?.(rest.length ? rest : null);\n }}\n >\n {item.name}\n </InputChip>\n ))}\n </span>\n )}\n {!!icon && (\n <span onClick={inputClickHandler} className={classnames(styles.icon, classes?.icon)}>\n {icon}\n </span>\n )}\n {!!activeItems.length && (\n <span onClick={clearHandler} className={classnames(styles.clear, classes?.clear)}>\n <CloseIcon />\n </span>\n )}\n <span onClick={inputClickHandler} className={classnames(fieldStyles.arrow, classes?.arrow)}>\n <Arrow />\n </span>\n {showErrorIcon && error && (\n <FieldErrorIcon error={error} componentSize={componentSize} className={classes?.errorIcon} />\n )}\n <Popover\n placement=\"bottom-start\"\n open={isPopoverOpen}\n onOpenChange={setIsPopoverOpen}\n contentStyle={\n popoverWidth ? { width: popoverWidth, minWidth: popoverWidth, maxWidth: popoverWidth } : undefined\n }\n classes={{\n content: classnames(styles.popoverContent, classes?.popoverContent),\n ...(classes?.popover as PropsObject | undefined),\n }}\n containerOffset={4}\n layoutVersion={popoverLayoutVersion}\n root={popoverInComponent ? wrapperRef.current : undefined}\n description={\n <SelectPopover\n items={items}\n classes={{\n searchInput: {\n root: styles.searchInputRoot,\n ...((classes?.selectPopover as PropsObject | undefined)?.searchInput as PropsObject | undefined),\n },\n root: styles.checklistRoot,\n checklistWrapper: classnames(styles.checklistWrapper),\n scrolled: styles.checklistScrolled,\n ...(classes?.selectPopover as PropsObject | undefined),\n }}\n componentSize={componentSize}\n selected={selected}\n onSelectedChange={handleSelectedChange}\n enableSearch={enableSearch}\n disabled={disabled}\n />\n }\n >\n <div ref={popoverTargetRef} className={classnames(styles.popoverTarget)} />\n </Popover>\n </FieldShell>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"multiSelect-module__checklist-root__hidSo\";\nvar _2 = \"multiSelect-module__checklist-scrolled__KC8yS\";\nvar _3 = \"multiSelect-module__checklist-wrapper__EDrnx\";\nvar _4 = \"multiSelect-module__chips__CUViE\";\nvar _5 = \"multiSelect-module__clear__CwQiH\";\nvar _6 = \"multiSelect-module__icon__TnLPX\";\nvar _7 = \"multiSelect-module__input__Hk3TU\";\nvar _8 = \"multiSelect-module__label-selected-count__gCPqL\";\nvar _9 = \"multiSelect-module__popover-content__p_jyb\";\nvar _a = \"multiSelect-module__popover-target__x51qe\";\nvar _b = \"multiSelect-module__search-input-root__rCmDl\";\nexport { _1 as \"checklistRoot\", _2 as \"checklistScrolled\", _3 as \"checklistWrapper\", _4 as \"chips\", _5 as \"clear\", _6 as \"icon\", _7 as \"input\", _8 as \"labelSelectedCount\", _9 as \"popoverContent\", _a as \"popoverTarget\", _b as \"searchInputRoot\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"radioButton-module__deselected__kGeIi\";\nvar _2 = \"radioButton-module__input__O_xQT\";\nvar _3 = \"radioButton-module__label__A9fWR\";\nvar _4 = \"radioButton-module__label-text__KSEbB\";\nvar _5 = \"radioButton-module__pressed__n_bXs\";\nvar _6 = \"radioButton-module__radio__fDsQH\";\nvar _7 = \"radioButton-module__root__fxVmv\";\nvar _8 = \"radioButton-module__selected__atkc_\";\nexport { _1 as \"deselected\", _2 as \"input\", _3 as \"label\", _4 as \"labelText\", _5 as \"pressed\", _6 as \"radio\", _7 as \"root\", _8 as \"selected\" }\n","import classnames from 'classnames';\nimport { DetailedHTMLProps, InputHTMLAttributes, MouseEvent, forwardRef, useCallback, useEffect, useRef } from 'react';\nimport { mergeRefs } from 'react-merge-refs';\n\nimport { Typography } from '@components/view/Typography';\nimport { useCompatId } from '@hooks/useCompatId';\nimport { RadioDeselectedIcon } from '@icons/RadioDeselectedIcon';\nimport { RadioSelectedIcon } from '@icons/RadioSelectedIcon';\nimport { CheckboxSize } from '@models/CheckboxSize';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './radioButton.module.css';\n\ninterface Props {\n label?: string;\n componentSize?: CheckboxSize;\n canUncheck?: boolean;\n onUncheck?: () => void;\n}\n\nexport const RadioButton = forwardRef<\n HTMLInputElement,\n UiProps<Props> & DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>\n>(function RadioButton(props, ref) {\n const { label, componentSize = 'medium', canUncheck, onUncheck, classes, id, onClick, ...inputProps } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const wasCheckedRef = useRef(false);\n const generatedId = useCompatId();\n const inputId = id ?? generatedId;\n\n useEffect(() => {\n const el = inputRef.current;\n if (!el) return;\n\n const mouseupListener = () => el.classList.remove(styles.pressed);\n const mousedownListener = () => {\n el.classList.add(styles.pressed);\n wasCheckedRef.current = el.checked;\n };\n\n el.addEventListener('mousedown', mousedownListener);\n el.addEventListener('mouseup', mouseupListener);\n\n return () => {\n el.removeEventListener('mousedown', mousedownListener);\n el.removeEventListener('mouseup', mouseupListener);\n };\n }, []);\n\n const handleClick = useCallback(\n (e: MouseEvent<HTMLInputElement>) => {\n if (canUncheck && wasCheckedRef.current) {\n inputRef.current!.checked = false;\n onUncheck?.();\n }\n onClick?.(e);\n },\n [canUncheck, onUncheck, onClick],\n );\n\n const typographyVariant = componentSize === 'large' ? 'subtitle1' : 'subtitle2';\n\n return (\n <div className={classnames(styles.root, classes?.root)}>\n <input\n ref={mergeRefs([inputRef, ref])}\n type=\"radio\"\n className={classnames(styles.input, classes?.input)}\n id={inputId}\n title={label}\n onClick={handleClick}\n {...inputProps}\n />\n <label htmlFor={inputId} className={classnames(styles.label, classes?.label)} title={label}>\n <span className={classnames(styles.radio, styles.deselected, classes?.radio)}>\n <RadioDeselectedIcon />\n </span>\n <span className={classnames(styles.radio, styles.selected, classes?.radio)}>\n <RadioSelectedIcon />\n </span>\n {!!label && (\n <Typography variant={typographyVariant} className={classnames(styles.labelText, classes?.labelText)}>\n {label}\n </Typography>\n )}\n </label>\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"surface-module__medium__eX1Tu\";\nvar _2 = \"surface-module__modal__CtpUb\";\nvar _3 = \"surface-module__overlay1__ZE9jx\";\nvar _4 = \"surface-module__overlay2__XHwFo\";\nvar _5 = \"surface-module__panel__WAxUP\";\nvar _6 = \"surface-module__primary__k8467\";\nvar _7 = \"surface-module__root__h8d8c\";\nvar _8 = \"surface-module__small__dHLRc\";\nexport { _1 as \"medium\", _2 as \"modal\", _3 as \"overlay1\", _4 as \"overlay2\", _5 as \"panel\", _6 as \"primary\", _7 as \"root\", _8 as \"small\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, forwardRef } from 'react';\n\nimport { SurfaceSize } from '@models/SurfaceSize';\nimport { SurfaceType } from '@models/SurfaceType';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './surface.module.css';\n\ninterface Props {\n type?: SurfaceType;\n componentSize?: SurfaceSize;\n}\n\nexport const Surface = forwardRef<HTMLDivElement, PropsWithChildren<UiProps<Props>> & HTMLAttributes<HTMLDivElement>>(\n function Surface({ type = 'primary', componentSize = 'medium', children, classes, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={classnames(\n styles.root,\n className,\n classes?.root,\n styles[type as keyof typeof styles],\n styles[componentSize as keyof typeof styles],\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import classnames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, forwardRef } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './layout.module.css';\n\ninterface Props {\n withoutHeader?: boolean;\n}\n\nexport const Layout = forwardRef<HTMLDivElement, PropsWithChildren<UiProps<Props>> & HTMLAttributes<HTMLDivElement>>(\n function Layout({ withoutHeader, children, classes, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={classnames(styles.root, !withoutHeader ? styles.withHeader : undefined, className, classes?.root)}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"layout-module__root__I9KVI\";\nvar _2 = \"layout-module__with-header___aKcB\";\nexport { _1 as \"root\", _2 as \"withHeader\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"tabs-module__disable-border__Vw9nt\";\nvar _2 = \"tabs-module__disabled__e_X85\";\nvar _3 = \"tabs-module__filled__Kzrnb\";\nvar _4 = \"tabs-module__icon-only__qDPjH\";\nvar _5 = \"tabs-module__medium__dvN0f\";\nvar _6 = \"tabs-module__root__m7YiQ\";\nvar _7 = \"tabs-module__selected__YEXTT\";\nvar _8 = \"tabs-module__selected-filled__MkMIt\";\nvar _9 = \"tabs-module__small__hiwdI\";\nvar _a = \"tabs-module__tab__NoNie\";\nvar _b = \"tabs-module__tab-border__tvFwj\";\nvar _c = \"tabs-module__tab-border-vertical__TVo15\";\nvar _d = \"tabs-module__tab-filled__Gmwpo\";\nvar _e = \"tabs-module__tab-icon__Kj5Oa\";\nvar _f = \"tabs-module__tab-title__XsuJP\";\nvar _10 = \"tabs-module__tab-vertical__WQDkd\";\nvar _11 = \"tabs-module__vertical__sPO6h\";\nexport { _1 as \"disableBorder\", _2 as \"disabled\", _3 as \"filled\", _4 as \"iconOnly\", _5 as \"medium\", _6 as \"root\", _7 as \"selected\", _8 as \"selectedFilled\", _9 as \"small\", _a as \"tab\", _b as \"tabBorder\", _c as \"tabBorderVertical\", _d as \"tabFilled\", _e as \"tabIcon\", _f as \"tabTitle\", _10 as \"tabVertical\", _11 as \"vertical\" }\n","import classnames from 'classnames';\nimport { ForwardedRef, HTMLAttributes, ReactElement, forwardRef, useEffect, useState } from 'react';\n\nimport { Tooltip } from '@components/view/Tooltip';\nimport { ChipSize } from '@models/ChipSize';\nimport { UiProps } from '@models/UiProps';\n\nimport { Item } from './models/Item';\nimport * as styles from './tabs.module.css';\n\ninterface Props<T> {\n items: Item<T>[];\n defaultSelected?: T;\n onChange?: (newValue: T) => void;\n componentSize?: ChipSize;\n filled?: boolean;\n isVertical?: boolean;\n disableBorder?: boolean;\n allowDeselect?: boolean;\n showTooltips?: boolean;\n /** Использовать внешнее состояние вместо внутреннего.\n * При включении компонент не управляет состоянием самостоятельно, а использует переданные value и onChange\n * */\n useExternalState?: boolean;\n /** Текущее значение выбранной вкладки. Используется только при useExternalState=true */\n value?: T;\n}\n\ntype TabsProps<T> = UiProps<Props<T>> & Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>;\n\n/**\n * Компонент вкладок с поддержкой как внутреннего, так и внешнего состояния\n * */\nfunction TabsInner<T>(\n {\n items,\n defaultSelected,\n onChange,\n componentSize = 'medium',\n filled = false,\n isVertical = false,\n disableBorder = false,\n allowDeselect = false,\n showTooltips = false,\n useExternalState = false,\n value,\n classes,\n className,\n ...rest\n }: TabsProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const [isMounted, setIsMounted] = useState<boolean>(false);\n const [selectedTab, setSelectedTab] = useState<T | undefined>(defaultSelected);\n\n const currentValue = useExternalState ? value : selectedTab;\n\n const handleClick = (item: Item<T>) => () => {\n if (item.isDisabled) {\n return;\n }\n\n if (item.onClick) {\n item.onClick();\n return;\n }\n\n if (useExternalState) {\n if (allowDeselect && currentValue === item.value) {\n onChange?.(undefined as T);\n } else {\n onChange?.(item.value);\n }\n } else {\n if (allowDeselect && selectedTab === item.value) {\n setSelectedTab(undefined);\n } else {\n setSelectedTab(item.value);\n }\n }\n };\n\n useEffect(() => {\n if (isMounted && !useExternalState) {\n onChange?.(selectedTab as T);\n }\n if (!isMounted) {\n setIsMounted(true);\n }\n }, [selectedTab, useExternalState]);\n\n return (\n <div\n ref={ref}\n className={classnames(\n styles.root,\n filled && styles.filled,\n isVertical && styles.vertical,\n disableBorder && styles.disableBorder,\n styles[componentSize as keyof typeof styles],\n className,\n classes?.root,\n )}\n {...rest}\n >\n {items.map((item) => {\n const isButton = !!item.onClick;\n const isSelected = !isButton && currentValue === item.value;\n\n const tabContent = (\n <div\n key={`tab-${item.value}`}\n className={classnames(\n styles.tab,\n filled && styles.tabFilled,\n isVertical && styles.tabVertical,\n disableBorder && styles.disableBorder,\n isSelected ? styles.selected : undefined,\n isSelected && filled ? styles.selectedFilled : undefined,\n item.isDisabled && styles.disabled,\n classes?.tab,\n isSelected ? classes?.tabSelected : undefined,\n item.isDisabled ? classes?.tabDisabled : undefined,\n )}\n onClick={handleClick(item)}\n >\n <div\n className={classnames(\n styles.tabTitle,\n showTooltips && item.icon && styles.iconOnly,\n classes?.tabTitle,\n isSelected ? classes?.tabSelectedTitle : undefined,\n )}\n >\n {item.icon && (\n <span className={styles.tabIcon}>\n {typeof item.icon === 'string' ? (\n <span className={styles.tabIcon} dangerouslySetInnerHTML={{ __html: item.icon }} />\n ) : (\n item.icon\n )}\n </span>\n )}\n {!showTooltips && item.name && <span title={item.name}>{item.name}</span>}\n </div>\n <div\n className={classnames(\n styles.tabBorder,\n isVertical && styles.tabBorderVertical,\n disableBorder && styles.disableBorder,\n classes?.tabBorder,\n isSelected ? classes?.tabSelectedBorder : undefined,\n )}\n ></div>\n </div>\n );\n\n if (showTooltips && item.name) {\n return (\n <Tooltip key={`tab-${item.value}`} label={item.name} placement={isVertical ? 'right' : 'top'}>\n {tabContent}\n </Tooltip>\n );\n }\n\n return tabContent;\n })}\n </div>\n );\n}\n\nexport const Tabs = forwardRef(TabsInner) as <T>(\n props: TabsProps<T> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReactElement;\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\n\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return depArgs => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps(depArgs);\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\nfunction getMemoOptions(tableOptions, debugLevel, key, onChange) {\n return {\n debug: () => {\n var _tableOptions$debugAl;\n return (_tableOptions$debugAl = tableOptions == null ? void 0 : tableOptions.debugAll) != null ? _tableOptions$debugAl : tableOptions[debugLevel];\n },\n key: process.env.NODE_ENV === 'development' && key,\n onChange\n };\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), getMemoOptions(table.options, 'debugCells', 'cell.getContext'))\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? typeof String.prototype.replaceAll === 'function' ? accessorKey.replaceAll('.', '_') : accessorKey.replace(/\\./g, '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getFlatColumns')),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, getMemoOptions(table.options, 'debugColumns', 'column.getLeafColumns'))\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to unknown, because we know more than the compiler here.\n return column;\n}\n\nconst debug = 'debugHeaders';\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, getMemoOptions(table.options, debug, 'getHeaderGroups'));\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, getMemoOptions(table.options, debug, 'getCenterHeaderGroups'));\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, getMemoOptions(table.options, debug, 'getLeftHeaderGroups'));\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, getMemoOptions(table.options, debug, 'getRightHeaderGroups'));\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getFooterGroups'));\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getLeftFooterGroups'));\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getCenterFooterGroups'));\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, getMemoOptions(table.options, debug, 'getRightFooterGroups'));\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getFlatHeaders'));\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeftFlatHeaders'));\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getCenterFlatHeaders'));\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, getMemoOptions(table.options, debug, 'getRightFlatHeaders'));\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, getMemoOptions(table.options, debug, 'getCenterLeafHeaders'));\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, getMemoOptions(table.options, debug, 'getLeftLeafHeaders'));\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, getMemoOptions(table.options, debug, 'getRightLeafHeaders'));\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, getMemoOptions(table.options, debug, 'getLeafHeaders'));\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, getMemoOptions(table.options, 'debugRows', 'getAllCells')),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, getMemoOptions(table.options, 'debugRows', 'getAllCellsByColumnId'))\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n//\n\nconst ColumnFaceting = {\n createColumn: (column, table) => {\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _filterValue$toString, _row$getValue;\n const search = filterValue == null || (_filterValue$toString = filterValue.toString()) == null ? void 0 : _filterValue$toString.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst ColumnFiltering = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousFilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousFilter ? previousFilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousFilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n },\n createRow: (row, _table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst ColumnGrouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGrouping) != null ? _table$options$enable : true) && (!!column.accessorFn || !!column.columnDef.getGroupingValue);\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst ColumnOrdering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createColumn: (column, table) => {\n column.getIndex = memo(position => [_getVisibleLeafColumns(table, position)], columns => columns.findIndex(d => d.id === column.id), getMemoOptions(table.options, 'debugColumns', 'getIndex'));\n column.getIsFirstColumn = position => {\n var _columns$;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns$ = columns[0]) == null ? void 0 : _columns$.id) === column.id;\n };\n column.getIsLastColumn = position => {\n var _columns;\n const columns = _getVisibleLeafColumns(table, position);\n return ((_columns = columns[columns.length - 1]) == null ? void 0 : _columns.id) === column.id;\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, getMemoOptions(table.options, 'debugTable', '_getOrderColumnsFn'));\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst ColumnPinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterVisibleCells'));\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getLeftVisibleCells'));\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, getMemoOptions(table.options, 'debugRows', 'getRightVisibleCells'));\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getLeftLeafColumns'));\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, getMemoOptions(table.options, 'debugColumns', 'getRightLeafColumns'));\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, getMemoOptions(table.options, 'debugColumns', 'getCenterLeafColumns'));\n }\n};\n\nfunction safelyAccessDocument(_document) {\n return _document || (typeof document !== 'undefined' ? document : null);\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n columnResizeDirection: 'ltr',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(0, column.getIndex(position)).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getStart'));\n column.getAfter = memo(position => [position, _getVisibleLeafColumns(table, position), table.getState().columnSizing], (position, columns) => columns.slice(column.getIndex(position) + 1).reduce((sum, column) => sum + column.getSize(), 0), getMemoOptions(table.options, 'debugColumns', 'getAfter'));\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = _contextDocument => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaDirection = table.options.columnResizeDirection === 'rtl' ? -1 : 1;\n const deltaOffset = (clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0)) * deltaDirection;\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const contextDocument = safelyAccessDocument(_contextDocument);\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n contextDocument == null || contextDocument.removeEventListener('mousemove', mouseEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n contextDocument == null || contextDocument.removeEventListener('touchmove', touchEvents.moveHandler);\n contextDocument == null || contextDocument.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n contextDocument == null || contextDocument.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n contextDocument == null || contextDocument.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n contextDocument == null || contextDocument.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst ColumnVisibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _ref, _table$getState$colum;\n const childColumns = column.columns;\n return (_ref = childColumns.length ? childColumns.some(c => c.getIsVisible()) : (_table$getState$colum = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum[column.id]) != null ? _ref : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, getMemoOptions(table.options, 'debugRows', '_getAllVisibleCells'));\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], getMemoOptions(table.options, 'debugRows', 'getVisibleCells'));\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, getMemoOptions(table.options, 'debugColumns', key));\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nfunction _getVisibleLeafColumns(table, position) {\n return !position ? table.getVisibleLeafColumns() : position === 'center' ? table.getCenterVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n}\n\n//\n\nconst GlobalFaceting = {\n createTable: table => {\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\n\n//\n\nconst GlobalFiltering = {\n getInitialState: state => {\n return {\n globalFilter: undefined,\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2, _table$options$getCol;\n return ((_column$columnDef$ena = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableGlobalFilter) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[globalFilterFn]) != null ? _table$options$filter : filterFns[globalFilterFn];\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n }\n};\n\n//\n\nconst RowExpanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst RowPagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n //deprecated\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, getMemoOptions(table.options, 'debugTable', 'getPageOptions'));\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.firstPage = () => {\n return table.setPageIndex(0);\n };\n table.lastPage = () => {\n return table.setPageIndex(table.getPageCount() - 1);\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getRowCount() / table.getState().pagination.pageSize);\n };\n table.getRowCount = () => {\n var _table$options$rowCou;\n return (_table$options$rowCou = table.options.rowCount) != null ? _table$options$rowCou : table.getPrePaginationRowModel().rows.length;\n };\n }\n};\n\n//\n\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst RowPinning = {\n getInitialState: state => {\n return {\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref => {\n let {\n id\n } = _ref;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref3;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref3 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref3 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _ref4, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_ref4 = position === 'top' ? table.getTopRows() : table.getBottomRows()) == null ? void 0 : _ref4.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n },\n createTable: table => {\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table._getPinnedRows = (visibleRows, pinnedRowIds, position) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n };\n table.getTopRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top], (allRows, topPinnedRowIds) => table._getPinnedRows(allRows, topPinnedRowIds, 'top'), getMemoOptions(table.options, 'debugRows', 'getTopRows'));\n table.getBottomRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.bottom], (allRows, bottomPinnedRowIds) => table._getPinnedRows(allRows, bottomPinnedRowIds, 'bottom'), getMemoOptions(table.options, 'debugRows', 'getBottomRows'));\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, getMemoOptions(table.options, 'debugRows', 'getCenterRows'));\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getSelectedRowModel'));\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredSelectedRowModel'));\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedSelectedRowModel'));\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id, true);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst RowSorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\nconst builtInFeatures = [Headers, ColumnVisibility, ColumnOrdering, ColumnPinning, ColumnFaceting, ColumnFiltering, GlobalFaceting,\n//depends on ColumnFaceting\nGlobalFiltering,\n//depends on ColumnFiltering\nRowSorting, ColumnGrouping,\n//depends on RowSorting\nRowExpanding, RowPagination, RowPinning, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$_features, _options$initialState;\n if (process.env.NODE_ENV !== 'production' && (options.debugAll || options.debugTable)) {\n console.info('Creating Table Instance...');\n }\n const _features = [...builtInFeatures, ...((_options$_features = options._features) != null ? _options$_features : [])];\n let table = {\n _features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n //in next version, we should just pass in the row model as the optional 2nd arg\n getRow: (id, searchAll) => {\n let row = (searchAll ? table.getPrePaginationRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n row = table.getCoreRowModel().rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow could not find row with ID: ${id}`);\n }\n throw new Error();\n }\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, getMemoOptions(options, 'debugColumns', '_getDefaultColumnDef')),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, getMemoOptions(options, 'debugColumns', 'getAllColumns')),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumns')),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, getMemoOptions(options, 'debugColumns', 'getAllFlatColumnsById')),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, getMemoOptions(options, 'debugColumns', 'getAllLeafColumns')),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, getMemoOptions(table.options, 'debugTable', 'getExpandedRowModel'));\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return undefined;\n const uniqueValues = facetedRowModel.flatRows.flatMap(flatRow => {\n var _flatRow$getUniqueVal;\n return (_flatRow$getUniqueVal = flatRow.getUniqueValues(columnId)) != null ? _flatRow$getUniqueVal : [];\n }).map(Number).filter(value => !Number.isNaN(value));\n if (!uniqueValues.length) return;\n let facetedMinValue = uniqueValues[0];\n let facetedMaxValue = uniqueValues[uniqueValues.length - 1];\n for (const value of uniqueValues) {\n if (value < facetedMinValue) facetedMinValue = value;else if (value > facetedMaxValue) facetedMaxValue = value;\n }\n return [facetedMinValue, facetedMaxValue];\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedMinMaxValues'));\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel'));\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, getMemoOptions(table.options, 'debugTable', `getFacetedUniqueValues_${columnId}`));\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = (columnFilters != null ? columnFilters : []).map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () => table._autoResetPageIndex()));\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n rowModel.rows.forEach(row => {\n row.depth = 0;\n row.parentId = undefined;\n });\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Perform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n subRows.forEach(subRow => {\n subRow.parentId = id;\n });\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }));\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel'));\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const sortUndefined = columnInfo.sortUndefined;\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1;\n if (sortUndefined === 'last') return aUndefined ? 1 : -1;\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () => table._autoResetPageIndex()));\n}\n\nexport { ColumnFaceting, ColumnFiltering, ColumnGrouping, ColumnOrdering, ColumnPinning, ColumnSizing, ColumnVisibility, GlobalFaceting, GlobalFiltering, Headers, RowExpanding, RowPagination, RowPinning, RowSelection, RowSorting, _getVisibleLeafColumns, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getMemoOptions, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase({\n useFlushSync = true,\n ...options\n}) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (useFlushSync && sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","export const toFirstLetterUpperCase = (name: string) => {\n return name[0].toUpperCase() + name.substring(1);\n};\n","export const defaultRowHeight = 32;\n","import classnames from 'classnames';\nimport { HTMLProps, MutableRefObject, PropsWithChildren, forwardRef, useRef } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './modal.module.css';\n\ninterface Props {\n open: boolean;\n onClose?: () => void;\n root?: HTMLElement | MutableRefObject<HTMLElement | null> | null;\n}\n\nexport const Modal = forwardRef<HTMLDivElement, PropsWithChildren<UiProps<Props> & HTMLProps<HTMLDivElement>>>(\n function Modal({ open, onClose, root = document.body, children, classes, className, onClick, ...rest }, propRef) {\n const overlayRef = useRef<HTMLDivElement>(null);\n const modalRef = useRef<HTMLDivElement | null>(null);\n\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.target === overlayRef.current || !modalRef.current?.contains(e.target as Node)) {\n e.stopPropagation();\n onClose?.();\n }\n };\n\n if (!open || !children) {\n return null;\n }\n\n const modalContent = (\n <div ref={overlayRef} className={styles.overlay} onClick={handleOverlayClick}>\n <div\n {...rest}\n ref={(node) => {\n if (node) {\n modalRef.current = node;\n }\n if (typeof propRef === 'function') {\n propRef(node);\n } else if (propRef) {\n propRef.current = node;\n }\n }}\n className={classnames(styles.modal, className, classes?.root)}\n onClick={(e) => {\n e.stopPropagation();\n onClick?.(e);\n }}\n >\n {children}\n </div>\n </div>\n );\n\n return createPortal(modalContent, root as HTMLElement);\n },\n);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"modal-module__modal__SyCF2\";\nvar _2 = \"modal-module__overlay__qGmy7\";\nexport { _1 as \"modal\", _2 as \"overlay\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"virtualTable-module__align-center__GE7hn\";\nvar _2 = \"virtualTable-module__align-left__UwmQP\";\nvar _3 = \"virtualTable-module__align-right__BgN21\";\nvar _4 = \"virtualTable-module__borders-all__4E7iX\";\nvar _5 = \"virtualTable-module__borders-horizontal__sJHrp\";\nvar _6 = \"virtualTable-module__borders-vertical__vW5hC\";\nvar _7 = \"virtualTable-module__bottom-border__Aqyxx\";\nvar _8 = \"virtualTable-module__clickable__rairY\";\nvar _9 = \"virtualTable-module__editable__vHC_D\";\nvar _a = \"virtualTable-module__error__Pc_YH\";\nvar _b = \"virtualTable-module__even-row__UtfmY\";\nvar _c = \"virtualTable-module__first-th-row__Ic3VG\";\nvar _d = \"virtualTable-module__input__URGVM\";\nvar _e = \"virtualTable-module__label__RRtAL\";\nvar _f = \"virtualTable-module__margin-left-changing__DeOwh\";\nvar _10 = \"virtualTable-module__medium__fWjBj\";\nvar _11 = \"virtualTable-module__modal-content__y8dAa\";\nvar _12 = \"virtualTable-module__right-border___sLGh\";\nvar _13 = \"virtualTable-module__root__oT8Aa\";\nvar _14 = \"virtualTable-module__row-button-trigger__qLWa9\";\nvar _15 = \"virtualTable-module__rowspan-content__uNqDw\";\nvar _16 = \"virtualTable-module__select-rows__aDhYu\";\nvar _17 = \"virtualTable-module__selected__LXpK4\";\nvar _18 = \"virtualTable-module__show-in-modal__v55Sn\";\nvar _19 = \"virtualTable-module__small__Pbe1H\";\nvar _1a = \"virtualTable-module__sticky__kLGF2\";\nvar _1b = \"virtualTable-module__success__xPKub\";\nvar _1c = \"virtualTable-module__table__GccG7\";\nvar _1d = \"virtualTable-module__table-container__Z27Uv\";\nvar _1e = \"virtualTable-module__td__INgoI\";\nvar _1f = \"virtualTable-module__th__xeEGg\";\nvar _20 = \"virtualTable-module__th-cell__r6ckx\";\nvar _21 = \"virtualTable-module__th-hidden-column__jr_ZK\";\nvar _22 = \"virtualTable-module__th-left-border__Ns0MX\";\nvar _23 = \"virtualTable-module__th-right-border__PR4eS\";\nvar _24 = \"virtualTable-module__tr__chmfp\";\nvar _25 = \"virtualTable-module__vertical-align-center__Xun5O\";\nvar _26 = \"virtualTable-module__vertical-align-flex-end__wOSxq\";\nvar _27 = \"virtualTable-module__vertical-align-flex-start__uBUX9\";\nvar _28 = \"virtualTable-module__view-cell__bXl8D\";\nvar _29 = \"virtualTable-module__view-span__HfOpN\";\nexport { _1 as \"alignCenter\", _2 as \"alignLeft\", _3 as \"alignRight\", _4 as \"bordersAll\", _5 as \"bordersHorizontal\", _6 as \"bordersVertical\", _7 as \"bottomBorder\", _8 as \"clickable\", _9 as \"editable\", _a as \"error\", _b as \"evenRow\", _c as \"firstThRow\", _d as \"input\", _e as \"label\", _f as \"marginLeftChanging\", _10 as \"medium\", _11 as \"modalContent\", _12 as \"rightBorder\", _13 as \"root\", _14 as \"rowButtonTrigger\", _15 as \"rowspanContent\", _16 as \"selectRows\", _17 as \"selected\", _18 as \"showInModal\", _19 as \"small\", _1a as \"sticky\", _1b as \"success\", _1c as \"table\", _1d as \"tableContainer\", _1e as \"td\", _1f as \"th\", _20 as \"thCell\", _21 as \"thHiddenColumn\", _22 as \"thLeftBorder\", _23 as \"thRightBorder\", _24 as \"tr\", _25 as \"verticalAlignCenter\", _26 as \"verticalAlignFlexEnd\", _27 as \"verticalAlignFlexStart\", _28 as \"viewCell\", _29 as \"viewSpan\" }\n","import { ColumnDef } from '@tanstack/react-table';\nimport classnames from 'classnames';\nimport { useEffect, useRef, useState } from 'react';\n\nimport { Input } from '@components/common/Input';\nimport { Surface } from '@components/layout/Surface/Surface';\nimport { Modal } from '@components/view/Modal';\nimport { Tooltip } from '@components/view/Tooltip/Tooltip';\n\nimport { TableRow } from '../../models/TableRow';\nimport * as styles from '../../virtualTable.module.css';\n\nexport const DefaultColumn: Partial<ColumnDef<TableRow, unknown>> = {\n cell: ({ getValue, row: { index, original }, column: { id, columnDef }, table }) => {\n const initialValue = getValue<string | number | undefined>();\n const { meta } = columnDef;\n const tableMeta = table.options.meta;\n\n const [value, setValue] = useState<string | undefined>(initialValue as string | undefined);\n const [isEdit, setIsEdit] = useState<boolean>(false);\n const [showModal, setShowModal] = useState<boolean>(false);\n\n const closeModalRef = useRef<() => void>();\n\n closeModalRef.current = () => {\n setShowModal(false);\n };\n\n useEffect(() => {\n setValue(initialValue as string | undefined);\n }, [initialValue]);\n\n const additionalViewResult = tableMeta?.additionalColumnsViews?.(id, initialValue, original[id]?.payload);\n\n if (isEdit && meta?.editable) {\n const onBlur = () => {\n tableMeta?.updateData(index, id, value, original);\n setIsEdit(false);\n };\n\n const onChange = (changeValue?: string, withBlur?: boolean) => {\n setValue(changeValue);\n if (withBlur) {\n tableMeta?.updateData(index, id, changeValue, original);\n setIsEdit(false);\n }\n };\n\n return (\n <Tooltip\n label={original[id]?.tooltip ?? ''}\n alertType={\n original[id]?.fill === 'error' ? 'error' : original[id]?.fill === 'success' ? 'success' : 'default'\n }\n >\n {additionalViewResult?.edit !== null && additionalViewResult?.edit !== undefined ? (\n additionalViewResult.edit(onChange, onBlur)\n ) : (\n <>\n <Input\n classes={{ input: styles.input }}\n componentSize=\"small\"\n variant=\"outlined\"\n onChange={(e) => onChange(e.target.value)}\n onBlur={onBlur}\n value={value ?? ''}\n type={meta.inputType}\n fullWidth\n autoFocus\n />\n </>\n )}\n </Tooltip>\n );\n }\n\n const shownValue =\n additionalViewResult?.view !== null && additionalViewResult?.view !== undefined\n ? additionalViewResult.view\n : meta?.valueFormat\n ? meta.valueFormat(initialValue)\n : meta?.toFixed !== undefined && !Number.isNaN(parseFloat(initialValue as string))\n ? parseFloat(Number(initialValue).toFixed(meta.toFixed))\n : initialValue;\n\n const hasCellAction = Boolean(meta?.editable || meta?.showInModal || (meta?.onClick && original[id]?.payload));\n\n return (\n <Tooltip\n label={original[id]?.tooltip ?? ''}\n alertType={original[id]?.fill === 'error' ? 'error' : original[id]?.fill === 'success' ? 'success' : 'default'}\n >\n <div\n className={classnames(\n styles.viewCell,\n !!meta?.rowsAlign ? styles[`align${meta?.rowsAlign}` as keyof typeof styles] : undefined,\n meta?.showInModal ? styles.showInModal : undefined,\n meta?.onClick && original[id]?.payload ? styles.clickable : undefined,\n !!original[id]?.fill ? styles[original[id].fill as keyof typeof styles] : undefined,\n !!meta?.editable ? styles.editable : undefined,\n !!meta?.verticalAlign ? styles[`verticalAlign${meta?.verticalAlign}` as keyof typeof styles] : undefined,\n )}\n {...(hasCellAction ? { 'data-vt-cell-action': '' } : undefined)}\n onClick={\n hasCellAction\n ? (event) => {\n if (event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n if (meta?.editable) {\n setIsEdit(true);\n return;\n }\n\n if (meta?.showInModal) {\n setShowModal(true);\n return;\n }\n\n if (meta?.onClick && original[id]?.payload) {\n meta.onClick(original[id]?.payload ?? {});\n }\n }\n : undefined\n }\n >\n <span className={styles.viewSpan}>{shownValue}</span>\n {showModal && (\n <Modal\n root={tableMeta?.tableContainerRef?.current}\n open={showModal}\n onClose={() => closeModalRef.current?.()}\n >\n <Surface type=\"panel\">\n <div className={styles.modalContent}>{shownValue}</div>\n </Surface>\n </Modal>\n )}\n </div>\n </Tooltip>\n );\n },\n};\n","export const alphanumericCompare = (a: string, b: string): number => {\n const aParts = a.match(/(\\d+|\\D+)/g) || [];\n const bParts = b.match(/(\\d+|\\D+)/g) || [];\n\n const maxLength = Math.max(aParts.length, bParts.length);\n\n for (let i = 0; i < maxLength; i++) {\n const aPart = aParts[i] || '';\n const bPart = bParts[i] || '';\n\n const aIsNumber = /^\\d+$/.test(aPart);\n const bIsNumber = /^\\d+$/.test(bPart);\n\n if (aIsNumber && bIsNumber) {\n const numA = parseInt(aPart, 10);\n const numB = parseInt(bPart, 10);\n if (numA !== numB) {\n return numA - numB;\n }\n } else {\n const comparison = aPart.localeCompare(bPart);\n if (comparison !== 0) {\n return comparison;\n }\n }\n }\n\n return 0;\n};\n","import classnames from 'classnames';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { Button } from '@components/common/Button';\nimport { DateTime } from '@components/common/DateTime';\nimport { Tooltip } from '@components/view/Tooltip';\nimport { CloseIcon } from '@icons/CloseIcon';\n\nimport * as styles from './dateFiltration.module.css';\n\ninterface Props {\n defaultValues?: (string | undefined)[];\n actionWithSelected: (values: (string | undefined)[]) => void;\n}\n\nexport function DateFiltration(props: Props) {\n const { defaultValues = [undefined, undefined], actionWithSelected } = props;\n const [values, setValues] = useState<(string | undefined)[]>(defaultValues);\n\n const handleChangeDates = (newValues: (string | undefined)[]) => {\n setValues(newValues);\n };\n\n useEffect(() => {\n actionWithSelected(values);\n }, [values]);\n\n const resetValues = useCallback(() => {\n setValues([undefined, undefined]);\n actionWithSelected([undefined, undefined]);\n }, []);\n\n return (\n <div className={classnames(styles.root)}>\n <DateTime\n isPeriod\n componentSize=\"small\"\n variant=\"outlined\"\n fullWidth\n values={values}\n onValueChange={handleChangeDates}\n tabIndex={-1}\n />\n <Tooltip label=\"Сбросить\">\n <Button\n onClick={resetValues}\n className={classnames(styles.button)}\n variant=\"text\"\n componentSize=\"small\"\n textSecondary\n icon={<CloseIcon />}\n />\n </Tooltip>\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"dateFiltration-module__button__kboWN\";\nvar _2 = \"dateFiltration-module__root__hOXOU\";\nexport { _1 as \"button\", _2 as \"root\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"numberFiltration-module__button__GIxRq\";\nvar _2 = \"numberFiltration-module__input___94YM\";\nvar _3 = \"numberFiltration-module__inputs-container__tjcwf\";\nvar _4 = \"numberFiltration-module__root__k2DSM\";\nvar _5 = \"numberFiltration-module__select__vQqEg\";\nexport { _1 as \"button\", _2 as \"input\", _3 as \"inputsContainer\", _4 as \"root\", _5 as \"select\" }\n","import classnames from 'classnames';\nimport { useCallback, useState } from 'react';\n\nimport { Button } from '@components/common/Button';\nimport { Input } from '@components/common/Input';\nimport { Item, MaybeItem, Select } from '@components/common/Select';\nimport { Tooltip } from '@components/view/Tooltip';\nimport { CloseIcon } from '@icons/CloseIcon';\n\nimport * as styles from './numberFiltration.module.css';\n\ninterface Props {\n defaultValues?: number[];\n actionWithSelected: (values: number[]) => void;\n}\n\nconst items: Item[] = [\n { type: 'item', name: 'От — до', value: 'range' },\n { type: 'item', name: 'Больше', value: 'more' },\n { type: 'item', name: 'Меньше', value: 'less' },\n { type: 'item', name: 'Равно', value: 'equal' },\n];\n\nexport function NumberFiltration(props: Props) {\n const { defaultValues = [-Infinity, Infinity], actionWithSelected } = props;\n\n const [selectedItem, setSelectedItem] = useState<Item>(\n defaultValues[0] === -Infinity && defaultValues[1] === Infinity\n ? items[0]\n : defaultValues[0] === defaultValues[1]\n ? items[3]\n : defaultValues[0] === -Infinity\n ? items[2]\n : defaultValues[1] === Infinity\n ? items[1]\n : items[0],\n );\n const [values, setValues] = useState<number[]>(defaultValues);\n\n const handleSelect = (item: MaybeItem) => {\n if (!!item) {\n const newValues = [...values];\n switch (item.value) {\n case 'more':\n newValues[1] = Infinity;\n break;\n case 'less':\n newValues[0] = -Infinity;\n break;\n case 'equal':\n const val = newValues[0] !== -Infinity ? newValues[0] : newValues[1];\n newValues[0] = val;\n newValues[1] = val;\n break;\n default:\n break;\n }\n setValues(newValues);\n actionWithSelected(newValues);\n setSelectedItem(item);\n }\n };\n\n const handleChangeNumber = (type: 'more' | 'less' | 'equal', value: string) => {\n setValues((prev) =>\n type === 'equal'\n ? [value.length ? +value : -Infinity, value.length ? +value : Infinity]\n : type === 'more'\n ? [value.length ? +value : -Infinity, prev[1]]\n : [prev[0], value.length ? +value : Infinity],\n );\n };\n\n const resetValues = useCallback(() => {\n setValues([-Infinity, Infinity]);\n actionWithSelected([-Infinity, Infinity]);\n }, []);\n\n return (\n <div className={classnames(styles.root)}>\n <Select\n items={items}\n componentSize=\"small\"\n variant=\"filled\"\n selected={selectedItem}\n onValueChange={handleSelect}\n classes={{ root: styles.select }}\n tabIndex={-1}\n />\n <div className={classnames(styles.inputsContainer)}>\n {selectedItem.value === 'range' ? (\n <>\n <Input\n componentSize=\"small\"\n variant=\"outlined\"\n type=\"number\"\n classes={{ root: styles.input }}\n value={values[0] > -Infinity && values[0] < Infinity ? values[0] : ''}\n onChange={(e) => {\n handleChangeNumber('more', e.target.value);\n }}\n onBlur={() => actionWithSelected(values)}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n actionWithSelected(values);\n }\n }}\n />\n <Input\n componentSize=\"small\"\n variant=\"outlined\"\n type=\"number\"\n classes={{ root: styles.input }}\n value={values[1] > -Infinity && values[1] < Infinity ? values[1] : ''}\n onChange={(e) => {\n handleChangeNumber('less', e.target.value);\n }}\n onBlur={() => actionWithSelected(values)}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n actionWithSelected(values);\n }\n }}\n />\n </>\n ) : (\n <Input\n componentSize=\"small\"\n variant=\"outlined\"\n type=\"number\"\n classes={{ root: styles.input }}\n value={\n selectedItem.value === 'more'\n ? values[0] > -Infinity && values[0] < Infinity\n ? values[0]\n : ''\n : values[1] > -Infinity && values[1] < Infinity\n ? values[1]\n : ''\n }\n onChange={(e) => {\n handleChangeNumber(selectedItem.value as 'more' | 'less' | 'equal', e.target.value);\n }}\n onBlur={() => actionWithSelected(values)}\n onKeyUp={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n actionWithSelected(values);\n }\n }}\n />\n )}\n </div>\n <Tooltip label=\"Сбросить\">\n <Button\n onClick={resetValues}\n className={classnames(styles.button)}\n variant=\"text\"\n componentSize=\"small\"\n textSecondary\n icon={<CloseIcon />}\n />\n </Tooltip>\n </div>\n );\n}\n","import { ColumnMeta } from '@tanstack/react-table';\nimport classnames from 'classnames';\nimport { Dispatch, MutableRefObject, ReactNode, SetStateAction, useMemo } from 'react';\n\nimport { Button } from '@components/common/Button';\nimport { Item, SelectedItems } from '@components/common/Checklist';\nimport { Checklist } from '@components/common/Checklist/Checklist';\nimport { Menu, Divider as MenuDivider, Item as MenuItem } from '@components/navigation/Menu';\nimport { Popover } from '@components/view/Popover/Popover';\nimport { Tooltip } from '@components/view/Tooltip/Tooltip';\nimport { useTranslation } from '@hooks/useTranslation';\nimport { ArrowDropDownIcon, FilterIcon, SelectUniqueIcon, SortDownIcon, SortUpIcon } from '@icons/index';\n\nimport * as styles from './headerDropdown.module.css';\nimport { FilterBy } from '../../models/FilterBy';\nimport { SortBy } from '../../models/SortBy';\nimport { TableRow } from '../../models/TableRow';\nimport { alphanumericCompare } from '../../utils/alphanumericCompare';\nimport { DateFiltration } from '../DateFiltration';\nimport { NumberFiltration } from '../NumberFiltration';\n\ninterface HeaderDropdownProps {\n headerMeta: ColumnMeta<TableRow, unknown>;\n sortBy: SortBy[];\n setSortBy: Dispatch<SetStateAction<SortBy[]>>;\n filterBy: FilterBy[];\n setFilterBy: Dispatch<SetStateAction<FilterBy[]>>;\n headerName: string;\n rows: TableRow[];\n rowsForUniqueCount?: TableRow[];\n containerRef?: HTMLElement | MutableRefObject<HTMLElement | null> | null;\n showUniqueValuesCount?: boolean;\n leftAdditionalContent?: (headerName: string) => ReactNode;\n rightAdditionalContent?: (headerName: string) => ReactNode;\n children?: (afterNode?: ReactNode) => ReactNode;\n}\n\nexport function HeaderDropdown(props: HeaderDropdownProps) {\n const {\n headerMeta: {\n sortable = false,\n selectUnique = false,\n sortType,\n sortAnotherName,\n filtrationByNumber = false,\n filtrationByDate = false,\n filtrationByValue = false,\n valueFormat,\n toFixed,\n },\n sortBy,\n setSortBy,\n filterBy,\n setFilterBy,\n headerName,\n containerRef,\n showUniqueValuesCount,\n leftAdditionalContent,\n rightAdditionalContent,\n children,\n rows,\n rowsForUniqueCount,\n } = props;\n\n const headerResultName = sortAnotherName ?? headerName;\n\n const filterItems = useMemo(() => {\n // rows приходят из VirtualTable: для колонки без фильтра — все текущие фильтры,\n // для колонки с фильтром — строки «до добавления» фильтра этой колонки (по порядку в filterBy).\n const checklistItems = rows\n .map(\n (i) =>\n ({\n name: i[headerResultName]\n ? valueFormat\n ? valueFormat(i[headerResultName].value)\n : toFixed !== undefined && !Number.isNaN(parseFloat(i[headerResultName].value as string))\n ? parseFloat(Number(i[headerResultName].value).toFixed(toFixed)).toString()\n : i[headerResultName].value?.toString() || '< нет значения >'\n : '< нет значения >',\n value: i[headerResultName]?.value?.toString() || '',\n }) as Item,\n )\n .sort((a, b) => {\n const aName = a.name.toString();\n const bName = b.name.toString();\n const noValue = '< нет значения >';\n\n if (aName === noValue) return -1;\n if (bName === noValue) return 1;\n\n return alphanumericCompare(aName, bName);\n });\n\n const uniqueChecklistItems = [\n ...checklistItems\n .reduce((a, c) => {\n a.set(c.value, c);\n return a;\n }, new Map<string, Item>())\n .values(),\n ];\n\n return uniqueChecklistItems;\n }, [rows, headerResultName, valueFormat, toFixed]);\n\n const uniqueValuesCount = useMemo(() => {\n const sourceRows = rowsForUniqueCount ?? rows;\n const unique = new Set<string>();\n\n sourceRows.forEach((sr) => {\n const cell = sr?.[headerResultName];\n unique.add(cell ? (cell.value ?? '')?.toString() : '');\n });\n\n const valueFilter = filterBy.find((fb) => fb.columnName === headerResultName && fb.type === 'value');\n const selected = (valueFilter?.values ?? []).map((v) => (v ?? '')?.toString());\n\n // Для отфильтрованных по значениям колонок показываем не \"все уникальные\",\n // а только количество выбранных значений, которые реально присутствуют в итоговой выдаче.\n if (selected.length > 0) {\n const selectedSet = new Set(selected);\n let count = 0;\n unique.forEach((u) => {\n if (selectedSet.has(u)) count += 1;\n });\n return count;\n }\n\n return unique.size;\n }, [rowsForUniqueCount, rows, headerResultName, filterBy]);\n\n const filterSelectedItems = useMemo(() => {\n const result: SelectedItems = {};\n filterBy\n .find((fb) => fb.columnName === headerResultName)\n ?.values.forEach((v) => {\n result[v] = true;\n });\n return result;\n }, [filterBy, headerResultName]);\n\n const filterNumbers = useMemo(() => {\n return filterBy.find((fb) => fb.columnName === headerResultName && fb.type === 'numberRange')?.values as\n | number[]\n | undefined;\n }, [filterBy, headerResultName]);\n\n const filterDates = useMemo(() => {\n return filterBy.find((fb) => fb.columnName === headerResultName && fb.type === 'dateRange')?.values as\n | string[]\n | undefined;\n }, [filterBy, headerResultName]);\n\n const handleSortClick = (direction: 'asc' | 'desc') => () => {\n setSortBy((prev) => {\n if (prev.some((p) => p.columnName === headerResultName && p.direction === direction)) {\n return prev.filter((p) => !(p.columnName === headerResultName && p.direction === direction));\n } else {\n if (prev.some((p) => p.columnName === headerResultName)) {\n return prev.map((p) => (p.columnName === headerResultName ? { ...p, direction } : { ...p }));\n } else {\n return prev.concat([{ columnName: headerResultName, direction, sortType }]);\n }\n }\n });\n };\n\n const actionWithSelectedNumbers = (values: number[]) => {\n setFilterBy((prev) => {\n if (values[0] === -Infinity && values[1] === Infinity) {\n return [...prev.filter((p) => !(p.columnName === headerResultName && p.type === 'numberRange'))];\n } else {\n const newResult = [...prev];\n const existIndex = newResult.findIndex((p) => p.columnName === headerResultName && p.type === 'numberRange');\n if (existIndex !== -1) {\n newResult[existIndex] = { ...newResult[existIndex], values };\n } else {\n newResult.push({\n columnName: headerResultName,\n type: 'numberRange',\n values,\n });\n }\n return newResult;\n }\n });\n };\n\n const actionWithSelectedDates = (values: (string | undefined)[]) => {\n setFilterBy((prev) => {\n if (values[0] === undefined || values[1] === undefined) {\n return [...prev.filter((p) => !(p.columnName === headerResultName && p.type === 'dateRange'))];\n } else {\n const newResult = [...prev];\n const existIndex = newResult.findIndex((p) => p.columnName === headerResultName && p.type === 'dateRange');\n if (existIndex !== -1) {\n newResult[existIndex] = { ...newResult[existIndex], values: values as string[] };\n } else {\n newResult.push({\n columnName: headerResultName,\n type: 'dateRange',\n values: values as string[],\n });\n }\n return newResult;\n }\n });\n };\n\n const actionWithSelectedObjects = (selected: SelectedItems) => {\n Object.entries(selected).forEach(([key, value]) => {\n if (!value) {\n delete selected[key];\n }\n });\n const selectedValues = Object.keys(selected);\n setFilterBy((prev) => {\n if (selectedValues.length === 0) {\n return prev\n .map((p) => {\n if (p.columnName !== headerResultName || p.type !== 'value') {\n return p;\n }\n return p.uniqueFirstPerValue ? { ...p, values: [] } : null;\n })\n .filter((p): p is FilterBy => p !== null);\n }\n const newResult = [...prev];\n const existIndex = newResult.findIndex((p) => p.columnName === headerResultName && p.type === 'value');\n if (existIndex !== -1) {\n newResult[existIndex] = { ...newResult[existIndex], values: selectedValues };\n } else {\n newResult.push({ columnName: headerResultName, type: 'value', values: selectedValues });\n }\n return newResult;\n });\n };\n\n const uniqueFirstPerValue = filterBy.some(\n (fb) => fb.columnName === headerResultName && fb.type === 'value' && fb.uniqueFirstPerValue,\n );\n\n const toggleUniqueFirstPerValue = () => {\n setFilterBy((prev) => {\n const existIndex = prev.findIndex((p) => p.columnName === headerResultName && p.type === 'value');\n if (existIndex !== -1) {\n const current = prev[existIndex];\n const nextFlag = !current.uniqueFirstPerValue;\n if (!nextFlag && current.values.length === 0) {\n return prev.filter((_, i) => i !== existIndex);\n }\n return prev.map((p, i) => {\n if (i !== existIndex) {\n return p;\n }\n if (nextFlag) {\n return { ...p, uniqueFirstPerValue: true };\n }\n return { columnName: p.columnName, type: p.type, values: p.values };\n });\n }\n return [...prev, { columnName: headerResultName, type: 'value', values: [], uniqueFirstPerValue: true }];\n });\n };\n\n const hasAnyFilter = Object.keys(filterSelectedItems).length > 0 || uniqueFirstPerValue;\n const sortUp = sortBy.some((sb) => sb.columnName === headerResultName && sb.direction === 'desc');\n const sortDown = sortBy.some((sb) => sb.columnName === headerResultName && sb.direction === 'asc');\n\n const { t } = useTranslation();\n\n const headerActionMenuItems: (MenuItem | MenuDivider)[] = [];\n if (selectUnique) {\n headerActionMenuItems.push({ type: 'divider', name: t('Уникальность значений') });\n headerActionMenuItems.push({\n type: 'item',\n name: t('Только уникальные'),\n icon: <SelectUniqueIcon />,\n selected: uniqueFirstPerValue,\n onClick: toggleUniqueFirstPerValue,\n });\n }\n if (sortable) {\n headerActionMenuItems.push({ type: 'divider', name: t('Сортировка') });\n headerActionMenuItems.push({\n type: 'item',\n name: t('По возрастанию'),\n icon: <SortDownIcon />,\n selected: sortBy.some((sb) => sb.columnName === headerResultName && sb.direction === 'asc'),\n onClick: handleSortClick('asc'),\n });\n headerActionMenuItems.push({\n type: 'item',\n name: t('По убыванию'),\n icon: <SortUpIcon />,\n selected: sortBy.some((sb) => sb.columnName === headerResultName && sb.direction === 'desc'),\n onClick: handleSortClick('desc'),\n });\n }\n\n return (\n <div className={classnames(styles.root)}>\n {leftAdditionalContent?.(headerResultName)}\n {children?.(showUniqueValuesCount && <div>{`(${uniqueValuesCount})`}</div>)}\n {rightAdditionalContent?.(headerResultName)}\n {(sortable || selectUnique || filtrationByValue || filtrationByDate || filtrationByNumber) && (\n <Popover\n placement=\"bottom-end\"\n wrapTrigger\n root={containerRef}\n description={\n <>\n {filtrationByNumber && (\n <NumberFiltration defaultValues={filterNumbers} actionWithSelected={actionWithSelectedNumbers} />\n )}\n {filtrationByDate && (\n <DateFiltration defaultValues={filterDates} actionWithSelected={actionWithSelectedDates} />\n )}\n {filtrationByValue && (\n <div className={classnames(styles.checklistWrap)}>\n <Checklist\n items={filterItems}\n selected={filterSelectedItems}\n actionWithSelected={actionWithSelectedObjects}\n />\n </div>\n )}\n {(sortable || selectUnique) && (\n <div>\n <Menu items={headerActionMenuItems} />\n </div>\n )}\n </>\n }\n >\n <Tooltip label={t('Сортировка и фильтрация')} placement=\"bottom-end\" root={containerRef}>\n <Button\n componentSize=\"small\"\n variant=\"text\"\n textSecondary={!hasAnyFilter && !sortUp && !sortDown}\n icon={\n hasAnyFilter ? (\n <FilterIcon />\n ) : sortUp ? (\n <SortUpIcon />\n ) : sortDown ? (\n <SortDownIcon />\n ) : (\n <ArrowDropDownIcon />\n )\n }\n />\n </Tooltip>\n </Popover>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nvar _1 = \"headerDropdown-module__checklist-wrap__7C0pz\";\nvar _2 = \"headerDropdown-module__icon-button__gzyjH\";\nvar _3 = \"headerDropdown-module__root__vO30T\";\nexport { _1 as \"checklistWrap\", _2 as \"iconButton\", _3 as \"root\" }\n","import { TableRow } from '../models/TableRow';\n\nexport function dedupeFirstByColumnValue(rows: TableRow[], columnName: string): TableRow[] {\n const seen = new Set<string>();\n const result: TableRow[] = [];\n\n rows.forEach((row) => {\n const key = row[columnName] ? (row[columnName].value || '')?.toString() : '';\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n result.push(row);\n });\n\n return result;\n}\n","import { ColumnDef, ColumnMeta } from '@tanstack/react-table';\n\nimport { TableColumn } from '../models/TableColumn';\nimport { TableRow } from '../models/TableRow';\n\nconst createMeta = (column?: TableColumn): ColumnMeta<TableRow, unknown> | undefined => {\n if (column) {\n return {\n editable: column.editable,\n sortable: column.sortable,\n sortType: column.sortType,\n sortAnotherName: column.sortAnotherName,\n filtrationByNumber: column.filtrationByNumber,\n filtrationByDate: column.filtrationByDate,\n filtrationByValue: column.filtrationByValue,\n selectUnique: column.selectUnique,\n width: column.width,\n headerAlign: column.headerAlign,\n rowsAlign: column.rowsAlign,\n valueFormat: column.valueFormat,\n showInModal: column.showInModal,\n onClick: column.onClick,\n label: column.label,\n verticalAlign: column.verticalAlign,\n toFixed: column.toFixed,\n inputType: column.inputType,\n };\n }\n};\n\nexport const getColumns = (columns: TableColumn[], parent?: TableColumn): ColumnDef<TableRow>[] => {\n return columns.map((column) => ({\n id: column.id,\n accessorKey: column.accessorKey,\n accessorFn: column.accessorKey ? (row) => row[column.accessorKey!]?.value : undefined,\n header: () => column.label,\n meta: createMeta(!!parent?.accessorKey ? parent : column),\n columns: column.columns ? getColumns(column.columns, column) : undefined,\n }));\n};\n","import { Header } from '@tanstack/react-table';\n\nimport { TableRow } from '../models/TableRow';\n\nexport const getNextHorizontalHeaders = (\n headers: Header<TableRow, unknown>[],\n currentIndex: number,\n lastVirtualColumnIndex: number,\n): Header<TableRow, unknown>[] => {\n if (\n headers[currentIndex + 1] &&\n headers[currentIndex].column.columnDef.id === headers[currentIndex + 1].column.columnDef.id &&\n currentIndex < lastVirtualColumnIndex\n ) {\n const result: Header<TableRow, unknown>[] = [headers[currentIndex + 1]];\n\n return result.concat(getNextHorizontalHeaders(headers, currentIndex + 1, lastVirtualColumnIndex));\n }\n\n return [];\n};\n","import { Header, HeaderGroup } from '@tanstack/react-table';\n\nimport { TableRow } from '../models/TableRow';\n\nexport const getPrevVerticalHeaders = (\n headersGroups: HeaderGroup<TableRow>[],\n groupIndex: number,\n columnIndex: number,\n): Header<TableRow, unknown>[] => {\n if (\n headersGroups[groupIndex - 1] &&\n !headersGroups[groupIndex - 1].headers[columnIndex].column.columnDef.meta?.label &&\n headersGroups[groupIndex - 1].headers[columnIndex].column.columnDef.id !==\n headersGroups[groupIndex].headers[columnIndex].column.columnDef.id\n ) {\n const result: Header<TableRow, unknown>[] = [headersGroups[groupIndex - 1].headers[columnIndex]];\n\n return result.concat(getPrevVerticalHeaders(headersGroups, groupIndex - 1, columnIndex));\n }\n\n return [];\n};\n","import { Header, HeaderGroup } from '@tanstack/react-table';\n\nimport { getPrevVerticalHeaders } from './getPrevVerticalHeaders';\nimport { TableRow } from '../models/TableRow';\n\nexport const getNextVerticalHeaders = (\n headersGroups: HeaderGroup<TableRow>[],\n groupIndex: number,\n columnIndex: number,\n): Header<TableRow, unknown>[] => {\n if (headersGroups[groupIndex + 1] && getPrevVerticalHeaders(headersGroups, groupIndex + 1, columnIndex).length) {\n const result: Header<TableRow, unknown>[] = [headersGroups[groupIndex + 1].headers[columnIndex]];\n\n return result.concat(getNextVerticalHeaders(headersGroups, groupIndex + 1, columnIndex));\n }\n\n return [];\n};\n","import { Header } from '@tanstack/react-table';\n\nimport { TableRow } from '../models/TableRow';\n\nexport const getPrevHorizontalHeaders = (\n headers: Header<TableRow, unknown>[],\n currentIndex: number,\n): Header<TableRow, unknown>[] => {\n if (\n headers[currentIndex - 1] &&\n headers[currentIndex - 1].column.columnDef.id === headers[currentIndex].column.columnDef.id\n ) {\n const result: Header<TableRow, unknown>[] = [headers[currentIndex - 1]];\n\n return result.concat(getPrevHorizontalHeaders(headers, currentIndex - 1));\n }\n\n return [];\n};\n","import dayjs from 'dayjs';\n\nimport { FilterBy } from '../models/FilterBy';\nimport { TableRow } from '../models/TableRow';\n\nexport function rowMatchesFilter(row: TableRow, filterByItem: FilterBy): boolean {\n const cell = row[filterByItem.columnName];\n const cellValue = cell?.value;\n\n if (filterByItem.type === 'dateRange') {\n const startDate = dayjs((filterByItem.values as string[])[0]);\n const endDate = dayjs((filterByItem.values as string[])[1]);\n\n if (!startDate.isValid() || !endDate.isValid()) {\n return false;\n }\n\n if (cellValue === undefined || cellValue === null || cellValue === '') {\n return false;\n }\n\n const dateValue = dayjs(cellValue as string);\n\n if (!dateValue.isValid()) {\n return false;\n }\n\n return !dateValue.isBefore(startDate, 'day') && !dateValue.isAfter(endDate, 'day');\n }\n\n if (!cell) {\n return filterByItem.values.includes('');\n }\n\n if (filterByItem.type === 'numberRange') {\n return (\n (cellValue as number) >= (filterByItem.values as number[])[0] &&\n (cellValue as number) <= (filterByItem.values as number[])[1]\n );\n }\n\n return filterByItem.values.includes((cellValue || '')?.toString());\n}\n","import { rowMatchesFilter } from './rowMatchesFilter';\nimport { FilterBy } from '../models/FilterBy';\nimport { TableRow } from '../models/TableRow';\n\nexport const recursiveFilter = (rows: TableRow[], filterBy: FilterBy[]): TableRow[] => {\n if (filterBy.length) {\n const filterByItem = filterBy[filterBy.length - 1];\n const filtered = filterByItem.values.length\n ? rows.filter((row) => rowMatchesFilter(row, filterByItem) || row.isNew?.value === 1)\n : rows;\n return recursiveFilter(filtered, filterBy.slice(0, filterBy.length - 1));\n }\n\n return rows;\n};\n","import { alphanumericCompare } from './alphanumericCompare';\nimport { SortBy } from '../models/SortBy';\nimport { TableRow } from '../models/TableRow';\n\nexport const recursiveSort = (items: TableRow[], sortBy: SortBy[]): TableRow[] => {\n if (sortBy.length) {\n const sortByItem = sortBy[sortBy.length - 1];\n const sorted = items.sort((a, b) => {\n const aValue = a[sortByItem.columnName]?.value?.toString() ?? '';\n const bValue = b[sortByItem.columnName]?.value?.toString() ?? '';\n\n if (sortByItem.sortType === 'alphanumeric') {\n const compare = alphanumericCompare(aValue, bValue);\n return sortByItem.direction === 'asc' ? compare : -compare;\n }\n\n const compare = aValue.localeCompare(bValue);\n return sortByItem.direction === 'asc' ? compare : -compare;\n });\n return recursiveSort(sorted, sortBy.slice(0, sortBy.length - 1));\n }\n\n return items;\n};\n","import { TableRow } from '../models/TableRow';\n\nexport interface RowSelectionGesture {\n startIndex: number;\n currentIndex: number;\n ctrl: boolean;\n shift: boolean;\n anchorIndex: number | null;\n baseIndexes: Set<number>;\n isDrag: boolean;\n}\n\nexport const getIndexRange = (from: number, to: number): number[] => {\n const start = Math.min(from, to);\n const end = Math.max(from, to);\n const result: number[] = [];\n\n for (let index = start; index <= end; index += 1) {\n result.push(index);\n }\n\n return result;\n};\n\nexport const computeRowSelection = (gesture: RowSelectionGesture): { indexes: Set<number>; anchor: number | null } => {\n const { startIndex, currentIndex, ctrl, shift, anchorIndex, baseIndexes, isDrag } = gesture;\n\n if (shift && anchorIndex !== null) {\n const range = getIndexRange(anchorIndex, currentIndex);\n\n return {\n indexes: ctrl ? new Set([...baseIndexes, ...range]) : new Set(range),\n anchor: anchorIndex,\n };\n }\n\n if (isDrag) {\n const range = getIndexRange(startIndex, currentIndex);\n\n return {\n indexes: ctrl ? new Set([...baseIndexes, ...range]) : new Set(range),\n anchor: startIndex,\n };\n }\n\n if (ctrl) {\n const next = new Set(baseIndexes);\n\n if (next.has(startIndex)) {\n next.delete(startIndex);\n } else {\n next.add(startIndex);\n }\n\n return { indexes: next, anchor: startIndex };\n }\n\n if (baseIndexes.size === 1 && baseIndexes.has(startIndex)) {\n return { indexes: new Set(), anchor: null };\n }\n\n return { indexes: new Set([startIndex]), anchor: startIndex };\n};\n\nexport const isInteractiveSelectionTarget = (target: EventTarget | null): boolean => {\n if (!(target instanceof Element)) {\n return false;\n }\n\n return Boolean(\n target.closest(\n [\n 'button',\n 'a',\n 'input',\n 'textarea',\n 'select',\n '[role=\"menuitem\"]',\n '[role=\"menu\"]',\n '[role=\"listbox\"]',\n '[role=\"dialog\"]',\n '[data-floating-ui-portal]',\n '[contenteditable=\"true\"]',\n ].join(', '),\n ),\n );\n};\n\nexport const isScrollbarPointerEvent = (event: {\n clientX: number;\n clientY: number;\n target: EventTarget | null;\n currentTarget: EventTarget;\n}): boolean => {\n const container = event.currentTarget;\n if (!(container instanceof HTMLElement) || event.target !== container) {\n return false;\n }\n\n const rect = container.getBoundingClientRect();\n const offsetX = event.clientX - rect.left;\n const offsetY = event.clientY - rect.top;\n const onVerticalScrollbar = container.offsetWidth - container.clientWidth > 0 && offsetX >= container.clientWidth;\n const onHorizontalScrollbar =\n container.offsetHeight - container.clientHeight > 0 && offsetY >= container.clientHeight;\n\n return onVerticalScrollbar || onHorizontalScrollbar;\n};\n\nexport const getSelectedIndexesByRows = (source: TableRow[], selectedRows: TableRow[]): Set<number> => {\n if (selectedRows.length === 0) {\n return new Set();\n }\n\n const selectedSet = new Set(selectedRows);\n const nextIndexes = new Set<number>();\n\n source.forEach((row, index) => {\n if (selectedSet.has(row)) {\n nextIndexes.add(index);\n }\n });\n\n return nextIndexes;\n};\n","import { Header, flexRender, getCoreRowModel, useReactTable } from '@tanstack/react-table';\nimport { Range, defaultRangeExtractor, useVirtualizer } from '@tanstack/react-virtual';\nimport classnames from 'classnames';\nimport dayjs from 'dayjs';\nimport {\n Fragment,\n JSX,\n ReactNode,\n PointerEvent as ReactPointerEvent,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { Button } from '@components/common/Button';\nimport { Tooltip } from '@components/view/Tooltip';\nimport { ChipSize } from '@models/ChipSize';\nimport { UiProps } from '@models/UiProps';\nimport { toFirstLetterUpperCase } from '@utils/index';\n\nimport { defaultRowHeight } from './constants/defaultRowHeight';\nimport { AdditionalButton } from './models/AdditionalButton';\nimport { FilterBy } from './models/FilterBy';\nimport { SortBy } from './models/SortBy';\nimport { TableCell } from './models/TableCell';\nimport { TableColumn } from './models/TableColumn';\nimport { TableRow } from './models/TableRow';\nimport { VirtualTableBorders } from './models/VirtualTableBorders';\nimport { VirtualTableRef } from './models/VirtualTableRef';\nimport { DefaultColumn } from './ui/DefaultColumn';\nimport { HeaderDropdown } from './ui/HeaderDropdown';\nimport { dedupeFirstByColumnValue } from './utils/dedupeFirstByColumnValue';\nimport { getColumns } from './utils/getColumns';\nimport { getNextHorizontalHeaders } from './utils/getNextHorizontalHeaders';\nimport { getNextVerticalHeaders } from './utils/getNextVerticalHeaders';\nimport { getPrevHorizontalHeaders } from './utils/getPrevHorizontalHeaders';\nimport { getPrevVerticalHeaders } from './utils/getPrevVerticalHeaders';\nimport { recursiveFilter } from './utils/recursiveFilter';\nimport { recursiveSort } from './utils/recursiveSort';\nimport { rowMatchesFilter } from './utils/rowMatchesFilter';\nimport {\n computeRowSelection,\n getSelectedIndexesByRows,\n isInteractiveSelectionTarget,\n isScrollbarPointerEvent,\n} from './utils/rowSelection';\nimport * as styles from './virtualTable.module.css';\n\nconst rowSelectionDragThresholdPx = 4;\nconst rowSelectionScrollEdgePx = 32;\nconst rowSelectionScrollStepPx = 20;\n\ntype Size = ChipSize;\n\ninterface Props {\n /** Строки таблицы */\n rows: TableRow[];\n /** Описание колонок (заголовки, сортировка, фильтрация, форматирование) */\n columns: TableColumn[];\n /** Кастомный рендер ячеек: view — режим просмотра, edit — режим редактирования */\n additionalColumnsViews?: (\n id: string,\n value: string | number | undefined,\n payload: { [key: string]: string } | undefined,\n ) => {\n edit:\n | ((onChange: (changeValue?: string, withBlur?: boolean) => void, onBlur: () => void) => JSX.Element | null)\n | null;\n view: JSX.Element | null;\n };\n /** Колбэк при изменении значения редактируемой ячейки */\n onChangeCell?: (rowIndex: number, columnId: string, value: string | number | undefined, original?: TableRow) => void;\n /** Функция расчёта ширины колонки по индексу; по умолчанию — meta.width колонки или 200 px */\n cellWidth?: (columnIndex: number) => number;\n /** Кнопки действий в правой части каждой строки */\n rowButtons?: ((original: TableRow) => AdditionalButton[]) | undefined;\n /** Количество левых колонок, закреплённых при горизонтальной прокрутке */\n fixedColumnsCount?: number;\n /** Высота строк заголовка в пикселях (по одному значению на уровень вложенности) */\n headerRowHeight?: number[];\n /** Высота строки тела таблицы в пикселях */\n bodyRowHeight?: number;\n /** Ширина колонки с кнопками действий строки */\n rowActionWidth?: number;\n /** Автоматически измерять высоту строк по содержимому (для многострочного текста) */\n dynamicRowHeight?: boolean;\n /** Фиксированная высота контейнера таблицы в пикселях */\n height?: number;\n /** Прокрутить таблицу к последней строке при монтировании/обновлении */\n scrollToBottom?: boolean;\n /** Рендерить попапы фильтрации/сортировки внутри контейнера таблицы (важно для overflow и вкладок) */\n useTableContainerAsRootForPopup?: boolean;\n /** Размер компонента: small | medium | large */\n componentSize?: Size;\n /** Стиль границ ячеек: all | horizontal | vertical | none */\n borders?: VirtualTableBorders;\n /** Показывать в заголовке количество уникальных значений столбца */\n showUniqueValuesCount?: boolean;\n /** Начальные фильтры (управляемый режим — через onFiltersChange) */\n globalFilters?: FilterBy[];\n /** Начальные сортировки (управляемый режим — через onSortsChange) */\n globalSorts?: SortBy[];\n /** Колбэк при изменении активных фильтров пользователем */\n onFiltersChange?: (filters: FilterBy[]) => void;\n /** Колбэк при изменении активных сортировок (без внутренней сортировки по isNew) */\n onSortsChange?: (sorts: SortBy[]) => void;\n /** Дополнительный контент слева от заголовка колонки (например, кнопка синхронизации с картой) */\n leftAdditionalHeaderContent?: (headerName: string) => ReactNode;\n /** Дополнительный контент справа от заголовка колонки, перед кнопкой фильтрации */\n rightAdditionalHeaderContent?: (headerName: string) => ReactNode;\n /** Добавить закреплённую колонку с порядковыми номерами строк */\n showRowsNumbers?: boolean;\n /** Чередовать фон строк (zebra); по умолчанию true */\n stripedRows?: boolean;\n /** Включить выделение строк мышью (Ctrl — точечно, Shift — диапазон, drag — несколько подряд) */\n enableSelectRows?: boolean;\n /** Колбэк при изменении набора выделенных строк; передаются полные данные строк в порядке отображения */\n onSelectRowsChange?: (rows: TableRow[]) => void;\n /** Начальное выделение строк (те же объекты, что в rows; управляемый режим — через onSelectRowsChange) */\n globalSelectedRows?: TableRow[];\n}\n\ninterface SelectionDragState {\n pointerId: number;\n startIndex: number;\n startX: number;\n startY: number;\n baseIndexes: Set<number>;\n ctrl: boolean;\n shift: boolean;\n anchorIndex: number | null;\n isDragCapable: boolean;\n hasDragged: boolean;\n}\n\nexport const VirtualTable = forwardRef<VirtualTableRef, UiProps<Props>>((props, ref) => {\n const {\n rows,\n columns,\n additionalColumnsViews,\n onChangeCell,\n cellWidth,\n rowButtons,\n fixedColumnsCount = 0,\n headerRowHeight = [defaultRowHeight],\n bodyRowHeight = defaultRowHeight,\n rowActionWidth = 77,\n classes,\n dynamicRowHeight = false,\n height,\n scrollToBottom,\n useTableContainerAsRootForPopup,\n componentSize = 'small',\n borders = 'horizontal',\n showUniqueValuesCount = false,\n globalFilters,\n globalSorts,\n onFiltersChange,\n onSortsChange,\n leftAdditionalHeaderContent,\n rightAdditionalHeaderContent,\n showRowsNumbers,\n stripedRows = true,\n enableSelectRows = false,\n onSelectRowsChange,\n globalSelectedRows,\n } = props;\n\n const fixedWithNumbersCount = fixedColumnsCount + (showRowsNumbers ? 1 : 0);\n\n const [filterBy, setFilterBy] = useState<FilterBy[]>(globalFilters ?? []);\n const [sortBy, setSortBy] = useState<SortBy[]>([...(globalSorts ?? []), { columnName: 'isNew', direction: 'desc' }]);\n const [selectedIndexes, setSelectedIndexes] = useState<Set<number>>(() => new Set());\n\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const selectedIndexesRef = useRef(selectedIndexes);\n const selectedRowsRef = useRef<TableRow[]>(enableSelectRows ? (globalSelectedRows ?? []) : []);\n const processedRowsRef = useRef<TableRow[]>([]);\n const lastSelectedIndexRef = useRef<number | null>(null);\n const lastSelectedRowRef = useRef<TableRow | null>(null);\n const selectionDragRef = useRef<SelectionDragState | null>(null);\n const onSelectRowsChangeRef = useRef(onSelectRowsChange);\n const enableSelectRowsRef = useRef(enableSelectRows);\n\n selectedIndexesRef.current = selectedIndexes;\n onSelectRowsChangeRef.current = onSelectRowsChange;\n enableSelectRowsRef.current = enableSelectRows;\n\n const rowNumberColumnId = useMemo(() => (showRowsNumbers ? `rowNumber_${uuidv4()}` : null), [showRowsNumbers]);\n\n const memoizedColumns = useMemo(() => {\n if (!rowNumberColumnId) {\n return getColumns(columns);\n }\n\n const buildRowsNumbersColumn = (template?: TableColumn): TableColumn => ({\n id: rowNumberColumnId,\n ...(!template?.columns?.length ? { accessorKey: rowNumberColumnId } : undefined),\n label: '#',\n columns: template?.columns?.map((child) => buildRowsNumbersColumn(child)),\n });\n\n const nextColumns = [buildRowsNumbersColumn(columns[0]), ...columns];\n const result = getColumns(nextColumns);\n\n return result;\n }, [columns, rowNumberColumnId]);\n\n const processedRows = useMemo(() => {\n const newRows = [...rows];\n // При переключении объета может возникнуть случай, когда у\n // новых строк не будет ранее выбранных значений из фильтра\n const nextFilterBy = filterBy.filter((filterByItem) => {\n if (filterByItem.type === 'value' && filterByItem.uniqueFirstPerValue && filterByItem.values.length === 0) {\n return true;\n }\n\n return rows.some((row) => rowMatchesFilter(row, filterByItem));\n });\n const filtered = nextFilterBy.length\n ? recursiveFilter(newRows, nextFilterBy)\n : filterBy.some(\n (fb) =>\n (fb.type === 'numberRange' && fb.values.some((v) => v !== Infinity && v !== -Infinity)) ||\n (fb.type === 'dateRange' &&\n fb.values.some((v) => !dayjs(v).isSame(dayjs(0)) && !dayjs(v).isSame(dayjs(Number.MAX_SAFE_INTEGER)))),\n )\n ? []\n : newRows;\n let sorted = sortBy.length ? recursiveSort(filtered, sortBy) : filtered;\n\n for (const fb of nextFilterBy) {\n if (fb.type === 'value' && fb.uniqueFirstPerValue) {\n sorted = dedupeFirstByColumnValue(sorted, fb.columnName);\n }\n }\n\n return sorted;\n }, [rows, sortBy, filterBy]);\n\n const memoizedData = useMemo(() => {\n const result = rowNumberColumnId\n ? processedRows.map((row, index) => ({\n ...row,\n [rowNumberColumnId]: {\n value: index + 1,\n },\n }))\n : processedRows;\n\n window.dispatchEvent(\n new CustomEvent('filteringRows', {\n detail: result,\n }),\n );\n return result;\n }, [processedRows, rowNumberColumnId]);\n\n processedRowsRef.current = processedRows;\n\n const emitSelection = useCallback((indexes: Set<number>, anchorIndex: number | null) => {\n const source = processedRowsRef.current;\n const orderedIndexes = [...indexes].filter((index) => index >= 0 && index < source.length).sort((a, b) => a - b);\n const nextIndexes = new Set(orderedIndexes);\n const nextRows = orderedIndexes.map((index) => source[index]);\n const previousIndexes = selectedIndexesRef.current;\n const sameSelection =\n nextIndexes.size === previousIndexes.size && orderedIndexes.every((index) => previousIndexes.has(index));\n\n if (!sameSelection) {\n setSelectedIndexes(nextIndexes);\n selectedIndexesRef.current = nextIndexes;\n selectedRowsRef.current = nextRows;\n onSelectRowsChangeRef.current?.(nextRows);\n }\n\n if (anchorIndex !== null && source[anchorIndex]) {\n lastSelectedIndexRef.current = anchorIndex;\n lastSelectedRowRef.current = source[anchorIndex];\n } else if (anchorIndex === null) {\n lastSelectedIndexRef.current = null;\n lastSelectedRowRef.current = null;\n }\n }, []);\n\n useEffect(() => {\n const lastSelectedRow = lastSelectedRowRef.current;\n if (lastSelectedRow) {\n const nextAnchorIndex = processedRows.indexOf(lastSelectedRow);\n lastSelectedIndexRef.current = nextAnchorIndex === -1 ? null : nextAnchorIndex;\n if (nextAnchorIndex === -1) {\n lastSelectedRowRef.current = null;\n }\n }\n\n if (selectedRowsRef.current.length === 0) {\n if (selectedIndexesRef.current.size > 0) {\n emitSelection(new Set(), lastSelectedIndexRef.current);\n }\n return;\n }\n\n const nextIndexes = getSelectedIndexesByRows(processedRows, selectedRowsRef.current);\n const fallbackAnchor = nextIndexes.size > 0 ? Math.max(...nextIndexes) : null;\n\n emitSelection(nextIndexes, lastSelectedIndexRef.current ?? fallbackAnchor);\n }, [processedRows, emitSelection]);\n\n useEffect(() => {\n if (!enableSelectRows && selectedIndexesRef.current.size > 0) {\n emitSelection(new Set(), null);\n }\n }, [enableSelectRows, emitSelection]);\n\n const partialFiltered = useMemo(() => {\n const newRows = [...rows];\n return Array.from({ length: filterBy.length + 1 }, (_, i) => recursiveFilter(newRows, filterBy.slice(0, i)));\n }, [rows, filterBy]);\n\n const columnsEstimateSize = useMemo(\n () =>\n cellWidth ??\n ((index: number) =>\n rowNumberColumnId && index === 0\n ? memoizedData.length.toString().length * 8 + 24\n : (memoizedColumns[index]?.meta?.width ?? 200)),\n [cellWidth, memoizedColumns, memoizedData, rowNumberColumnId],\n );\n\n const table = useReactTable({\n data: memoizedData,\n columns: memoizedColumns,\n defaultColumn: DefaultColumn,\n manualSorting: true,\n enableColumnPinning: true,\n getCoreRowModel: getCoreRowModel(),\n initialState: {\n columnPinning: {\n left:\n memoizedColumns\n .filter((_, index) => index < fixedWithNumbersCount)\n .map((mc) => mc.id)\n .filter((id) => id)\n .map((id) => id!) ?? [],\n },\n },\n meta: {\n updateData: (rowIndex: number, columnId: string, value: string | number | undefined, original?: TableRow) => {\n onChangeCell?.(rowIndex, columnId, value, original);\n },\n tableContainerRef,\n additionalColumnsViews,\n },\n });\n\n const { rows: rowsFromTable } = table.getRowModel();\n const headerGroups = table.getHeaderGroups();\n\n const rowVirtualizer = useVirtualizer({\n count: rowsFromTable.length,\n getScrollElement: () => tableContainerRef?.current,\n estimateSize: () => bodyRowHeight,\n overscan: 5,\n });\n\n const columnVirtualizer = useVirtualizer({\n horizontal: true,\n count: headerGroups[0]?.headers.length ?? 1,\n rangeExtractor: useCallback((range: Range) => {\n const stickyIndexes = [...Array(fixedWithNumbersCount)].map((_, index) => index);\n const next = new Set([...stickyIndexes, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n }, []),\n getScrollElement: () => tableContainerRef?.current,\n estimateSize: columnsEstimateSize,\n overscan: 5,\n });\n\n const fixedColumnsWidth = useMemo(\n () => [...Array(fixedWithNumbersCount)].reduce((sum: number, _, index) => sum + columnsEstimateSize(index), 0),\n [fixedWithNumbersCount, columnsEstimateSize],\n );\n\n const headerGroupHeight = useMemo(() => {\n const delta = headerGroups.length - headerRowHeight.length;\n const result = [...headerRowHeight];\n if (delta > 0) {\n for (let i = 0; i < delta; i++) {\n result.push(defaultRowHeight);\n }\n }\n\n return result;\n }, [headerRowHeight, headerGroups]);\n\n const summaryHeaderHeight = useMemo(\n () =>\n headerGroupHeight.reduce(\n (sum, current, currentIndex) => (currentIndex < headerGroups.length ? sum + current : sum),\n 0,\n ),\n [headerGroupHeight, headerGroups],\n );\n\n const headerGroupY = useCallback(\n (headerIndex: number) =>\n headerGroupHeight.reduce((sum, current, currentIndex) => (currentIndex < headerIndex ? sum + current : sum), 0),\n [headerGroupHeight, headerGroups],\n );\n\n const rowsTotalSize = rowVirtualizer.getTotalSize();\n const columnsTotalSize = columnVirtualizer.getTotalSize();\n\n const resetFilters = () => {\n setFilterBy([]);\n };\n\n const resetSorts = () => {\n setSortBy([{ columnName: 'isNew', direction: 'desc' }]);\n };\n\n useImperativeHandle(ref, () => ({\n resetFilters,\n resetSorts,\n }));\n\n useEffect(() => {\n if (tableContainerRef?.current) {\n const container = tableContainerRef?.current;\n const rightBorderElement = container.querySelector(`.${styles.rightBorder}`);\n if (rightBorderElement) {\n const containerWidth = container.clientWidth;\n const tableWidth = columnsTotalSize + (!!rowButtons ? rowActionWidth : 0);\n (rightBorderElement as HTMLElement).style.left =\n `${containerWidth > tableWidth ? tableWidth : containerWidth}px`;\n }\n }\n }, [tableContainerRef?.current?.clientWidth, columnsTotalSize, rowButtons, rowActionWidth]);\n\n useEffect(() => {\n if (tableContainerRef?.current) {\n const container = tableContainerRef?.current;\n const bottomBorderElement = container.querySelector(`.${styles.bottomBorder}`);\n if (bottomBorderElement) {\n const containerHeight = container.clientHeight;\n const tableHeight = rowsTotalSize + summaryHeaderHeight;\n (bottomBorderElement as HTMLElement).style.top =\n `${containerHeight > tableHeight ? tableHeight : containerHeight}px`;\n }\n }\n }, [tableContainerRef?.current?.clientHeight, rowsTotalSize]);\n\n useEffect(() => {\n const scrollListener = function (this: HTMLDivElement) {\n const marginLeftChangingElements = this.querySelectorAll(`.${styles.marginLeftChanging}`);\n marginLeftChangingElements?.forEach(\n (element) => ((element as HTMLElement).style.marginLeft = `${this.scrollLeft}px`),\n );\n };\n\n if (tableContainerRef?.current) {\n tableContainerRef.current.addEventListener('scroll', scrollListener);\n if (scrollToBottom) {\n tableContainerRef.current.scrollTo(0, tableContainerRef.current.scrollHeight);\n }\n }\n\n return () => {\n if (tableContainerRef?.current) {\n tableContainerRef.current.removeEventListener('scroll', scrollListener);\n }\n };\n }, [tableContainerRef, scrollToBottom]);\n\n const virtualRows = rowVirtualizer.getVirtualItems();\n const virtualColumns = columnVirtualizer.getVirtualItems();\n const lastVirtualColumnIndex = virtualColumns[virtualColumns.length - 1]?.index;\n const virtualRowsSizeByIndex = useMemo(\n () => new Map(virtualRows.map((item) => [item.index, item.size])),\n [virtualRows],\n );\n\n const getRowSizeByIndex = useCallback(\n (index: number) => virtualRowsSizeByIndex.get(index) ?? bodyRowHeight,\n [bodyRowHeight, virtualRowsSizeByIndex],\n );\n\n const getRowspanHeight = useCallback(\n (rowIndex: number, rowspan: number) => {\n const clampedRowspan = Math.max(1, Math.floor(rowspan));\n const lastRowIndex = Math.min(rowsFromTable.length - 1, rowIndex + clampedRowspan - 1);\n const rowsInRange = lastRowIndex - rowIndex + 1;\n\n let result = 0;\n\n for (let index = rowIndex; index <= lastRowIndex; index += 1) {\n result += getRowSizeByIndex(index);\n }\n\n const bordersCompensation = borders === 'all' || borders === 'horizontal' ? Math.max(0, rowsInRange - 1) : 0;\n\n return Math.max(0, result - bordersCompensation);\n },\n [borders, getRowSizeByIndex, rowsFromTable.length],\n );\n\n const isCellCoveredByRowspan = useCallback(\n (rowIndex: number, columnId: string) => {\n for (let index = rowIndex - 1; index >= 0; index -= 1) {\n const upperCell = rowsFromTable[index]?.original?.[columnId] as TableCell | undefined;\n const upperRowspan = Math.max(1, upperCell?.rowspan ?? 1);\n\n if (index + upperRowspan - 1 >= rowIndex) {\n return true;\n }\n }\n\n return false;\n },\n [rowsFromTable],\n );\n\n const getRowIndexFromTarget = (target: EventTarget | null): number | null => {\n if (!(target instanceof Element)) {\n return null;\n }\n\n const rowElement = target.closest(`.${styles.tr}`);\n if (!rowElement) {\n return null;\n }\n\n const index = Number(rowElement.getAttribute('data-index'));\n return Number.isFinite(index) ? index : null;\n };\n\n const getRowIndexFromClientY = useCallback(\n (clientY: number): number | null => {\n const container = tableContainerRef.current;\n const rowsCount = processedRowsRef.current.length;\n if (!container || rowsCount === 0) {\n return null;\n }\n\n const rect = container.getBoundingClientRect();\n const offset = clientY - rect.top + container.scrollTop - summaryHeaderHeight;\n\n if (offset < 0) {\n return 0;\n }\n\n const totalSize = rowVirtualizer.getTotalSize();\n if (offset >= totalSize) {\n return rowsCount - 1;\n }\n\n const measurements = rowVirtualizer.measurementsCache;\n if (measurements.length > 0) {\n let low = 0;\n let high = measurements.length - 1;\n\n while (low <= high) {\n const mid = (low + high) >> 1;\n const item = measurements[mid];\n\n if (offset < item.start) {\n high = mid - 1;\n } else if (offset >= item.end) {\n low = mid + 1;\n } else {\n return Math.min(rowsCount - 1, item.index);\n }\n }\n }\n\n if (!dynamicRowHeight) {\n return Math.max(0, Math.min(rowsCount - 1, Math.floor(offset / bodyRowHeight)));\n }\n\n const virtualItems = rowVirtualizer.getVirtualItems();\n if (virtualItems.length === 0) {\n return 0;\n }\n\n if (offset < virtualItems[0].start) {\n return virtualItems[0].index;\n }\n\n return virtualItems[virtualItems.length - 1].index;\n },\n [bodyRowHeight, dynamicRowHeight, rowVirtualizer, summaryHeaderHeight],\n );\n\n const scrollContainerWhileSelecting = (clientY: number) => {\n const container = tableContainerRef.current;\n if (!container) {\n return;\n }\n\n const rect = container.getBoundingClientRect();\n const visibleY = clientY - rect.top;\n\n if (visibleY < rowSelectionScrollEdgePx + summaryHeaderHeight) {\n container.scrollTop -= rowSelectionScrollStepPx;\n } else if (visibleY > rect.height - rowSelectionScrollEdgePx) {\n container.scrollTop += rowSelectionScrollStepPx;\n }\n };\n\n const applySelectionGesture = (currentIndex: number, isDrag: boolean) => {\n const drag = selectionDragRef.current;\n if (!drag) {\n return;\n }\n\n const result = computeRowSelection({\n startIndex: drag.startIndex,\n currentIndex,\n ctrl: drag.ctrl,\n shift: drag.shift,\n anchorIndex: drag.anchorIndex,\n baseIndexes: drag.baseIndexes,\n isDrag,\n });\n\n emitSelection(result.indexes, result.anchor);\n };\n\n const handleTablePointerDown = (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!enableSelectRowsRef.current || event.button !== 0) {\n return;\n }\n\n const rowIndex = getRowIndexFromTarget(event.target);\n if (rowIndex === null) {\n if (\n isInteractiveSelectionTarget(event.target) ||\n isScrollbarPointerEvent(event) ||\n (event.target instanceof Element && Boolean(event.target.closest(`.${styles.th}`)))\n ) {\n return;\n }\n\n if (selectedIndexesRef.current.size > 0) {\n emitSelection(new Set(), null);\n }\n\n return;\n }\n\n if (isInteractiveSelectionTarget(event.target)) {\n return;\n }\n\n const isCellActionTarget =\n event.target instanceof Element && event.target.closest('[data-vt-cell-action]') !== null;\n const isModifierClick = event.ctrlKey || event.metaKey || event.shiftKey;\n\n if (isCellActionTarget && !isModifierClick) {\n return;\n }\n\n const isDragCapable = event.pointerType === 'mouse' || event.pointerType === 'pen';\n\n selectionDragRef.current = {\n pointerId: event.pointerId,\n startIndex: rowIndex,\n startX: event.clientX,\n startY: event.clientY,\n baseIndexes: new Set(selectedIndexesRef.current),\n ctrl: event.ctrlKey || event.metaKey,\n shift: event.shiftKey,\n anchorIndex: lastSelectedIndexRef.current,\n isDragCapable: isDragCapable && !isCellActionTarget,\n hasDragged: false,\n };\n\n if (isCellActionTarget) {\n applySelectionGesture(rowIndex, false);\n return;\n }\n\n if (isDragCapable) {\n event.currentTarget.setPointerCapture(event.pointerId);\n applySelectionGesture(rowIndex, false);\n }\n };\n\n const handleTablePointerMove = (event: ReactPointerEvent<HTMLDivElement>) => {\n const drag = selectionDragRef.current;\n if (!drag || !drag.isDragCapable || event.pointerId !== drag.pointerId) {\n return;\n }\n\n const deltaX = event.clientX - drag.startX;\n const deltaY = event.clientY - drag.startY;\n const distanceSquared = deltaX * deltaX + deltaY * deltaY;\n if (!drag.hasDragged && distanceSquared < rowSelectionDragThresholdPx * rowSelectionDragThresholdPx) {\n return;\n }\n\n drag.hasDragged = true;\n event.preventDefault();\n scrollContainerWhileSelecting(event.clientY);\n\n const currentIndex = getRowIndexFromClientY(event.clientY);\n if (currentIndex === null) {\n return;\n }\n\n applySelectionGesture(currentIndex, true);\n };\n\n const clearSelectionDrag = (event: ReactPointerEvent<HTMLDivElement>) => {\n const drag = selectionDragRef.current;\n if (!drag || event.pointerId !== drag.pointerId) {\n return;\n }\n\n if (!drag.isDragCapable && !drag.hasDragged) {\n applySelectionGesture(drag.startIndex, false);\n }\n\n selectionDragRef.current = null;\n\n if (event.currentTarget.hasPointerCapture(event.pointerId)) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n }\n };\n\n const getRowBackgroundColor = useCallback(\n (row: TableRow, rowIndex: number) => {\n if (row?.isNew?.value === 1 || selectedIndexes.has(rowIndex)) {\n return 'var(--theme-table-selected-row)';\n }\n\n return rowIndex % 2 !== 0 ? 'var(--theme-table-even-row)' : 'var(--theme-table-background)';\n },\n [selectedIndexes],\n );\n const rowZIndexByIndex = useMemo(() => {\n const rowsCount = rowsFromTable.length;\n const result = new Map<number, number>();\n\n rowsFromTable.forEach((row, rowIndex) => {\n const maxRowspan = row\n .getAllCells()\n .reduce(\n (maxSpan, cell) =>\n Math.max(maxSpan, Math.max(1, (row.original?.[cell.column.id] as TableCell | undefined)?.rowspan ?? 1)),\n 1,\n );\n\n const spanWeight = maxRowspan - 1;\n const zIndex = spanWeight * (rowsCount + 1) + (rowsCount - rowIndex + 1);\n\n result.set(rowIndex, zIndex);\n });\n\n return result;\n }, [rowsFromTable]);\n const headerBaseZIndex = useMemo(\n () => rowsFromTable.length * rowsFromTable.length + rowsFromTable.length + 10,\n [rowsFromTable.length],\n );\n\n const renderHeaderNode = (header: Header<TableRow, unknown>) => {\n const metaLabel = (header.column.columnDef.meta as { label?: string } | undefined)?.label;\n\n if (typeof metaLabel === 'string') {\n const headerLines = metaLabel.split(/\\r\\n|\\\\r\\\\n|\\n|\\\\n/);\n\n if (headerLines.length > 1) {\n return (\n <>\n {headerLines.map((line, index) => (\n <Fragment key={`${header.id}_${index}`}>\n {line}\n {index < headerLines.length - 1 && <br />}\n </Fragment>\n ))}\n </>\n );\n }\n }\n\n return flexRender(header.column.columnDef.header, header.getContext());\n };\n\n const [before, after] =\n virtualColumns.length > 0\n ? [\n fixedWithNumbersCount && virtualColumns[fixedWithNumbersCount].index !== fixedWithNumbersCount\n ? virtualColumns[fixedWithNumbersCount].start - fixedColumnsWidth\n : virtualColumns[0].start,\n columnsTotalSize - virtualColumns[virtualColumns.length - 1].end,\n ]\n : [0, 0];\n\n useEffect(() => {\n onFiltersChange?.(filterBy);\n }, [filterBy]);\n\n useEffect(() => {\n onSortsChange?.(sortBy.filter((sb) => sb.columnName !== 'isNew'));\n }, [sortBy]);\n\n return (\n <div\n className={classnames(\n styles.root,\n styles[componentSize as keyof typeof styles],\n styles[`borders${toFirstLetterUpperCase(borders)}` as keyof typeof styles],\n classes?.root,\n )}\n style={height ? { height } : undefined}\n >\n <div\n ref={tableContainerRef}\n className={classnames(styles.tableContainer, 'styledScroll', enableSelectRows && styles.selectRows)}\n onPointerDown={enableSelectRows ? handleTablePointerDown : undefined}\n onPointerMove={enableSelectRows ? handleTablePointerMove : undefined}\n onPointerUp={enableSelectRows ? clearSelectionDrag : undefined}\n onPointerCancel={enableSelectRows ? clearSelectionDrag : undefined}\n onDragStart={enableSelectRows ? (event) => event.preventDefault() : undefined}\n >\n <div\n className={styles.table}\n style={{\n height: `${rowsTotalSize + summaryHeaderHeight}px`,\n }}\n >\n <div\n style={{\n position: 'sticky',\n top: 0,\n zIndex: headerBaseZIndex,\n }}\n >\n {headerGroups.map((headerGroup, hgi) => {\n const innerCell = (header: Header<TableRow, unknown>) => {\n const headerMeta = header.column.columnDef.meta;\n const headerResultName =\n (headerMeta as { sortAnotherName?: string } | undefined)?.sortAnotherName ??\n header.column.columnDef.id ??\n header.id;\n const columnFilterIndex = filterBy.findIndex((fb) => fb.columnName === headerResultName);\n const rowsForChecklist = columnFilterIndex === -1 ? memoizedData : partialFiltered[columnFilterIndex];\n\n return (\n <div className={classnames(styles.thCell)}>\n {header.column.columnDef.id ===\n header.column.columnDef['accessorKey' as keyof typeof header.column.columnDef] &&\n header.column.columnDef.id !== rowNumberColumnId &&\n (headerMeta?.sortable ||\n headerMeta?.selectUnique ||\n headerMeta?.filtrationByValue ||\n headerMeta?.filtrationByDate ||\n headerMeta?.filtrationByNumber ||\n (headerMeta && showUniqueValuesCount)) ? (\n <HeaderDropdown\n headerMeta={headerMeta}\n sortBy={sortBy}\n setSortBy={setSortBy}\n filterBy={filterBy}\n setFilterBy={setFilterBy}\n rows={rowsForChecklist}\n rowsForUniqueCount={memoizedData}\n headerName={header.column.columnDef.id ?? header.id}\n containerRef={useTableContainerAsRootForPopup ? tableContainerRef : undefined}\n showUniqueValuesCount={showUniqueValuesCount}\n leftAdditionalContent={leftAdditionalHeaderContent}\n rightAdditionalContent={rightAdditionalHeaderContent}\n children={(afterNode) => (\n <div\n className={classnames(\n styles.label,\n !!headerMeta?.headerAlign\n ? styles[`align${headerMeta?.headerAlign}` as keyof typeof styles]\n : styles.alignLeft,\n )}\n >\n {renderHeaderNode(header)}\n {afterNode}\n </div>\n )}\n ></HeaderDropdown>\n ) : (\n <div\n className={classnames(\n styles.label,\n !!headerMeta?.headerAlign\n ? styles[`align${headerMeta?.headerAlign}` as keyof typeof styles]\n : styles.alignLeft,\n )}\n >\n {renderHeaderNode(header)}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <Fragment key={headerGroup.id}>\n {[...Array(fixedWithNumbersCount)].map((_a, index) => {\n const header = headerGroup.headers[index];\n\n const nextHorizontalHeaders = getNextHorizontalHeaders(\n headerGroup.headers,\n index,\n lastVirtualColumnIndex,\n );\n const nextVerticalHeaders = getNextVerticalHeaders(headerGroups, hgi, index);\n\n return (\n <div\n key={`${headerGroup.id}-${header.id}`}\n className={classnames(\n styles.th,\n hgi === 0 ? styles.firstThRow : undefined,\n !nextVerticalHeaders.length &&\n index !== headerGroup.headers.length - 1 &&\n styles.thRightBorder,\n index === 0 && styles.thLeftBorder,\n nextVerticalHeaders.length && !nextHorizontalHeaders.length && styles.thHiddenColumn,\n styles.marginLeftChanging,\n )}\n style={{\n zIndex: headerBaseZIndex + 1,\n width: `${columnsEstimateSize(index)}px`,\n height: `${headerGroupHeight[hgi]}px`,\n transform:\n `translateX(` +\n `${Array.from({ length: index }, (_, i) => columnsEstimateSize(i)).reduce(\n (sum, w) => sum + w,\n 0,\n )}px` +\n `) ` +\n `translateY(${headerGroupY(hgi)}px)`,\n }}\n >\n {innerCell(header)}\n </div>\n );\n })}\n\n {virtualColumns.map((column) => {\n if (column.index > fixedWithNumbersCount - 1) {\n const header = headerGroup.headers[column.index];\n const nextHorizontalHeaders = getNextHorizontalHeaders(\n headerGroup.headers,\n column.index,\n lastVirtualColumnIndex,\n );\n const prevHorizontalHeaders = getPrevHorizontalHeaders(headerGroup.headers, column.index);\n const nextVerticalHeaders = getNextVerticalHeaders(headerGroups, hgi, column.index);\n const prevVerticalHeaders = getPrevVerticalHeaders(headerGroups, hgi, column.index);\n\n const thWidth =\n !nextHorizontalHeaders.length && !prevHorizontalHeaders.length\n ? column.size\n : column.size +\n nextHorizontalHeaders.reduce(\n (sum, current) => sum + (current.column.columnDef.meta?.width ?? 0),\n 0,\n );\n const zIndex =\n !nextHorizontalHeaders.length && !prevHorizontalHeaders.length\n ? undefined\n : headerBaseZIndex + nextHorizontalHeaders.length + 2;\n const thHeight = !prevVerticalHeaders.length\n ? headerGroupHeight[hgi]\n : headerGroupHeight[hgi] +\n prevVerticalHeaders.reduce(\n (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),\n 0,\n );\n const translateY = !prevVerticalHeaders.length\n ? headerGroupY(hgi)\n : headerGroupY(hgi) -\n prevVerticalHeaders.reduce(\n (sum, _, index) => sum + (headerGroupHeight[hgi - index - 1] ?? 0),\n 0,\n );\n\n return (\n <div\n key={`${headerGroup.id}-${header.id}`}\n className={classnames(\n styles.th,\n hgi === 0 && styles.firstThRow,\n !nextVerticalHeaders.length &&\n column.index !== headerGroup.headers.length - 1 &&\n styles.thRightBorder,\n column.index === 0 && styles.thLeftBorder,\n nextVerticalHeaders.length && !nextHorizontalHeaders.length && styles.thHiddenColumn,\n )}\n style={{\n width: `${thWidth}px`,\n zIndex,\n height: `${thHeight}px`,\n transform:\n `translateX(${column.start + (!!fixedWithNumbersCount ? -1 : 0)}px)` +\n ` translateY(${translateY}px)`,\n borderTop:\n borders !== 'none' && translateY === 0 ? '1px solid var(--border-color)' : undefined,\n }}\n >\n {innerCell(header)}\n </div>\n );\n }\n return null;\n })}\n\n {!!rowButtons && (\n <div\n className={classnames(styles.th, hgi === 0 ? styles.firstThRow : undefined)}\n style={{\n width: `${rowActionWidth}px`,\n height: `${headerGroupHeight[hgi]}px`,\n transform:\n `translateX(${columnsTotalSize + (!!fixedWithNumbersCount ? -2 : 0)}px)` +\n ` translateY(${headerGroupY(hgi)}px)`,\n }}\n ></div>\n )}\n </Fragment>\n );\n })}\n </div>\n\n {virtualRows.map((virtualRow) => {\n const row = rowsFromTable[virtualRow.index];\n\n return (\n <div\n key={`row-${virtualRow.key}`}\n data-index={virtualRow.index}\n ref={dynamicRowHeight ? rowVirtualizer.measureElement : undefined}\n className={classnames(\n styles.tr,\n stripedRows && virtualRow.index % 2 !== 0 && styles.evenRow,\n (row.original?.isNew?.value === 1 || selectedIndexes.has(virtualRow.index)) && styles.selected,\n )}\n style={{\n zIndex: rowZIndexByIndex.get(virtualRow.index) ?? 1,\n ...(!dynamicRowHeight && {\n height: virtualRow.size,\n }),\n transform:\n `translateY(` +\n `${summaryHeaderHeight + virtualRow.start - rowVirtualizer.options.scrollMargin}` +\n `px)`,\n }}\n >\n <div style={{ width: `${before}px` }} />\n\n {virtualColumns.map((virtualCol) => {\n const cell = row.getAllCells()[virtualCol.index];\n const isSticky = cell.column.getIsPinned() === 'left';\n const currentCell = row.original?.[cell.column.id] as TableCell | undefined;\n const rowspan = Math.max(1, currentCell?.rowspan ?? 1);\n const isCoveredByRowspan = isCellCoveredByRowspan(virtualRow.index, cell.column.id);\n const hasRowspan = rowspan > 1 && !isCoveredByRowspan;\n\n return (\n <div\n key={`cell-${virtualRow.key}-${virtualCol.key}`}\n data-col-index={virtualCol.index}\n className={classnames(styles.td, isSticky && styles.sticky)}\n style={{\n ...(isSticky && {\n left: virtualCol.start,\n marginLeft: virtualCol.index === 0 ? -1 : 0, // чтобы появился левый бордер\n }),\n width: `${virtualCol.size}px`,\n ...(!dynamicRowHeight &&\n !hasRowspan && {\n overflow: 'hidden',\n }),\n }}\n data-index={virtualRow.index}\n >\n {!isCoveredByRowspan &&\n (hasRowspan ? (\n <div\n className={styles.rowspanContent}\n style={{\n height: `${getRowspanHeight(virtualRow.index, rowspan)}px`,\n backgroundColor: getRowBackgroundColor(row.original, virtualRow.index),\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </div>\n ) : (\n flexRender(cell.column.columnDef.cell, cell.getContext())\n ))}\n </div>\n );\n })}\n\n {!!rowButtons && (\n <div\n className={classnames(styles.td)}\n style={{\n width: `${rowActionWidth}px`,\n justifyContent: 'flex-start',\n padding: '4px',\n ...(!dynamicRowHeight && {\n overflow: 'hidden',\n }),\n }}\n >\n {rowButtons?.(row.original)?.map((ab) => (\n <Fragment key={ab.title}>\n {ab.template ? (\n ab.template(ab)\n ) : (\n <Tooltip\n label={ab.title}\n placement=\"top\"\n wrapTrigger\n classes={{ trigger: styles.rowButtonTrigger }}\n >\n <Button\n onClick={() => ab.onClick?.(virtualRow.index, row.original)}\n componentSize=\"small\"\n variant=\"text\"\n icon={ab.icon}\n ></Button>\n </Tooltip>\n )}\n </Fragment>\n ))}\n </div>\n )}\n\n <div style={{ width: `${after}px` }} />\n </div>\n );\n })}\n </div>\n {borders !== 'none' && (\n <>\n <div className={styles.rightBorder} style={{ height: `${rowsTotalSize + summaryHeaderHeight}px` }} />\n <div className={styles.bottomBorder} style={{ width: `${columnsTotalSize}px` }} />\n </>\n )}\n </div>\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"treeView-module__search__CptHY\";\nexport { _1 as \"search\" }\n","// extracted by mini-css-extract-plugin\nvar _1 = \"treeViewItem-module__children__SBb_p\";\nvar _2 = \"treeViewItem-module__item__Ddenr\";\nvar _3 = \"treeViewItem-module__select-icon__Ma7T6\";\nvar _4 = \"treeViewItem-module__selectable__ZnWqc\";\nvar _5 = \"treeViewItem-module__selected__uwOfq\";\nvar _6 = \"treeViewItem-module__title___JZMU\";\nexport { _1 as \"children\", _2 as \"item\", _3 as \"selectIcon\", _4 as \"selectable\", _5 as \"selected\", _6 as \"title\" }\n","import classNames from 'classnames';\nimport { JSX, memo, useEffect, useState } from 'react';\n\nimport { AddIcon, ChevronDownIcon, DoneIcon } from '@icons/index';\n\nimport * as styles from './treeViewItem.module.css';\nimport { Typography } from '../../../Typography';\nimport { Item } from '../../models/Item';\n\ninterface Props {\n title: string;\n value: string;\n searchValue: string;\n selected: Record<string, boolean>;\n onSelect?: (id: string) => void;\n type?: string;\n isSelectable?: boolean;\n startIcons?: Record<string, JSX.Element>;\n children?: Item[];\n}\n\nexport default memo(function TreeViewItem({\n title,\n value,\n searchValue,\n selected,\n onSelect,\n type,\n isSelectable,\n startIcons,\n children,\n}: Props) {\n const [isOpen, setIsOpen] = useState(false);\n\n useEffect(() => {\n setIsOpen(!!searchValue);\n }, [searchValue]);\n\n const hasChildren = !!children?.length;\n\n const startIcon = type && startIcons?.[type];\n\n const handleClick = () => {\n if (isSelectable && onSelect) {\n onSelect(value);\n } else {\n setIsOpen(!isOpen);\n }\n };\n\n const isSelected = selected[value];\n\n return (\n <div>\n <div className={classNames(styles.item, { [styles.selectable]: isSelectable })} onClick={handleClick}>\n {hasChildren && <ChevronDownIcon />}\n <div className={classNames(styles.title, { [styles.selected]: isSelected })}>\n {startIcon}\n <Typography variant=\"subtitle2\">{title}</Typography>\n\n {isSelectable && <span className={styles.selectIcon}>{isSelected ? <DoneIcon /> : <AddIcon />}</span>}\n </div>\n </div>\n {isOpen && hasChildren && (\n <div className={styles.children}>\n {children.map((c) => (\n <TreeViewItem\n key={c.id}\n title={c.name}\n value={c.id}\n children={c.children}\n selected={selected}\n searchValue={searchValue}\n type={c.type}\n isSelectable={c.isSelectable}\n startIcons={startIcons}\n onSelect={onSelect}\n />\n ))}\n </div>\n )}\n </div>\n );\n});\n","import { Item } from '../models/Item';\n\nexport const getFilteredTree = (tree: Item[], search: string) => {\n const lowerCasedSearch = search.toLowerCase();\n\n const getChildren = (acc: Item[], cur: Item) => {\n if (cur.name.toLowerCase().includes(lowerCasedSearch)) {\n acc.push(cur);\n\n return acc;\n }\n\n if (Array.isArray(cur.children)) {\n const children = cur.children.reduce(getChildren, []);\n\n if (children.length) acc.push({ ...cur, children });\n }\n\n return acc;\n };\n\n return tree.reduce(getChildren, []);\n};\n","import { ChangeEvent, HTMLAttributes, JSX, forwardRef, memo, useCallback, useMemo, useState } from 'react';\n\nimport { Input } from '@components/common/Input';\nimport { SearchIcon } from '@icons/SearchIcon';\n\nimport { Item } from './models/Item';\nimport * as styles from './treeView.module.css';\nimport { TreeViewItem } from './ui/TreeViewItem';\nimport { getFilteredTree } from './utils/getFilteredTree';\n\ninterface Props {\n data: Item[];\n selected: string[];\n startIcons?: Record<string, JSX.Element>;\n withSearch?: boolean;\n onSelect?: (id: string) => void;\n}\n\nconst TreeView = forwardRef<HTMLDivElement, Props & HTMLAttributes<HTMLDivElement>>(function TreeView(\n { data, selected, startIcons, onSelect, withSearch = false, className, ...rest },\n ref,\n) {\n const [searchValue, setSearchValue] = useState('');\n\n const onChangeSearchValue = useCallback((e: ChangeEvent<HTMLInputElement>) => setSearchValue(e.target.value), []);\n\n const selectedValues = useMemo(\n () =>\n selected.reduce(\n (acc, cur) => {\n acc[cur] = true;\n\n return acc;\n },\n {} as Record<string, boolean>,\n ),\n [selected],\n );\n\n const filteredData = useMemo(() => {\n return getFilteredTree(data, searchValue);\n }, [data, searchValue]);\n\n return (\n <div ref={ref} className={className} {...rest}>\n {withSearch && (\n <Input\n variant=\"outlined\"\n startIcon={<SearchIcon />}\n value={searchValue}\n fullWidth\n onChange={onChangeSearchValue}\n classes={{ root: styles.search }}\n />\n )}\n <div className=\"styledScroll\">\n {filteredData.map(({ id, name, children }) => {\n return (\n <TreeViewItem\n key={id}\n title={name}\n value={id}\n searchValue={searchValue}\n children={children}\n startIcons={startIcons}\n onSelect={onSelect}\n selected={selectedValues}\n />\n );\n })}\n </div>\n </div>\n );\n});\n\nexport default memo(TreeView);\n","// extracted by mini-css-extract-plugin\nvar _1 = \"pairs-module__dim-typography__CX_Sf\";\nvar _2 = \"pairs-module__labels-container__AKW8x\";\nvar _3 = \"pairs-module__labels-with-borders__iC6y_\";\nvar _4 = \"pairs-module__row-container-borders__H3rCB\";\nvar _5 = \"pairs-module__trimmed-typography__eO7Vt\";\nvar _6 = \"pairs-module__values-container__a4t60\";\nvar _7 = \"pairs-module__values-with-borders__ssGZ0\";\nexport { _1 as \"dimTypography\", _2 as \"labelsContainer\", _3 as \"labelsWithBorders\", _4 as \"rowContainerBorders\", _5 as \"trimmedTypography\", _6 as \"valuesContainer\", _7 as \"valuesWithBorders\" }\n","import { useState } from 'react';\n\nimport { Tooltip } from '@components/view/Tooltip';\nimport { Typography } from '@components/view/Typography';\n\ninterface Props {\n label: string | number;\n}\n\nexport function TypographyWithTooltip(props: Props) {\n const { label } = props;\n\n const [tooltip, setTooltip] = useState(label);\n\n return (\n <Tooltip label={tooltip}>\n <Typography\n style={{\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n }}\n onMouseEnter={(e: React.MouseEvent) => {\n setTooltip(e.currentTarget.scrollWidth > e.currentTarget.clientWidth ? label : '');\n }}\n >\n {label}\n </Typography>\n </Tooltip>\n );\n}\n","import classNames from 'classnames';\nimport { HTMLAttributes, forwardRef } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport { Typography } from '../Typography';\nimport { Pair } from './models/Pair';\nimport * as styles from './pairs.module.css';\nimport { TypographyWithTooltip } from './ui/TypographyWithTooltip';\n\ninterface Props {\n pairs: Pair[];\n column1Width?: string;\n column2Width?: string;\n showBorder?: boolean;\n minRowHeight?: string;\n}\n\nexport const Pairs = forwardRef<HTMLDivElement, UiProps<Props> & HTMLAttributes<HTMLDivElement>>(function Pairs(\n { pairs, column1Width = '50%', column2Width = '50%', showBorder, minRowHeight, classes, className, style, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={classNames(className, classes?.root)} style={style} {...rest}>\n {pairs.map((pair, i) => (\n <div\n key={i}\n style={{ minHeight: minRowHeight, display: 'flex' }}\n className={classNames(classes?.rowContainer, {\n [styles.rowContainerBorders]: showBorder,\n })}\n >\n {pair && (\n <>\n <div\n className={classNames(styles.labelsContainer, classes?.labelsContainer, {\n [styles.labelsWithBorders]: showBorder,\n })}\n style={{\n width: column1Width,\n minWidth: column1Width,\n }}\n >\n <Typography className={styles.dimTypography}>{pair.label}</Typography>\n </div>\n <div\n style={{\n width: column2Width,\n minWidth: column2Width,\n }}\n className={classNames(styles.valuesContainer, classes?.valuesContainer, {\n [styles.valuesWithBorders]: showBorder,\n })}\n >\n <TypographyWithTooltip label={pair.value} />\n </div>\n </>\n )}\n </div>\n ))}\n </div>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"card-module__actions__ctfFt\";\nvar _2 = \"card-module__body-full-size__oalrd\";\nvar _3 = \"card-module__body-padded__xaBA8\";\nvar _4 = \"card-module__body-padded-no-header__RBxi1\";\nvar _5 = \"card-module__header__NdV6G\";\nvar _6 = \"card-module__header-overlay__VpVTO\";\nvar _7 = \"card-module__medium__TpRzi\";\nvar _8 = \"card-module__root__uGlLT\";\nvar _9 = \"card-module__small__liJkd\";\nexport { _1 as \"actions\", _2 as \"bodyFullSize\", _3 as \"bodyPadded\", _4 as \"bodyPaddedNoHeader\", _5 as \"header\", _6 as \"headerOverlay\", _7 as \"medium\", _8 as \"root\", _9 as \"small\" }\n","import classNames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, ReactNode, forwardRef } from 'react';\n\nimport { Surface } from '@components/layout/Surface';\nimport { ChipSize } from '@models/ChipSize';\nimport { SurfaceType } from '@models/SurfaceType';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './card.module.css';\n\ntype Style = keyof typeof styles;\n\ninterface Props {\n surfaceType?: SurfaceType;\n componentSize?: ChipSize;\n title?: ReactNode;\n actions?: ReactNode;\n headerOverlay?: boolean;\n fullSizeBody?: boolean;\n}\n\nexport const Card = forwardRef<\n HTMLDivElement,\n PropsWithChildren<UiProps<Props>> & Omit<HTMLAttributes<HTMLDivElement>, 'title'>\n>(function Card(\n {\n surfaceType = 'primary',\n componentSize = 'medium',\n title,\n actions,\n children,\n classes,\n className,\n headerOverlay = true,\n fullSizeBody = false,\n ...rest\n },\n ref,\n) {\n const hasHeader = !!title || !!actions;\n\n return (\n <Surface\n ref={ref}\n type={surfaceType}\n className={className}\n classes={{ root: classNames(styles.root, styles[componentSize as Style], classes?.root) }}\n {...rest}\n >\n {hasHeader && (\n <div className={classNames(styles.header, headerOverlay && styles.headerOverlay, classes?.header)}>\n {title ?? <div></div>}\n {!!actions && <div className={classNames(styles.actions, classes?.actions)}>{actions}</div>}\n </div>\n )}\n <div\n className={classNames(\n fullSizeBody ? styles.bodyFullSize : hasHeader ? styles.bodyPadded : styles.bodyPaddedNoHeader,\n classes?.body,\n )}\n >\n {children}\n </div>\n </Surface>\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"chip-module__clickable__dOcCr\";\nvar _2 = \"chip-module__filled__LKP4O\";\nvar _3 = \"chip-module__icon__yybCP\";\nvar _4 = \"chip-module__icon-clickable__BPoAa\";\nvar _5 = \"chip-module__icon-left__LhniG\";\nvar _6 = \"chip-module__icon-right__CnqJ6\";\nvar _7 = \"chip-module__icon-right-slot__p8bmk\";\nvar _8 = \"chip-module__label__RySGy\";\nvar _9 = \"chip-module__medium__RRnyf\";\nvar _a = \"chip-module__outlined__HHje4\";\nvar _b = \"chip-module__root__QN7P0\";\nvar _c = \"chip-module__secondary__yquCM\";\nvar _d = \"chip-module__small__UbquU\";\nvar _e = \"chip-module__with-icon__ORESD\";\nexport { _1 as \"clickable\", _2 as \"filled\", _3 as \"icon\", _4 as \"iconClickable\", _5 as \"iconLeft\", _6 as \"iconRight\", _7 as \"iconRightSlot\", _8 as \"label\", _9 as \"medium\", _a as \"outlined\", _b as \"root\", _c as \"secondary\", _d as \"small\", _e as \"withIcon\" }\n","import classnames from 'classnames';\nimport { HTMLAttributes, PropsWithChildren, ReactNode, forwardRef } from 'react';\n\nimport { ChipSize } from '@models/ChipSize';\nimport { ChipVariant } from '@models/ChipVariant';\nimport { UiProps } from '@models/UiProps';\n\nimport * as styles from './chip.module.css';\n\nexport interface Props {\n variant?: ChipVariant;\n componentSize?: ChipSize;\n icon?: ReactNode;\n iconPlacement?: 'left' | 'right';\n secondary?: boolean;\n onClick?: () => void;\n onIconClick?: () => void;\n}\n\nexport const Chip = forwardRef<\n HTMLDivElement,\n PropsWithChildren<UiProps<Props>> & Omit<HTMLAttributes<HTMLDivElement>, 'onClick'>\n>(function Chip(\n {\n variant = 'filled',\n componentSize = 'medium',\n icon,\n iconPlacement = 'right',\n secondary,\n onClick,\n onIconClick,\n children,\n classes,\n className,\n ...rest\n },\n ref,\n) {\n const handleIconClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onIconClick?.();\n };\n\n const IconComponent = onIconClick ? 'button' : 'span';\n const isIconLeft = !!icon && iconPlacement === 'left';\n const isIconRight = !!icon && iconPlacement === 'right';\n\n return (\n <div\n ref={ref}\n className={classnames(\n styles.root,\n styles[variant as keyof typeof styles],\n styles[componentSize as keyof typeof styles],\n !!icon && styles.withIcon,\n isIconLeft && styles.iconLeft,\n isIconRight && styles.iconRight,\n secondary && styles.secondary,\n onClick && styles.clickable,\n className,\n classes?.root,\n )}\n tabIndex={onClick ? 0 : undefined}\n role={onClick ? 'button' : undefined}\n {...rest}\n onClick={onClick}\n >\n {isIconLeft && (\n <IconComponent\n className={classnames(styles.icon, onIconClick && styles.iconClickable, classes?.icon)}\n onClick={onIconClick ? handleIconClick : undefined}\n aria-label={onIconClick ? 'Удалить' : undefined}\n >\n {icon}\n </IconComponent>\n )}\n {children && <span className={classnames(styles.label, classes?.label)}>{children}</span>}\n {isIconRight && (\n <IconComponent\n className={classnames(styles.icon, styles.iconRightSlot, onIconClick && styles.iconClickable, classes?.icon)}\n onClick={onIconClick ? handleIconClick : undefined}\n aria-label={onIconClick ? 'Удалить' : undefined}\n >\n {icon}\n </IconComponent>\n )}\n </div>\n );\n});\n","import classnames from 'classnames';\nimport { ImgHTMLAttributes, forwardRef } from 'react';\n\nimport { UiProps } from '@models/UiProps';\n\nimport loader from './loader.gif';\nimport * as styles from './loader.module.css';\n\nexport interface Props {\n width?: number;\n height?: number;\n}\n\nexport const Loader = forwardRef<\n HTMLImageElement,\n UiProps<Props> & Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'width' | 'height'>\n>(function Loader({ width = 60, height = width * 1.5, className, classes, alt = 'loading', ...rest }, ref) {\n return (\n <img\n ref={ref}\n src={loader}\n alt={alt}\n width={width}\n height={height}\n className={classnames(styles.root, className, classes?.root)}\n {...rest}\n />\n );\n});\n","// extracted by mini-css-extract-plugin\nvar _1 = \"loader-module__root__j0SpR\";\nexport { _1 as \"root\" }\n","import { ReactNode, createContext, useContext, useEffect, useState } from 'react';\n\nimport globalCss from '../styles/global.css?raw';\nimport dark from '../styles/themes/dark.css?raw';\nimport darkBlue from '../styles/themes/darkBlue.css?raw';\nimport light from '../styles/themes/light.css?raw';\n\nconst BASE_STYLE_ID = 'nntc-ui-base-styles';\nconst THEME_STYLE_ID = 'nntc-ui-theme-styles';\n\nexport type Theme = 'light' | 'dark' | 'darkBlue';\nexport type StyleContainer = HTMLElement | ShadowRoot;\n\nfunction isShadowRoot(target: StyleContainer): target is ShadowRoot {\n return typeof ShadowRoot !== 'undefined' && target instanceof ShadowRoot;\n}\n\nfunction scopeCss(css: string, target: StyleContainer): string {\n return isShadowRoot(target) ? css.replace(/:root\\b/g, ':host') : css;\n}\n\nfunction ensureStyleElement(target: StyleContainer, id: string): HTMLStyleElement {\n const existing = target.querySelector<HTMLStyleElement>(`#${id}`);\n if (existing) {\n return existing;\n }\n\n const element = document.createElement('style');\n element.id = id;\n target.appendChild(element);\n return element;\n}\n\nexport interface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n setTheme: (theme: Theme) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nfunction getInitialTheme(): Theme {\n if (typeof window === 'undefined') {\n return 'light';\n }\n\n try {\n const savedTheme = localStorage.getItem('theme');\n if (savedTheme === 'light' || savedTheme === 'dark' || savedTheme === 'darkBlue') {\n return savedTheme;\n }\n } catch {\n // ignore (private mode / blocked storage)\n }\n\n if (window.matchMedia?.('(prefers-color-scheme: dark)')?.matches) {\n return 'dark';\n }\n\n return 'light';\n}\n\nexport function useTheme(): ThemeContextType | null {\n return useContext(ThemeContext) ?? null;\n}\n\nexport function useThemeWithFallback(): ThemeContextType {\n const context = useTheme();\n return (\n context ?? {\n theme: 'light',\n toggleTheme: () => {},\n setTheme: () => {},\n }\n );\n}\n\ninterface ThemeProviderProps {\n children: ReactNode;\n /**\n * Куда добавить глобальные стили и палитру темы.\n * По умолчанию — document.head. Для MFE, отрисовывающихся в Shadow DOM,\n * передайте сюда shadowRoot: стили попадут в теневое дерево (рядом с index.css),\n * а :root будет автоматически заменён на :host.\n */\n styleContainer?: StyleContainer | null;\n}\n\nexport function ThemeProvider({ children, styleContainer }: ThemeProviderProps) {\n const [theme, setThemeState] = useState<Theme>(() => getInitialTheme());\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n try {\n localStorage.setItem('theme', newTheme);\n } catch {\n // ignore\n }\n };\n\n const toggleTheme = () => {\n setThemeState((prev) => {\n const next = prev === 'light' ? 'dark' : prev === 'dark' ? 'darkBlue' : 'light';\n try {\n localStorage.setItem('theme', next);\n } catch {\n // ignore\n }\n return next;\n });\n };\n\n useEffect(() => {\n const target: StyleContainer = styleContainer ?? document.head;\n const baseStyle = ensureStyleElement(target, BASE_STYLE_ID);\n baseStyle.textContent = scopeCss(globalCss, target);\n }, [styleContainer]);\n\n useEffect(() => {\n const themes: Record<Theme, string> = {\n light,\n dark,\n darkBlue,\n };\n\n const target: StyleContainer = styleContainer ?? document.head;\n const style = ensureStyleElement(target, THEME_STYLE_ID);\n style.textContent = scopeCss(themes[theme] ?? themes.light, target);\n }, [theme, styleContainer]);\n\n useEffect(() => {\n // Auto-sync with system theme only when user hasn't chosen a custom one.\n let savedTheme: string | null = null;\n try {\n savedTheme = localStorage.getItem('theme');\n } catch {\n // ignore\n }\n\n if (savedTheme === 'light' || savedTheme === 'dark' || savedTheme === 'darkBlue') {\n return;\n }\n\n const mediaQuery = window.matchMedia?.('(prefers-color-scheme: dark)');\n if (!mediaQuery) {\n return;\n }\n\n const handleChange = (e: MediaQueryListEvent) => {\n setThemeState(e.matches ? 'dark' : 'light');\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n const value: ThemeContextType = {\n theme,\n toggleTheme,\n setTheme,\n };\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n"],"names":["leafPrototypes","getProto","module","exports","e","n","r","i","s","u","a","o","c","f","h","d","l","$","y","M","name","weekdays","split","months","ordinal","t","m","String","length","Array","join","v","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","p","w","D","ms","Q","toLowerCase","replace","g","S","_","O","args","arguments","b","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","$d","Date","NaN","test","match","substring","UTC","init","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","monthsShort","weekdaysMin","weekdaysShort","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","k","forEach","extend","$i","isDayjs","en","Ls","React","objectIs","Object","is","useState","useEffect","useLayoutEffect","useDebugValue","checkIfSnapshotChanged","inst","latestGetSnapshot","getSnapshot","value","nextValue","error","shim","window","document","createElement","subscribe","_useState","forceUpdate","useSyncExternalStore","require","hasOwn","hasOwnProperty","classNames","classes","arg","appendClass","parseValue","isArray","includes","key","call","newClass","default","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","getPrototypeOf","obj","mode","then","ns","create","def","current","indexOf","getOwnPropertyNames","definition","defineProperty","enumerable","prop","Symbol","toStringTag","nc","_1","_2","_3","_4","_5","_6","_7","_8","_9","_a","_b","_c","_d","_e","_f","_10","_11","Button","forwardRef","_ref","propRef","variant","componentSize","icon","textSecondary","isActive","compact","className","children","buttonProps","_objectWithoutProperties","_excluded","_jsx","_objectSpread","classnames","styles","root","ref","_jsxs","stateLayer","assignRef","mergeRefs","parseInt","version","refs","cleanups","cleanup","isCleanup","push","_12","_13","Typography","component","typographyProps","Component","useCompatId","react","useId","useMemo","random","Icon","size","color","width","height","viewBox","fill","xmlns","CheckboxDeselectedIcon","props","CheckboxIcon","CheckboxSeveralIcon","Checkbox","label","several","id","inputProps","inputRef","useRef","generatedId","inputId","el","mouseupListener","classList","remove","mousedownListener","addEventListener","removeEventListener","typographyVariant","type","input","title","htmlFor","checkbox","_Fragment","labelText","rnds8","Uint8Array","byteToHex","options","buf","offset","crypto","randomUUID","rnds","rng","getRandomValues","Error","RangeError","arr","unsafeStringify","_v4","hasWindow","getNodeName","node","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","getDocumentElement","documentElement","Node","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","element","overflow","overflowX","overflowY","display","isTableElement","isTopLayer","matches","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","transform","translate","scale","rotate","perspective","isWebKit","backdropFilter","filter","willChange","contain","CSS","supports","isLastTraversableNode","getComputedStyle","getNodeScroll","scrollLeft","scrollTop","scrollX","scrollY","getParentNode","result","assignedSlot","parentNode","host","getNearestOverflowAncestor","body","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","concat","visualViewport","parent","candidateSelector","NoElement","msMatchesSelector","webkitMatchesSelector","getRootNode","_element$getRootNode","_isInert","lookUp","_node$getAttribute","inertAtt","getAttribute","closest","getCandidates","includeContainer","candidates","querySelectorAll","unshift","_getCandidatesIteratively","elements","elementsToCheck","from","shift","tagName","assigned","assignedElements","content","nestedCandidates","flatten","scopeParent","shadowRoot","getShadowRoot","validShadowRoot","shadowRootFilter","_nestedCandidates","hasTabIndex","isNaN","getTabIndex","tabIndex","_node$getAttribute2","attValue","isContentEditable","sortOrderedTabbables","documentOrder","isInput","isZeroArea","_node$getBoundingClie","getBoundingClientRect","isNodeMatchingSelectorFocusable","disabled","isHiddenInput","displayCheck","checkVisibility","checkOpacity","opacityProperty","contentVisibilityAuto","visibilityProperty","checkVisibilityCSS","visibility","nodeUnderDetails","parentElement","originalNode","rootNode","_nodeRoot","_nodeRootHost","_nodeRootHost$ownerDo","nodeRoot","nodeRootHost","attached","contains","_nodeRoot2","_nodeRootHost2","_nodeRootHost2$ownerD","isNodeAttached","getClientRects","isHidden","some","child","isDetailsWithSummary","item","isDisabledFromFieldset","isNodeMatchingSelectorTabbable","isRadio","radioSet","radioScope","form","queryRadios","escape","err","console","message","checked","nodes","getCheckedRadio","isTabbableRadio","isNonTabbableRadio","isShadowRootTabbable","shadowHostNode","_sortByOrder","regularTabbables","orderedTabbables","isScope","candidateTabindex","getSortOrderTabIndex","sort","reduce","acc","sortable","tabbable","container","bind","isTabbable","getPlatform","uaData","navigator","userAgentData","platform","getUserAgent","brands","map","brand","userAgent","isSafari","vendor","isAndroid","re","isJSDOM","FOCUSABLE_ATTRIBUTE","activeElement","doc","_activeElement","next","getTarget","event","composedPath","target","isEventTargetWithin","getDocument","isTypeableElement","isTypeableCombobox","getFloatingFocusElement","floatingElement","hasAttribute","querySelector","getNodeChildren","onlyOpenChildren","_node$context","parentId","context","open","flatMap","getNodeAncestors","_nodes$find","allAncestors","currentParentId","find","currentNode","stopEvent","preventDefault","stopPropagation","isMouseLikePointerType","pointerType","strict","values","index","useLatestRef","useSafeInsertionEffect","useInsertionEffect","fn","useEffectEvent","callback","_len","_key","getTabbableOptions","ResizeObserver","getTabbableIn","dir","len","active","getNextTabbable","referenceElement","getPreviousTabbable","isOutsideEvent","containerElement","currentTarget","relatedTarget","disableFocusInside","dataset","tabindex","setAttribute","enableFocusInside","removeAttribute","max","createCoords","oppositeSideMap","left","right","bottom","top","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getOppositePlacement","side","getPaddingObject","padding","expandPaddingObject","rectToClientRect","rect","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","_await$platform$isEle","rects","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","originSides","Set","getCssDimensions","parseFloat","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","domElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","getClientRectFromClippingAncestor","clippingAncestor","html","clientWidth","clientHeight","visualViewportBased","windowScrollbarX","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","getViewportRect","scrollWidth","scrollHeight","direction","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","setLeftRTLScrollbarOffset","offsetRect","htmlOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getContainingBlock","topLayer","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstRect","getElementRects","data","getOffsetParentFn","getDimensionsFn","getDimensions","floatingDimensions","isRTL","rectsAreEqual","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","_io","clearTimeout","disconnect","refresh","skip","threshold","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","requestAnimationFrame","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","_middlewareData$arrow","_middlewareData$flip","middlewareData","initialPlacement","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","detectOverflowOptions","arrow","alignmentOffset","initialSideAxis","isBasePlacement","oppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","alignment","isStart","getSideList","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","getAlignmentSides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","reset","resetPlacement","_overflowsData$filter2","currentSideAxis","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","shouldAddOffset","centerOffset","Map","mergedOptions","platformWithCache","config","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","currentMiddleware","nextX","nextY","computePosition","deepEqual","keys","$$typeof","getDPR","devicePixelRatio","roundByDPR","dpr","deps","_middlewareData$offse","diffCoords","mainAxisMulti","has","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","arrow$1","cleanupRef","refEffect","instance","refCallback","refCleanup","ACTIVE_KEY","SELECTED_KEY","serverHandoffComplete","count","genId","setId","FloatingNodeContext","FloatingTreeContext","useFloatingParentNodeId","_React$useContext","useFloatingTree","createAttribute","clearTimeoutIfSet","timeoutRef","safePolygonIdentifier","getDelay","getRestMs","rafId","enqueueFocus","preventScroll","cancelPrevious","sync","exec","focus","counters","inert","WeakMap","none","getCounterMap","control","uncontrolledElementsSet","WeakSet","markerMap","lockCount$1","unwrapHost","correctElements","targets","correctedTarget","markOthers","avoidElements","ariaHidden","uncorrectedAvoidElements","markerName","controlAttribute","elementsToKeep","elementsToStop","hiddenElements","markerCounter","keep","deep","attr","alreadyHidden","counterMap","counterValue","markerValue","clear","delete","applyAttributeToOthers","HIDDEN_STYLES","border","clip","margin","whiteSpace","FocusGuard","role","setRole","restProps","style","jsx","HIDDEN_OWNER_STYLES","clipPath","PortalContext","FloatingPortal","preserveTabOrder","portalNode","uniqueId","portalContext","usePortalContext","setPortalNode","portalNodeRef","queueMicrotask","existingIdRoot","getElementById","subRoot","appendChild","idWrapper","useFloatingPortalNode","focusManagerState","setFocusManagerState","beforeOutsideRef","afterOutsideRef","beforeInsideRef","afterInsideRef","modal","shouldRenderGuards","onFocus","jsxs","Provider","_beforeInsideRef$curr","prevTabbable","domReference","_afterInsideRef$curre","nextTabbable","closeOnFocusOut","onOpenChange","nativeEvent","useLiteMergeRefs","previouslyFocusedElements","clearDisconnectedPreviouslyFocusedElements","elementRef","_elementRef$deref","deref","isConnected","getPreviouslyFocusedElement","handleTabIndex","floatingFocusElement","orderRef","_floatingFocusElement","focusableElements","focusable","tabbableContent","dataTabIndex","startsWith","VisuallyHiddenDismiss","FloatingFocusManager","order","guards","_guards","initialFocus","returnFocus","restoreFocus","visuallyHiddenDismiss","outsideElementsInert","getInsideElements","_getInsideElements","events","dataRef","getNodeId","_dataRef$current$floa","floatingContext","nodeId","ignoreInitialFocus","isUntrappedTypeableCombobox","inertSupported","useInert","initialFocusRef","returnFocusRef","tree","startDismissButtonRef","endDismissButtonRef","preventReturnFocusRef","isPointerDownRef","tabbableIndexRef","blurTimeoutRef","isInsidePortal","getTabbableContent","getTabbableElements","Boolean","flat","onKeyDown","els","shiftKey","handleFocusIn","tabbableIndex","handlePointerDown","handleFocusOutside","movedToUnrelatedNode","nodesRef","_node$context2","_node$context3","_node$context4","_node$context5","prevTabbableIndex","nodeToFocus","insideReactTree","shouldHandleBlurCapture","markInsideReactTree","beforeGuardRef","afterGuardRef","mergedBeforeGuardRef","mergedAfterGuardRef","renderDismissButton","location","onClick","_portalContext$portal","_ancestors$find","portalNodes","rootAncestorComboboxDomReference","_node$context6","insideElements","previouslyFocusedElement","initialFocusValue","elToFocus","focusAlreadyInsideFloatingEl","reason","nested","mozInputSource","isTrusted","buttons","detail","isVirtualClick","pressure","isVirtualPointerEvent","isPreventScrollSupported","WeakRef","on","fallbackEl","assign","insertAdjacentElement","off","activeEl","isFocusInsideFloatingTree","_node$context7","returnElement","getReturnElement","tabbableReturnElement","tabbableOptions","getFirstTabbableElement","Fragment","_portalContext$before","_portalContext$afterO","isButtonTarget","isSpaceIgnored","useClick","eventOption","toggle","ignoreMouse","keyboardHandlers","stickIfOpen","pointerTypeRef","didKeyDownRef","onPointerDown","onMouseDown","button","openEvent","defaultPrevented","isAnchorTarget","onKeyUp","bubbleHandlerKeys","pointerdown","mousedown","click","captureHandlerKeys","normalizeProp","normalizable","_normalizable$escapeK","_normalizable$outside","escapeKey","outsidePress","useDismiss","unstable_outsidePress","outsidePressEvent","referencePress","referencePressEvent","bubbles","capture","outsidePressFn","endedOrStartedInsideRef","escapeKeyBubbles","outsidePressBubbles","escapeKeyCapture","outsidePressCapture","isComposingRef","closeOnEscapeKeyDown","shouldDismiss","_child$context","__escapeKeyBubbles","isReactEvent","closeOnEscapeKeyDownCapture","_getTarget2","_getTarget","closeOnPressOutside","_dataRef$current$floa2","endedOrStartedInside","inertSelector","markers","targetRootAncestor","nextParent","marker","lastTraversableNode","scrollRe","isScrollableX","isScrollableY","canScrollX","canScrollY","pressedVerticalScrollbar","offsetX","pressedHorizontalScrollbar","offsetY","targetIsInsideChildren","_child$context2","__outsidePressBubbles","closeOnPressOutsideCapture","_getTarget4","_getTarget3","compositionTimeout","onScroll","handleCompositionStart","handleCompositionEnd","_doc$defaultView","setMouseDownOrUpInside","onMouseUp","internalRootContext","onOpenChangeProp","elementsProp","floatingId","emit","_map$get","listener","_map$get2","createEventEmitter","positionReference","setPositionReference","useFloatingRootContext","rootContext","computedElements","_domReference","setDomReference","_setPositionReference","domReferenceRef","externalReference","externalFloating","whileElementsMounted","setData","isPositioned","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","useFloating","computedPositionReference","isMacSafari","maxTouchPoints","useFocus","visibleOnly","blockFocusRef","keyboardModalityRef","onBlur","onMouseLeave","matchesFocusVisible","movedToFocusGuard","mergeProps","userProps","propsList","elementKey","isItem","domUserProps","__","validProps","propsOrGetProps","val","useInteractions","referenceDeps","floatingDeps","itemDeps","getReferenceProps","getFloatingProps","getItemProps","componentRoleToAriaRoleMap","useRole","_elements$domReferenc","_componentRoleToAriaR","defaultFloatingId","defaultReferenceId","referenceId","_getFloatingFocusElem","ariaRole","isNested","floatingProps","selected","commonProps","TooltipContext","createContext","TooltipContent","useContext","otherContext","_excluded2","useMergeRefs","arrowClassName","invertX","invertY","withoutArrow","arrowRef","TooltipProvider","tooltip","initialOpen","controlledOpen","setControlledOpen","uncontrolledOpen","setUncontrolledOpen","setOpen","hover","delay","handleClose","mouseOnly","restMs","move","handleCloseRef","delayRef","restMsRef","handlerRef","restTimeoutRef","blockMouseMoveRef","performedPointerEventsMutationRef","unbindMouseMoveRef","restTimeoutPendingRef","isHoverOpen","_dataRef$current$open","onLeave","closeWithDelay","runElseBranch","closeDelay","cleanupMouseMoveHandler","clearPointerEvents","pointerEvents","isClickLikeOpenEvent","onScrollMouseLeave","onReferenceMouseEnter","once","onReferenceMouseLeave","onFloatingMouseEnter","onFloatingMouseLeave","openDelay","clientX","clientY","onClose","handler","_handleCloseRef$curre","__options","blockPointerEvents","_tree$nodesRef$curren","parentFloating","setPointerRef","onPointerEnter","onMouseMove","handleMouseMove","movementX","movementY","useHover","interactions","useTooltip","TooltipTrigger","wrapTrigger","childrenRef","isValidElement","cloneElement","Tooltip","clickable","alertType","showTooltip","setShowTooltip","prev","trigger","FieldShell","fullWidth","labelExtra","onLabelClick","hasStartIcon","hasEndIcon","hasDualEndIcon","hasErrorIcon","hasClearButton","hasArrow","chipsMode","rest","labelRow","description","errorName","wrapper","ErrorOutlineIcon","errorIconTooltipLabel","FieldErrorIcon","iconSize","CloseIcon","InputChip","onRemove","text","PopoverContext","PopoverContent","setDescriptionId","descriptionId","PopoverProvider","popover","containerOffset","layoutVersion","_useFloating","usePopover","PopoverTrigger","Popover","contentStyle","AddIcon","ArrowDropDownIcon","ArrowDropUpIcon","AttachIcon","BarChartIcon","RadioDeselectedIcon","RadioSelectedIcon","ChevronLeftIcon","ChevronRightIcon","CircleFilledIcon","DateRangeIcon","DeleteIcon","DoneIcon","DragIcon","fillRule","clipRule","FileUploadIcon","FilterIcon","FilterClearIcon","InfoIcon","AlertIcon","ChevronUpIcon","ChevronDownIcon","ListIcon","MoreVerticalIcon","SearchIcon","SelectUniqueIcon","SettingsIcon","SortDownIcon","SortUpIcon","TableChartIcon","UploadIcon","WellIcon","EditIcon","FullScreenOnIcon","FullScreenOffIcon","BookmarkIcon","BookmarkAddIcon","ExportTableIcon","DownloadIcon","VisibilityIcon","PointIcon","SaveIcon","Arrow","popoverContext","ButtonsGroup","fillEvenly","Menu","items","descriptionPosition","handleClick","useCallback","blur","subButtons","itemSelected","itemDisabled","itemIcon","itemSelectedIcon","itemDisabledIcon","itemTitle","itemSelectedTitle","itemDisabledTitle","itemDescription","itemSelectedDescription","itemDisabledDescription","itemActions","itemSelectedActions","itemDisabledActions","sb","sbIndex","divider","SelectPopover","selectedValue","changeSelectedItem","menu","Select","placeholder","defaultValue","onValueChange","chips","isLocalState","localSelectedItem","setlocalSelectedItem","selectedItem","popoverTargetRef","inputClickHandler","uuidv4","showErrorIcon","fieldStyles","onChange","errorIcon","popoverContent","_14","_15","_16","_17","_18","_19","_1a","_1b","createCalendarDate","dayjs","day","useUtc","TimeWheelColumn","onSelect","valuesLength","centerPosition","containerRef","cycledValues","repeatedValues","normalizeValue","handleScroll","nearestIndex","scrollToValue","scrollTo","behavior","padStart","CalendarPopover","dayjsFromProps","isPeriod","valueType","initStartDate","initEndDate","changeDates","onClear","defaultDayjs","isDateTimeSingle","viewType","setViewType","currentItem","setCurrentItem","initial","now","startDate","setStartDate","second","millisecond","endDate","setEndDate","selectedHour","setSelectedHour","hour","selectedMinute","setSelectedMinute","minute","hours","minutes","startDateDay","endDateDay","startDateMonth","endDateMonth","startYear","endYear","currentDate","emptyCellsCount","applyTimeToDate","dateValue","nextDate","changeCurrentItem","baseDate","step","unit","tempDate","changeViewType","openMonthView","setYear","cellYear","cellDate","yearsRangeStart","setDate","today","buttonsContainer","navigationContainer","navigationArrow","navigationValue","navigationTitle","cellsContainer","isCircleActive","isYearInRange","isFirstInRange","isLastInRange","cell","cellCircle","cellSelection","cellSelectionFirst","cellSelectionLast","cellData","cellDateValue","isMonthInRange","isFirstMonthInRange","isLastMonthInRange","monthCellSelection","monthCellSelectionFirst","monthCellSelectionLast","DateTime","defaultOpen","defaultValues","stateValues","setStateValues","isPopoverOpen","setIsPopoverOpen","stateValuesRef","effectiveValueType","reactId","inputFocusHandler","inputBlurHandler","popoverOpenChangeHandler","currentValues","inputElement","iconClickHandler","newStartDate","newEndDate","newValues","prevValues","isSameValues","self","identifier","touches","pageX","pageXOffset","pageY","pageYOffset","onKey","changedTouches","which","keyCode","C","E","H","onTouchStart","backgroundColor","pow","PI","L","q","I","K","hue","T","hsva","F","Y","toHsva","equal","fromHsva","V","J","U","colorModel","defaultColor","innerHTML","head","W","Z","ColorPicker","setColor","changeColorHandler","newColor","toUpperCase","HexColorPicker","Input","startIcon","endIcon","fileName","setFileName","isFile","showEndIcon","fileInput","file","files","autoComplete","WrapForLabel","isString","defer","res","rej","promise","Promise","resolve","reject","makeString","object","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","setPath","newValue","last","getPath","deepExtend","source","overwrite","regexEscape","str","_entityMap","chars","looksLikeObjectPathRegExpCache","constructor","capacity","regExpMap","regExpQueue","getRegExp","pattern","regExpFromCache","regExpNew","RegExp","deepFind","keySeparator","tokens","nextPath","j","getCleanedCode","code","consoleLogger","log","output","warn","Logger","concreteLogger","prefix","logger","debug","forward","deprecate","lvl","debugOnly","moduleName","baseLogger","EventEmitter","observers","numListeners","observer","numTimesAdded","ResourceStore","defaultNS","super","ignoreJSONStructure","addNamespaces","removeNamespaces","splice","getResource","lng","addResource","silent","addResources","resources","addResourceBundle","skipCopy","pack","JSON","stringify","removeResourceBundle","hasResourceBundle","getResourceBundle","getDataByLanguage","hasLanguageSomeTranslations","postProcessor","processors","addPostProcessor","handle","translator","processor","process","PATH_KEY","keysFromSelector","selector","opts","proxy","revoke","Proxy","revocable","createProxy","nsSeparator","nsArray","shouldHandleAsObject","Translator","services","copy","checkedLoadedFor","changeLanguage","language","exists","interpolation","opt","resolved","isObject","returnObjects","extractFromKey","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","matched","ki","looksLikeObjectPath","interpolator","nestingRegexp","parts","lastKey","overloadTranslationOptionHandler","returnDetails","namespace","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","pluralSeparator","resForObjHndl","resType","extendTranslation","usedDefault","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","defaultVariables","skipInterpolation","skipOnVariables","nestBef","nb","interpolate","na","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","pop","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","formattedCode","Intl","getCanonicalLocales","lowerCaseLng","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","zero","one","two","few","many","other","dummyRule","select","resolvedOptions","pluralCategories","PluralResolver","pluralRulesCache","clearCache","getRule","cleanedCode","cacheKey","rule","PluralRules","lngPart","needsPlural","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","Interpolator","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","trim","missingInterpolationHandler","regex","safeValue","todo","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","lastIndexOf","elem","createCachedFormatter","optForCache","formatParams","frm","createNonCachedFormatter","Formatter","cf","cacheInBuiltFormats","formats","number","formatter","NumberFormat","currency","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","ListFormat","addCached","findIndex","mem","formatName","formatOptions","formatStr","optStr","trimmedKey","parseFormatStr","formatted","valOptions","Connector","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queue","queueLoad","languages","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","pushPath","removePending","done","loadedKeys","read","fcName","tried","wait","resolver","catch","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initAsync","preload","partialBundledLanguages","ret","tDescription","transformOptions","I18n","modules","external","isInitialized","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","initializedStoreOnce","isLanguageChangingTo","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","li","lngInLngs","setLngProps","setLng","fl","cacheUserLanguage","detect","getFixedT","keyPrefix","fixedT","selectorOpts","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","Locale","getTextInfo","ti","createInstance","cloneInstance","forkResourceStore","clonedData","mergedInterpolation","mergedForInterpolator","i18n","msg","alreadyWarned","warnOnce","loadedClb","cb","initialized","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","transDefaultProps","I18nContext","ReportNamespaces","usedNamespaces","addUsedNamespaces","getUsedNamespaces","commonEntities","entity","notReadySnapshot","optsOrDefaultValue","ready","dummySubscribe","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","reportNamespaces","i18nOptions","nsOrContext","unstableNamespaces","revisionRef","wrappedCallback","snapshotRef","calculatedReady","i18nInstance","currentLng","currentRevision","lastSnapshot","revision","newSnapshot","nsMode","loadCount","setLoadCount","onLoaded","finalI18n","wrapperRef","wrapperLangRef","createI18nWrapper","original","descriptors","getOwnPropertyDescriptors","__original","writable","configurable","lang","i18nWrapper","effectiveT","useTranslationOriginal","currentLanguage","Checklist","disableSearch","isDisabled","actionWithSelected","onChangeItem","filterSubstring","setFilterSubstring","filteredItems","filterItems","filterText","selectedItems","reduceCallback","selectedItemsList","newSelected","onSelectAll","onUnSelectAll","handleFilterChange","handleCheckboxChange","searchInput","scrolled","actionWrap","typography","onSelectedChange","enableSearch","checklistItems","handleActionWithSelected","isSelected","checklistWrapper","checklistClasses","MultiSelect","titleType","showSelectedCount","popoverInComponent","popoverWidth","setPopoverWidth","popoverLayoutVersion","setPopoverLayoutVersion","activeItems","updateLayout","handleSelectedChange","newItems","getTitle","labelSelectedCount","readOnly","clearHandler","minWidth","maxWidth","selectPopover","RadioButton","canUncheck","onUncheck","wasCheckedRef","radio","Surface","Layout","withoutHeader","TabsInner","defaultSelected","filled","disableBorder","allowDeselect","showTooltips","useExternalState","isMounted","setIsMounted","selectedTab","setSelectedTab","currentValue","tabContent","tab","tabSelected","tabDisabled","tabTitle","tabSelectedTitle","dangerouslySetInnerHTML","__html","tabBorder","tabSelectedBorder","Tabs","functionalUpdate","updater","makeStateUpdater","setState","old","isFunction","Function","memo","getDeps","depArgs","depTime","newDeps","depsChanged","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","num","info","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","debugAll","createHeader","table","column","_options$id","header","isPlaceholder","placeholderId","depth","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","getContext","_features","feature","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","allColumns","leafColumns","_left$map$filter","_right$map$filter","leftColumns","columnId","rightColumns","buildHeaderGroups","getCenterHeaderGroups","getLeftHeaderGroups","_left$map$filter2","orderedLeafColumns","getRightHeaderGroups","_right$map$filter2","getFooterGroups","headerGroups","reverse","getLeftFooterGroups","getCenterFooterGroups","getRightFooterGroups","getFlatHeaders","headers","getLeftFlatHeaders","getCenterFlatHeaders","getRightFlatHeaders","getCenterLeafHeaders","flatHeaders","_header$subHeaders","getLeftLeafHeaders","_header$subHeaders2","getRightLeafHeaders","_header$subHeaders3","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","getIsVisible","_column$columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","childColSpan","childRowSpan","createRow","rowIndex","subRows","row","_valuesCache","_uniqueValuesCache","getValue","getColumn","accessorFn","getUniqueValues","columnDef","renderValue","_row$getValue","renderFallbackValue","getLeafRows","getChildren","recurse","subArr","flattenBy","getParentRow","getRow","getParentRows","parentRows","currentRow","parentRow","getAllCells","getAllLeafColumns","_cell$getValue","createCell","_getAllCellsByColumnId","allCells","ColumnFaceting","createColumn","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","_getFacetedMinMaxValues","getFacetedMinMaxValues","includesString","filterValue","_filterValue$toString","search","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parsedMax","Infinity","filterFns","ColumnFiltering","getDefaultColumnDef","filterFn","getInitialState","columnFilters","getDefaultOptions","onColumnFiltersChange","filterFromLeafRows","maxLeafRowFilterDepth","getAutoFilterFn","firstRow","getCoreRowModel","flatRows","getFilterFn","_table$options$filter","_table$options$filter2","getCanFilter","_column$columnDef$ena","_table$options$enable","_table$options$enable2","enableColumnFilter","enableColumnFilters","enableFilters","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","setFilterValue","setColumnFilters","previousFilter","newFilter","_old$filter","shouldAutoRemoveFilter","newFilterObj","_old$map","_table","columnFiltersMeta","_functionalUpdate","resetColumnFilters","defaultState","_table$initialState$c","_table$initialState","initialState","getFilteredRowModel","_getFilteredRowModel","manualFiltering","aggregationFns","sum","_leafRows","childRows","extent","mean","leafRows","median","isNumberArray","mid","nums","unique","uniqueCount","_columnId","ColumnGrouping","aggregatedCell","_toString","_props$getValue","aggregationFn","grouping","onGroupingChange","groupedColumnMode","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getGroupingValue","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","getToggleGroupingHandler","canGroup","getAutoAggregationFn","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","getPreGroupedRowModel","getGroupedRowModel","_getGroupedRowModel","manualGrouping","groupingColumnId","_groupingValuesCache","getIsPlaceholder","getIsAggregated","_row$subRows","ColumnOrdering","columnOrder","onColumnOrderChange","getIndex","_getVisibleLeafColumns","getIsFirstColumn","_columns$","getIsLastColumn","_columns","setColumnOrder","resetColumnOrder","_getOrderColumnsFn","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","nonGroupingColumns","col","groupingColumns","orderColumns","ColumnPinning","onColumnPinningChange","pin","columnIds","getLeafColumns","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","getCenterVisibleCells","_getAllVisibleCells","leftAndRight","getLeftVisibleCells","cells","getRightVisibleCells","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","getLeftLeafColumns","getRightLeafColumns","getCenterLeafColumns","defaultColumnSizing","minSize","maxSize","MAX_SAFE_INTEGER","ColumnSizing","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","columnResizeMode","columnResizeDirection","onColumnSizingChange","onColumnSizingInfoChange","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","getStart","getAfter","resetSize","setColumnSizing","_ref2","getCanResize","enableResizing","enableColumnResizing","getIsResizing","_header$column$getSiz","prevSiblingHeader","getResizeHandler","_contextDocument","canResize","persist","isTouchStartEvent","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","deltaDirection","_ref3","headerSize","onEnd","contextDocument","mouseEvents","moveHandler","upHandler","touchEvents","cancelable","_e$touches$","passiveIfSupported","passiveSupported","supported","noop","passiveEventSupported","resetColumnSizing","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","ColumnVisibility","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","childColumns","enableHiding","getToggleVisibilityHandler","getVisibleCells","makeVisibleColumnsMethod","getColumns","getVisibleFlatColumns","getAllFlatColumns","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","getCenterVisibleLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","_target","RowPagination","pagination","pageIndex","pageSize","onPaginationChange","registered","queued","_autoResetPageIndex","_table$options$autoRe","autoResetAll","autoResetPageIndex","manualPagination","_queue","resetPageIndex","setPagination","resetPagination","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","_table$initialState2","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","getCanPreviousPage","getCanNextPage","previousPage","nextPage","firstPage","lastPage","getPrePaginationRowModel","getExpandedRowModel","getPaginationRowModel","_getPaginationRowModel","_table$options$pageCo2","getRowCount","_table$options$rowCou","rowCount","rows","RowPinning","rowPinning","onRowPinningChange","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","getTopRows","getBottomRows","_ref5","resetRowPinning","_table$initialState$r","getIsSomeRowsPinned","_pinningState$top","_pinningState$bottom","_getPinnedRows","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","rowId","getIsAllParentsExpanded","getRowModel","allRows","topPinnedRowIds","bottomPinnedRowIds","getCenterRows","topAndBottom","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","mutateRowIsSelected","getPreSelectedRowModel","getSelectedRowModel","rowModel","selectRowsFn","rowsById","getFilteredSelectedRowModel","getGroupedSelectedRowModel","getSortedRowModel","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","getToggleAllPageRowsSelectedHandler","toggleSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","getCanMultiSelect","_table$options$enable3","getToggleSelectedHandler","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","compareBasic","compareAlphanumeric","aStr","bStr","aa","bb","an","bn","combo","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","textCaseSensitive","basic","RowSorting","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","getAutoSortingFn","firstRows","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","sortAction","newSorting","nextDesc","_table$options$maxMul","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","_column$columnDef$ena2","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","_getSortedRowModel","manualSorting","builtInFeatures","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","globalFilter","onGlobalFilterChange","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","getCanGlobalFilter","_table$options$getCol","enableGlobalFilter","getGlobalAutoFilterFn","getGlobalFilterFn","setGlobalFilter","resetGlobalFilter","expanded","onExpandedChange","paginateExpandedRows","_autoResetExpanded","autoResetExpanded","manualExpanding","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","getCanSomeRowsExpand","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","getIsExpanded","getExpandedDepth","splitId","getPreExpandedRowModel","_getExpandedRowModel","toggleExpanded","_expanded","oldExpanded","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","getRowCanExpand","enableExpanding","isFullyExpanded","getToggleExpandedHandler","canExpand","_options$_features","_options$initialState","_feature$getInitialSt","queuedTimeout","coreInstance","setOptions","newOptions","mergeOptions","onStateChange","_getRowId","getRowId","_getCoreRowModel","searchAll","_getDefaultColumnDef","defaultColumn","_defaultColumn","resolvedColumnDef","accessorKey","_props$renderValue$to","_props$renderValue","_getColumnDefs","columnDefs","recurseColumns","_resolvedColumnDef$id","replaceAll","originalRow","_result","getFlatColumns","_column$columns2","groupingColumnDef","_getAllFlatColumnsById","flatColumns","flexRender","Comp","proto","isReactComponent","isClassComponent","isExoticComponent","initialDeps","isInitial","memoizedFunction","skipInitialOnChange","updateDeps","notUndefined","debounce","targetWindow","getRect","defaultKeyExtractor","defaultRangeExtractor","startIndex","overscan","endIndex","observeElementRect","scrollElement","run","entry","borderBoxSize","box","inlineSize","blockSize","useAnimationFrameWithResizeObserver","addEventListenerOptions","supportsScrollend","observeElementOffset","fallback","useScrollendEvent","isScrollingResetDelay","createHandler","isScrolling","horizontal","isRtl","endHandler","registerScrollendEvent","measureElement","elementScroll","adjustments","toOffset","Virtualizer","unsubs","scrollState","measurementsCache","itemSizeCache","laneAssignments","pendingMeasuredCacheIndexes","prevLanes","lanesChangedFlag","lanesSettling","scrollRect","scrollOffset","scrollDirection","scrollAdjustments","elementsCache","performance","_ro","indexFromElement","shouldMeasureDuringScroll","resizeItem","opts2","initialOffset","paddingStart","paddingEnd","scrollPaddingStart","scrollPaddingEnd","getItemKey","rangeExtractor","initialRect","scrollMargin","gap","indexAttribute","initialMeasurementsCache","lanes","laneAssignmentMode","notify","maybeNotify","calculateRange","_didMount","_willUpdate","getScrollElement","cached","getScrollOffset","scheduleScrollReconcile","_scrollToOffset","getFurthestMeasurement","measurements","furthestMeasurementsFound","furthestMeasurements","measurement","lane","previousFurthestMeasurement","getMeasurementOptions","getMeasurements","laneLastIndex","cachedLane","shouldCacheLane","prevIndex","prevInLane","furthestMeasurement","measuredSize","estimateSize","outerSize","findNearestBinarySearch","endPerLane","pos","startPerLane","getVirtualIndexes","attributeName","indexStr","scrollIndex","getVirtualItemForOffset","lastTargetOffset","bufferSize","minIndex","maxIndex","key2","prevNode","delta","shouldAdjustScrollPositionOnItemSizeChange","getVirtualItems","indexes","virtualItems","getMaxScrollOffset","innerWidth","innerHeight","getOffsetForAlignment","align","itemSize","maxOffset","getOffsetForIndex","scrollToOffset","startedAt","stableFrames","scrollToIndex","initialAlign","offsetInfo","scrollBy","endByLane","scrollToFn","measure","reconcileScroll","targetOffset","targetChanged","approxEqual","low","high","getCurrentValue","middle","useIsomorphicLayoutEffect","useVirtualizer","useFlushSync","rerender","instance2","flushSync","useVirtualizerBase","defaultRowHeight","Modal","overlayRef","modalRef","modalContent","createPortal","_1c","_1d","_1e","_1f","_20","_21","_22","_23","_24","_25","_26","_27","_28","_29","DefaultColumn","initialValue","meta","tableMeta","setValue","isEdit","setIsEdit","showModal","setShowModal","closeModalRef","additionalViewResult","additionalColumnsViews","payload","editable","updateData","changeValue","withBlur","edit","inputType","autoFocus","shownValue","view","valueFormat","toFixed","hasCellAction","showInModal","rowsAlign","verticalAlign","ctrlKey","metaKey","tableContainerRef","alphanumericCompare","aParts","bParts","maxLength","aPart","bPart","aIsNumber","bIsNumber","numA","numB","comparison","localeCompare","DateFiltration","setValues","resetValues","NumberFiltration","setSelectedItem","handleChangeNumber","HeaderDropdown","headerMeta","selectUnique","sortType","sortAnotherName","filtrationByNumber","filtrationByDate","filtrationByValue","sortBy","setSortBy","filterBy","setFilterBy","headerName","showUniqueValuesCount","leftAdditionalContent","rightAdditionalContent","rowsForUniqueCount","headerResultName","aName","bName","noValue","uniqueChecklistItems","uniqueValuesCount","sourceRows","sr","valueFilter","fb","columnName","selectedSet","filterSelectedItems","filterNumbers","filterDates","handleSortClick","uniqueFirstPerValue","hasAnyFilter","sortUp","sortDown","headerActionMenuItems","toggleUniqueFirstPerValue","existIndex","nextFlag","newResult","selectedValues","dedupeFirstByColumnValue","seen","createMeta","headerAlign","getNextHorizontalHeaders","currentIndex","lastVirtualColumnIndex","getPrevVerticalHeaders","headersGroups","groupIndex","columnIndex","getNextVerticalHeaders","getPrevHorizontalHeaders","rowMatchesFilter","filterByItem","cellValue","recursiveFilter","filtered","isNew","recursiveSort","sortByItem","sorted","aValue","bValue","compare","getIndexRange","to","isInteractiveSelectionTarget","VirtualTable","onChangeCell","cellWidth","rowButtons","fixedColumnsCount","headerRowHeight","bodyRowHeight","rowActionWidth","dynamicRowHeight","scrollToBottom","useTableContainerAsRootForPopup","borders","globalFilters","globalSorts","onFiltersChange","onSortsChange","leftAdditionalHeaderContent","rightAdditionalHeaderContent","showRowsNumbers","stripedRows","enableSelectRows","onSelectRowsChange","globalSelectedRows","fixedWithNumbersCount","selectedIndexes","setSelectedIndexes","selectedIndexesRef","selectedRowsRef","processedRowsRef","lastSelectedIndexRef","lastSelectedRowRef","selectionDragRef","onSelectRowsChangeRef","enableSelectRowsRef","rowNumberColumnId","memoizedColumns","buildRowsNumbersColumn","template","nextColumns","processedRows","newRows","nextFilterBy","memoizedData","dispatchEvent","CustomEvent","emitSelection","anchorIndex","orderedIndexes","nextIndexes","nextRows","previousIndexes","sameSelection","lastSelectedRow","nextAnchorIndex","getSelectedIndexesByRows","selectedRows","fallbackAnchor","partialFiltered","columnsEstimateSize","tableRef","useReactTable","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","mc","rowsFromTable","rowVirtualizer","columnVirtualizer","stickyIndexes","fixedColumnsWidth","headerGroupHeight","summaryHeaderHeight","headerGroupY","headerIndex","rowsTotalSize","columnsTotalSize","resetFilters","resetSorts","useImperativeHandle","rightBorderElement","containerWidth","tableWidth","bottomBorderElement","containerHeight","tableHeight","scrollListener","marginLeftChangingElements","virtualRows","virtualColumns","virtualRowsSizeByIndex","getRowSizeByIndex","getRowspanHeight","rowspan","clampedRowspan","lastRowIndex","rowsInRange","bordersCompensation","isCellCoveredByRowspan","upperCell","getRowIndexFromClientY","rowsCount","applySelectionGesture","isDrag","drag","gesture","ctrl","baseIndexes","anchor","computeRowSelection","clearSelectionDrag","pointerId","isDragCapable","hasDragged","hasPointerCapture","releasePointerCapture","getRowBackgroundColor","rowZIndexByIndex","zIndex","maxSpan","headerBaseZIndex","renderHeaderNode","metaLabel","headerLines","line","before","after","rowElement","getRowIndexFromTarget","onVerticalScrollbar","onHorizontalScrollbar","isScrollbarPointerEvent","isCellActionTarget","isModifierClick","startX","startY","setPointerCapture","onPointerMove","deltaX","deltaY","distanceSquared","rowSelectionDragThresholdPx","visibleY","scrollContainerWhileSelecting","onPointerUp","onPointerCancel","onDragStart","hgi","innerCell","columnFilterIndex","rowsForChecklist","afterNode","nextHorizontalHeaders","nextVerticalHeaders","prevHorizontalHeaders","prevVerticalHeaders","thWidth","thHeight","translateY","borderTop","virtualRow","virtualCol","isSticky","currentCell","isCoveredByRowspan","hasRowspan","justifyContent","ab","TreeViewItem","searchValue","isSelectable","startIcons","isOpen","setIsOpen","hasChildren","TreeView","withSearch","setSearchValue","onChangeSearchValue","cur","filteredData","getFilteredTree","lowerCasedSearch","TypographyWithTooltip","setTooltip","textOverflow","onMouseEnter","Pairs","pairs","column1Width","column2Width","showBorder","minRowHeight","pair","minHeight","rowContainer","labelsContainer","valuesContainer","Card","surfaceType","actions","headerOverlay","fullSizeBody","hasHeader","Chip","iconPlacement","secondary","onIconClick","handleIconClick","IconComponent","isIconLeft","isIconRight","Loader","alt","src","BASE_STYLE_ID","THEME_STYLE_ID","scopeCss","ensureStyleElement","existing","ThemeContext","useTheme","useThemeWithFallback","theme","toggleTheme","setTheme","ThemeProvider","styleContainer","setThemeState","savedTheme","localStorage","getItem","matchMedia","getInitialTheme","textContent","globalCss","themes","light","dark","darkBlue","mediaQuery","handleChange","setItem","newTheme"],"sourceRoot":""}
|