@scbt-ecom/ui 0.66.0 → 0.67.1

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.
Files changed (87) hide show
  1. package/dist/hooks.js +40 -44
  2. package/dist/hooks.js.map +1 -1
  3. package/dist/{index-CywQGF6V.js → index-Cw6f0svP.js} +11483 -10916
  4. package/dist/index-Cw6f0svP.js.map +1 -0
  5. package/dist/index-cm9kMt4X.js +435 -0
  6. package/dist/index-cm9kMt4X.js.map +1 -0
  7. package/dist/shared/ui/button/model/helpers.d.ts +1 -1
  8. package/dist/shared/ui/carousel/CarouselNative.d.ts +6 -0
  9. package/dist/shared/ui/formElements/controlled/index.d.ts +2 -0
  10. package/dist/shared/ui/formElements/controlled/radio/RadioGroupCardControl.d.ts +3 -0
  11. package/dist/shared/ui/formElements/controlled/radio/RadioGroupControl.d.ts +1 -1
  12. package/dist/shared/ui/formElements/controlled/radio/RadioGroupTabControl.d.ts +3 -0
  13. package/dist/shared/ui/formElements/controlled/radio/index.d.ts +2 -0
  14. package/dist/shared/ui/formElements/uncontrolled/dayPicker/DayPicker.d.ts +1 -1
  15. package/dist/shared/ui/formElements/uncontrolled/index.d.ts +7 -6
  16. package/dist/shared/ui/formElements/uncontrolled/input/Input.d.ts +1 -1
  17. package/dist/shared/ui/formElements/uncontrolled/maskInput/MaskInput.d.ts +1 -1
  18. package/dist/shared/ui/formElements/uncontrolled/radio/RadioGroup.d.ts +12 -0
  19. package/dist/shared/ui/formElements/uncontrolled/radio/index.d.ts +1 -1
  20. package/dist/shared/ui/formElements/uncontrolled/radio/ui/AdditionalContent.d.ts +12 -0
  21. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItem.d.ts +3 -0
  22. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItemCard.d.ts +4 -0
  23. package/dist/shared/ui/formElements/uncontrolled/radio/ui/RadioItemTab.d.ts +4 -0
  24. package/dist/shared/ui/formElements/uncontrolled/radio/ui/index.d.ts +3 -1
  25. package/dist/shared/ui/formElements/uncontrolled/select/Select.d.ts +1 -1
  26. package/dist/shared/ui/formElements/uncontrolled/select/ui/SelectItem.d.ts +1 -1
  27. package/dist/shared/ui/formElements/uncontrolled/textarea/Textarea.d.ts +1 -1
  28. package/dist/shared/ui/heading/Heading.d.ts +1 -1
  29. package/dist/shared/ui/hint/Hint.d.ts +1 -0
  30. package/dist/shared/ui/icon/sprite.gen.d.ts +1 -1
  31. package/dist/shared/ui/popover/Popover.d.ts +2 -1
  32. package/dist/shared/validation/base/base.validators.d.ts +2 -0
  33. package/dist/shared/validation/base/boolean.validators.d.ts +13 -0
  34. package/dist/shared/validation/base/number.validators.d.ts +1 -0
  35. package/dist/shared/validation/base/select.validators.d.ts +1 -0
  36. package/dist/shared/validation/base/string.validators.d.ts +1 -0
  37. package/dist/shared/validation/index.d.ts +1 -0
  38. package/dist/sprites/general.svg +1 -1
  39. package/dist/ui.js +1364 -1435
  40. package/dist/ui.js.map +1 -1
  41. package/dist/useDebounce-BZSs8EPD.js +1211 -0
  42. package/dist/useDebounce-BZSs8EPD.js.map +1 -0
  43. package/dist/useFieldsProgress-B_tgt_Hg.js +26 -0
  44. package/dist/useFieldsProgress-B_tgt_Hg.js.map +1 -0
  45. package/dist/validation.js +1 -1
  46. package/dist/widget.js +1264 -1098
  47. package/dist/widget.js.map +1 -1
  48. package/dist/widgets/calculator/Calculator.d.ts +7 -0
  49. package/dist/widgets/calculator/CalculatorRoot.d.ts +8 -0
  50. package/dist/widgets/calculator/index.d.ts +2 -0
  51. package/dist/widgets/calculator/model/helpers.d.ts +4 -0
  52. package/dist/widgets/calculator/model/index.d.ts +3 -0
  53. package/dist/widgets/calculator/model/types.d.ts +9 -0
  54. package/dist/widgets/calculator/model/utils.d.ts +11 -0
  55. package/dist/widgets/calculator/ui/CalculatorTabs.d.ts +12 -0
  56. package/dist/widgets/calculator/ui/calculatorInfo/CalculatorInfo.d.ts +4 -0
  57. package/dist/widgets/calculator/ui/calculatorInfo/index.d.ts +2 -0
  58. package/dist/widgets/calculator/ui/calculatorInfo/ui/AssistHint.d.ts +7 -0
  59. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatedBlock.d.ts +7 -0
  60. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoBody.d.ts +5 -0
  61. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoFooter.d.ts +8 -0
  62. package/dist/widgets/calculator/ui/calculatorInfo/ui/CalculatorInfoHead.d.ts +5 -0
  63. package/dist/widgets/calculator/ui/calculatorInfo/ui/InfoListItem.d.ts +15 -0
  64. package/dist/widgets/calculator/ui/calculatorInfo/ui/index.d.ts +6 -0
  65. package/dist/widgets/calculator/ui/index.d.ts +3 -0
  66. package/dist/widgets/calculator/ui/rootCalculator/RootCalculator.d.ts +15 -0
  67. package/dist/widgets/calculator/ui/rootCalculator/index.d.ts +1 -0
  68. package/dist/widgets/calculator/ui/rootCalculator/ui/CalculatorModal.d.ts +8 -0
  69. package/dist/widgets/calculator/ui/rootCalculator/ui/FieldsGroup.d.ts +25 -0
  70. package/dist/widgets/calculator/ui/rootCalculator/ui/index.d.ts +2 -0
  71. package/dist/widgets/dynamicForm/DynamicForm.d.ts +2 -1
  72. package/dist/widgets/dynamicForm/model/getDynamicSchema.d.ts +0 -10
  73. package/dist/widgets/dynamicForm/model/index.d.ts +0 -1
  74. package/dist/widgets/fieldMapper/index.d.ts +1 -1
  75. package/dist/widgets/fieldMapper/model/types.d.ts +6 -0
  76. package/dist/widgets/index.d.ts +1 -0
  77. package/dist/widgets/model/helpers.d.ts +2 -2
  78. package/dist/widgets/model/index.d.ts +1 -0
  79. package/dist/widgets/model/utils.d.ts +10 -0
  80. package/package.json +3 -2
  81. package/dist/index-BKXpPQ1s.js +0 -426
  82. package/dist/index-BKXpPQ1s.js.map +0 -1
  83. package/dist/index-CywQGF6V.js.map +0 -1
  84. package/dist/useDebounce-i1sdXecI.js +0 -1196
  85. package/dist/useDebounce-i1sdXecI.js.map +0 -1
  86. package/dist/useFieldsProgress-C3nmU8Vi.js +0 -21
  87. package/dist/useFieldsProgress-C3nmU8Vi.js.map +0 -1
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sources":["../lib/shared/ui/buttonIcon/ButtonIcon.tsx","../lib/shared/ui/skeleton/Skeleton.tsx","../lib/shared/ui/floatButton/FloatButton.tsx","../lib/shared/ui/icon/allowedIcons.ts","../node_modules/@radix-ui/react-tabs/dist/index.mjs","../lib/shared/ui/tabSwitcher/ui/TabContent.tsx","../lib/shared/ui/tabSwitcher/TabsSwitcher.tsx","../lib/shared/ui/modal/model/helpers.ts","../lib/shared/ui/modal/ui/IframeModalContent.tsx","../lib/shared/ui/modal/ui/ModalHeader.tsx","../lib/shared/ui/modal/Modal.tsx","../lib/shared/ui/table/ui/primitives/Primitives.tsx","../lib/shared/ui/table/ui/dataTableColumnHeader/DataTableColumnHeader.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../lib/shared/ui/pagination/Pagination.tsx","../lib/shared/ui/table/TablePagination.tsx","../lib/shared/ui/table/Desktop.tsx","../lib/shared/ui/table/Mobile.tsx","../lib/shared/ui/table/Table.tsx","../lib/shared/ui/table/model/TableUtils.tsx","../lib/shared/ui/carousel/model/hooks/useArrowNavigation.ts","../lib/shared/ui/carousel/model/hooks/useDotsNavigation.ts","../node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../lib/shared/ui/carousel/model/hooks/useCarousel.ts","../lib/shared/ui/carousel/ui/ArrowNavigationButton.tsx","../lib/shared/ui/carousel/ui/DotsNavigations.tsx","../lib/shared/ui/carousel/ui/CarouselContent.tsx","../lib/shared/ui/carousel/model/helpers.tsx","../lib/shared/ui/carousel/ui/ContainerWithNavigation.tsx","../lib/shared/ui/carousel/CarouselBase.tsx","../lib/shared/ui/providers/NotificationProvider.tsx","../lib/shared/ui/breadcrumbs/Breadcrumbs.tsx","../lib/shared/ui/slot/ui/Slottable.tsx","../lib/shared/ui/slot/ui/SlotClone.tsx","../lib/shared/ui/slot/model/isSlottable.ts","../lib/shared/ui/slot/model/getElementRef.ts","../lib/shared/ui/slot/model/mergeProps.ts","../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { type ComponentProps, forwardRef, type ReactElement } from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '$/shared/utils'\n\ntype ButtonClasses = {\n button: string\n icon: string\n}\n\nconst buttonConfig = cva(\n 'group flex items-center justify-center cursor-pointer rounded-full outline-offset-[3px] outline-transparent outline-2 transition duration-12 active:scale-[0.97] disabled:pointer-events-none',\n {\n variants: {\n intent: {\n primary:\n 'text-icon-white bg-color-primary-default hover:bg-color-primary-hover active:bg-color-primary-hover focus:bg-color-primary-hover focus:outline-primary-focus disabled:bg-color-primary-disabled',\n secondary:\n 'text-icon-primary-default bg-color-transparent border border-solid outline-offset-4 border-primary-default hover:bg-color-primary-tr-hover hover:text-icon-primary-default hover:border-primary-hover active:bg-color-primary-tr-pressed active:border-primary-hover active:text-icon-primary-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus disabled:bg-color-blue-grey-200 disabled:border-transparent disabled:text-icon-primary-disabled',\n ghost:\n 'text-icon-primary-default bg-color-transparent hover:bg-color-primary-tr-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus active:text-icon-primary-hover active:bg-color-primary-tr-pressed disabled:bg-color-transparent disabled:text-icon-primary-disabled'\n },\n size: {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12'\n }\n },\n defaultVariants: {\n intent: 'primary',\n size: 'lg'\n }\n }\n)\n\ntype ButtonProps = VariantProps<typeof buttonConfig>\n\nexport interface IButtonIconProps extends Omit<ComponentProps<'button'>, 'className'>, ButtonProps {\n children: ReactElement\n classes?: Partial<ButtonClasses>\n}\n\nexport const ButtonIcon = forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ size, intent, children, classes, type = 'button', ...props }, ref) => {\n return (\n <button ref={ref} type={type} className={cn(buttonConfig({ intent, size }), classes?.button)} {...props}>\n <span className={cn(classes?.icon)}>{children}</span>\n </button>\n )\n }\n)\n","import type { HTMLAttributes } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nexport const Skeleton = ({ className }: SkeletonProps) => {\n return <div className={cn('skeleton-apply h-full w-full', className)}></div>\n}\n","import { Button, type ButtonProps } from '../button'\nimport { ResponsiveContainer } from '../responsiveContainer'\nimport { cn } from '$/shared/utils'\n\ntype FloatButtonClasses = {\n root?: string\n button?: string\n}\n\nexport interface FloatButtonProps {\n isVisible: boolean\n classes?: FloatButtonClasses\n children: React.ReactElement\n buttonProps?: ButtonProps\n}\n\nexport const FloatButton = ({ isVisible, classes, children, buttonProps }: FloatButtonProps) => {\n return (\n <ResponsiveContainer\n className={cn(\n 'fixed bottom-0 left-1/2 z-[60] w-full max-w-[604px] -translate-x-1/2 translate-y-0 rounded-t-lg bg-color-white px-6 py-4 shadow-[0px_-6px_8px_0px_#2929290A] transition-transform duration-1000 desktop:hidden',\n { 'translate-y-[100%]': !isVisible },\n classes?.root\n )}\n >\n {children}\n <Button size='lg' className={cn('m-auto w-full', classes?.button)} {...buttonProps}>\n Оформить заявку\n </Button>\n </ResponsiveContainer>\n )\n}\n","import type { AllowedIcons } from '$/shared/ui/icon'\n\nexport const allowedIcons: {\n group: Record<string, AllowedIcons[]>,\n flatten: AllowedIcons[]\n} = {\n group: {\n \"arrows\": [\n \"arrows/arrowCircle\",\n \"arrows/arrowDownRight\",\n \"arrows/arrowLink\",\n \"arrows/arrowRight\",\n \"arrows/arrowRotate\",\n \"arrows/arrowScroll\"\n ],\n \"brandLogos\": [\n \"brandLogos/logoBlack\",\n \"brandLogos/logoBusiness\",\n \"brandLogos/logoGray\",\n \"brandLogos/logoInsurance\",\n \"brandLogos/logoMain\",\n \"brandLogos/logoWhite\"\n ],\n \"communication\": [\n \"communication/phone\"\n ],\n \"editor\": [\n \"editor/bold\",\n \"editor/heading\",\n \"editor/italic\",\n \"editor/link\",\n \"editor/list\",\n \"editor/palette\",\n \"editor/redo\",\n \"editor/removeFormatting\",\n \"editor/space\",\n \"editor/strikethrough\",\n \"editor/typography\",\n \"editor/underline\",\n \"editor/undo\"\n ],\n \"files\": [\n \"files/border\",\n \"files/borderError\",\n \"files/documentFilled\",\n \"files/documentOutline\",\n \"files/upload\"\n ],\n \"general\": [\n \"general/calendar\",\n \"general/check\",\n \"general/close\",\n \"general/edit\",\n \"general/hiddenEye\",\n \"general/menu\",\n \"general/plus\",\n \"general/reorder\",\n \"general/showEye\"\n ],\n \"info\": [\n \"info/helpCircle\",\n \"info/warningCircle\"\n ],\n \"logos\": [\n \"logos/beeline\",\n \"logos/megafon\",\n \"logos/mts\"\n ],\n \"social\": [\n \"social/classmates\",\n \"social/telegram\",\n \"social/vk\"\n ],\n \"status\": [\n \"status/badSmile\",\n \"status/iconMark\",\n \"status/iconRetry\",\n \"status/iconUser\"\n ]\n},\n flatten: [\n \"arrows/arrowCircle\",\n \"arrows/arrowDownRight\",\n \"arrows/arrowLink\",\n \"arrows/arrowRight\",\n \"arrows/arrowRotate\",\n \"arrows/arrowScroll\",\n \"brandLogos/logoBlack\",\n \"brandLogos/logoBusiness\",\n \"brandLogos/logoGray\",\n \"brandLogos/logoInsurance\",\n \"brandLogos/logoMain\",\n \"brandLogos/logoWhite\",\n \"communication/phone\",\n \"editor/bold\",\n \"editor/heading\",\n \"editor/italic\",\n \"editor/link\",\n \"editor/list\",\n \"editor/palette\",\n \"editor/redo\",\n \"editor/removeFormatting\",\n \"editor/space\",\n \"editor/strikethrough\",\n \"editor/typography\",\n \"editor/underline\",\n \"editor/undo\",\n \"files/border\",\n \"files/borderError\",\n \"files/documentFilled\",\n \"files/documentOutline\",\n \"files/upload\",\n \"general/calendar\",\n \"general/check\",\n \"general/close\",\n \"general/edit\",\n \"general/hiddenEye\",\n \"general/menu\",\n \"general/plus\",\n \"general/reorder\",\n \"general/showEye\",\n \"info/helpCircle\",\n \"info/warningCircle\",\n \"logos/beeline\",\n \"logos/megafon\",\n \"logos/mts\",\n \"social/classmates\",\n \"social/telegram\",\n \"social/vk\",\n \"status/badSmile\",\n \"status/iconMark\",\n \"status/iconRetry\",\n \"status/iconUser\"\n]\n}","\"use client\";\n\n// packages/react/tabs/src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n","'use client'\n\nimport * as TabPrimitive from '@radix-ui/react-tabs'\nimport type { TabRenderContent, TabsClasses } from './model/types'\nimport { TabContent } from './ui/TabContent'\nimport { cn } from '$/shared/utils'\n\nexport interface TabsSwitcherProps {\n renderContent: TabRenderContent\n value: string\n onChangeTab: (tab: string) => void\n defaultActiveTabId?: string\n classes?: TabsClasses\n}\n\nexport const TabsSwitcher = ({ renderContent, defaultActiveTabId = '1', value, onChangeTab, classes }: TabsSwitcherProps) => {\n return (\n <TabPrimitive.Root\n value={value}\n onValueChange={onChangeTab}\n defaultValue={defaultActiveTabId}\n className={cn('flex flex-col', classes?.root)}\n >\n <TabPrimitive.List className={cn('flex items-center gap-4', classes?.list)}>\n {renderContent?.triggers?.map(({ id, label }) => (\n <TabPrimitive.Trigger\n key={id}\n value={id}\n className={cn(\n 'desk-body-regular-l cursor-pointer rounded-sm bg-color-blue-grey-100 px-4 py-2 text-color-secondary outline outline-2 outline-offset-2 outline-transparent transition-colors hover:bg-color-blue-grey-200 hover:text-color-secondary data-[state=\"active\"]:!bg-color-primary-default data-[state=\"active\"]:!text-color-white',\n classes?.trigger\n )}\n >\n {label}\n </TabPrimitive.Trigger>\n ))}\n </TabPrimitive.List>\n <TabContent contents={renderContent?.contents} classes={classes?.tabContent} />\n </TabPrimitive.Root>\n )\n}\n","export const modalOverlayAnimation = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 },\n transition: { duration: 0.3, ease: 'easeInOut' }\n}\n\nexport const modalContentAnimation = {\n initial: { opacity: 0, scale: 0 },\n animate: { opacity: 1, scale: 1 },\n exit: { opacity: 0, scale: 0 },\n transition: { duration: 0.3, ease: 'easeInOut' }\n}\n","import { forwardRef, useEffect, useState } from 'react'\nimport { cn } from '$/shared/utils'\n\ntype IframeModalContentProps = {\n children: (body: HTMLElement) => React.ReactNode\n className?: string\n} & Omit<React.IframeHTMLAttributes<HTMLIFrameElement>, 'children'>\n\nexport const IframeModalContent = forwardRef<HTMLIFrameElement, IframeModalContentProps>(\n ({ children, className, ...props }, ref) => {\n const [iframeBody, setIframeBody] = useState<HTMLElement | null>(null)\n\n useEffect(() => {\n const iframe = ref && 'current' in ref ? ref.current : null\n if (!iframe || !iframe.contentDocument) return\n\n if (iframe.contentDocument?.readyState === 'complete') {\n document.querySelectorAll('head > link[rel=\"stylesheet\"], head > style').forEach((node) => {\n iframe.contentDocument?.head.appendChild(node.cloneNode(true))\n })\n\n setIframeBody(iframe.contentDocument.body)\n }\n }, [])\n\n return (\n <iframe id='modal-preview' {...props} ref={ref} className={cn('h-[60vh] w-[60vw]', className)}>\n {iframeBody && children(iframeBody)}\n </iframe>\n )\n }\n)\n","import type { ModalProps } from '../Modal'\nimport { Heading, Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport type TModalHeaderClasses = {\n header?: string\n title?: string\n icon?: string\n}\n\nexport interface IModalHeaderProps extends Pick<ModalProps, 'closeModal' | 'title'> {\n classes?: TModalHeaderClasses\n}\n\nexport const ModalHeader = ({ title, closeModal, classes }: IModalHeaderProps) => {\n return (\n <div className={cn('flex items-start justify-between gap-4', classes?.header)}>\n {title && (\n <Heading as='h3' className={cn('flex-1 text-color-dark', classes?.title)}>\n {title}\n </Heading>\n )}\n <Icon\n onClick={closeModal}\n name='general/close'\n className={cn('size-8 cursor-pointer text-icon-dark-hover', classes?.icon)}\n />\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { useRef } from 'react'\nimport { createPortal } from 'react-dom'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { modalContentAnimation, modalOverlayAnimation } from './model/helpers'\nimport { IframeModalContent } from './ui/IframeModalContent'\nimport { ModalHeader, type TModalHeaderClasses } from './ui/ModalHeader'\nimport { cn } from '$/shared/utils'\n\ntype ModalClasses = {\n overlay?: string\n modal?: string\n content?: string\n modalHeader?: TModalHeaderClasses\n}\n\nexport interface ModalProps {\n children: React.ReactElement\n isModalOpen: boolean\n classes?: ModalClasses\n isPortal?: boolean\n portalContainer?: HTMLElement\n title?: string | React.ReactElement\n closeModal: () => void\n iframe?: boolean\n}\n\nexport const Modal = ({\n title,\n children,\n isModalOpen,\n isPortal = true,\n portalContainer = globalThis?.document?.body,\n closeModal,\n classes,\n iframe\n}: ModalProps) => {\n if (isModalOpen) {\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = 'visible'\n }\n\n const iframeRef = useRef<HTMLIFrameElement>(null)\n\n const modalBody = (\n <AnimatePresence>\n {isModalOpen && (\n <motion.div\n tabIndex={-1}\n onClick={closeModal}\n className={cn(\n 'fixed inset-0 flex h-screen w-screen items-center justify-center bg-color-overlay',\n { 'z-1000': !isPortal },\n classes?.overlay\n )}\n onKeyDown={(event) => {\n if (event.key === 'Escape') {\n closeModal()\n }\n }}\n data-test-id='modal-overlay'\n {...modalOverlayAnimation}\n >\n <motion.div\n onClick={(event) => event.stopPropagation()}\n className={cn(\n 'w-full max-w-[600px] rounded-md bg-color-white px-4 py-6 shadow-sm desktop:px-6 desktop:py-8',\n classes?.modal\n )}\n data-test-id='modal'\n {...modalContentAnimation}\n >\n <ModalHeader title={title} closeModal={closeModal} classes={classes?.modalHeader} />\n {iframe ? (\n <IframeModalContent ref={iframeRef} className={cn('mt-4', classes?.content)}>\n {(iframeBody) => createPortal(children, iframeBody)}\n </IframeModalContent>\n ) : (\n <div className={cn('mt-4', classes?.content)}>{children}</div>\n )}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n return <>{isPortal ? createPortal(modalBody, portalContainer) : modalBody}</>\n}\n","import { forwardRef } from 'react'\n\nexport const Table = forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>((props, ref) => (\n <table ref={ref} {...props} />\n))\nTable.displayName = 'Table'\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <thead ref={ref} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tbody ref={ref} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tfoot ref={ref} {...props} />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>((props, ref) => (\n <tr ref={ref} {...props} />\n))\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <th ref={ref} {...props} />\n))\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <td ref={ref} {...props} />\n))\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>((props, ref) => (\n <caption ref={ref} {...props} />\n))\nTableCaption.displayName = 'TableCaption'\n","import { type SortDirection } from '@tanstack/react-table'\nimport { useDevice } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\ntype DataTableColumnHeaderClasses = {\n root?: string\n content?: string\n icon?: string\n}\n\ntype DataTableColumnHeaderProps = {\n children: React.ReactNode\n isSorted: boolean | SortDirection\n toggleSorting: (desc: boolean) => void\n nextSortingOrder: boolean | SortDirection\n canSort: boolean\n classes?: DataTableColumnHeaderClasses\n}\n\nexport const DataTableColumnHeader = ({\n children,\n canSort,\n toggleSorting,\n nextSortingOrder,\n isSorted,\n classes\n}: DataTableColumnHeaderProps) => {\n const { root, content, icon } = classes || {}\n\n const { isDesktop } = useDevice()\n\n const isSortable = canSort && isDesktop\n\n return (\n <button\n type='button'\n className={cn('desk-body-regular-l flex items-center justify-center gap-x-2 text-color-secondary', root)}\n onClick={() => toggleSorting(!isSorted)}\n disabled={!isSortable}\n >\n <span className={cn('', content)}>{children}</span>\n {isSortable && (\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'size-4 rotate-90 text-color-current duration-100',\n {\n '-rotate-90': !nextSortingOrder\n },\n icon\n )}\n />\n )}\n </button>\n )\n}\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\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 = _contextDocument || typeof document !== 'undefined' ? document : null;\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","import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils'\nimport { Pagination, type PaginationProps } from '../pagination'\n\ntype TablePaginationClasses = {\n root?: string\n displayShown?: string\n pagination?: PaginationProps['classes']\n}\n\nexport type TablePaginationProps = {\n pageSize: number\n page: number\n rowsCount: number\n pageCount: number\n onPageIndexChange: (page: number) => void\n classes?: TablePaginationClasses\n}\n\nexport const TablePagination = ({ page, pageCount, pageSize, onPageIndexChange, rowsCount, classes }: TablePaginationProps) => {\n const prevRows = pageSize * page\n const rowsLeft = prevRows > rowsCount ? rowsCount : prevRows\n\n return (\n <div className={cn('flex w-full items-center justify-between', classes?.root)}>\n <span className={cn('desk-body-regular-m text-color-tetriary', classes?.displayShown)}>\n Показано {rowsLeft} из {rowsCount}\n </span>\n <Pagination\n totalPages={pageCount}\n changePage={(pageIndex) => onPageIndexChange(pageIndex)}\n page={page}\n ellipsis={1}\n classes={classes?.pagination}\n />\n </div>\n )\n}\n","import { flexRender, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'pagination'> & {\n table: TTable<TData>\n}\n\nexport const Desktop = <TData extends {}>({ mode, enableHeaders, table, classes, pagination }: DesktopTableProps<TData>) => {\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <Table className={cn('w-full', classes?.table)}>\n {enableHeaders && (\n <TableHeader className='px-2'>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className={cn(\n 'w-full',\n {\n 'border-b border-b-[rgba(234,237,241,1)]': mode === 'solid'\n },\n classes?.tableHeader\n )}\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd'\n },\n classes?.tableHead\n )}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n )}\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, cellIndex) => (\n <TableCell\n key={cell.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd',\n 'font-medium': cellIndex !== 0\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={table.getRowCount()}>Not found</TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n","import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>Not found</div>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} mode={mode} pagination={pagination} classes={classes} />\n )\n}\n","import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key)\n })\n }) as ColumnDef<TData>[]\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\nimport type { NavigationMode } from '../types'\n\ntype UseArrowNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler?: (emblaApi: EmblaCarouselType) => void\n}\n\nexport const useArrowNavigation = ({ emblaApi, navigationHandler }: UseArrowNavigationProps) => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onClickNavigationButton = useCallback(\n (mode: NavigationMode) => {\n if (!emblaApi) return\n switch (mode) {\n case 'prev':\n emblaApi.scrollPrev()\n break\n case 'next':\n emblaApi.scrollNext()\n break\n }\n\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotsNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler: (emblaApi: EmblaCarouselType) => void\n setVisibleIndex: (index: number) => void\n}\n\nexport type UseDotsNavigationReturn = {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n}\n\nexport const useDotsNavigation = ({ emblaApi, navigationHandler, setVisibleIndex }: UseDotsNavigationProps) => {\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([])\n\n const onClickDot = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setVisibleIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n scrollSnaps,\n onClickDot\n }\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction normalizeDelay(emblaApi, delay) {\n const scrollSnaps = emblaApi.scrollSnapList();\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay);\n }\n return delay(scrollSnaps, emblaApi);\n}\nfunction getAutoplayRootNode(emblaApi, rootNode) {\n const emblaRootNode = emblaApi.rootNode();\n return rootNode && rootNode(emblaRootNode) || emblaRootNode;\n}\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let delay;\n let timerStartTime = null;\n let timerId = 0;\n let autoplayActive = false;\n let mouseIsOver = false;\n let playOnDocumentVisible = false;\n let jump = false;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n delay = normalizeDelay(emblaApi, options.delay);\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag;\n const root = getAutoplayRootNode(emblaApi, options.rootNode);\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown);\n }\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter);\n }\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave);\n }\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay);\n }\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay);\n }\n if (options.playOnInit) startAutoplay();\n }\n function destroy() {\n emblaApi.off('pointerDown', pointerDown).off('pointerUp', pointerUp).off('slideFocusStart', stopAutoplay);\n stopAutoplay();\n destroyed = true;\n autoplayActive = false;\n }\n function setTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()]);\n timerStartTime = new Date().getTime();\n emblaApi.emit('autoplay:timerset');\n }\n function clearTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = 0;\n timerStartTime = null;\n emblaApi.emit('autoplay:timerstopped');\n }\n function startAutoplay() {\n if (destroyed) return;\n if (documentIsHidden()) {\n playOnDocumentVisible = true;\n return;\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play');\n setTimer();\n autoplayActive = true;\n }\n function stopAutoplay() {\n if (destroyed) return;\n if (autoplayActive) emblaApi.emit('autoplay:stop');\n clearTimer();\n autoplayActive = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive;\n return stopAutoplay();\n }\n if (playOnDocumentVisible) startAutoplay();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function pointerDown() {\n if (!mouseIsOver) stopAutoplay();\n }\n function pointerUp() {\n if (!mouseIsOver) startAutoplay();\n }\n function mouseEnter() {\n mouseIsOver = true;\n stopAutoplay();\n }\n function mouseLeave() {\n mouseIsOver = false;\n startAutoplay();\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n startAutoplay();\n }\n function stop() {\n if (autoplayActive) stopAutoplay();\n }\n function reset() {\n if (autoplayActive) startAutoplay();\n }\n function isPlaying() {\n return autoplayActive;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n emblaApi.emit('autoplay:select');\n if (kill) return stopAutoplay();\n startAutoplay();\n }\n function timeUntilNext() {\n if (!timerStartTime) return null;\n const currentDelay = delay[emblaApi.selectedScrollSnap()];\n const timePastSinceStart = new Date().getTime() - timerStartTime;\n return currentDelay - timePastSinceStart;\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying,\n timeUntilNext\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import { useCallback } from 'react'\nimport type { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport Autoplay, { type AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport useEmblaCarousel from 'embla-carousel-react'\n\ntype UseCarouselProps = {\n carouselOptions: EmblaOptionsType\n autoPlayOptions?: AutoplayOptionsType\n}\n\nexport const useCarousel = ({ carouselOptions, autoPlayOptions }: UseCarouselProps) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(carouselOptions, [Autoplay(autoPlayOptions)])\n\n const navigationHandler = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop = autoplay.options.stopOnInteraction === false ? autoplay.reset : autoplay.stop\n\n resetOrStop()\n }, [])\n\n return { emblaRef, emblaApi, navigationHandler }\n}\n","import type { ComponentPropsWithRef } from 'react'\nimport { Icon } from '../../icon'\nimport type { NavigationMode } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type ArrowNavigationButtonClasses = {\n button?: string\n icon?: string\n}\n\ninterface ArrowNavigationButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'onClick'> {\n mode: NavigationMode\n onClick: (mode: NavigationMode) => void\n classes?: ArrowNavigationButtonClasses\n}\n\nexport const ArrowNavigationButton = ({ mode, onClick, children, classes, ...props }: ArrowNavigationButtonProps) => {\n return (\n <button\n className={cn('group flex size-8 cursor-pointer items-center justify-center p-1', classes?.button)}\n type='button'\n onClick={() => onClick(mode)}\n {...props}\n >\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'h-full w-full text-icon-primary-default transition-colors group-disabled:text-icon-disabled',\n { 'rotate-180': mode === 'prev' },\n classes?.icon\n )}\n />\n {children}\n </button>\n )\n}\n","import type { DotsOptions } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type DotsNavigationsClasses = {\n dotsWrapper?: string\n dot?: string\n}\n\ninterface DotsNavigationsProps extends Pick<DotsOptions, 'position'> {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n visibleIndex: number\n classes?: DotsNavigationsClasses\n}\n\nexport const DotsNavigations = ({ scrollSnaps, visibleIndex, onClickDot, position, classes, ...props }: DotsNavigationsProps) => {\n return (\n <div\n className={cn(\n 'mt-4 flex items-center gap-[6px]',\n {\n 'justify-center': position === 'center',\n 'justify-end': position === 'bot-right',\n 'justify-start': position === 'bot-left'\n },\n classes?.dotsWrapper\n )}\n >\n {scrollSnaps.map((_, index) => (\n <button\n type='button'\n key={index}\n onClick={() => onClickDot(index)}\n className={cn(\n 'size-2 cursor-pointer rounded-full bg-color-primary-tr-pressed',\n { 'h-2 w-4 rounded-md bg-color-primary-default': index === visibleIndex },\n classes?.dot\n )}\n {...props}\n ></button>\n ))}\n </div>\n )\n}\n","import { forwardRef, type ReactNode } from 'react'\nimport type { DotsOptions, UseDotsNavigationReturn } from '../model'\nimport { DotsNavigations, type DotsNavigationsClasses } from './DotsNavigations'\nimport { useDevice } from '$/shared/hooks'\nimport { cn } from '$/shared/utils'\n\nexport type CarouselContentClasses = {\n dotsClasses?: DotsNavigationsClasses\n slidesOverlay?: string\n slidesWrapper?: string\n}\n\nexport interface CarouselContentProps {\n classes?: CarouselContentClasses\n children: ReactNode\n dotsProps: UseDotsNavigationReturn\n dotsOptions: DotsOptions\n visibleIndex: number\n}\n\nexport const CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ visibleIndex, classes, children, dotsProps, dotsOptions }, ref) => {\n const { isMobile, isDesktop } = useDevice()\n const { mobVisible, deskVisible, ...dotsRestOptions } = dotsOptions ?? {}\n\n //Отображения точек если переданы и мобильное разрешение\n const withDotsOnMob = mobVisible && isMobile\n //Отображения точек если переданы и полноэкранное разрешение\n const withDotsOnDesk = deskVisible && isDesktop\n\n const dotsFullProps = {\n visibleIndex,\n ...dotsProps\n }\n\n return (\n <div className={cn('mx-auto overflow-hidden', classes?.slidesOverlay)} ref={ref}>\n <div className={cn('flex touch-pan-y gap-6', classes?.slidesWrapper)}>{children}</div>\n {(withDotsOnDesk || withDotsOnMob) && <DotsNavigations {...dotsFullProps} {...dotsRestOptions} />}\n </div>\n )\n }\n)\n","import type { EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { SlideFullScreen, SlideOnlyImage, SlideProductCard } from '../ui'\nimport type { CarouselSlideVariant, DotsOptions, NavArrowOptions } from './types'\nimport type { DiscriminatedUnion } from '$/shared/types'\n\nexport const defaultCarouselOptions: EmblaOptionsType = {\n dragFree: true,\n loop: false,\n align: 'start',\n slidesToScroll: 1\n}\n\nexport const defaultDotsOptions: DotsOptions = {\n position: 'center',\n deskVisible: true,\n mobVisible: true\n}\n\nexport const defaultNavArrowOptions: NavArrowOptions = {\n position: 'top-right',\n deskVisible: true,\n mobVisible: false\n}\n\nexport const defaultAutoPlayOptions: AutoplayOptionsType = {\n active: true\n}\n\nexport const renderSlideVariant = (props: DiscriminatedUnion<'variant', CarouselSlideVariant>) => {\n switch (props.variant) {\n case 'productCard':\n return <SlideProductCard {...props} />\n case 'onlyImage':\n return <SlideOnlyImage {...props} />\n case 'fullScreen':\n return <SlideFullScreen {...props} />\n }\n}\n","import type { ReactNode } from 'react'\nimport type { NavigationMode } from '../model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses } from './ArrowNavigationButton'\nimport { cn } from '$/shared/utils'\n\nexport type ContainerWithNavigationClasses = {\n wrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n}\n\nexport interface ContainerWithNavigationProps {\n children: ReactNode\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onClickNavigationButton: (mode: NavigationMode) => void\n classes?: ContainerWithNavigationClasses\n}\n\nexport const ContainerWithNavigation = ({\n children,\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton,\n classes\n}: ContainerWithNavigationProps) => {\n return (\n <div className={cn('relative flex items-center gap-1', classes?.wrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={{\n button: cn('absolute -left-12 top-1/2 -transform-y-1/2', classes?.arrowLeftClasses?.button),\n icon: cn(classes?.arrowLeftClasses?.icon)\n }}\n />\n {children}\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={{\n button: cn('absolute -right-12 top-1/2 -transform-y-1/2', classes?.arrowRightClasses?.button),\n icon: cn(classes?.arrowRightClasses?.icon)\n }}\n />\n </div>\n )\n}\n","import { type HTMLAttributes, type ReactNode } from 'react'\nimport { type EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { useDevice } from '../../hooks'\nimport { Heading } from '../heading'\nimport {\n defaultAutoPlayOptions,\n defaultCarouselOptions,\n defaultDotsOptions,\n defaultNavArrowOptions,\n type DotsOptions,\n type NavArrowOptions,\n useArrowNavigation,\n useCarousel,\n useDotsNavigation\n} from './model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses, CarouselContent, type CarouselContentClasses } from './ui'\nimport { ContainerWithNavigation, type ContainerWithNavigationClasses } from './ui/ContainerWithNavigation'\nimport { cn } from '$/shared/utils'\n\ntype CarouselClasses = {\n root?: string\n header?: string\n heading?: string\n arrowsNavWrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n containerWithNavClasses?: ContainerWithNavigationClasses\n carouselContentClasses?: CarouselContentClasses\n}\n\nexport interface CarouselBaseProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n heading?: string\n carouselOptions?: EmblaOptionsType\n dotsOptions?: DotsOptions\n navArrowOptions?: NavArrowOptions\n autoPlayOptions?: AutoplayOptionsType\n setVisibleIndex: (index: number) => void\n visibleIndex: number\n classes?: CarouselClasses\n}\n\nexport const CarouselBase = ({\n dotsOptions = defaultDotsOptions,\n navArrowOptions = defaultNavArrowOptions,\n carouselOptions = defaultCarouselOptions,\n heading,\n autoPlayOptions,\n setVisibleIndex,\n visibleIndex,\n children,\n classes,\n ...props\n}: CarouselBaseProps) => {\n const mergedCarouselOptions = { ...defaultCarouselOptions, ...carouselOptions }\n const mergedAutoPlayOptions = { ...defaultAutoPlayOptions, ...autoPlayOptions }\n const mergedNavArrowOptions = { ...defaultNavArrowOptions, ...navArrowOptions }\n const mergedDotsOptions = { ...defaultDotsOptions, ...dotsOptions }\n\n const { emblaApi, navigationHandler, emblaRef } = useCarousel({\n carouselOptions: mergedCarouselOptions,\n autoPlayOptions: mergedAutoPlayOptions\n })\n\n const dotsProps = useDotsNavigation({ emblaApi, navigationHandler, setVisibleIndex })\n const { prevBtnDisabled, nextBtnDisabled, onClickNavigationButton } = useArrowNavigation({\n emblaApi,\n navigationHandler\n })\n\n const { isMobile, isDesktop } = useDevice()\n const { deskVisible, mobVisible, position: navArrowPosition } = mergedNavArrowOptions ?? {}\n\n //Отображения стрелок если переданы и мобильное разрешение\n const withNavArrowsOnMob = mobVisible && isMobile\n //Отображения стрелок если переданы и полноэкранное разрешение\n const winNavArrowsOnDesk = deskVisible && isDesktop\n //Отображения стрелок если переданы\n const winNavArrows = winNavArrowsOnDesk || withNavArrowsOnMob\n\n const withHeadingAndArrowsTop = Boolean(heading) || (winNavArrows && navArrowPosition === 'top-right')\n\n return (\n <div className={cn('flex flex-col', classes?.root)} {...props}>\n {withHeadingAndArrowsTop && (\n <div className={cn('flex items-center justify-between gap-6', { 'mb-6': withHeadingAndArrowsTop }, classes?.header)}>\n {Boolean(heading) && (\n <Heading as='h2' className={cn(classes?.heading)}>\n Другие предложения\n </Heading>\n )}\n\n {winNavArrows && navArrowPosition === 'top-right' && (\n <div className={cn('ml-auto flex items-center gap-2', classes?.arrowsNavWrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={classes?.arrowLeftClasses}\n />\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={classes?.arrowRightClasses}\n />\n </div>\n )}\n </div>\n )}\n\n {winNavArrows && navArrowPosition === 'center' ? (\n <ContainerWithNavigation\n onClickNavigationButton={onClickNavigationButton}\n prevBtnDisabled={prevBtnDisabled}\n nextBtnDisabled={nextBtnDisabled}\n classes={classes?.containerWithNavClasses}\n >\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n </ContainerWithNavigation>\n ) : (\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n )}\n </div>\n )\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n","import { type ReactElement } from 'react'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface BreadcrumbLink {\n label: string | ReactElement\n path: string\n isDisabled?: boolean\n}\ninterface BreadcrumbLinkWithoutPath {\n label: string\n isDisabled?: boolean\n}\n\nexport type LinksList = [...BreadcrumbLink[], BreadcrumbLinkWithoutPath]\n\nexport interface BreadcrumbsProps {\n linksList: LinksList\n}\n\n//TODO: Его должны переработать не использовать! DEPRECATED\n\nexport const Breadcrumbs = ({ linksList }: BreadcrumbsProps) => {\n return (\n <div aria-label='Breadcrumb' className='flex max-w-[840px] items-center gap-2'>\n {linksList.map((link) => (\n <>\n {'path' in link ? (\n <div\n className={cn(\n 'flex items-center gap-1 rounded-sm border-2 border-solid border-transparent px-1 focus-within:border-primary-focus',\n { 'pointer-events-none !border-transparent': link?.isDisabled }\n )}\n >\n <a\n href={link.path}\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'desk-body-regular-m text-color-primary-default outline-none hover:text-color-primary-hover focus:text-color-primary-default',\n { '!text-color-disabled': link?.isDisabled }\n )}\n >\n {link.label}\n </a>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-4 text-icon-primary-default', { '!text-icon-disabled': link?.isDisabled })}\n />\n </div>\n ) : (\n <div aria-current='page' className='desk-body-regular-m text-color-blue-grey-600'>\n {link.label}\n </div>\n )}\n </>\n ))}\n </div>\n )\n}\n","export type SlottableProps = {\n children: React.ReactNode\n}\n\nexport const Slottable = ({ children }: SlottableProps) => <>{children}</>\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n","import { isValidElement } from 'react'\nimport { Slottable, type SlottableProps } from '../ui'\n\nexport const isSlottable = (child: React.ReactNode): child is React.ReactElement<SlottableProps, typeof Slottable> => {\n return isValidElement(child) && child.type === Slottable\n}\n","export const getElementRef = (element: React.ReactElement) => {\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get\n let warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element as any).ref\n }\n\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get\n warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref\n }\n\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref\n}\n","type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["buttonConfig","cva","ButtonIcon","forwardRef","size","intent","children","classes","type","props","ref","jsx","cn","Skeleton","className","FloatButton","isVisible","buttonProps","jsxs","ResponsiveContainer","Button","allowedIcons","TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabContent","contents","id","body","accordion","TabPrimitive.Content","Accordion","TabsSwitcher","renderContent","defaultActiveTabId","onChangeTab","TabPrimitive.Root","TabPrimitive.List","_a","label","TabPrimitive.Trigger","modalOverlayAnimation","modalContentAnimation","IframeModalContent","iframeBody","setIframeBody","useState","useEffect","iframe","node","ModalHeader","title","closeModal","Heading","Icon","Modal","isModalOpen","isPortal","portalContainer","iframeRef","useRef","modalBody","AnimatePresence","motion","createPortal","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTableColumnHeader","canSort","toggleSorting","nextSortingOrder","isSorted","root","content","icon","isDesktop","useDevice","isSortable","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","row","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFacetedRowModel","preRowModel","columnFilters","globalFilter","filterableIds","filterRowsImpl","getFacetedUniqueValues","_table$getColumn","facetedRowModel","facetedUniqueValues","j","_facetedUniqueValues$","getFilteredRowModel","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","Pagination","page","between","totalPages","changePage","ellipsis","positions","visiblePages","range","active","TablePagination","onPageIndexChange","rowsCount","prevRows","rowsLeft","Desktop","mode","enableHeaders","paginationEnabled","paginationProps","cellIndex","Mobile","DataTable","setColumnFilters","setSorting","isMobile","TableUtils","template","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","TypeGuards","useArrowNavigation","emblaApi","navigationHandler","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","onClickNavigationButton","useCallback","onSelect","useDotsNavigation","setVisibleIndex","scrollSnaps","setScrollSnaps","onClickDot","onInit","normalizeDelay","delay","getAutoplayRootNode","rootNode","emblaRootNode","Autoplay","userOptions","destroyed","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","jump","init","emblaApiInstance","optionsHandler","optionsAtMedia","optionsBase","allOptions","eventStore","ownerDocument","isDraggable","visibilityChange","pointerDown","pointerUp","mouseEnter","mouseLeave","stopAutoplay","startAutoplay","destroy","setTimer","ownerWindow","clearTimer","documentIsHidden","play","jumpOverride","stop","reset","isPlaying","nextIndex","lastIndex","kill","timeUntilNext","currentDelay","timePastSinceStart","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","Alignment","align","viewSize","predefined","start","end","measure","EventStore","listeners","add","handler","removeListener","legacyMediaQueryList","self","clear","remove","Animations","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","Limit","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loopEnd","counter","withinLimit","get","set","clone","DragHandler","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","Vector1D","initialValue","normalizeInput","subtract","Translate","translate","x","y","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","off","OptionsHandler","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","mediaQueries","PluginsHandler","activePlugins","map","EmblaCarousel","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","scrollNext","scrollPrev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","useCarousel","carouselOptions","autoPlayOptions","emblaRef","autoplay","ArrowNavigationButton","onClick","DotsNavigations","visibleIndex","CarouselContent","dotsProps","dotsOptions","mobVisible","deskVisible","dotsRestOptions","withDotsOnMob","withDotsOnDesk","dotsFullProps","defaultCarouselOptions","defaultDotsOptions","defaultNavArrowOptions","defaultAutoPlayOptions","ContainerWithNavigation","_b","_c","_d","CarouselBase","navArrowOptions","heading","mergedCarouselOptions","mergedAutoPlayOptions","mergedNavArrowOptions","mergedDotsOptions","navArrowPosition","winNavArrows","withHeadingAndArrowsTop","NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","toast","Toaster","Breadcrumbs","linksList","link","Fragment","Slottable","SlotClone","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children","isSlottable","child","element","getter","warn","slotProps","childProps","override","prop","slotPropValue","childPropValue","args","Slot","childrenArray","slottable","newElement","newChildren"],"mappings":"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","x_google_ignoreList":[4,13,14,23,24,25,26]}
1
+ {"version":3,"file":"ui.js","sources":["../lib/shared/ui/buttonIcon/ButtonIcon.tsx","../lib/shared/ui/skeleton/Skeleton.tsx","../lib/shared/ui/floatButton/FloatButton.tsx","../lib/shared/ui/icon/allowedIcons.ts","../node_modules/@radix-ui/react-tabs/dist/index.mjs","../lib/shared/ui/tabSwitcher/ui/TabContent.tsx","../lib/shared/ui/tabSwitcher/TabsSwitcher.tsx","../lib/shared/ui/table/ui/primitives/Primitives.tsx","../lib/shared/ui/table/ui/dataTableColumnHeader/DataTableColumnHeader.tsx","../node_modules/@tanstack/table-core/build/lib/index.mjs","../node_modules/@tanstack/react-table/build/lib/index.mjs","../lib/shared/ui/pagination/Pagination.tsx","../lib/shared/ui/table/TablePagination.tsx","../lib/shared/ui/table/Desktop.tsx","../lib/shared/ui/table/Mobile.tsx","../lib/shared/ui/table/Table.tsx","../lib/shared/ui/table/model/TableUtils.tsx","../lib/shared/ui/carousel/model/hooks/useArrowNavigation.ts","../lib/shared/ui/carousel/model/hooks/useDotsNavigation.ts","../node_modules/embla-carousel-autoplay/esm/embla-carousel-autoplay.esm.js","../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../lib/shared/ui/carousel/model/hooks/useCarousel.ts","../lib/shared/ui/carousel/ui/ArrowNavigationButton.tsx","../lib/shared/ui/carousel/ui/DotsNavigations.tsx","../lib/shared/ui/carousel/ui/CarouselContent.tsx","../lib/shared/ui/carousel/model/helpers.tsx","../lib/shared/ui/carousel/ui/ContainerWithNavigation.tsx","../lib/shared/ui/carousel/CarouselBase.tsx","../lib/shared/ui/providers/NotificationProvider.tsx","../lib/shared/ui/breadcrumbs/Breadcrumbs.tsx","../lib/shared/ui/slot/ui/Slottable.tsx","../lib/shared/ui/slot/ui/SlotClone.tsx","../lib/shared/ui/slot/model/isSlottable.ts","../lib/shared/ui/slot/model/getElementRef.ts","../lib/shared/ui/slot/model/mergeProps.ts","../lib/shared/ui/slot/Slot.tsx"],"sourcesContent":["import { type ComponentProps, forwardRef, type ReactElement } from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '$/shared/utils'\n\ntype ButtonClasses = {\n button: string\n icon: string\n}\n\nconst buttonConfig = cva(\n 'group flex items-center justify-center cursor-pointer rounded-full outline-offset-[3px] outline-transparent outline-2 transition duration-12 active:scale-[0.97] disabled:pointer-events-none',\n {\n variants: {\n intent: {\n primary:\n 'text-icon-white bg-color-primary-default hover:bg-color-primary-hover active:bg-color-primary-hover focus:bg-color-primary-hover focus:outline-primary-focus disabled:bg-color-primary-disabled',\n secondary:\n 'text-icon-primary-default bg-color-transparent border border-solid outline-offset-4 border-primary-default hover:bg-color-primary-tr-hover hover:text-icon-primary-default hover:border-primary-hover active:bg-color-primary-tr-pressed active:border-primary-hover active:text-icon-primary-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus disabled:bg-color-blue-grey-200 disabled:border-transparent disabled:text-icon-primary-disabled',\n ghost:\n 'text-icon-primary-default bg-color-transparent hover:bg-color-primary-tr-hover focus:bg-color-primary-tr-focus focus:outline-primary-focus active:text-icon-primary-hover active:bg-color-primary-tr-pressed disabled:bg-color-transparent disabled:text-icon-primary-disabled'\n },\n size: {\n sm: 'size-8',\n md: 'size-10',\n lg: 'size-12'\n }\n },\n defaultVariants: {\n intent: 'primary',\n size: 'lg'\n }\n }\n)\n\ntype ButtonProps = VariantProps<typeof buttonConfig>\n\nexport interface IButtonIconProps extends Omit<ComponentProps<'button'>, 'className'>, ButtonProps {\n children: ReactElement\n classes?: Partial<ButtonClasses>\n}\n\nexport const ButtonIcon = forwardRef<HTMLButtonElement, IButtonIconProps>(\n ({ size, intent, children, classes, type = 'button', ...props }, ref) => {\n return (\n <button ref={ref} type={type} className={cn(buttonConfig({ intent, size }), classes?.button)} {...props}>\n <span className={cn(classes?.icon)}>{children}</span>\n </button>\n )\n }\n)\n","import type { HTMLAttributes } from 'react'\nimport { cn } from '$/shared/utils'\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nexport const Skeleton = ({ className }: SkeletonProps) => {\n return <div className={cn('skeleton-apply h-full w-full', className)}></div>\n}\n","import { Button, type ButtonProps } from '../button'\nimport { ResponsiveContainer } from '../responsiveContainer'\nimport { cn } from '$/shared/utils'\n\ntype FloatButtonClasses = {\n root?: string\n button?: string\n}\n\nexport interface FloatButtonProps {\n isVisible: boolean\n classes?: FloatButtonClasses\n children: React.ReactElement\n buttonProps?: ButtonProps\n}\n\nexport const FloatButton = ({ isVisible, classes, children, buttonProps }: FloatButtonProps) => {\n return (\n <ResponsiveContainer\n className={cn(\n 'fixed bottom-0 left-1/2 z-[60] w-full max-w-[604px] -translate-x-1/2 translate-y-0 rounded-t-lg bg-color-white px-6 py-4 shadow-[0px_-6px_8px_0px_#2929290A] transition-transform duration-1000 desktop:hidden',\n { 'translate-y-[100%]': !isVisible },\n classes?.root\n )}\n >\n {children}\n <Button size='lg' className={cn('m-auto w-full', classes?.button)} {...buttonProps}>\n Оформить заявку\n </Button>\n </ResponsiveContainer>\n )\n}\n","import type { AllowedIcons } from '$/shared/ui/icon'\n\nexport const allowedIcons: {\n group: Record<string, AllowedIcons[]>,\n flatten: AllowedIcons[]\n} = {\n group: {\n \"arrows\": [\n \"arrows/arrowCircle\",\n \"arrows/arrowDownRight\",\n \"arrows/arrowLink\",\n \"arrows/arrowRight\",\n \"arrows/arrowRotate\",\n \"arrows/arrowScroll\"\n ],\n \"brandLogos\": [\n \"brandLogos/logoBlack\",\n \"brandLogos/logoBusiness\",\n \"brandLogos/logoGray\",\n \"brandLogos/logoInsurance\",\n \"brandLogos/logoMain\",\n \"brandLogos/logoWhite\"\n ],\n \"communication\": [\n \"communication/phone\"\n ],\n \"editor\": [\n \"editor/bold\",\n \"editor/heading\",\n \"editor/italic\",\n \"editor/link\",\n \"editor/list\",\n \"editor/palette\",\n \"editor/redo\",\n \"editor/removeFormatting\",\n \"editor/space\",\n \"editor/strikethrough\",\n \"editor/typography\",\n \"editor/underline\",\n \"editor/undo\"\n ],\n \"files\": [\n \"files/border\",\n \"files/borderError\",\n \"files/documentFilled\",\n \"files/documentOutline\",\n \"files/upload\"\n ],\n \"general\": [\n \"general/calendar\",\n \"general/check\",\n \"general/close\",\n \"general/edit\",\n \"general/hiddenEye\",\n \"general/menu\",\n \"general/plus\",\n \"general/reorder\",\n \"general/shield\",\n \"general/showEye\"\n ],\n \"info\": [\n \"info/helpCircle\",\n \"info/warningCircle\"\n ],\n \"logos\": [\n \"logos/beeline\",\n \"logos/megafon\",\n \"logos/mts\"\n ],\n \"social\": [\n \"social/classmates\",\n \"social/telegram\",\n \"social/vk\"\n ],\n \"status\": [\n \"status/badSmile\",\n \"status/iconMark\",\n \"status/iconRetry\",\n \"status/iconUser\"\n ]\n},\n flatten: [\n \"arrows/arrowCircle\",\n \"arrows/arrowDownRight\",\n \"arrows/arrowLink\",\n \"arrows/arrowRight\",\n \"arrows/arrowRotate\",\n \"arrows/arrowScroll\",\n \"brandLogos/logoBlack\",\n \"brandLogos/logoBusiness\",\n \"brandLogos/logoGray\",\n \"brandLogos/logoInsurance\",\n \"brandLogos/logoMain\",\n \"brandLogos/logoWhite\",\n \"communication/phone\",\n \"editor/bold\",\n \"editor/heading\",\n \"editor/italic\",\n \"editor/link\",\n \"editor/list\",\n \"editor/palette\",\n \"editor/redo\",\n \"editor/removeFormatting\",\n \"editor/space\",\n \"editor/strikethrough\",\n \"editor/typography\",\n \"editor/underline\",\n \"editor/undo\",\n \"files/border\",\n \"files/borderError\",\n \"files/documentFilled\",\n \"files/documentOutline\",\n \"files/upload\",\n \"general/calendar\",\n \"general/check\",\n \"general/close\",\n \"general/edit\",\n \"general/hiddenEye\",\n \"general/menu\",\n \"general/plus\",\n \"general/reorder\",\n \"general/shield\",\n \"general/showEye\",\n \"info/helpCircle\",\n \"info/warningCircle\",\n \"logos/beeline\",\n \"logos/megafon\",\n \"logos/mts\",\n \"social/classmates\",\n \"social/telegram\",\n \"social/vk\",\n \"status/badSmile\",\n \"status/iconMark\",\n \"status/iconRetry\",\n \"status/iconUser\"\n]\n}","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as TabPrimitive from '@radix-ui/react-tabs'\nimport { Accordion } from '../../accordion'\nimport type { ITabContent } from '../model/types'\nimport { cn } from '$/shared/utils'\n\nexport type TabContentClasses = {\n content?: string\n contentsWrapper?: string\n}\n\nexport interface TabContentProps {\n contents: ITabContent[]\n classes?: TabContentClasses\n}\n\nexport const TabContent = ({ classes, contents }: TabContentProps) => {\n return (\n <div className={cn('flex flex-col gap-4', classes?.contentsWrapper)}>\n {contents?.map(({ id, body, accordion }) => {\n if (accordion && accordion?.title) {\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n <Accordion label={accordion?.title}>{body}</Accordion>\n </TabPrimitive.Content>\n )\n }\n\n return (\n <TabPrimitive.Content key={id} value={id} className={cn('py-8', classes?.content)}>\n {body}\n </TabPrimitive.Content>\n )\n })}\n </div>\n )\n}\n","'use client'\n\nimport * as TabPrimitive from '@radix-ui/react-tabs'\nimport type { TabRenderContent, TabsClasses } from './model/types'\nimport { TabContent } from './ui/TabContent'\nimport { cn } from '$/shared/utils'\n\nexport interface TabsSwitcherProps {\n renderContent: TabRenderContent\n value: string\n onChangeTab: (tab: string) => void\n defaultActiveTabId?: string\n classes?: TabsClasses\n}\n\nexport const TabsSwitcher = ({ renderContent, defaultActiveTabId = '1', value, onChangeTab, classes }: TabsSwitcherProps) => {\n return (\n <TabPrimitive.Root\n value={value}\n onValueChange={onChangeTab}\n defaultValue={defaultActiveTabId}\n className={cn('flex flex-col', classes?.root)}\n >\n <TabPrimitive.List className={cn('flex items-center gap-4', classes?.list)}>\n {renderContent?.triggers?.map(({ id, label }) => (\n <TabPrimitive.Trigger\n key={id}\n value={id}\n className={cn(\n 'desk-body-regular-l cursor-pointer rounded-sm bg-color-blue-grey-100 px-4 py-2 text-color-secondary outline outline-2 outline-offset-2 outline-transparent transition-colors hover:bg-color-blue-grey-200 hover:text-color-secondary data-[state=\"active\"]:!bg-color-primary-default data-[state=\"active\"]:!text-color-white',\n classes?.trigger\n )}\n >\n {label}\n </TabPrimitive.Trigger>\n ))}\n </TabPrimitive.List>\n <TabContent contents={renderContent?.contents} classes={classes?.tabContent} />\n </TabPrimitive.Root>\n )\n}\n","import { forwardRef } from 'react'\n\nexport const Table = forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>((props, ref) => (\n <table ref={ref} {...props} />\n))\nTable.displayName = 'Table'\n\nexport const TableHeader = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <thead ref={ref} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tbody ref={ref} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>((props, ref) => (\n <tfoot ref={ref} {...props} />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>((props, ref) => (\n <tr ref={ref} {...props} />\n))\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <th ref={ref} {...props} />\n))\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>((props, ref) => (\n <td ref={ref} {...props} />\n))\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>((props, ref) => (\n <caption ref={ref} {...props} />\n))\nTableCaption.displayName = 'TableCaption'\n","import { type SortDirection } from '@tanstack/react-table'\nimport { useDevice } from '$/shared/hooks'\nimport { Icon } from '$/shared/ui/icon'\nimport { cn } from '$/shared/utils'\n\ntype DataTableColumnHeaderClasses = {\n root?: string\n content?: string\n icon?: string\n}\n\ntype DataTableColumnHeaderProps = {\n children: React.ReactNode\n isSorted: boolean | SortDirection\n toggleSorting: (desc: boolean) => void\n nextSortingOrder: boolean | SortDirection\n canSort: boolean\n classes?: DataTableColumnHeaderClasses\n}\n\nexport const DataTableColumnHeader = ({\n children,\n canSort,\n toggleSorting,\n nextSortingOrder,\n isSorted,\n classes\n}: DataTableColumnHeaderProps) => {\n const { root, content, icon } = classes || {}\n\n const { isDesktop } = useDevice()\n\n const isSortable = canSort && isDesktop\n\n return (\n <button\n type='button'\n className={cn('desk-body-regular-l flex items-center justify-center gap-x-2 text-color-secondary', root)}\n onClick={() => toggleSorting(!isSorted)}\n disabled={!isSortable}\n >\n <span className={cn('', content)}>{children}</span>\n {isSortable && (\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'size-4 rotate-90 text-color-current duration-100',\n {\n '-rotate-90': !nextSortingOrder\n },\n icon\n )}\n />\n )}\n </button>\n )\n}\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","import { cn } from '../../utils'\nimport { Button } from '../button'\nimport { Icon } from '../icon'\n\ntype PaginationClasses = {\n root?: string\n button?: string\n ellipsis?: string\n active?: string\n}\n\nexport type PaginationProps = {\n /**\n * активная страница\n */\n page?: number\n /**\n * количество элементов после сужения страниц пример 1 - (1...6 7 8...n)\n * ^ ^\n */\n between?: number\n /**\n * количество элементов на странице\n */\n totalPages: number\n /**\n * функция для переключения страницы\n */\n changePage: (page: number) => void\n /**\n * включить переход на следующую/предыдущую страницу\n */\n next?: boolean\n /**\n * количество страниц для сужения\n */\n ellipsis?: number\n /**\n * дополнительные стили\n */\n classes?: PaginationClasses\n}\n\nexport const Pagination = ({\n page = 1,\n between = 3,\n totalPages,\n changePage,\n next = true,\n ellipsis = 0,\n classes\n}: PaginationProps) => {\n // гарантирует что between никогда не будет меньше 1\n between = between < 1 ? 1 : between\n // ограничиваем текущую страницу от 1 до totalPages\n page = Math.min(Math.max(page, 1), totalPages)\n // ограничиваем количество сужаемых элементов от 0 до between - 2\n ellipsis = Math.min(Math.max(ellipsis, 0), between - 2)\n\n const positions = Array.from({ length: totalPages }, (_, index) => index)\n\n // количество отображаемых страниц (включая активную)\n const visiblePages = between * 2 + 1\n\n let range\n\n if (totalPages < visiblePages) {\n // если общее количество страниц меньше, чем нужно отобразить, то отображаем все страницы\n range = positions\n } else if (page - 1 <= between) {\n // если текущая страница близка к началу, то отображаем страницы с начала\n range = positions.slice(0, visiblePages - (ellipsis > 0 ? ellipsis + 1 : 0))\n } else if (page + between >= totalPages) {\n // если текущая страница близка к концу, то отображаем страницы с конца\n range = positions.slice(totalPages - visiblePages + (ellipsis > 0 ? ellipsis + 1 : 0), totalPages)\n } else {\n // иначе показываем страницы обрезая их слева и справа\n range = positions.slice(\n page - 1 - (between - (ellipsis > 0 ? ellipsis + 1 : 0)),\n page + (between - (ellipsis > 0 ? ellipsis + 1 : 0))\n )\n }\n\n return (\n <div className={cn('flex', classes?.root)}>\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page <= 1}\n onClick={() => page > 1 && changePage(page - 2)}\n >\n <Icon name='arrows/arrowRight' className='rotate-180' />\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(0, page - 1 <= between ? 0 : ellipsis).map((value) => (\n <Button\n key={value}\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {totalPages > visiblePages && ellipsis > 0 && page - 1 > between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {range.map((value) => {\n const active = value === page - 1\n\n return (\n <Button\n key={value}\n size='sm'\n className={cn(\n 'mob-body-regular-l w-[40px] p-0 text-color-dark',\n {\n [`text-color-primary-default ${classes?.active}`]: active\n },\n classes?.button\n )}\n intent={active ? 'secondary' : 'ghost'}\n onClick={() => !active && changePage(value)}\n >\n {value + 1}\n </Button>\n )\n })}\n {totalPages > visiblePages && ellipsis > 0 && page < totalPages - between && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l pointer-events-none w-[40px] p-0 text-color-dark', classes?.ellipsis)}\n >\n ...\n </Button>\n )}\n {totalPages > visiblePages &&\n ellipsis > 0 &&\n positions.slice(page >= totalPages - between ? totalPages : totalPages - ellipsis, totalPages).map((value) => (\n <Button\n key={value}\n size='sm'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark', classes?.button)}\n intent='ghost'\n onClick={() => value !== page - 1 && changePage(value)}\n >\n {value + 1}\n </Button>\n ))}\n {next && (\n <Button\n size='sm'\n intent='ghost'\n className={cn('mob-body-regular-l w-[40px] p-0 text-color-dark disabled:text-icon-disabled', classes?.button)}\n disabled={page >= totalPages}\n onClick={() => page < totalPages && changePage(page)}\n >\n <Icon name='arrows/arrowRight' />\n </Button>\n )}\n </div>\n )\n}\n","import { cn } from '../../utils'\nimport { Pagination, type PaginationProps } from '../pagination'\n\ntype TablePaginationClasses = {\n root?: string\n displayShown?: string\n pagination?: PaginationProps['classes']\n}\n\nexport type TablePaginationProps = {\n pageSize: number\n page: number\n rowsCount: number\n pageCount: number\n onPageIndexChange: (page: number) => void\n classes?: TablePaginationClasses\n}\n\nexport const TablePagination = ({ page, pageCount, pageSize, onPageIndexChange, rowsCount, classes }: TablePaginationProps) => {\n const prevRows = pageSize * page\n const rowsLeft = prevRows > rowsCount ? rowsCount : prevRows\n\n return (\n <div className={cn('flex w-full items-center justify-between', classes?.root)}>\n <span className={cn('desk-body-regular-m text-color-tetriary', classes?.displayShown)}>\n Показано {rowsLeft} из {rowsCount}\n </span>\n <Pagination\n totalPages={pageCount}\n changePage={(pageIndex) => onPageIndexChange(pageIndex)}\n page={page}\n ellipsis={1}\n classes={classes?.pagination}\n />\n </div>\n )\n}\n","import { flexRender, type Table as TTable } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { TablePagination } from './TablePagination'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from './ui'\nimport { cn } from '$/shared/utils'\n\ntype DesktopTableProps<TData extends {}> = Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode' | 'pagination'> & {\n table: TTable<TData>\n}\n\nexport const Desktop = <TData extends {}>({ mode, enableHeaders, table, classes, pagination }: DesktopTableProps<TData>) => {\n const paginationEnabled = pagination !== false && table.getPageCount() > 1\n\n const paginationProps = {\n pageCount: table.getPageCount(),\n rowsCount: table.getCoreRowModel().rows.length,\n pageSize: table.getState().pagination.pageSize,\n page: table.getState().pagination.pageIndex + 1,\n onPageIndexChange: table.setPageIndex,\n classes: classes?.pagination\n }\n\n return (\n <div className={cn('flex w-full flex-col gap-y-4', classes?.root)}>\n <Table className={cn('w-full', classes?.table)}>\n {enableHeaders && (\n <TableHeader className='px-2'>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className={cn(\n 'w-full',\n {\n 'border-b border-b-[rgba(234,237,241,1)]': mode === 'solid'\n },\n classes?.tableHeader\n )}\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd'\n },\n classes?.tableHead\n )}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n )}\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n className={cn(\n 'w-full',\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, cellIndex) => (\n <TableCell\n key={cell.id}\n className={cn(\n 'py-3',\n {\n 'px-2': mode === 'odd',\n 'font-medium': cellIndex !== 0\n },\n classes?.tableCell\n )}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={table.getRowCount()}>Not found</TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n {paginationEnabled ? (\n typeof pagination === 'function' ? (\n pagination(paginationProps)\n ) : (\n <TablePagination {...paginationProps} />\n )\n ) : null}\n </div>\n )\n}\n","import { flexRender, type Table } from '@tanstack/react-table'\nimport type { DataTableProps } from './model'\nimport { cn } from '$/shared/utils'\n\nexport const Mobile = <TData extends {}>({\n mode,\n enableHeaders,\n table,\n classes\n}: Pick<DataTableProps<TData>, 'enableHeaders' | 'classes' | 'mode'> & { table: Table<TData> }) => {\n return (\n <div className={cn('w-full', classes?.table)}>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) => (\n <div\n key={row.id}\n className={cn(\n {\n '[&:not(:last-child)]:border-b [&:not(:last-child)]:border-b-[rgba(234,237,241,1)]': mode === 'solid',\n '[&:nth-child(odd)]:bg-color-primary-light-default': mode === 'odd'\n },\n classes?.tableRow\n )}\n >\n {row.getVisibleCells().map((cell, index) => {\n const header = table.getHeaderGroups()[0].headers[index]\n\n return (\n <div\n key={cell.id}\n className={cn(\n 'grid grid-cols-2 p-2',\n {\n 'px-2': mode === 'odd',\n 'font-medium': index !== 0\n },\n classes?.tableCell\n )}\n >\n {enableHeaders && (\n <p className='font-bold'>{flexRender(header.column.columnDef.header, header.getContext())}</p>\n )}\n <p>{flexRender(cell.column.columnDef.cell, cell.getContext())}</p>\n </div>\n )\n })}\n </div>\n ))\n ) : (\n <div>Not found</div>\n )}\n </div>\n )\n}\n","import { useState } from 'react'\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type SortingState,\n useReactTable\n} from '@tanstack/react-table'\nimport { Desktop } from './Desktop'\nimport { Mobile } from './Mobile'\nimport { type DataTableProps } from './model'\nimport { useDevice } from '$/shared/hooks'\n\nexport const DataTable = <TData extends {}>({\n columns,\n data,\n enableHeaders = true,\n mode = 'solid',\n classes,\n pagination = true\n}: DataTableProps<TData>) => {\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [sorting, setSorting] = useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n state: { columnFilters, sorting },\n enableRowSelection: true,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getPaginationRowModel: getPaginationRowModel()\n })\n\n const { isMobile } = useDevice()\n\n return isMobile ? (\n <Mobile table={table} enableHeaders={enableHeaders} mode={mode} classes={classes} />\n ) : (\n <Desktop table={table} enableHeaders={enableHeaders} mode={mode} pagination={pagination} classes={classes} />\n )\n}\n","import {\n type CellContext,\n type ColumnDef,\n type ColumnHelper,\n createColumnHelper,\n type HeaderContext\n} from '@tanstack/react-table'\nimport { DataTableColumnHeader } from '../ui'\nimport { TypeGuards } from '$/shared/utils'\n\ntype ColumnDefOptions<TData, TValue> = {\n enableSorting?: (keyof TData)[] | boolean\n enableColumnFilter?: (keyof TData)[] | boolean\n helper?: ColumnHelper<TData>\n cellAccessor?: Partial<Record<keyof TData, (cellContext: CellContext<TData, TValue>) => React.ReactNode>>\n headerAccessor?: Partial<\n Record<keyof TData, (key: keyof TData, headerContext: HeaderContext<TData, TValue>) => React.ReactNode>\n >\n}\n\nexport class TableUtils {\n static getColumnHelper<TData extends {}>(): ColumnHelper<TData> {\n return createColumnHelper<TData>()\n }\n\n static getColumns<TData extends {}, TValue = TData[keyof TData]>(\n template: TData,\n options?: ColumnDefOptions<TData, TValue>\n ): ColumnDef<TData>[] {\n const {\n helper = this.getColumnHelper<TData>(),\n enableColumnFilter = false,\n enableSorting = false,\n cellAccessor,\n headerAccessor\n } = options || {}\n\n const keys = Object.keys(template) as (keyof TData)[]\n\n return keys.map((key) => {\n return helper.accessor<any, TValue>(key, {\n header: (header) => {\n const { column } = header\n const accessor = headerAccessor ? headerAccessor[key] : null\n\n return (\n <DataTableColumnHeader\n isSorted={column.getIsSorted() === 'desc'}\n nextSortingOrder={column.getNextSortingOrder()}\n toggleSorting={column.toggleSorting}\n canSort={column.getCanSort()}\n >\n {accessor ? accessor(key, header) : (key as string)}\n </DataTableColumnHeader>\n )\n },\n cell: (cell) => {\n const accessor = cellAccessor ? cellAccessor[key] : null\n\n return accessor ? accessor(cell) : cell.getValue()\n },\n enableColumnFilter: TypeGuards.isBoolean(enableColumnFilter) ? enableColumnFilter : enableColumnFilter.includes(key),\n enableSorting: TypeGuards.isBoolean(enableSorting) ? enableSorting : enableSorting.includes(key)\n })\n }) as ColumnDef<TData>[]\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\nimport type { NavigationMode } from '../types'\n\ntype UseArrowNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler?: (emblaApi: EmblaCarouselType) => void\n}\n\nexport const useArrowNavigation = ({ emblaApi, navigationHandler }: UseArrowNavigationProps) => {\n const [prevBtnDisabled, setPrevBtnDisabled] = useState(true)\n const [nextBtnDisabled, setNextBtnDisabled] = useState(true)\n\n const onClickNavigationButton = useCallback(\n (mode: NavigationMode) => {\n if (!emblaApi) return\n switch (mode) {\n case 'prev':\n emblaApi.scrollPrev()\n break\n case 'next':\n emblaApi.scrollNext()\n break\n }\n\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setPrevBtnDisabled(!emblaApi.canScrollPrev())\n setNextBtnDisabled(!emblaApi.canScrollNext())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onSelect(emblaApi)\n emblaApi.on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onSelect])\n\n return {\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport type { EmblaCarouselType } from 'embla-carousel'\n\ntype UseDotsNavigationProps = {\n emblaApi: EmblaCarouselType | undefined\n navigationHandler: (emblaApi: EmblaCarouselType) => void\n setVisibleIndex: (index: number) => void\n}\n\nexport type UseDotsNavigationReturn = {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n}\n\nexport const useDotsNavigation = ({ emblaApi, navigationHandler, setVisibleIndex }: UseDotsNavigationProps) => {\n const [scrollSnaps, setScrollSnaps] = useState<number[]>([])\n\n const onClickDot = useCallback(\n (index: number) => {\n if (!emblaApi) return\n emblaApi.scrollTo(index)\n if (navigationHandler) {\n navigationHandler(emblaApi)\n }\n },\n [emblaApi, navigationHandler]\n )\n\n const onInit = useCallback((emblaApi: EmblaCarouselType) => {\n setScrollSnaps(emblaApi.scrollSnapList())\n }, [])\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setVisibleIndex(emblaApi.selectedScrollSnap())\n }, [])\n\n useEffect(() => {\n if (!emblaApi) return\n\n onInit(emblaApi)\n onSelect(emblaApi)\n emblaApi.on('reInit', onInit).on('reInit', onSelect).on('select', onSelect)\n }, [emblaApi, onInit, onSelect])\n\n return {\n scrollSnaps,\n onClickDot\n }\n}\n","const defaultOptions = {\n active: true,\n breakpoints: {},\n delay: 4000,\n jump: false,\n playOnInit: true,\n stopOnFocusIn: true,\n stopOnInteraction: true,\n stopOnMouseEnter: false,\n stopOnLastSnap: false,\n rootNode: null\n};\n\nfunction normalizeDelay(emblaApi, delay) {\n const scrollSnaps = emblaApi.scrollSnapList();\n if (typeof delay === 'number') {\n return scrollSnaps.map(() => delay);\n }\n return delay(scrollSnaps, emblaApi);\n}\nfunction getAutoplayRootNode(emblaApi, rootNode) {\n const emblaRootNode = emblaApi.rootNode();\n return rootNode && rootNode(emblaRootNode) || emblaRootNode;\n}\n\nfunction Autoplay(userOptions = {}) {\n let options;\n let emblaApi;\n let destroyed;\n let delay;\n let timerStartTime = null;\n let timerId = 0;\n let autoplayActive = false;\n let mouseIsOver = false;\n let playOnDocumentVisible = false;\n let jump = false;\n function init(emblaApiInstance, optionsHandler) {\n emblaApi = emblaApiInstance;\n const {\n mergeOptions,\n optionsAtMedia\n } = optionsHandler;\n const optionsBase = mergeOptions(defaultOptions, Autoplay.globalOptions);\n const allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n if (emblaApi.scrollSnapList().length <= 1) return;\n jump = options.jump;\n destroyed = false;\n delay = normalizeDelay(emblaApi, options.delay);\n const {\n eventStore,\n ownerDocument\n } = emblaApi.internalEngine();\n const isDraggable = !!emblaApi.internalEngine().options.watchDrag;\n const root = getAutoplayRootNode(emblaApi, options.rootNode);\n eventStore.add(ownerDocument, 'visibilitychange', visibilityChange);\n if (isDraggable) {\n emblaApi.on('pointerDown', pointerDown);\n }\n if (isDraggable && !options.stopOnInteraction) {\n emblaApi.on('pointerUp', pointerUp);\n }\n if (options.stopOnMouseEnter) {\n eventStore.add(root, 'mouseenter', mouseEnter);\n }\n if (options.stopOnMouseEnter && !options.stopOnInteraction) {\n eventStore.add(root, 'mouseleave', mouseLeave);\n }\n if (options.stopOnFocusIn) {\n emblaApi.on('slideFocusStart', stopAutoplay);\n }\n if (options.stopOnFocusIn && !options.stopOnInteraction) {\n eventStore.add(emblaApi.containerNode(), 'focusout', startAutoplay);\n }\n if (options.playOnInit) startAutoplay();\n }\n function destroy() {\n emblaApi.off('pointerDown', pointerDown).off('pointerUp', pointerUp).off('slideFocusStart', stopAutoplay);\n stopAutoplay();\n destroyed = true;\n autoplayActive = false;\n }\n function setTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = ownerWindow.setTimeout(next, delay[emblaApi.selectedScrollSnap()]);\n timerStartTime = new Date().getTime();\n emblaApi.emit('autoplay:timerset');\n }\n function clearTimer() {\n const {\n ownerWindow\n } = emblaApi.internalEngine();\n ownerWindow.clearTimeout(timerId);\n timerId = 0;\n timerStartTime = null;\n emblaApi.emit('autoplay:timerstopped');\n }\n function startAutoplay() {\n if (destroyed) return;\n if (documentIsHidden()) {\n playOnDocumentVisible = true;\n return;\n }\n if (!autoplayActive) emblaApi.emit('autoplay:play');\n setTimer();\n autoplayActive = true;\n }\n function stopAutoplay() {\n if (destroyed) return;\n if (autoplayActive) emblaApi.emit('autoplay:stop');\n clearTimer();\n autoplayActive = false;\n }\n function visibilityChange() {\n if (documentIsHidden()) {\n playOnDocumentVisible = autoplayActive;\n return stopAutoplay();\n }\n if (playOnDocumentVisible) startAutoplay();\n }\n function documentIsHidden() {\n const {\n ownerDocument\n } = emblaApi.internalEngine();\n return ownerDocument.visibilityState === 'hidden';\n }\n function pointerDown() {\n if (!mouseIsOver) stopAutoplay();\n }\n function pointerUp() {\n if (!mouseIsOver) startAutoplay();\n }\n function mouseEnter() {\n mouseIsOver = true;\n stopAutoplay();\n }\n function mouseLeave() {\n mouseIsOver = false;\n startAutoplay();\n }\n function play(jumpOverride) {\n if (typeof jumpOverride !== 'undefined') jump = jumpOverride;\n startAutoplay();\n }\n function stop() {\n if (autoplayActive) stopAutoplay();\n }\n function reset() {\n if (autoplayActive) startAutoplay();\n }\n function isPlaying() {\n return autoplayActive;\n }\n function next() {\n const {\n index\n } = emblaApi.internalEngine();\n const nextIndex = index.clone().add(1).get();\n const lastIndex = emblaApi.scrollSnapList().length - 1;\n const kill = options.stopOnLastSnap && nextIndex === lastIndex;\n if (emblaApi.canScrollNext()) {\n emblaApi.scrollNext(jump);\n } else {\n emblaApi.scrollTo(0, jump);\n }\n emblaApi.emit('autoplay:select');\n if (kill) return stopAutoplay();\n startAutoplay();\n }\n function timeUntilNext() {\n if (!timerStartTime) return null;\n const currentDelay = delay[emblaApi.selectedScrollSnap()];\n const timePastSinceStart = new Date().getTime() - timerStartTime;\n return currentDelay - timePastSinceStart;\n }\n const self = {\n name: 'autoplay',\n options: userOptions,\n init,\n destroy,\n play,\n stop,\n reset,\n isPlaying,\n timeUntilNext\n };\n return self;\n}\nAutoplay.globalOptions = undefined;\n\nexport { Autoplay as default };\n//# sourceMappingURL=embla-carousel-autoplay.esm.js.map\n","function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n end\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let scrollVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return scrollVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) <= 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let previousTarget = null;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.offsetLocation.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import { useCallback } from 'react'\nimport type { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel'\nimport Autoplay, { type AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport useEmblaCarousel from 'embla-carousel-react'\n\ntype UseCarouselProps = {\n carouselOptions: EmblaOptionsType\n autoPlayOptions?: AutoplayOptionsType\n}\n\nexport const useCarousel = ({ carouselOptions, autoPlayOptions }: UseCarouselProps) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(carouselOptions, [Autoplay(autoPlayOptions)])\n\n const navigationHandler = useCallback((emblaApi: EmblaCarouselType) => {\n const autoplay = emblaApi?.plugins()?.autoplay\n if (!autoplay) return\n\n const resetOrStop = autoplay.options.stopOnInteraction === false ? autoplay.reset : autoplay.stop\n\n resetOrStop()\n }, [])\n\n return { emblaRef, emblaApi, navigationHandler }\n}\n","import type { ComponentPropsWithRef } from 'react'\nimport { Icon } from '../../icon'\nimport type { NavigationMode } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type ArrowNavigationButtonClasses = {\n button?: string\n icon?: string\n}\n\ninterface ArrowNavigationButtonProps extends Omit<ComponentPropsWithRef<'button'>, 'onClick'> {\n mode: NavigationMode\n onClick: (mode: NavigationMode) => void\n classes?: ArrowNavigationButtonClasses\n}\n\nexport const ArrowNavigationButton = ({ mode, onClick, children, classes, ...props }: ArrowNavigationButtonProps) => {\n return (\n <button\n className={cn('group flex size-8 cursor-pointer items-center justify-center p-1', classes?.button)}\n type='button'\n onClick={() => onClick(mode)}\n {...props}\n >\n <Icon\n name='arrows/arrowRight'\n className={cn(\n 'h-full w-full text-icon-primary-default transition-colors group-disabled:text-icon-disabled',\n { 'rotate-180': mode === 'prev' },\n classes?.icon\n )}\n />\n {children}\n </button>\n )\n}\n","import type { DotsOptions } from '../model'\nimport { cn } from '$/shared/utils'\n\nexport type DotsNavigationsClasses = {\n dotsWrapper?: string\n dot?: string\n}\n\ninterface DotsNavigationsProps extends Pick<DotsOptions, 'position'> {\n scrollSnaps: number[]\n onClickDot: (index: number) => void\n visibleIndex: number\n classes?: DotsNavigationsClasses\n}\n\nexport const DotsNavigations = ({ scrollSnaps, visibleIndex, onClickDot, position, classes, ...props }: DotsNavigationsProps) => {\n return (\n <div\n className={cn(\n 'mt-4 flex items-center gap-[6px]',\n {\n 'justify-center': position === 'center',\n 'justify-end': position === 'bot-right',\n 'justify-start': position === 'bot-left'\n },\n classes?.dotsWrapper\n )}\n >\n {scrollSnaps.map((_, index) => (\n <button\n type='button'\n key={index}\n onClick={() => onClickDot(index)}\n className={cn(\n 'size-2 cursor-pointer rounded-full bg-color-primary-tr-pressed',\n { 'h-2 w-4 rounded-md bg-color-primary-default': index === visibleIndex },\n classes?.dot\n )}\n {...props}\n ></button>\n ))}\n </div>\n )\n}\n","import { forwardRef, type ReactNode } from 'react'\nimport type { DotsOptions, UseDotsNavigationReturn } from '../model'\nimport { DotsNavigations, type DotsNavigationsClasses } from './DotsNavigations'\nimport { useDevice } from '$/shared/hooks'\nimport { cn } from '$/shared/utils'\n\nexport type CarouselContentClasses = {\n dotsClasses?: DotsNavigationsClasses\n slidesOverlay?: string\n slidesWrapper?: string\n}\n\nexport interface CarouselContentProps {\n classes?: CarouselContentClasses\n children: ReactNode\n dotsProps: UseDotsNavigationReturn\n dotsOptions: DotsOptions\n visibleIndex: number\n}\n\nexport const CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ visibleIndex, classes, children, dotsProps, dotsOptions }, ref) => {\n const { isMobile, isDesktop } = useDevice()\n const { mobVisible, deskVisible, ...dotsRestOptions } = dotsOptions ?? {}\n\n //Отображения точек если переданы и мобильное разрешение\n const withDotsOnMob = mobVisible && isMobile\n //Отображения точек если переданы и полноэкранное разрешение\n const withDotsOnDesk = deskVisible && isDesktop\n\n const dotsFullProps = {\n visibleIndex,\n ...dotsProps\n }\n\n return (\n <div className={cn('mx-auto overflow-hidden', classes?.slidesOverlay)} ref={ref}>\n <div className={cn('flex touch-pan-y gap-6', classes?.slidesWrapper)}>{children}</div>\n {(withDotsOnDesk || withDotsOnMob) && <DotsNavigations {...dotsFullProps} {...dotsRestOptions} />}\n </div>\n )\n }\n)\n","import type { EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { SlideFullScreen, SlideOnlyImage, SlideProductCard } from '../ui'\nimport type { CarouselSlideVariant, DotsOptions, NavArrowOptions } from './types'\nimport type { DiscriminatedUnion } from '$/shared/types'\n\nexport const defaultCarouselOptions: EmblaOptionsType = {\n dragFree: true,\n loop: false,\n align: 'start',\n slidesToScroll: 1\n}\n\nexport const defaultDotsOptions: DotsOptions = {\n position: 'center',\n deskVisible: true,\n mobVisible: true\n}\n\nexport const defaultNavArrowOptions: NavArrowOptions = {\n position: 'top-right',\n deskVisible: true,\n mobVisible: false\n}\n\nexport const defaultAutoPlayOptions: AutoplayOptionsType = {\n active: true\n}\n\nexport const renderSlideVariant = (props: DiscriminatedUnion<'variant', CarouselSlideVariant>) => {\n switch (props.variant) {\n case 'productCard':\n return <SlideProductCard {...props} />\n case 'onlyImage':\n return <SlideOnlyImage {...props} />\n case 'fullScreen':\n return <SlideFullScreen {...props} />\n }\n}\n","import type { ReactNode } from 'react'\nimport type { NavigationMode } from '../model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses } from './ArrowNavigationButton'\nimport { cn } from '$/shared/utils'\n\nexport type ContainerWithNavigationClasses = {\n wrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n}\n\nexport interface ContainerWithNavigationProps {\n children: ReactNode\n prevBtnDisabled: boolean\n nextBtnDisabled: boolean\n onClickNavigationButton: (mode: NavigationMode) => void\n classes?: ContainerWithNavigationClasses\n}\n\nexport const ContainerWithNavigation = ({\n children,\n prevBtnDisabled,\n nextBtnDisabled,\n onClickNavigationButton,\n classes\n}: ContainerWithNavigationProps) => {\n return (\n <div className={cn('relative flex items-center gap-1', classes?.wrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={{\n button: cn('absolute -left-12 top-1/2 -transform-y-1/2', classes?.arrowLeftClasses?.button),\n icon: cn(classes?.arrowLeftClasses?.icon)\n }}\n />\n {children}\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={{\n button: cn('absolute -right-12 top-1/2 -transform-y-1/2', classes?.arrowRightClasses?.button),\n icon: cn(classes?.arrowRightClasses?.icon)\n }}\n />\n </div>\n )\n}\n","import { type HTMLAttributes, type ReactNode } from 'react'\nimport { type EmblaOptionsType } from 'embla-carousel'\nimport type { AutoplayOptionsType } from 'embla-carousel-autoplay'\nimport { useDevice } from '../../hooks'\nimport { Heading } from '../heading'\nimport {\n defaultAutoPlayOptions,\n defaultCarouselOptions,\n defaultDotsOptions,\n defaultNavArrowOptions,\n type DotsOptions,\n type NavArrowOptions,\n useArrowNavigation,\n useCarousel,\n useDotsNavigation\n} from './model'\nimport { ArrowNavigationButton, type ArrowNavigationButtonClasses, CarouselContent, type CarouselContentClasses } from './ui'\nimport { ContainerWithNavigation, type ContainerWithNavigationClasses } from './ui/ContainerWithNavigation'\nimport { cn } from '$/shared/utils'\n\ntype CarouselClasses = {\n root?: string\n header?: string\n heading?: string\n arrowsNavWrapper?: string\n arrowLeftClasses?: ArrowNavigationButtonClasses\n arrowRightClasses?: ArrowNavigationButtonClasses\n containerWithNavClasses?: ContainerWithNavigationClasses\n carouselContentClasses?: CarouselContentClasses\n}\n\nexport interface CarouselBaseProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n heading?: string\n carouselOptions?: EmblaOptionsType\n dotsOptions?: DotsOptions\n navArrowOptions?: NavArrowOptions\n autoPlayOptions?: AutoplayOptionsType\n setVisibleIndex: (index: number) => void\n visibleIndex: number\n classes?: CarouselClasses\n}\n\nexport const CarouselBase = ({\n dotsOptions = defaultDotsOptions,\n navArrowOptions = defaultNavArrowOptions,\n carouselOptions = defaultCarouselOptions,\n heading,\n autoPlayOptions,\n setVisibleIndex,\n visibleIndex,\n children,\n classes,\n ...props\n}: CarouselBaseProps) => {\n const mergedCarouselOptions = { ...defaultCarouselOptions, ...carouselOptions }\n const mergedAutoPlayOptions = { ...defaultAutoPlayOptions, ...autoPlayOptions }\n const mergedNavArrowOptions = { ...defaultNavArrowOptions, ...navArrowOptions }\n const mergedDotsOptions = { ...defaultDotsOptions, ...dotsOptions }\n\n const { emblaApi, navigationHandler, emblaRef } = useCarousel({\n carouselOptions: mergedCarouselOptions,\n autoPlayOptions: mergedAutoPlayOptions\n })\n\n const dotsProps = useDotsNavigation({ emblaApi, navigationHandler, setVisibleIndex })\n const { prevBtnDisabled, nextBtnDisabled, onClickNavigationButton } = useArrowNavigation({\n emblaApi,\n navigationHandler\n })\n\n const { isMobile, isDesktop } = useDevice()\n const { deskVisible, mobVisible, position: navArrowPosition } = mergedNavArrowOptions ?? {}\n\n //Отображения стрелок если переданы и мобильное разрешение\n const withNavArrowsOnMob = mobVisible && isMobile\n //Отображения стрелок если переданы и полноэкранное разрешение\n const winNavArrowsOnDesk = deskVisible && isDesktop\n //Отображения стрелок если переданы\n const winNavArrows = winNavArrowsOnDesk || withNavArrowsOnMob\n\n const withHeadingAndArrowsTop = Boolean(heading) || (winNavArrows && navArrowPosition === 'top-right')\n\n return (\n <div className={cn('flex flex-col', classes?.root)} {...props}>\n {withHeadingAndArrowsTop && (\n <div className={cn('flex items-center justify-between gap-6', { 'mb-6': withHeadingAndArrowsTop }, classes?.header)}>\n {Boolean(heading) && (\n <Heading as='h2' className={cn(classes?.heading)}>\n Другие предложения\n </Heading>\n )}\n\n {winNavArrows && navArrowPosition === 'top-right' && (\n <div className={cn('ml-auto flex items-center gap-2', classes?.arrowsNavWrapper)}>\n <ArrowNavigationButton\n mode='prev'\n onClick={onClickNavigationButton}\n disabled={prevBtnDisabled}\n classes={classes?.arrowLeftClasses}\n />\n <ArrowNavigationButton\n mode='next'\n onClick={onClickNavigationButton}\n disabled={nextBtnDisabled}\n classes={classes?.arrowRightClasses}\n />\n </div>\n )}\n </div>\n )}\n\n {winNavArrows && navArrowPosition === 'center' ? (\n <ContainerWithNavigation\n onClickNavigationButton={onClickNavigationButton}\n prevBtnDisabled={prevBtnDisabled}\n nextBtnDisabled={nextBtnDisabled}\n classes={classes?.containerWithNavClasses}\n >\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n </ContainerWithNavigation>\n ) : (\n <CarouselContent\n visibleIndex={visibleIndex}\n dotsOptions={mergedDotsOptions}\n ref={emblaRef}\n dotsProps={dotsProps}\n classes={classes?.carouselContentClasses}\n >\n {children}\n </CarouselContent>\n )}\n </div>\n )\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport toast, { Toaster, useToasterStore } from 'react-hot-toast'\n\nexport interface NotificationProviderProps {\n maxToastViewLimit?: number\n toastDuration?: number\n}\n\nexport const NotificationProvider = ({ maxToastViewLimit = 2, toastDuration = 5000 }: NotificationProviderProps) => {\n const { toasts } = useToasterStore()\n\n useEffect(() => {\n toasts\n .filter((t) => t.visible)\n .filter((_, i) => i >= maxToastViewLimit)\n .forEach((t) => toast.dismiss(t.id))\n }, [maxToastViewLimit, toasts])\n\n return (\n <Toaster\n position='top-center'\n toastOptions={{\n duration: toastDuration\n }}\n />\n )\n}\n","import { type ReactElement } from 'react'\nimport { Icon } from '$/shared/ui'\nimport { cn } from '$/shared/utils'\n\nexport interface BreadcrumbLink {\n label: string | ReactElement\n path: string\n isDisabled?: boolean\n}\ninterface BreadcrumbLinkWithoutPath {\n label: string\n isDisabled?: boolean\n}\n\nexport type LinksList = [...BreadcrumbLink[], BreadcrumbLinkWithoutPath]\n\nexport interface BreadcrumbsProps {\n linksList: LinksList\n}\n\n//TODO: Его должны переработать не использовать! DEPRECATED\n\nexport const Breadcrumbs = ({ linksList }: BreadcrumbsProps) => {\n return (\n <div aria-label='Breadcrumb' className='flex max-w-[840px] items-center gap-2'>\n {linksList.map((link) => (\n <>\n {'path' in link ? (\n <div\n className={cn(\n 'flex items-center gap-1 rounded-sm border-2 border-solid border-transparent px-1 focus-within:border-primary-focus',\n { 'pointer-events-none !border-transparent': link?.isDisabled }\n )}\n >\n <a\n href={link.path}\n target='_blank'\n rel='noreferrer'\n className={cn(\n 'desk-body-regular-m text-color-primary-default outline-none hover:text-color-primary-hover focus:text-color-primary-default',\n { '!text-color-disabled': link?.isDisabled }\n )}\n >\n {link.label}\n </a>\n <Icon\n name='arrows/arrowRight'\n className={cn('size-4 text-icon-primary-default', { '!text-icon-disabled': link?.isDisabled })}\n />\n </div>\n ) : (\n <div aria-current='page' className='desk-body-regular-m text-color-blue-grey-600'>\n {link.label}\n </div>\n )}\n </>\n ))}\n </div>\n )\n}\n","export type SlottableProps = {\n children: React.ReactNode\n}\n\nexport const Slottable = ({ children }: SlottableProps) => <>{children}</>\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { getElementRef, mergeProps } from '../model'\nimport { mergeRefs } from '$/shared/utils'\n\nexport type SlotCloneProps = {\n children: React.ReactNode\n}\n\nexport const SlotClone = forwardRef<any, SlotCloneProps>(({ children, ...props }, ref) => {\n if (isValidElement(children)) {\n const childrenRef = getElementRef(children)\n\n return cloneElement(children, {\n ...mergeProps(props, children.props),\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n ref: ref ? mergeRefs(ref, childrenRef) : childrenRef\n })\n }\n\n return Children.count(children) > 1 ? Children.only(null) : null\n})\nSlotClone.displayName = 'SlotClone'\n","import { isValidElement } from 'react'\nimport { Slottable, type SlottableProps } from '../ui'\n\nexport const isSlottable = (child: React.ReactNode): child is React.ReactElement<SlottableProps, typeof Slottable> => {\n return isValidElement(child) && child.type === Slottable\n}\n","export const getElementRef = (element: React.ReactElement) => {\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get\n let warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element as any).ref\n }\n\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get\n warn = getter && 'isReactWarning' in getter && getter.isReactWarning\n\n if (warn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref\n }\n\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref\n}\n","type AnyProps = Record<string, any>\n\nexport const mergeProps = (slotProps: AnyProps, childProps: AnyProps) => {\n const override = { ...childProps }\n\n for (const prop in childProps) {\n const slotPropValue = slotProps[prop]\n const childPropValue = childProps[prop]\n\n // check if is handler\n if (/^on[A-Z]/.test(prop)) {\n if (slotPropValue && childPropValue) {\n override[prop] = (...args: unknown[]) => {\n slotPropValue(...args)\n childPropValue(...args)\n }\n }\n } else if (slotPropValue) {\n override[prop] = slotPropValue\n } else if (prop === 'style') {\n override[prop] = { ...slotPropValue, ...childPropValue }\n } else if (prop === 'className') {\n override[prop] = [slotPropValue, childPropValue].filter(Boolean).join(' ')\n }\n }\n\n return { ...slotProps, ...override }\n}\n","import { Children, cloneElement, forwardRef, isValidElement } from 'react'\nimport { isSlottable } from './model'\nimport { SlotClone, type SlottableProps } from '$/shared/ui/slot/ui'\n\nexport type SlotProps = React.HTMLAttributes<HTMLElement> & {\n children?: React.ReactNode\n}\n\nexport const Slot = forwardRef<HTMLElement, SlotProps>(({ children, ...props }, ref) => {\n const childrenArray = Children.toArray(children)\n const slottable = childrenArray.find(isSlottable)\n\n if (slottable) {\n const newElement = slottable.props.children\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (Children.count(newElement) > 1) {\n return Children.only(null)\n }\n\n return isValidElement(newElement) ? (newElement.props as SlottableProps).children : null\n } else {\n return child\n }\n })\n\n return (\n <SlotClone {...props} ref={ref}>\n {isValidElement(newElement) ? cloneElement(newElement, undefined, newChildren) : null}\n </SlotClone>\n )\n }\n\n return (\n <SlotClone {...props} ref={ref}>\n {children}\n </SlotClone>\n )\n})\nSlot.displayName = 'Slot'\n"],"names":["buttonConfig","cva","ButtonIcon","forwardRef","size","intent","children","classes","type","props","ref","jsx","cn","Skeleton","className","FloatButton","isVisible","buttonProps","jsxs","ResponsiveContainer","Button","allowedIcons","TABS_NAME","createTabsContext","createTabsScope","createContextScope","createRovingFocusGroupScope","useRovingFocusGroupScope","TabsProvider","useTabsContext","Tabs","React","forwardedRef","__scopeTabs","valueProp","onValueChange","defaultValue","orientation","dir","activationMode","tabsProps","direction","useDirection","value","setValue","useControllableState","useId","Primitive","TAB_LIST_NAME","TabsList","loop","listProps","context","rovingFocusGroupScope","RovingFocusGroup.Root","TRIGGER_NAME","TabsTrigger","disabled","triggerProps","triggerId","makeTriggerId","contentId","makeContentId","isSelected","RovingFocusGroup.Item","composeEventHandlers","event","isAutomaticActivation","CONTENT_NAME","TabsContent","forceMount","contentProps","isMountAnimationPreventedRef","rAF","Presence","present","baseId","Root2","List","Trigger","Content","TabContent","contents","id","body","accordion","TabPrimitive.Content","Accordion","TabsSwitcher","renderContent","defaultActiveTabId","onChangeTab","TabPrimitive.Root","TabPrimitive.List","_a","label","TabPrimitive.Trigger","Table","TableHeader","TableBody","TableFooter","TableRow","TableHead","TableCell","TableCaption","DataTableColumnHeader","canSort","toggleSorting","nextSortingOrder","isSorted","root","content","icon","isDesktop","useDevice","isSortable","Icon","createColumnHelper","accessor","column","functionalUpdate","updater","input","makeStateUpdater","key","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","item","memo","getDeps","fn","opts","deps","result","depArgs","depTime","newDeps","dep","index","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","num","getMemoOptions","tableOptions","debugLevel","onChange","_tableOptions$debugAl","createCell","table","row","columnId","getRenderValue","_cell$getValue","cell","feature","createColumn","columnDef","depth","parent","_ref","_resolvedColumnDef$id","resolvedColumnDef","accessorKey","accessorFn","originalRow","_result","_column$columns","orderColumns","_column$columns2","leafColumns","debug","createHeader","options","_options$id","header","leafHeaders","recurseHeader","h","Headers","allColumns","left","right","_left$map$filter","_right$map$filter","leftColumns","rightColumns","centerColumns","buildHeaderGroups","_left$map$filter2","orderedLeafColumns","_right$map$filter2","headerGroups","headerGroup","flatHeaders","_header$subHeaders","_header$subHeaders2","_header$subHeaders3","center","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","isLeafHeader","isPlaceholder","bottomHeaders","recurseHeadersForSpans","headers","colSpan","rowSpan","childRowSpans","childColSpan","childRowSpan","minChildRowSpan","createRow","original","rowIndex","subRows","parentId","_row$getValue","parentRows","currentRow","parentRow","allCells","acc","i","ColumnFaceting","includesString","filterValue","_filterValue$toString","search","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","min","max","rowValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","ColumnFiltering","state","firstRow","_table$options$filter","_table$options$filter2","_column$columnDef$ena","_table$options$enable","_table$options$enable2","_table$getState$colum","_table$getState$colum2","_table$getState$colum3","filterFn","previousFilter","newFilter","shouldAutoRemoveFilter","_old$filter","newFilterObj","_old$map","_table","updateFn","_functionalUpdate","filter","defaultState","_table$initialState$c","_table$initialState","sum","_leafRows","childRows","next","nextValue","extent","mean","leafRows","count","median","values","mid","nums","a","b","unique","uniqueCount","_columnId","aggregationFns","ColumnGrouping","_toString","_props$getValue","_table$getState$group","_table$getState$group2","canGroup","_table$options$aggreg","_table$options$aggreg2","_table$initialState$g","_row$subRows","grouping","groupedColumnMode","nonGroupingColumns","col","g","ColumnOrdering","position","_getVisibleLeafColumns","_columns$","_columns","columnOrder","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","getDefaultColumnPinningState","ColumnPinning","columnIds","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","_d$columnDef$enablePi","leafColumnIds","isLeft","isRight","leftAndRight","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","safelyAccessDocument","_document","defaultColumnSizing","getDefaultColumnSizingInfoState","ColumnSizing","_column$columnDef$min","_column$columnDef$max","columnSize","_ref2","_","rest","_header$column$getSiz","prevSiblingHeader","_contextDocument","canResize","e","isTouchStartEvent","startSize","columnSizingStart","clientX","newColumnSizing","updateOffset","eventType","clientXPos","_old$startOffset","_old$startSize","deltaDirection","deltaOffset","deltaPercentage","_ref3","headerSize","onMove","onEnd","contextDocument","mouseEvents","touchEvents","_e$touches$","passiveIfSupported","passiveEventSupported","_table$initialState$c2","_table$getHeaderGroup","_table$getHeaderGroup2","_table$getLeftHeaderG","_table$getLeftHeaderG2","_table$getCenterHeade","_table$getCenterHeade2","_table$getRightHeader","_table$getRightHeader2","passiveSupported","supported","noop","ColumnVisibility","childColumns","c","cells","makeVisibleColumnsMethod","getColumns","_value","obj","_target","GlobalFaceting","GlobalFiltering","_table$getCoreRowMode","_table$options$getCol","globalFilterFn","RowExpanding","registered","queued","_table$options$autoRe","expanded","_table$initialState$e","splitId","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","_table$options$getRow","isFullyExpanded","canExpand","defaultPageIndex","defaultPageSize","getDefaultPaginationState","RowPagination","safeUpdater","_table$initialState$p","pageIndex","maxPageIndex","_table$initialState$p2","_table$initialState$p3","_table$initialState2","pageSize","topRowIndex","_table$options$pageCo","newPageCount","pageCount","pageOptions","_table$options$pageCo2","_table$options$rowCou","getDefaultRowPinningState","RowPinning","includeLeafRows","includeParentRows","leafRowIds","parentRowIds","rowIds","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","enableRowPinning","enablePinning","top","bottom","isTop","isBottom","_ref4","_visiblePinnedRowIds$","visiblePinnedRowIds","_ref5","_table$initialState$r","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","allRows","topPinnedRowIds","bottomPinnedRowIds","topAndBottom","RowSelection","rowSelection","preGroupedFlatRows","resolvedValue","mutateRowIsSelected","rowModel","selectRowsFn","isAllRowsSelected","paginationFlatRows","isAllPageRowsSelected","_table$getState$rowSe","totalSelected","_opts$selectChildren","selectedRowIds","isRowSelected","isSubRowSelected","_table$options$enable3","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","rows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","alphanumeric","rowA","rowB","compareAlphanumeric","toString","alphanumericCaseSensitive","text","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","isString","_table$options$sortin","_table$options$sortin2","desc","multi","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","defaultOptions","mergeOptions","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","cb","error","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","data","accessRows","originalRows","_row$originalSubRows","expandRows","expandedRows","handleRow","filterRows","filterRowImpl","filterRowModelFromLeafs","filterRowModelFromRoot","rowsToFilter","filterRow","_table$options$maxLea","newFilteredFlatRows","newFilteredRowsById","recurseFilterRows","newRow","_table$options$maxLea2","getFacetedRowModel","preRowModel","columnFilters","globalFilter","filterableIds","filterRowsImpl","getFacetedUniqueValues","_table$getColumn","facetedRowModel","facetedUniqueValues","j","_facetedUniqueValues$","getFilteredRowModel","resolvedColumnFilters","resolvedGlobalFilters","_filterFn$resolveFilt","globallyFilterableColumns","_globalFilterFn$resol","currentColumnFilter","currentGlobalFilter","filterMeta","getPaginationRowModel","pagination","flatRows","rowsById","pageStart","pageEnd","paginatedRowModel","getSortedRowModel","sorting","sortingState","sortedFlatRows","availableSorting","sort","columnInfoById","sortEntry","sortData","sortedData","_sortEntry$desc","columnInfo","sortUndefined","isDesc","sortInt","aValue","bValue","aUndefined","bUndefined","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","prev","Pagination","page","between","totalPages","changePage","ellipsis","positions","visiblePages","range","active","TablePagination","onPageIndexChange","rowsCount","prevRows","rowsLeft","Desktop","mode","enableHeaders","paginationEnabled","paginationProps","cellIndex","Mobile","DataTable","setColumnFilters","useState","setSorting","isMobile","TableUtils","template","helper","enableColumnFilter","enableSorting","cellAccessor","headerAccessor","TypeGuards","useArrowNavigation","emblaApi","navigationHandler","prevBtnDisabled","setPrevBtnDisabled","nextBtnDisabled","setNextBtnDisabled","onClickNavigationButton","useCallback","onSelect","useEffect","useDotsNavigation","setVisibleIndex","scrollSnaps","setScrollSnaps","onClickDot","onInit","normalizeDelay","delay","getAutoplayRootNode","rootNode","emblaRootNode","Autoplay","userOptions","destroyed","timerStartTime","timerId","autoplayActive","mouseIsOver","playOnDocumentVisible","jump","init","emblaApiInstance","optionsHandler","optionsAtMedia","optionsBase","allOptions","eventStore","ownerDocument","isDraggable","visibilityChange","pointerDown","pointerUp","mouseEnter","mouseLeave","stopAutoplay","startAutoplay","destroy","setTimer","ownerWindow","clearTimer","documentIsHidden","play","jumpOverride","stop","reset","isPlaying","nextIndex","lastIndex","kill","timeUntilNext","currentDelay","timePastSinceStart","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","Alignment","align","viewSize","predefined","start","end","measure","EventStore","listeners","add","node","handler","removeListener","legacyMediaQueryList","self","clear","remove","Animations","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","Limit","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loopEnd","counter","withinLimit","get","set","clone","DragHandler","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","Vector1D","initialValue","normalizeInput","subtract","Translate","translate","x","y","containerStyle","previousTarget","to","newTarget","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","on","off","OptionsHandler","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","mediaQueries","PluginsHandler","activePlugins","map","EmblaCarousel","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","scrollNext","scrollPrev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","useCarousel","carouselOptions","autoPlayOptions","emblaRef","autoplay","ArrowNavigationButton","onClick","DotsNavigations","visibleIndex","CarouselContent","dotsProps","dotsOptions","mobVisible","deskVisible","dotsRestOptions","withDotsOnMob","withDotsOnDesk","dotsFullProps","defaultCarouselOptions","defaultDotsOptions","defaultNavArrowOptions","defaultAutoPlayOptions","ContainerWithNavigation","_b","_c","_d","CarouselBase","navArrowOptions","heading","mergedCarouselOptions","mergedAutoPlayOptions","mergedNavArrowOptions","mergedDotsOptions","navArrowPosition","winNavArrows","withHeadingAndArrowsTop","Heading","NotificationProvider","maxToastViewLimit","toastDuration","toasts","useToasterStore","toast","Toaster","Breadcrumbs","linksList","link","Fragment","Slottable","SlotClone","isValidElement","childrenRef","getElementRef","cloneElement","mergeProps","mergeRefs","Children","isSlottable","child","element","getter","warn","slotProps","childProps","override","prop","slotPropValue","childPropValue","args","Slot","childrenArray","slottable","newElement","newChildren"],"mappings":"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","x_google_ignoreList":[4,9,10,19,20,21,22]}