@harnessio/ui 0.0.223 → 0.0.224

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DpO2Qy86.js","sources":["../src/components/manage-navigation/draggable-item.tsx","../src/components/manage-navigation/index.tsx","../src/components/app-sidebar/types.ts","../src/components/skeletons/skeleton-utils.ts","../src/components/skeletons/skeloton-file-explorer.tsx","../src/components/file-control-bars/file-viewer-control-bar.tsx","../src/components/file-control-bars/file-editor-control-bar.tsx","../src/components/git-commit-dialog/git-commit-dialog.tsx","../src/components/git-commit-dialog/types.ts","../src/components/commit-suggestions-dialog/commit-suggestions-dialog.tsx","../../../node_modules/.pnpm/embla-carousel-reactive-utils@8.5.2_embla-carousel@8.5.2/node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../../../node_modules/.pnpm/embla-carousel@8.5.2/node_modules/embla-carousel/esm/embla-carousel.esm.js","../../../node_modules/.pnpm/embla-carousel-react@8.5.2_react@17.0.2/node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/components/carousel.tsx","../src/components/image-carousel.tsx","../src/components/topbar.tsx","../src/components/repo-subheader.tsx","../src/components/chat/chat.tsx","../src/components/chat/chat-diff-viewer.tsx","../src/components/chat/chat-preview-wrapper.tsx","../src/components/chat/chat-empty-preview-wrapper.tsx","../src/components/chat/message-bubble.tsx","../src/components/chat/prompt-input.tsx","../src/components/shimmer.tsx","../src/components/chat/reasoning.tsx","../../../node_modules/.pnpm/@tanstack+table-core@8.21.3/node_modules/@tanstack/table-core/build/lib/index.mjs","../../../node_modules/.pnpm/@tanstack+react-table@8.21.3_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/@tanstack/react-table/build/lib/index.mjs","../src/components/data-table/utils.ts","../src/components/data-table/data-table.tsx","../src/components/data-table/data-table-columns-filter-dropdown.tsx","../src/components/data-table/index.ts","../src/components/draggable-card.tsx","../src/components/view-only.tsx","../src/components/widgets.tsx","../src/components/studio-card/studio-card.tsx","../../../node_modules/.pnpm/sonner@1.7.4_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/sonner/dist/index.mjs","../src/components/toast/custom-toast.tsx","../src/components/toast/toasts.tsx","../src/components/toast/toaster.tsx","../src/components/chatV2.tsx","../src/hooks/useLocationChange.ts","../src/hooks/useNav.ts","../src/components/nav/types.ts","../src/components/nav/data/navbar-more-menu-items.ts","../src/components/nav/data/navbar-settings-menu-items.ts","../src/components/nav/data/pinned-menu-items.ts","../src/components/nav/sidebar-group-menu.tsx","../src/components/nav/sidebar-item.tsx","../src/components/nav/side-nav.tsx","../src/components/nav/avatar-dropdown.tsx","../src/components/nav/scope-selector.tsx","../src/components/nav/header.tsx","../src/components/nav/sidebar-layout.tsx"],"sourcesContent":["import { DraggableAttributes } from '@dnd-kit/core'\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@utils/cn'\n\ninterface DraggableItemProps {\n id: string\n children: (props: { attributes: DraggableAttributes; listeners: SyntheticListenerMap }) => React.ReactNode\n tag: 'button' | 'div' | 'li'\n className?: string\n}\n\nexport const DraggableItem = ({ id, children, tag: Tag = 'div', className }: DraggableItemProps) => {\n const {\n attributes,\n listeners = {},\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1\n }\n return (\n <Tag className={cn('relative', isDragging && 'z-10', className)} ref={setNodeRef} style={style}>\n {children({ attributes, listeners })}\n </Tag>\n )\n}\n","import { useEffect, useMemo, useState } from 'react'\n\nimport { Button, ButtonLayout, Dialog, IconV2, Layout, Text } from '@/components'\nimport useDragAndDrop from '@/hooks/use-drag-and-drop'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar/types'\nimport { closestCenter, DndContext } from '@dnd-kit/core'\nimport { SortableContext } from '@dnd-kit/sortable'\n\nimport { DraggableItem } from './draggable-item'\n\ninterface ManageNavigationProps {\n pinnedItems: NavbarItemType[]\n // Might be needed for search later\n navbarMenuData?: MenuGroupType[]\n showManageNavigation: boolean\n recentItems: NavbarItemType[]\n onSave: (recentItems: NavbarItemType[], currentPinnedItems: NavbarItemType[]) => void\n onClose: () => void\n isSubmitting: boolean\n submitted: boolean\n}\n\nconst filterRecentItems = (pinnedItems: NavbarItemType[], recentItems: NavbarItemType[]) => {\n return recentItems.filter(item => !pinnedItems.some(pinnedItem => pinnedItem.id === item.id))\n}\n\nexport const ManageNavigation = ({\n pinnedItems,\n recentItems,\n showManageNavigation,\n onSave,\n onClose,\n isSubmitting,\n submitted\n}: ManageNavigationProps) => {\n const [currentPinnedItems, setCurrentPinnedItems] = useState<NavbarItemType[]>(pinnedItems)\n const [currentFilteredRecentItems, setCurrentFilteredRecentItems] = useState<NavbarItemType[]>(\n filterRecentItems(pinnedItems, recentItems)\n )\n const [isRecentCleared, setIsRecentCleared] = useState(false)\n\n useEffect(() => {\n setCurrentPinnedItems(pinnedItems)\n }, [pinnedItems])\n\n useEffect(() => {\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n }, [recentItems, pinnedItems])\n\n const { handleDragEnd, getItemId } = useDragAndDrop<NavbarItemType>({\n items: currentPinnedItems,\n onReorder: setCurrentPinnedItems\n })\n\n const handleCancel = () => {\n setCurrentPinnedItems(pinnedItems)\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n onClose()\n }\n\n const handleClearRecent = () => {\n setCurrentFilteredRecentItems([])\n setIsRecentCleared(true)\n }\n\n const onSubmit = () => {\n onSave(currentFilteredRecentItems, currentPinnedItems)\n onClose()\n }\n\n const updatePinnedItems = (items: NavbarItemType[]) => {\n setCurrentPinnedItems(items)\n setCurrentFilteredRecentItems(prevRecentItems => {\n if (isRecentCleared) {\n const unpinnedItems = currentPinnedItems\n .filter(item => !items.some(newItem => newItem.id === item.id))\n .filter(item => recentItems.some(recentItem => recentItem.id === item.id))\n return [...prevRecentItems, ...unpinnedItems]\n } else {\n return filterRecentItems(items, recentItems)\n }\n })\n }\n\n const addToPinnedItems = (item: NavbarItemType) => {\n const isAlreadyPinned = currentPinnedItems.some(pinnedItem => pinnedItem.id === item.id)\n\n if (!isAlreadyPinned) {\n updatePinnedItems([...currentPinnedItems, item])\n }\n }\n\n const removeFromPinnedItems = (item: NavbarItemType) => {\n updatePinnedItems(currentPinnedItems.filter(pinnedItem => pinnedItem.id !== item.id))\n }\n\n const permanentlyPinnedItems = useMemo(\n () => currentPinnedItems.filter(item => item.permanentlyPinned),\n [currentPinnedItems]\n )\n const draggablePinnedItems = useMemo(\n () => currentPinnedItems.filter(item => !item.permanentlyPinned),\n [currentPinnedItems]\n )\n\n return (\n <Dialog.Root open={showManageNavigation} onOpenChange={handleCancel}>\n <Dialog.Content className=\"max-h-[70vh]\">\n <Dialog.Header>\n <Dialog.Title>Manage navigation</Dialog.Title>\n </Dialog.Header>\n\n <Dialog.Body>\n <Layout.Grid gapY=\"xs\">\n <Text variant=\"body-single-line-normal\" color=\"foreground-3\">\n Pinned\n </Text>\n {!currentPinnedItems.length ? (\n <Text align=\"center\" className=\"mt-cn-md\" color=\"foreground-3\">\n No pinned items\n </Text>\n ) : (\n <DndContext\n onDragEnd={handleDragEnd}\n collisionDetection={closestCenter}\n modifiers={[\n args => ({\n ...args.transform,\n x: 0 // Prevent horizontal drag\n })\n ]}\n >\n <SortableContext items={currentPinnedItems.map((_, index) => getItemId(index))}>\n <Layout.Flex direction=\"column\" gapY=\"4xs\" as=\"ul\">\n {permanentlyPinnedItems.map(item => {\n return (\n <Layout.Flex\n align=\"center\"\n as=\"li\"\n key={item.id}\n gapX=\"xs\"\n className=\"w-full grow cursor-not-allowed rounded p-cn-3xs px-0 opacity-55\"\n >\n <IconV2 className=\"w-3.5\" name=\"lock\" size=\"xs\" />\n <Text>{item.title}</Text>\n </Layout.Flex>\n )\n })}\n {draggablePinnedItems.map((item, index) => (\n <DraggableItem id={getItemId(index + permanentlyPinnedItems.length)} tag=\"li\" key={item.title}>\n {({ attributes, listeners }) => {\n return (\n <Layout.Flex\n justify=\"between\"\n gapX=\"xs\"\n align=\"center\"\n className=\"hover:bg-cn-3 w-full grow cursor-grab rounded active:cursor-grabbing\"\n >\n <Button {...attributes} {...listeners} variant=\"transparent\" className=\"justify-start\">\n <IconV2 name=\"grip-dots\" size=\"xs\" />\n <Text color=\"inherit\">{item.title}</Text>\n </Button>\n <Button\n iconOnly\n size=\"sm\"\n variant=\"transparent\"\n onClick={() => {\n removeFromPinnedItems(item)\n }}\n tooltipProps={{\n content: 'Unpin'\n }}\n >\n <IconV2 name=\"xmark\" size=\"xs\" />\n </Button>\n </Layout.Flex>\n )\n }}\n </DraggableItem>\n ))}\n </Layout.Flex>\n </SortableContext>\n </DndContext>\n )}\n </Layout.Grid>\n\n {currentFilteredRecentItems.length > 0 && (\n <Layout.Grid gapY=\"xs\">\n <Layout.Flex align=\"center\" justify=\"between\">\n <Text variant=\"body-single-line-normal\" color=\"foreground-3\" as=\"span\">\n Recent\n </Text>\n <Button variant=\"link\" size=\"sm\" onClick={handleClearRecent}>\n Clear all\n </Button>\n </Layout.Flex>\n <Layout.Flex direction=\"column\" gapY=\"4xs\" as=\"ul\">\n {currentFilteredRecentItems.map((item, index) => (\n <Layout.Flex\n align=\"center\"\n justify=\"between\"\n className=\"relative h-8\"\n key={`recent-${item.id}-${index}`}\n as=\"li\"\n >\n <Layout.Flex align=\"center\" gap=\"xs\" className=\"w-full grow\">\n <IconV2 name=\"clock\" size=\"xs\" />\n <Text color=\"foreground-1\">{item.title}</Text>\n </Layout.Flex>\n\n <Button\n iconOnly\n size=\"sm\"\n variant=\"transparent\"\n onClick={() => addToPinnedItems(item)}\n tooltipProps={{\n content: 'Toggle pin'\n }}\n >\n <IconV2 name=\"pin\" size=\"xs\" />\n </Button>\n </Layout.Flex>\n ))}\n </Layout.Flex>\n </Layout.Grid>\n )}\n </Dialog.Body>\n\n <Dialog.Footer>\n <ButtonLayout>\n {!submitted ? (\n <>\n <Dialog.Close disabled={isSubmitting}>Cancel</Dialog.Close>\n <Button type=\"button\" variant=\"primary\" onClick={onSubmit} disabled={isSubmitting}>\n {isSubmitting ? 'Saving...' : 'Save'}\n </Button>\n </>\n ) : (\n <Button\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n theme=\"success\"\n className=\"pointer-events-none flex gap-cn-xs\"\n disabled={submitted}\n >\n Saved\n <IconV2 name=\"check\" size=\"xs\" />\n </Button>\n )}\n </ButtonLayout>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import { IconV2NamesType } from '@/components'\n\nexport enum MenuGroupTypes {\n GENERAL = 'general',\n SETTINGS = 'settings'\n}\n\ninterface MenuGroupType {\n groupId: number | string\n title: string\n type: MenuGroupTypes\n items: NavbarItemType[]\n}\n\ntype NavbarItemIdType = number | string\n\ninterface NavbarItemType<T = NavbarItemIdType> {\n id: T\n title: string\n iconName?: IconV2NamesType\n description?: string\n to: string\n permanentlyPinned?: boolean\n subItems?: NavbarItemType<T>[] // recursive with same T\n}\n\nexport enum UserMenuKeys {\n ACCOUNT = 'account',\n THEME = 'theme',\n CUSTOM_NAV = 'customNavigation',\n ADMINISTRATION = 'administration',\n LOG_OUT = 'logOut'\n}\n\ninterface UserMenuItemType {\n key: UserMenuKeys\n iconName: IconV2NamesType\n title: string\n to: string | null\n isSeparated: boolean\n}\n\ninterface NavState {\n pinnedMenu: NavbarItemType[]\n recentMenu: NavbarItemType[]\n setPinned: (items: NavbarItemType, pin: boolean) => void\n setRecent: (items: NavbarItemType, remove?: boolean) => void\n setNavLinks: (links: { pinnedMenu?: NavbarItemType[]; recentMenu?: NavbarItemType[] }) => void\n}\n\nexport type { MenuGroupType, NavbarItemType, UserMenuItemType, NavbarItemIdType, NavState }\n","// Helper function to generate random percentage width within a range\nexport const getRandomPercentageWidth = (min: number, max: number) =>\n `${Math.floor(Math.random() * (max - min + 1)) + min}%`\n\n// Helper function to generate random pixel width within a range\nexport const getRandomPixelWidth = (min: number, max: number) =>\n `${Math.floor(Math.random() * (max - min + 1)) + min}px`\n","import { FC } from 'react'\n\nimport { Layout, Skeleton } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport { getRandomPixelWidth } from './skeleton-utils'\n\nexport interface SkeletonFileExplorerProps {\n className?: string\n linesCount?: number\n}\n\nexport const SkeletonFileExplorer: FC<SkeletonFileExplorerProps> = ({ className, linesCount = 1 }) => {\n return (\n <Layout.Vertical gap=\"4xs\" className={cn({ 'cn-skeleton-file-explorer': linesCount > 1 }, className)}>\n {Array.from({ length: linesCount }).map((_, index) => (\n <Layout.Horizontal key={index} gap=\"2xs\" className=\"p-cn-2xs\">\n <Skeleton.Icon size=\"md\" />\n\n <Skeleton.Typography style={{ width: getRandomPixelWidth(30, 120) }} className=\"w-full\" />\n </Layout.Horizontal>\n ))}\n </Layout.Vertical>\n )\n}\n","import { FC, useCallback, useMemo } from 'react'\n\nimport {\n DropdownMenu,\n FileToolbarActions,\n IconV2,\n Layout,\n Separator,\n StackedList,\n Tabs,\n Tag,\n Text,\n ViewTypeValue\n} from '@/components'\nimport { useCustomDialogTrigger } from '@/context'\nimport { BranchSelectorTab } from '@views/repo/components/branch-selector-v2/types'\n\nexport interface FileViewerControlBarProps {\n view: ViewTypeValue\n isMarkdown: boolean\n fileBytesSize: string\n fileContent: string\n url: string\n handleDownloadFile: () => void\n handleEditFile: () => void\n handleOpenDeleteDialog: () => void\n refType?: BranchSelectorTab\n isGitLfsObject?: boolean\n}\n\nexport const FileViewerControlBar: FC<FileViewerControlBarProps> = ({\n view,\n isMarkdown,\n fileBytesSize,\n fileContent,\n url,\n isGitLfsObject,\n handleDownloadFile,\n handleEditFile,\n handleOpenDeleteDialog: _handleOpenDeleteDialog,\n refType = BranchSelectorTab.BRANCHES\n}) => {\n const { triggerRef, registerTrigger } = useCustomDialogTrigger()\n\n const handleViewRaw = () => {\n window.open(url, '_blank')\n }\n\n const handleOpenDeleteDialog = useCallback(() => {\n registerTrigger()\n _handleOpenDeleteDialog()\n }, [_handleOpenDeleteDialog, registerTrigger])\n\n // Memoization here prevents items from re-rendering. Important for focusing the dialog trigger on close\n const rightDetails = useMemo(() => {\n return (\n <Layout.Horizontal gap=\"xl\" align=\"center\">\n {isGitLfsObject && <Tag value=\"Stored with Git LFS\" icon=\"info-circle\" />}\n <Layout.Horizontal gap=\"2xs\" align=\"center\">\n <Text color=\"foreground-3\">{`${fileContent?.split('\\n').length || 0} lines`}</Text>\n <Separator orientation=\"vertical\" className=\"h-3\" />\n <Text color=\"foreground-3\">{fileBytesSize}</Text>\n </Layout.Horizontal>\n <FileToolbarActions\n showEdit={refType === BranchSelectorTab.BRANCHES}\n copyContent={fileContent}\n onDownloadClick={handleDownloadFile}\n onEditClick={handleEditFile}\n additionalButtonsProps={[\n {\n ref: triggerRef,\n children: <IconV2 name=\"more-horizontal\" />,\n 'aria-label': 'More actions',\n dropdownProps: {\n content: (\n <>\n <DropdownMenu.Item onSelect={handleViewRaw} title=\"View Raw\" />\n <DropdownMenu.Item onSelect={handleOpenDeleteDialog} title={<Text color=\"danger\">Delete</Text>} />\n </>\n ),\n contentProps: {\n align: 'end'\n }\n }\n }\n ]}\n />\n </Layout.Horizontal>\n )\n }, [\n fileBytesSize,\n fileContent,\n handleDownloadFile,\n handleEditFile,\n handleOpenDeleteDialog,\n handleViewRaw,\n isGitLfsObject,\n refType\n ])\n\n return (\n <StackedList.Root {...(view !== 'history' ? { rounded: 'top' } : {})}>\n <StackedList.Header paddingY=\"2xs\">\n <StackedList.Field\n title={\n <Tabs.List variant=\"ghost\">\n {isMarkdown && <Tabs.Trigger value=\"preview\">Preview</Tabs.Trigger>}\n <Tabs.Trigger value=\"code\">Code</Tabs.Trigger>\n <Tabs.Trigger value=\"blame\">Blame</Tabs.Trigger>\n <Tabs.Trigger value=\"history\">History</Tabs.Trigger>\n </Tabs.List>\n }\n />\n <StackedList.Field right title={rightDetails} />\n </StackedList.Header>\n </StackedList.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { StackedList, Tabs } from '@/components'\n\nexport interface FileEditorControlBarProps {\n showPreview?: boolean\n}\n\nexport const FileEditorControlBar: FC<FileEditorControlBarProps> = ({ showPreview = true }) => {\n return (\n <StackedList.Root rounded=\"top\">\n <StackedList.Header paddingY=\"2xs\">\n <StackedList.Field\n title={\n <Tabs.List variant=\"ghost\">\n <Tabs.Trigger value=\"edit\">Edit</Tabs.Trigger>\n {showPreview && <Tabs.Trigger value=\"preview\">Preview</Tabs.Trigger>}\n </Tabs.List>\n }\n />\n </StackedList.Header>\n </StackedList.Root>\n )\n}\n","import { FC, useEffect } from 'react'\nimport { SubmitHandler, useForm } from 'react-hook-form'\n\nimport {\n Button,\n ButtonLayout,\n CommitToGitRefOption,\n ControlGroup,\n Dialog,\n FormInput,\n FormWrapper,\n GitCommitFormType,\n Link,\n Message,\n MessageTheme,\n Radio,\n Tag\n} from '@/components'\nimport { useTranslation } from '@/context'\nimport { UsererrorError, ViolationState } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport const createGitCommitSchema = (isFileNameRequired: boolean) => {\n const fileNameSchema = isFileNameRequired ? z.string().min(1, 'File Name is required') : z.string().optional()\n\n return z\n .object({\n message: z.string().optional(),\n description: z.string().optional(),\n commitToGitRef: z.nativeEnum(CommitToGitRefOption),\n newBranchName: z.string().optional(),\n fileName: fileNameSchema\n })\n .superRefine((data, ctx) => {\n if (data.commitToGitRef === CommitToGitRefOption.NEW_BRANCH) {\n if (!data.newBranchName || !data.newBranchName.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Branch Name is required',\n path: ['newBranchName']\n })\n }\n }\n })\n}\n\nexport type GitCommitSchemaType = z.infer<ReturnType<typeof createGitCommitSchema>>\n\nexport interface GitCommitDialogProps {\n isOpen: boolean\n isFileNameRequired?: boolean\n commitTitlePlaceHolder?: string\n currentBranch: string\n violation: boolean\n bypassable: boolean\n disableCTA: boolean\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: GitCommitFormType) => Promise<void>\n setAllStates: (payload: Partial<ViolationState>) => void\n dryRun: (commitToGitRef: CommitToGitRefOption, fileName?: string) => void\n isSubmitting: boolean\n}\n\nexport const GitCommitDialog: FC<GitCommitDialogProps> = ({\n isOpen,\n onClose,\n isFileNameRequired = false,\n onFormSubmit,\n commitTitlePlaceHolder,\n dryRun,\n currentBranch,\n violation,\n bypassable,\n setAllStates,\n disableCTA,\n isSubmitting,\n error\n}) => {\n const { t } = useTranslation()\n\n const formMethods = useForm<GitCommitSchemaType>({\n resolver: zodResolver(createGitCommitSchema(isFileNameRequired)),\n mode: 'onChange',\n defaultValues: {\n message: '',\n description: '',\n commitToGitRef: CommitToGitRefOption.DIRECTLY,\n newBranchName: '',\n fileName: isFileNameRequired ? '' : undefined\n }\n })\n\n const { register, handleSubmit, setValue, watch, reset } = formMethods\n\n const isDisabledSubmission = disableCTA || isSubmitting\n const onSubmit: SubmitHandler<GitCommitSchemaType> = data => {\n if (isDisabledSubmission) return\n\n onFormSubmit(data as GitCommitFormType)\n }\n\n const commitToGitRefValue = watch('commitToGitRef')\n const fileNameValue = watch('fileName')\n const newBranchNameValue = watch('newBranchName')\n\n useEffect(() => {\n dryRun(commitToGitRefValue, fileNameValue)\n if (commitToGitRefValue === CommitToGitRefOption.DIRECTLY) {\n setValue('newBranchName', '')\n }\n }, [commitToGitRefValue])\n\n useEffect(() => {\n setAllStates({ violation: false, bypassable: false, bypassed: false })\n }, [newBranchNameValue])\n\n const handleDialogClose = (open: boolean) => {\n if (!open) {\n reset()\n onClose()\n }\n }\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleDialogClose}>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>{t('component:commitDialog.title', 'Commit changes')}</Dialog.Title>\n </Dialog.Header>\n\n <Dialog.Body>\n <FormWrapper id=\"commit-form\" {...formMethods} onSubmit={handleSubmit(onSubmit)}>\n {isFileNameRequired && (\n <FormInput.Text\n id=\"fileName\"\n label={t('component:commitDialog.form.file.label', 'File name')}\n {...register('fileName')}\n placeholder={t('component:commitDialog.form.file.placeholder', 'Add a file name')}\n autoFocus\n />\n )}\n\n <FormInput.Text\n autoFocus={!isFileNameRequired}\n id=\"message\"\n label={t('component:commitDialog.form.commit.label', 'Commit message')}\n {...register('message')}\n placeholder={\n commitTitlePlaceHolder ?? t('component:commitDialog.form.commit.placeholder', 'Add a commit message')\n }\n />\n\n <FormInput.Textarea\n id=\"description\"\n {...register('description')}\n placeholder={t(\n 'component:commitDialog.form.description.placeholder',\n 'Add an optional extended description'\n )}\n label={t('component:commitDialog.form.description.label', 'Extended description')}\n />\n\n <ControlGroup className=\"gap-cn-sm\">\n <FormInput.Radio id=\"commitToGitRef\" {...register('commitToGitRef')}>\n <Radio.Item\n id={CommitToGitRefOption.DIRECTLY}\n value={CommitToGitRefOption.DIRECTLY}\n label={\n <>\n {t('component:commitDialog.form.radioGroup.directly.labelFirst', 'Commit directly to')}\n <Tag\n className=\"mx-cn-2xs -mt-cn-4xs align-sub\"\n variant=\"secondary\"\n theme=\"gray\"\n value={currentBranch}\n icon=\"git-branch\"\n />\n </>\n }\n />\n <Radio.Item\n id={CommitToGitRefOption.NEW_BRANCH}\n value={CommitToGitRefOption.NEW_BRANCH}\n label={t(\n 'component:commitDialog.form.radioGroup.new.label',\n 'Create a new branch for this commit and start a pull request'\n )}\n caption={\n <Link to=\"https://developer.harness.io/docs/category/pull-requests\" target=\"_blank\">\n {t('component:commitDialog.form.radioGroup.new.caption', 'Learn more about pull requests')}\n </Link>\n }\n />\n </FormInput.Radio>\n\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH && (!violation || (violation && bypassable)) && (\n <div className=\"ml-[26px]\">\n <FormInput.Text\n autoFocus\n id=\"newBranchName\"\n {...register('newBranchName')}\n placeholder={t('component:commitDialog.form.radioGroup.new.input', 'New branch name')}\n />\n </div>\n )}\n\n {violation && (\n <Message className=\"ml-[26px]\" theme={MessageTheme.ERROR}>\n {bypassable\n ? commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? t(\n 'component:commitDialog.violationMessages.bypassed.directly',\n 'Some rules will be bypassed to commit directly'\n )\n : t(\n 'component:commitDialog.violationMessages.bypassed.new',\n 'Some rules will be bypassed to commit by creating branch'\n )\n : commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? t(\n 'component:commitDialog.violationMessages.notAllow.directly',\n \"Some rules don't allow you to commit directly\"\n )\n : t(\n 'component:commitDialog.violationMessages.notAllow.new',\n \"Some rules don't allow you to create new branch for commit\"\n )}\n </Message>\n )}\n\n {error && error?.message && (\n <Message className=\"ml-[26px]\" theme={MessageTheme.ERROR}>\n {error.message}\n </Message>\n )}\n </ControlGroup>\n </FormWrapper>\n </Dialog.Body>\n\n <Dialog.Footer>\n <ButtonLayout>\n <Dialog.Close onClick={() => handleDialogClose(false)} disabled={isSubmitting}>\n {t('component:cancel', 'Cancel')}\n </Dialog.Close>\n {!bypassable ? (\n <Button type=\"submit\" form=\"commit-form\" disabled={isDisabledSubmission}>\n {isSubmitting\n ? t('component:commitDialog.form.submit.loading', 'Committing...')\n : t('component:commitDialog.form.submit.default', 'Commit changes')}\n </Button>\n ) : (\n <Button type=\"submit\" form=\"commit-form\" variant=\"outline\" theme=\"danger\">\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH\n ? t('component:commitDialog.form.submit.bypassable.new', 'Bypass rules and commit via new branch')\n : t('component:commitDialog.form.submit.bypassable.directly', 'Bypass rules and commit directly')}\n </Button>\n )}\n </ButtonLayout>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","export interface GitCommitFormType {\n message: string\n description?: string\n commitToGitRef: string\n newBranchName?: string\n fileName?: string\n}\n\nexport enum CommitToGitRefOption {\n DIRECTLY = 'directly',\n NEW_BRANCH = 'new-branch'\n}\n","import { FC, useEffect } from 'react'\nimport { useForm } from 'react-hook-form'\n\nimport { Alert, Button, ButtonLayout, Dialog, FormInput, FormWrapper } from '@/components'\nimport { UsererrorError } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport interface CommitSuggestionsFormType {\n message?: string\n title: string\n}\n\nconst commitSuggestionsSchema = z.object({\n message: z.string().optional(),\n title: z.string()\n})\n\nexport type CommitSuggestionsFormFields = z.infer<typeof commitSuggestionsSchema>\n\nexport interface CommitSuggestionsDialogProps {\n isOpen: boolean\n commitTitlePlaceHolder?: string\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: CommitSuggestionsFormType) => Promise<void>\n isSubmitting: boolean\n}\n\nexport const CommitSuggestionsDialog: FC<CommitSuggestionsDialogProps> = ({\n isOpen,\n onClose,\n commitTitlePlaceHolder,\n error,\n onFormSubmit,\n isSubmitting\n}) => {\n const formMethods = useForm<CommitSuggestionsFormFields>({\n resolver: zodResolver(commitSuggestionsSchema),\n mode: 'onChange',\n defaultValues: {\n message: '',\n title: commitTitlePlaceHolder\n }\n })\n\n const { register, handleSubmit, reset } = formMethods\n // Reset form when dialog opens or closes\n useEffect(() => {\n reset({\n message: '',\n title: commitTitlePlaceHolder\n })\n }, [isOpen, reset, commitTitlePlaceHolder])\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={onClose}>\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>Commit Changes</Dialog.Title>\n </Dialog.Header>\n\n <Dialog.Body>\n <FormWrapper {...formMethods} onSubmit={handleSubmit(onFormSubmit)} id=\"commit-suggestions-form\">\n <FormInput.Text\n id=\"title\"\n label=\"Commit Message\"\n {...register('title')}\n placeholder={commitTitlePlaceHolder ?? 'Add a commit message'}\n />\n\n <FormInput.Textarea\n id=\"message\"\n {...register('message')}\n placeholder=\"Add an optional extended description\"\n label=\"Extended description\"\n className=\"h-44\"\n />\n\n {error && (\n <Alert.Root theme=\"danger\" className=\"mt-cn-md\">\n <Alert.Title>\n {error.message || 'An error occurred while applying suggestions. Please try again.'}\n </Alert.Title>\n </Alert.Root>\n )}\n </FormWrapper>\n </Dialog.Body>\n\n <Dialog.Footer>\n <ButtonLayout>\n <Dialog.Close onClick={onClose} disabled={isSubmitting}>\n Cancel\n </Dialog.Close>\n <Button type=\"submit\" form=\"commit-suggestions-form\" disabled={isSubmitting}>\n {isSubmitting ? 'Committing...' : 'Commit changes'}\n </Button>\n </ButtonLayout>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\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 if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop();\n eventHandler.emit('settle');\n }\n if (!hasSettled) eventHandler.emit('scroll');\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 };\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.location.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 {\n ComponentProps,\n createContext,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n useCallback,\n useContext,\n useEffect,\n useState\n} from 'react'\n\nimport { Button, IconV2 } from '@/components'\nimport { cn } from '@/utils/cn'\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react'\n\ntype CarouselApi = UseEmblaCarouselType[1]\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\ntype CarouselOptions = UseCarouselParameters[0]\ntype CarouselPlugin = UseCarouselParameters[1]\n\ntype CarouselRootProps = {\n opts?: CarouselOptions\n plugins?: CarouselPlugin\n orientation?: 'horizontal' | 'vertical'\n setApi?: (api: CarouselApi) => void\n initialSlide?: number\n}\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\n api: ReturnType<typeof useEmblaCarousel>[1]\n scrollPrev: () => void\n scrollNext: () => void\n canScrollPrev: boolean\n canScrollNext: boolean\n} & CarouselRootProps\n\nconst CarouselContext = createContext<CarouselContextProps | null>(null)\n\nfunction useCarousel() {\n const context = useContext(CarouselContext)\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel.Root />')\n }\n\n return context\n}\n\nconst CarouselRoot = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement> & CarouselRootProps>(\n ({ orientation = 'horizontal', opts, setApi, plugins, className, children, initialSlide, ...props }, ref) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y'\n },\n plugins\n )\n const [canScrollPrev, setCanScrollPrev] = useState(false)\n const [canScrollNext, setCanScrollNext] = useState(false)\n\n const onSelect = useCallback((api: CarouselApi) => {\n if (!api) {\n return\n }\n\n setCanScrollPrev(api.canScrollPrev())\n setCanScrollNext(api.canScrollNext())\n }, [])\n\n const scrollPrev = useCallback(() => {\n api?.scrollPrev()\n }, [api])\n\n const scrollNext = useCallback(() => {\n api?.scrollNext()\n }, [api])\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n scrollPrev()\n } else if (event.key === 'ArrowRight') {\n event.preventDefault()\n scrollNext()\n }\n },\n [scrollPrev, scrollNext]\n )\n\n useEffect(() => {\n if (!api || !setApi) {\n return\n }\n\n setApi(api)\n }, [api, setApi])\n\n useEffect(() => {\n if (!api) {\n return\n }\n\n onSelect(api)\n api.on('reInit', onSelect)\n api.on('select', onSelect)\n\n return () => {\n api?.off('select', onSelect)\n }\n }, [api, onSelect])\n\n const scrollToSlide = useCallback(() => {\n if (api && !!initialSlide) {\n api.scrollTo(initialSlide)\n }\n }, [api, initialSlide])\n\n useEffect(() => {\n if (!api) {\n return\n }\n\n scrollToSlide()\n api.on('reInit', scrollToSlide)\n api.on('init', scrollToSlide)\n\n return () => {\n api?.off('init', scrollToSlide)\n }\n }, [scrollToSlide, api])\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext\n }}\n >\n <div\n ref={ref}\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n )\n }\n)\nCarouselRoot.displayName = 'CarouselRoot'\n\ninterface CarouselContentProps extends HTMLAttributes<HTMLDivElement> {\n carouselBlockClassName?: string\n}\n\nconst CarouselContent = forwardRef<HTMLDivElement, CarouselContentProps>(\n ({ className, carouselBlockClassName, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel()\n\n return (\n <div ref={carouselRef} className={cn('overflow-hidden', carouselBlockClassName)}>\n <div\n ref={ref}\n className={cn('flex', orientation === 'horizontal' ? '-ml-cn-md' : '-mt-cn-md flex-col', className)}\n {...props}\n />\n </div>\n )\n }\n)\nCarouselContent.displayName = 'CarouselContent'\n\nconst CarouselItem = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(({ className, ...props }, ref) => {\n const { orientation } = useCarousel()\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-cn-md' : 'pt-cn-md',\n className\n )}\n {...props}\n />\n )\n})\nCarouselItem.displayName = 'CarouselItem'\n\ntype CarouselButtonProp = Omit<ComponentProps<typeof Button>, 'iconOnly' | 'tooltipProps' | 'ignoreIconOnlyTooltip'>\n\nconst CarouselPrevious = forwardRef<HTMLButtonElement, CarouselButtonProp>(\n ({ className, variant = 'outline', theme = 'default', size = 'sm', ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n theme={theme}\n size={size}\n iconOnly\n className={cn(\n 'absolute h-8 w-8 rounded-cn-full',\n orientation === 'horizontal'\n ? '-left-[48px] top-1/2 -translate-y-1/2' // TODO: replace -[48px] with a proper value from the design system once available\n : '-top-[48px] left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n tooltipProps={{\n content: 'Previous'\n }}\n {...props}\n >\n <IconV2 name=\"arrow-long-left\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n )\n }\n)\nCarouselPrevious.displayName = 'CarouselPrevious'\n\nconst CarouselNext = forwardRef<HTMLButtonElement, CarouselButtonProp>(\n ({ className, variant = 'outline', theme = 'default', size = 'sm', ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel()\n\n return (\n <Button\n ref={ref}\n variant={variant}\n theme={theme}\n size={size}\n iconOnly\n className={cn(\n 'absolute h-8 w-8 rounded-cn-full',\n orientation === 'horizontal'\n ? '-right-[48px] top-1/2 -translate-y-1/2' // TODO: replace -[48px] with a proper value from the design system once available\n : '-bottom-[48px] left-1/2 -translate-x-1/2 rotate-90',\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n tooltipProps={{\n content: 'Next'\n }}\n {...props}\n >\n <IconV2 name=\"arrow-long-right\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n )\n }\n)\nCarouselNext.displayName = 'CarouselNext'\n\nconst Carousel = {\n Root: CarouselRoot,\n Content: CarouselContent,\n Item: CarouselItem,\n Previous: CarouselPrevious,\n Next: CarouselNext\n}\n\nexport { type CarouselApi, Carousel }\n","import { FC, useState } from 'react'\n\nimport { Button, Carousel, Dialog, IconV2, Spacer } from '@/components'\nimport { INITIAL_ZOOM_LEVEL, ZOOM_INC_DEC_LEVEL } from '@/utils/utils'\n\nexport interface ImageCarouselProps {\n isOpen: boolean\n setIsOpen: (value: boolean) => void\n imgEvent: string[]\n title?: string\n initialSlide?: number\n}\n\nexport const ImageCarousel: FC<ImageCarouselProps> = ({ isOpen, setIsOpen, imgEvent, title, initialSlide }) => {\n const [zoomLevel, setZoomLevel] = useState(INITIAL_ZOOM_LEVEL)\n\n return (\n <Dialog.Root\n open={isOpen}\n onOpenChange={() => {\n setIsOpen(false)\n setZoomLevel(1)\n }}\n >\n <Dialog.Content size=\"md\">\n <Dialog.Header>\n <Dialog.Title>{title ? title : <Spacer size={7} />}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body>\n <Carousel.Root className=\"flex-1 overflow-hidden\" initialSlide={initialSlide}>\n <Carousel.Content className=\"h-full\" carouselBlockClassName=\"h-full\">\n {imgEvent &&\n imgEvent.map((image, idx) => {\n return (\n <Carousel.Item key={idx} className=\"flex items-center justify-center\">\n <img\n className=\"max-h-full\"\n alt=\"slide\"\n style={{ transform: `scale(${zoomLevel || 1})` }}\n src={image}\n />\n </Carousel.Item>\n )\n })}\n </Carousel.Content>\n </Carousel.Root>\n </Dialog.Body>\n <Dialog.Footer className=\"!justify-center\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n iconOnly\n data-testid=\"zoomOutButton\"\n onClick={() => {\n if (Number(zoomLevel.toFixed(1)) > 0.3) {\n setZoomLevel(zoomLevel - ZOOM_INC_DEC_LEVEL)\n }\n }}\n title=\"Zoom out\"\n tooltipProps={{\n content: 'Zoom out'\n }}\n >\n <IconV2 name=\"minus\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n iconOnly\n data-testid=\"zoomInButton\"\n onClick={() => {\n if (Number(zoomLevel.toFixed(1)) < 2) {\n setZoomLevel(zoomLevel + ZOOM_INC_DEC_LEVEL)\n }\n }}\n title=\"Zoom in\"\n tooltipProps={{\n content: 'Zoom in'\n }}\n >\n <IconV2 name=\"plus\" />\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import * as React from 'react'\n\nimport { cn } from '@/utils'\n\nfunction isElement(node: React.ReactNode): node is React.ReactElement {\n return (node as React.ReactElement).type !== undefined\n}\n\nconst Topbar = {\n Root: function Root({ children, className }: { children: React.ReactNode; className?: string }) {\n const hasCenter = React.Children.toArray(children).some(\n (child: React.ReactNode) => isElement(child) && child?.type === Topbar.Center\n )\n\n return (\n <div\n className={cn(\n `grid w-full grid-cols-[1fr_auto] font-regular h-[var(--cn-breadcrumbs-height)] items-center gap-cn-xl px-cn-2xl text-cn-size-2`,\n { 'grid-cols-[auto_1fr_auto]': hasCenter },\n className\n )}\n >\n {children}\n </div>\n )\n },\n\n Left: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-1 flex items-center gap-cn-sm\">{children}</div>\n }),\n\n Center: React.memo(function Center({ children }: { children: React.ReactNode }) {\n return <div className=\"order-2 flex items-center justify-center\">{children}</div>\n }),\n\n Right: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-3 flex items-center gap-cn-sm\">{children}</div>\n })\n}\n\nexport { Topbar }\n","import { Tabs } from '@/components'\nimport { useTranslation } from '@/context'\nimport { SandboxLayout } from '@/views'\n\nexport enum RepoTabsKeys {\n SUMMARY = 'summary',\n CODE = 'code',\n PIPELINES = 'pipelines',\n COMMITS = 'commits',\n TAGS = 'tags',\n PULLS = 'pulls',\n BRANCHES = 'branches',\n SETTINGS = 'settings',\n SEARCH = 'search'\n}\n\nexport const repoTabsKeysArr = Object.values(RepoTabsKeys)\n\ninterface RepoSubheaderProps {\n className?: string\n showPipelinesTab?: boolean\n showSearchTab?: boolean\n summaryPath?: string\n filesPath?: string\n commitsPath?: string\n isRepoEmpty?: boolean\n}\n\nexport const RepoSubheader = ({\n showPipelinesTab = true,\n showSearchTab = false,\n className,\n summaryPath,\n filesPath,\n commitsPath,\n isRepoEmpty = false\n}: RepoSubheaderProps) => {\n const { t } = useTranslation()\n\n return (\n <SandboxLayout.SubHeader className={className}>\n <Tabs.NavRoot>\n <Tabs.List className=\"cn-repo-subheader-tabs\">\n <Tabs.Trigger value={summaryPath || RepoTabsKeys.SUMMARY}>{t('views:repos.summary', 'Summary')}</Tabs.Trigger>\n <Tabs.Trigger value={filesPath || RepoTabsKeys.CODE} disabled={isRepoEmpty}>\n {t('views:repos.files', 'Files')}\n </Tabs.Trigger>\n {showPipelinesTab && (\n <Tabs.Trigger value={RepoTabsKeys.PIPELINES}>{t('views:repos.pipelines', 'Pipelines')}</Tabs.Trigger>\n )}\n <Tabs.Trigger value={commitsPath || RepoTabsKeys.COMMITS} disabled={isRepoEmpty}>\n {t('views:repos.commits', 'Commits')}\n </Tabs.Trigger>\n <Tabs.Trigger value={RepoTabsKeys.TAGS} disabled={isRepoEmpty}>\n {t('views:repos.tags', 'Tags')}\n </Tabs.Trigger>\n <Tabs.Trigger value={RepoTabsKeys.PULLS} disabled={isRepoEmpty}>\n {t('views:repos.pullRequests', 'Pull requests')}\n </Tabs.Trigger>\n <Tabs.Trigger value={RepoTabsKeys.BRANCHES} disabled={isRepoEmpty}>\n {t('views:repos.branches.title', 'Branches')}\n </Tabs.Trigger>\n {showSearchTab && (\n <Tabs.Trigger value={RepoTabsKeys.SEARCH} disabled={isRepoEmpty}>\n {t('views:repos.search', 'Search')}\n </Tabs.Trigger>\n )}\n <Tabs.Trigger value={RepoTabsKeys.SETTINGS}>{t('views:repos.settings', 'Settings')}</Tabs.Trigger>\n </Tabs.List>\n </Tabs.NavRoot>\n </SandboxLayout.SubHeader>\n )\n}\n","import { ChangeEvent, FC, HTMLAttributes, KeyboardEvent, PropsWithChildren, ReactNode, RefObject } from 'react'\n\nimport { Button, IconV2, Illustration, Input, Text } from '@/components'\nimport { cn } from '@utils/cn'\n\nconst Root: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"bg-cn-1 flex size-full max-w-[460px] flex-col\">{children}</div>\n}\n\nconst Header: FC<{ onClose: () => void }> = ({ onClose }) => {\n return (\n <div className=\"bg-cn-1 px-cn-xl py-cn-md sticky top-0 flex items-center justify-between\">\n <Text variant=\"heading-hero\">Harness AI</Text>\n <Button size=\"sm\" iconOnly variant=\"ghost\" onClick={onClose} ignoreIconOnlyTooltip>\n <IconV2 name=\"xmark\" />\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n )\n}\n\nconst Body: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return (\n // TODO: replace gap-y-[28px] with proper values from the design system once available\n <div className=\"scrollbar-hidden px-cn-xl py-cn-xs flex flex-1 flex-col gap-y-[28px] overflow-y-auto overflow-x-hidden\">\n {children}\n </div>\n )\n}\n\nconst Footer: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"bg-cn-1 px-cn-xl py-cn-sm sticky bottom-0 z-10\">{children}</div>\n}\n\ninterface MessageProps extends PropsWithChildren<HTMLAttributes<HTMLElement>> {\n self?: boolean\n avatar?: ReactNode\n actions?: ReactNode\n}\n\nconst Message: FC<MessageProps> = ({ self, avatar, actions, children }) => {\n return (\n <div\n className={cn('flex gap-x-cn-sm content-center items-start', {\n 'place-content-end': self\n })}\n >\n {!self && (\n <div className=\"mt-cn-4xs\">\n {avatar ? avatar : <Illustration size={16} name=\"chat-avatar\" themeDependent />}\n </div>\n )}\n <div\n className={cn('flex flex-col gap-cn-sm', {\n 'w-[85%] items-end': self,\n 'w-full': !self\n })}\n >\n <div\n className={cn('text-cn-size-2 text-cn-1 leading-relaxed', {\n 'px-cn-sm py-cn-xs bg-cn-gray-secondary rounded-[8px_8px_2px_8px]': self\n })}\n >\n {children}\n </div>\n {actions && <div className=\"mt-cn-3xs gap-cn-3xs flex items-center\">{actions}</div>}\n </div>\n </div>\n )\n}\n\nconst CodeBlock: FC<PropsWithChildren<{ className?: string }>> = ({ children, className }) => {\n return (\n <code\n className={cn(\n 'inline-block rounded-[3px] border border-cn-2 bg-cn-gray-secondary px-cn-2xs text-cn-size-2 leading-[18px]',\n className\n )}\n >\n {children}\n </code>\n )\n}\n\ninterface TypingProps {\n avatar?: ReactNode\n}\n\nconst Typing: FC<TypingProps> = ({ avatar }) => {\n return (\n <div className=\"mt-cn-sm gap-x-cn-sm flex items-center\">\n {avatar || <Illustration size={16} name=\"chat-avatar\" themeDependent />}\n <span className=\"bg-cn-3 size-2.5 rounded-cn-full\" aria-hidden />\n </div>\n )\n}\n\ninterface SeparatorProps {\n title: string\n}\n\nconst Separator: FC<SeparatorProps> = ({ title }) => {\n return (\n <Text align=\"center\" className=\"opacity-50\">\n {title}\n </Text>\n )\n}\n\nconst emptyStateButtons = [\n {\n text: 'Pipeline design'\n },\n {\n text: 'Security reports'\n },\n {\n text: 'Error detection'\n },\n {\n text: 'Testing'\n }\n]\n\nconst EmptyState: FC = () => {\n return (\n <div className=\"gap-cn-lg mt-auto flex flex-col\">\n <div>\n <Text variant=\"heading-subsection\" color=\"foreground-2\">\n Hello Steven,\n </Text>\n <Text variant=\"heading-subsection\" className=\"mt-cn-3xs\">\n {' '}\n how can I help?\n </Text>\n </div>\n <div>\n <Text as=\"span\">Here are some suggestions to enhance your CI/CD pipeline:</Text>\n <ul className=\"mt-cn-sm gap-y-cn-2xs flex flex-col\">\n {emptyStateButtons.map(({ text }, index) => (\n <li key={index}>\n <Button className=\"w-full justify-start\" variant=\"secondary\">\n {text}\n </Button>\n </li>\n ))}\n </ul>\n </div>\n </div>\n )\n}\n\ninterface InputFieldProps {\n value?: string\n inputRef?: RefObject<HTMLInputElement>\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void\n onSend?: () => void\n placeholder?: string\n disabled?: boolean\n sendIcon?: ReactNode\n}\n\nconst InputField: FC<InputFieldProps> = ({\n value = '',\n inputRef,\n onChange = () => {},\n onKeyDown = () => {},\n onSend = () => {},\n placeholder = 'Type a message...',\n disabled = false,\n sendIcon = <IconV2 name=\"arrow-up\" size=\"2xs\" />\n}) => {\n return (\n <div className=\"relative\">\n <Input\n ref={inputRef}\n // TODO: Review and remove arbitrary values\n className=\"rounded-cn-4 pl-cn-sm focus-visible:rounded-cn-4 focus-visible:pb-cn-2xl h-11 flex-1 pr-[60px] focus:ring-0 focus-visible:h-16\"\n wrapperClassName=\"flex-row\"\n value={value}\n onChange={onChange}\n onKeyDown={event => {\n onKeyDown(event)\n if (event.code === 'Enter') {\n onSend()\n }\n }}\n placeholder={placeholder}\n aria-label=\"Chat input\"\n />\n <Button\n className=\"bottom-cn-xs right-cn-xs absolute z-10 size-7\"\n rounded\n onClick={onSend}\n disabled={disabled}\n aria-label=\"Send message\"\n >\n {sendIcon}\n </Button>\n </div>\n )\n}\n\nexport const Chat = {\n Root,\n Body,\n Header,\n Footer,\n Message,\n Typing,\n CodeBlock,\n Separator,\n EmptyState,\n Input: InputField\n}\n","import { CSSProperties, useCallback, useEffect, useState } from 'react'\n\nimport { DiffFile, DiffModeEnum, DiffView } from '@git-diff-view/react'\nimport { getDiffViewHighlighter } from '@git-diff-view/shiki'\nimport { HighlighterType } from '@views/repo/pull-request/hooks/useDiffHighlighter'\nimport { debounce } from 'lodash-es'\n\ninterface ChatDiffViewerProps {\n data: string\n mode?: DiffModeEnum\n lang?: string\n fileName?: string\n}\n\nexport const ChatDiffViewer = ({ data, mode = 4, lang = 'go', fileName }: ChatDiffViewerProps) => {\n const [, setLoading] = useState(false)\n const [diffFileInstance, setDiffFileInstance] = useState<DiffFile>()\n const [highlighter, setHighlighter] = useState<HighlighterType>()\n\n useEffect(() => {\n const init = async () => {\n setLoading(true)\n try {\n const shikiHighlighter = await getDiffViewHighlighter()\n if (shikiHighlighter) {\n setHighlighter(shikiHighlighter as HighlighterType)\n }\n } finally {\n setLoading(false)\n }\n }\n init()\n }, [setLoading])\n\n const setDiffInstanceCb = useCallback(\n debounce((lang: string, diffString: string, content?: string) => {\n if (!diffString) {\n setDiffFileInstance(undefined)\n return\n }\n const data = DiffFile.createInstance({\n newFile: { fileLang: lang, content: content },\n hunks: [diffString]\n })\n try {\n data?.init()\n if (mode === DiffModeEnum.Split) {\n data?.buildSplitDiffLines()\n } else {\n data?.buildUnifiedDiffLines()\n }\n\n setDiffFileInstance(data)\n } catch (e) {\n alert((e as Error).message)\n }\n }, 100),\n []\n )\n\n useEffect(() => {\n if (data) {\n setDiffInstanceCb(lang, data)\n }\n }, [data, lang, setDiffInstanceCb])\n\n return (\n <div className=\"rounded-cn-3 border-cn-2 bg-cn-1 mt-cn-sm mr-[28px] flex flex-col border\">\n {fileName && (\n <span className=\"border-cn-2 bg-cn-2 p-cn-md text-cn-size-2 text-cn-1 rounded-inherit border-b font-medium\">\n {fileName}\n </span>\n )}\n {diffFileInstance && (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <DiffView\n style={{ '--diff-plain-lineNumber--': 'var(--cn-bg-1)' } as CSSProperties}\n className=\"text-cn-1 w-full\"\n diffFile={diffFileInstance}\n diffViewFontSize={12.6}\n diffViewHighlight={true}\n diffViewMode={4}\n registerHighlighter={highlighter}\n diffViewWrap={false}\n />\n )}\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, Chat, ChatDiffViewer, IconV2 } from '@/components'\n\nconst diffData =\n 'diff --git a/packages/ui/src/shared-style-variables.css b/packages/ui/src/shared-style-variables.css\\n' +\n 'index 68ad3fe8a7a992512924a537e5407fed671d645d..d7a93ea2d4900655ba8938218edec1524a4bb3da 100644\\n' +\n '--- a/packages/ui/src/shared-style-variables.css\\n' +\n '+++ b/packages/ui/src/shared-style-variables.css\\n' +\n '@@ -292,7 +290,5 @@\\n' +\n ' },\\n' +\n ' Issue: Scm.Issue}\\n' +\n '- Title: src.Resource.PullRequest.Description,\\n' +\n '- Link: src.Resource.PullRequest.URL,\\n' +\n '- Body: src.Resource.PullRequest.Description,\\n' +\n '+ Title: src.Resource.PullRequest.Description,\\n' +\n '+ Author: scm.User{\\n' +\n '+ Body: src.Resource.PullRequest.Description,\\n'\n\nexport const ChatPreviewWrapper: FC = () => {\n return (\n <div className=\"border-cn-3 h-[calc(100vh-var(--cn-page-nav-full-height))] border-r\">\n <Chat.Root>\n <Chat.Header onClose={() => {}} />\n <Chat.Body>\n <Chat.Message>\n Hey Olivia! I&#39;ve finished with the requirements doc! I made some notes in the gdoc as well for Phoenix\n to look over.\n </Chat.Message>\n <Chat.Message self>Awesome! Thanks, I&#39;ll take a look at this today.</Chat.Message>\n <Chat.Message\n actions={\n <Button variant=\"secondary\" size=\"sm\">\n <IconV2 name=\"repository\" size=\"2xs\" />\n main\n </Button>\n }\n >\n No rush though — we still have to wait for Lana&#39;s design. Click the button in the actions panel below to\n see branches which require your attention to fix and redeploy.\n </Chat.Message>\n <Chat.Message>\n Hey Olivia, can you please review the latest design when you have a chance?\n <ChatDiffViewer data={diffData} fileName=\"scm/driver/azure/webhook.go\" />\n </Chat.Message>\n <Chat.Message self>\n Sure thing, I&#39;ll have a look today. They&#39;re looking great! Here&#39;s some code to make it better\n though:\n <Chat.CodeBlock>hello world</Chat.CodeBlock>\n </Chat.Message>\n <Chat.Typing />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Chat } from '@/components'\n\nexport const ChatEmptyPreviewWrapper: FC = () => {\n return (\n <div className=\"border-cn-3 h-[calc(100vh-var(--cn-page-nav-full-height))] border-r\">\n <Chat.Root>\n <Chat.Body>\n <Chat.EmptyState />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { forwardRef, HTMLAttributes, ReactNode } from 'react'\n\nimport { MarkdownViewer, MarkdownViewerProps } from '@components/markdown-viewer'\nimport { Text, TextProps } from '@components/text'\nimport { cn } from '@utils/cn'\n\nexport interface MessageBubbleRootProps extends HTMLAttributes<HTMLDivElement> {\n role?: 'user' | 'assistant'\n children: ReactNode\n}\n\nconst MessageBubbleRoot = forwardRef<HTMLDivElement, MessageBubbleRootProps>(\n ({ className, children, role, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'cn-message-bubble',\n { 'cn-message-bubble-user': role === 'user', 'cn-message-bubble-assistant': role === 'assistant' },\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\n\nMessageBubbleRoot.displayName = 'MessageBubbleRoot'\n\nexport interface MessageBubbleContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode\n}\n\nconst MessageBubbleContent = forwardRef<HTMLDivElement, MessageBubbleContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('cn-message-bubble-content', className)} {...props}>\n {children}\n </div>\n )\n }\n)\n\nMessageBubbleContent.displayName = 'MessageBubbleContent'\n\nexport interface MessageBubbleTextProps extends Omit<TextProps, 'ref'> {}\n\nconst MessageBubbleText = ({ children, ...props }: MessageBubbleTextProps) => {\n return (\n <Text variant=\"body-normal\" {...props}>\n {children}\n </Text>\n )\n}\n\nMessageBubbleText.displayName = 'MessageBubbleText'\n\nexport interface MessageBubbleMarkdownProps extends Omit<MarkdownViewerProps, 'source'> {\n children: string\n}\n\nconst MessageBubbleMarkdown = ({ children, className, ...props }: MessageBubbleMarkdownProps) => {\n return (\n <MarkdownViewer variant=\"sm\" markdownClassName={cn('bg-transparent', className)} source={children} {...props} />\n )\n}\n\nMessageBubbleMarkdown.displayName = 'MessageBubbleMarkdown'\n\nexport const MessageBubble = {\n Root: MessageBubbleRoot,\n Content: MessageBubbleContent,\n Text: MessageBubbleText,\n Markdown: MessageBubbleMarkdown\n}\n","import { ChangeEvent, ComponentProps, HTMLAttributes, KeyboardEventHandler } from 'react'\n\nimport { Button } from '@components/button'\nimport { Textarea } from '@components/form-primitives'\nimport { IconV2 } from '@components/icon-v2'\nimport { cn } from '@utils/cn'\n\nexport type PromptInputRootProps = HTMLAttributes<HTMLFormElement>\nexport const PromptInputRoot = ({ className, ...props }: PromptInputRootProps) => (\n <form className={cn('cn-prompt-input w-full overflow-hidden', className)} {...props} />\n)\n\nexport type PromptInputTextareaProps = ComponentProps<typeof Textarea>\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = 'What would you like to know?',\n ...props\n}: PromptInputTextareaProps) => {\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = e => {\n if (e.key === 'Enter') {\n if (e.shiftKey) {\n // Allow newline\n return\n }\n // Submit on Enter (without Shift)\n e.preventDefault()\n const form = e.currentTarget.form\n if (form) {\n form.requestSubmit()\n }\n }\n }\n return (\n <Textarea\n name=\"message\"\n autoResize={true}\n className={className}\n onChange={(e: ChangeEvent<HTMLTextAreaElement>) => {\n onChange?.(e)\n }}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n {...props}\n />\n )\n}\n\nexport type PromptInputToolbarProps = HTMLAttributes<HTMLDivElement>\n\nexport const PromptInputToolbar = ({ className, ...props }: PromptInputToolbarProps) => (\n <div className={cn('flex items-center justify-between', className)} {...props} />\n)\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>\nexport const PromptInputTools = ({ className, ...props }: PromptInputToolsProps) => (\n <div className={cn('flex items-center gap-cn-xs', className)} {...props} />\n)\n\nexport type PromptInputSubmitProps = ComponentProps<typeof Button> & {\n status?: 'streaming'\n}\n\nexport const PromptInputSubmit = ({ status, children, ...props }: PromptInputSubmitProps) => {\n let Icon = <IconV2 name=\"arrow-up\" />\n\n if (status === 'streaming') {\n Icon = <IconV2 name=\"stop-solid\" />\n }\n return (\n <Button iconOnly type=\"submit\" size=\"xs\" {...props}>\n {children ?? Icon}\n </Button>\n )\n}\n\nexport type PromptInputButtonProps = ComponentProps<typeof Button>\nexport const PromptInputButton = ({ variant = 'outline', ...props }: PromptInputButtonProps) => {\n return <Button iconOnly size=\"xs\" type=\"button\" variant={variant} {...props} />\n}\n\nexport const PromptInput = {\n Root: PromptInputRoot,\n Textarea: PromptInputTextarea,\n Toolbar: PromptInputToolbar,\n Tools: PromptInputTools,\n Submit: PromptInputSubmit,\n Button: PromptInputButton\n}\n","import { memo, useMemo, type CSSProperties, type ElementType } from 'react'\n\nimport { typographyVariantConfig } from '@components/text'\nimport { cn } from '@utils/cn'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { motion } from 'framer-motion'\n\nexport const shimmerVariants = cva('cn-shimmer', {\n variants: {\n variant: typographyVariantConfig,\n color: {\n 'foreground-1': '[--shimmer-color:var(--cn-text-1)]',\n 'foreground-2': '[--shimmer-color:var(--cn-text-2)]',\n 'foreground-3': '[--shimmer-color:var(--cn-text-3)]',\n 'foreground-4': '[--shimmer-color:var(--cn-text-4)]',\n disabled: '[--shimmer-color:var(--cn-text-4)]',\n success: '[--shimmer-color:var(--cn-text-success)]',\n warning: '[--shimmer-color:var(--cn-text-warning)]',\n danger: '[--shimmer-color:var(--cn-text-danger)]',\n brand: '[--shimmer-color:var(--cn-text-brand)]',\n merged: '[--shimmer-color:var(--cn-text-merged)]'\n }\n },\n defaultVariants: {\n variant: 'body-normal',\n color: 'foreground-2'\n }\n})\n\nexport type ShimmerProps = VariantProps<typeof shimmerVariants> & {\n children: string\n as?: ElementType\n className?: string\n duration?: number\n spread?: number\n}\n\nconst ShimmerComponent = ({\n children,\n as: Component = 'p',\n className,\n duration = 2,\n spread = 2,\n color,\n variant\n}: ShimmerProps) => {\n const MotionComponent = motion(Component as React.ElementType)\n\n const dynamicSpread = useMemo(() => (children?.length ?? 0) * spread, [children, spread])\n\n return (\n <MotionComponent\n animate={{ backgroundPosition: '0% center' }}\n className={cn(shimmerVariants({ color, variant }), className)}\n initial={{ backgroundPosition: '100% center' }}\n style={\n {\n '--shimmer-spread': `${dynamicSpread}px`\n } as CSSProperties\n }\n transition={{\n repeat: Number.POSITIVE_INFINITY,\n duration,\n ease: 'linear'\n }}\n >\n {children}\n </MotionComponent>\n )\n}\n\nexport const Shimmer = memo(ShimmerComponent)\n","import {\n ComponentPropsWithoutRef,\n createContext,\n ElementRef,\n forwardRef,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'react'\n\nimport { IconV2 } from '@components/icon-v2'\nimport { MarkdownViewer } from '@components/markdown-viewer'\nimport { Shimmer } from '@components/shimmer'\nimport { Text } from '@components/text'\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible'\nimport { cn } from '@utils/cn'\n\ninterface ReasoningContextValue {\n isStreaming: boolean\n isOpen: boolean\n duration: number | undefined\n}\n\nconst ReasoningContext = createContext<ReasoningContextValue | null>(null)\n\nconst useReasoning = () => {\n const context = useContext(ReasoningContext)\n if (!context) {\n throw new Error('Reasoning components must be used within Reasoning.Root')\n }\n return context\n}\n\nconst AUTO_CLOSE_DELAY = 1000\nconst MS_IN_S = 1000\n\nexport type ReasoningRootProps = ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Root> & {\n isStreaming?: boolean\n duration?: number\n}\n\nconst ReasoningRoot = forwardRef<ElementRef<typeof CollapsiblePrimitive.Root>, ReasoningRootProps>(\n (\n {\n className,\n isStreaming = false,\n open,\n defaultOpen = true,\n onOpenChange,\n duration: durationProp,\n children,\n ...props\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(open ?? defaultOpen)\n const [duration, setDuration] = useState<number | undefined>(durationProp)\n const [hasAutoClosed, setHasAutoClosed] = useState(false)\n const startTimeRef = useRef<number | null>(null)\n\n // Sync with controlled open prop\n useEffect(() => {\n if (open !== undefined) {\n setIsOpen(open)\n }\n }, [open])\n\n // Sync with controlled duration prop\n useEffect(() => {\n if (durationProp !== undefined) {\n setDuration(durationProp)\n }\n }, [durationProp])\n\n // Track duration when streaming starts and ends\n useEffect(() => {\n if (isStreaming) {\n if (startTimeRef.current === null) {\n startTimeRef.current = Date.now()\n }\n } else if (startTimeRef.current !== null) {\n setDuration(Math.ceil((Date.now() - startTimeRef.current) / MS_IN_S))\n startTimeRef.current = null\n }\n }, [isStreaming])\n\n // Auto-close when streaming ends (once only)\n useEffect(() => {\n if (defaultOpen && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false)\n setHasAutoClosed(true)\n onOpenChange?.(false)\n }, AUTO_CLOSE_DELAY)\n\n return () => clearTimeout(timer)\n }\n }, [isStreaming, isOpen, defaultOpen, hasAutoClosed, onOpenChange])\n\n const handleOpenChange = useCallback(\n (newOpen: boolean) => {\n setIsOpen(newOpen)\n onOpenChange?.(newOpen)\n },\n [onOpenChange]\n )\n\n return (\n <ReasoningContext.Provider value={{ isStreaming, isOpen, duration }}>\n <CollapsiblePrimitive.Root\n ref={ref}\n className={cn('cn-reasoning', className)}\n open={isOpen}\n onOpenChange={handleOpenChange}\n {...props}\n >\n {children}\n </CollapsiblePrimitive.Root>\n </ReasoningContext.Provider>\n )\n }\n)\n\nReasoningRoot.displayName = 'ReasoningRoot'\n\nexport type ReasoningTriggerProps = ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Trigger> & {\n getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode\n}\n\nconst defaultGetThinkingMessage = (isStreaming: boolean, duration?: number): ReactNode => {\n if (isStreaming || duration === 0) {\n return (\n <Shimmer color={'foreground-3'} duration={1}>\n Thinking...\n </Shimmer>\n )\n }\n if (duration === undefined) {\n return (\n <Text variant={'body-normal'} color={'foreground-3'}>\n Thought for a few seconds\n </Text>\n )\n }\n return (\n <Text variant={'body-normal'} color={'foreground-3'}>\n Thought for {duration} seconds\n </Text>\n )\n}\n\nconst ReasoningTrigger = forwardRef<ElementRef<typeof CollapsiblePrimitive.Trigger>, ReasoningTriggerProps>(\n ({ className, children, getThinkingMessage = defaultGetThinkingMessage, ...props }, ref) => {\n const { isStreaming, isOpen, duration } = useReasoning()\n\n return (\n <CollapsiblePrimitive.Trigger ref={ref} className={cn('cn-reasoning-trigger', className)} {...props}>\n {children ?? (\n <>\n {/* <IconV2 name=\"ai-solid\" size=\"sm\" /> */}\n {getThinkingMessage(isStreaming, duration)}\n <IconV2\n name=\"nav-arrow-down\"\n size=\"xs\"\n className={cn('cn-reasoning-trigger-indicator', isOpen && 'cn-reasoning-trigger-indicator-open')}\n />\n </>\n )}\n </CollapsiblePrimitive.Trigger>\n )\n }\n)\n\nReasoningTrigger.displayName = 'ReasoningTrigger'\n\nexport type ReasoningContentProps = ComponentPropsWithoutRef<typeof CollapsiblePrimitive.Content> & {\n children: string\n}\n\nconst ReasoningContent = forwardRef<ElementRef<typeof CollapsiblePrimitive.Content>, ReasoningContentProps>(\n ({ className, children, ...props }, ref) => (\n <CollapsiblePrimitive.Content ref={ref} className={cn('cn-reasoning-content', className)} {...props}>\n <MarkdownViewer className=\"text-cn-3\" markdownClassName=\"bg-transparent\" variant=\"sm\" source={children} />\n </CollapsiblePrimitive.Content>\n )\n)\n\nReasoningContent.displayName = 'ReasoningContent'\n\nexport const Reasoning = {\n Root: ReasoningRoot,\n Trigger: ReasoningTrigger,\n Content: ReasoningContent\n}\n\nexport { useReasoning }\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 { CSSProperties } from 'react'\n\nimport { Column } from '@tanstack/react-table'\n\nexport const getCommonPinningStyles = <T>(column: Column<T>): CSSProperties => {\n const isPinned = column.getIsPinned()\n const isLastLeftPinnedColumn = isPinned === 'left' && column?.getIsLastColumn?.('left')\n const isFirstRightPinnedColumn = isPinned === 'right' && column?.getIsFirstColumn?.('right')\n\n return {\n boxShadow: isLastLeftPinnedColumn\n ? '-4px 0 4px -4px var(--cn-chrome-200) inset'\n : isFirstRightPinnedColumn\n ? '4px 0 4px -4px var(--cn-chrome-200) inset'\n : undefined,\n left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,\n right: isPinned === 'right' ? `${column.getAfter('right')}px` : undefined,\n position: isPinned ? 'sticky' : 'relative',\n zIndex: isPinned ? 1 : 0\n }\n}\n","import { useEffect, useMemo } from 'react'\n\nimport { Button, Checkbox, IconV2, PaginationProps, Table, tableVariants } from '@/components'\nimport {\n ColumnDef,\n ColumnPinningState,\n ExpandedState,\n flexRender,\n getCoreRowModel,\n OnChangeFn,\n Row,\n RowSelectionState,\n SortingState,\n TableOptions,\n Table as TanstackTable,\n useReactTable\n} from '@tanstack/react-table'\nimport { cn } from '@utils/cn'\nimport { type VariantProps } from 'class-variance-authority'\n\nimport { getCommonPinningStyles } from './utils'\n\nexport interface DataTableProps<TData> {\n data: TData[]\n columns: ColumnDef<TData, unknown>[]\n size?: VariantProps<typeof tableVariants>['size']\n variant?: VariantProps<typeof tableVariants>['variant']\n paginationProps?: PaginationProps\n getRowClassName?: (row: Row<TData>) => string | undefined\n onRowClick?: (data: TData, index: number) => void\n disableHighlightOnHover?: boolean\n className?: string\n currentSorting?: SortingState\n currentRowSelection?: RowSelectionState\n columnPinning?: ColumnPinningState\n\n /**\n * Array of column IDs to be visible\n */\n visibleColumns?: string[]\n\n getRowId?: (row: TData) => string\n /**\n * Callback for when sorting changes. Use this for server-side sorting.\n */\n onSortingChange?: OnChangeFn<SortingState>\n /**\n * Enable row selection\n */\n enableRowSelection?: boolean\n /**\n * Default row selection state\n */\n defaultRowSelection?: RowSelectionState\n /**\n * Callback for when row selection changes\n */\n onRowSelectionChange?: OnChangeFn<RowSelectionState>\n /**\n * Enable expandable rows\n */\n enableExpanding?: boolean\n /**\n * Function to determine if a row can be expanded\n */\n getRowCanExpand?: (row: Row<TData>) => boolean\n /**\n * Function to determine if a row can be selected\n */\n getRowCanSelect?: (row: Row<TData>) => boolean\n /**\n * Current expanded rows state\n */\n currentExpanded?: ExpandedState\n /**\n * Callback for when expanded state changes\n */\n onExpandedChange?: OnChangeFn<ExpandedState>\n /**\n * Render function for expanded row content\n */\n renderSubComponent?: (props: { row: Row<TData> }) => React.ReactNode\n /**\n * @internal\n * Enable column resizing - NOT READY FOR PUBLIC USE\n * This prop is for internal development only and should not be used\n */\n _enableColumnResizing?: boolean\n}\n\nexport const DataTable = function DataTable<TData>({\n data = [],\n columns,\n size = 'normal',\n variant = 'default',\n paginationProps,\n getRowClassName,\n onRowClick,\n disableHighlightOnHover = false,\n className,\n currentSorting,\n currentRowSelection,\n onSortingChange: externalOnSortingChange,\n enableRowSelection = false,\n onRowSelectionChange: externalOnRowSelectionChange,\n enableExpanding = false,\n getRowCanExpand,\n getRowCanSelect,\n currentExpanded,\n onExpandedChange: externalOnExpandedChange,\n renderSubComponent,\n _enableColumnResizing = false,\n getRowId,\n visibleColumns,\n columnPinning = { left: [], right: [] }\n}: DataTableProps<TData>) {\n const tableColumns = useMemo(() => {\n // Start with the base columns\n let cols = [...columns]\n\n // If row selection is enabled, add a checkbox column at the beginning\n if (enableRowSelection) {\n cols = [\n {\n id: 'select',\n header: ({ table }: { table: TanstackTable<TData> }) => {\n const handleToggleAll = () => {\n table.toggleAllRowsSelected()\n }\n\n return (\n <Checkbox\n checked={table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected()}\n onCheckedChange={handleToggleAll}\n aria-label=\"Select all rows\"\n />\n )\n },\n cell: ({ row }: { row: Row<TData> }) => {\n return (\n <Checkbox\n checked={row.getIsSelected()}\n disabled={!row.getCanSelect()}\n onCheckedChange={row.getToggleSelectedHandler()}\n aria-label=\"Select row\"\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n />\n )\n },\n size: 20\n },\n ...cols\n ]\n }\n\n // If expanding is enabled, add an expander column at the beginning\n if (enableExpanding) {\n cols = [\n {\n id: 'expander',\n header: () => null,\n cell: ({ row }: { row: Row<TData> }) => {\n return row.getCanExpand() ? (\n <Button\n onClick={e => {\n e.stopPropagation()\n row.toggleExpanded()\n }}\n aria-label=\"Toggle Row Expanded\"\n variant=\"ghost\"\n size=\"xs\"\n iconOnly\n role=\"button\"\n tooltipProps={{\n content: 'Toggle Row Expanded'\n }}\n >\n <IconV2 name={row.getIsExpanded() ? 'nav-arrow-down' : 'nav-arrow-up'} size=\"2xs\" />\n </Button>\n ) : null\n },\n size: 20\n },\n ...cols\n ]\n }\n\n return cols\n }, [columns, enableRowSelection, enableExpanding])\n\n const tableOptions = useMemo<TableOptions<TData>>(\n () => ({\n data,\n columns: tableColumns,\n getCoreRowModel: getCoreRowModel(),\n\n getRowId: getRowId,\n // Enable manual sorting (server-side sorting)\n manualSorting: true,\n // Use the external sorting change handler, we link it to the onSortingChange handler so we dont have to do shenannigans to figure out which column was clicked, and its sort state\n // React table gives it to us directly\n onSortingChange: externalOnSortingChange,\n // Enable row selection if specified\n enableRowSelection: enableRowSelection ? getRowCanSelect || (() => true) : undefined,\n // Handle row selection changes\n onRowSelectionChange: externalOnRowSelectionChange,\n // Enable row expansion if specified\n enableExpanding,\n // enable manual expansion\n manualExpanding: true,\n // Handle expanded state changes\n onExpandedChange: externalOnExpandedChange,\n // Use custom getRowCanExpand function if provided, otherwise make all rows expandable if expansion is enabled\n getRowCanExpand: enableExpanding ? getRowCanExpand || (() => true) : undefined,\n // Enable column resizing if specified\n enableColumnResizing: _enableColumnResizing,\n columnResizeMode: 'onChange',\n // We pass the currentSorting, rowSelection, and expanded state so that react-table internally knows what state to maintain\n\n state: {\n sorting: currentSorting,\n rowSelection: currentRowSelection || {},\n expanded: currentExpanded || {},\n columnPinning\n }\n }),\n [\n data,\n tableColumns,\n getRowId,\n externalOnSortingChange,\n enableRowSelection,\n getRowCanSelect,\n externalOnRowSelectionChange,\n enableExpanding,\n externalOnExpandedChange,\n getRowCanExpand,\n _enableColumnResizing,\n currentSorting,\n currentRowSelection,\n currentExpanded,\n columnPinning\n ]\n )\n\n const table = useReactTable(tableOptions)\n\n // Set the visible columns\n useEffect(() => {\n if (!table || !visibleColumns) {\n return\n }\n\n const hideableColumns = table.getAllColumns()?.filter(column => column.getCanHide())\n\n if (hideableColumns) {\n hideableColumns.forEach(column => {\n column.toggleVisibility(visibleColumns?.includes(column.id) || false)\n })\n }\n }, [table, visibleColumns])\n\n const hasPinnedColumns = useMemo(\n () => Boolean(columnPinning?.left?.length || columnPinning?.right?.length),\n [columnPinning]\n )\n\n return (\n <Table.Root\n className={className}\n /* If there are pinned columns, we need to set the table to fixed layout to prevent columns\n * from resizing based on their content.\n */\n tableClassName={cn({ 'table-fixed': hasPinnedColumns })}\n size={size}\n variant={variant}\n disableHighlightOnHover={disableHighlightOnHover}\n paginationProps={paginationProps}\n >\n <Table.Header>\n {table.getHeaderGroups().map(headerGroup => (\n <Table.Row key={headerGroup.id}>\n {headerGroup.headers.map(header => (\n <Table.Head\n colSpan={header.colSpan}\n key={header.id}\n className={cn(_enableColumnResizing ? 'relative' : undefined)}\n sortable={header.column.getCanSort()}\n sortDirection={header.column.getCanSort() ? header.column.getIsSorted() || false : undefined}\n onClick={header.column.getCanSort() ? header.column.getToggleSortingHandler() : undefined}\n style={{\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize ?? header.getSize(),\n maxWidth: header.column.columnDef.maxSize ?? header.getSize(),\n ...getCommonPinningStyles<TData>(header.column)\n }}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n {_enableColumnResizing && header.column.getCanResize() && (\n <button\n type=\"button\"\n onMouseDown={header.getResizeHandler()}\n className=\"absolute right-0 top-0 h-full w-1 cursor-col-resize\"\n aria-label=\"Resize column\"\n />\n )}\n </Table.Head>\n ))}\n </Table.Row>\n ))}\n </Table.Header>\n <Table.Body>\n {table.getRowModel().rows.map(row => (\n <>\n <Table.Row\n key={row.id}\n className={getRowClassName?.(row)}\n onClick={onRowClick ? () => onRowClick(row.original, row.index) : undefined}\n selected={enableRowSelection ? row.getIsSelected() : undefined}\n >\n {row.getVisibleCells().map(cell => {\n const column = cell.column\n return (\n <Table.Cell\n key={cell.id}\n style={{\n ...getCommonPinningStyles<TData>(column),\n width: column.getSize(),\n minWidth: column.columnDef.minSize ?? column.getSize(),\n maxWidth: column.columnDef.maxSize ?? column.getSize()\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </Table.Cell>\n )\n })}\n </Table.Row>\n {row.getIsExpanded() && renderSubComponent && (\n <Table.Row key={`${row.id}-expanded`} className=\"bg-cn-2\">\n <Table.Cell></Table.Cell>\n <Table.Cell colSpan={row.getAllCells().length - 1}>{renderSubComponent({ row })}</Table.Cell>\n </Table.Row>\n )}\n </>\n ))}\n </Table.Body>\n </Table.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, CheckboxOptions, DropdownMenu, IconV2 } from '@/components'\n\nexport interface DataTableColumnFilterDropdownProps {\n columns: CheckboxOptions[]\n visibleColumns: string[]\n onCheckedChange: (columnName: string, checked: boolean) => void\n onReset?: () => void\n}\n\nexport const DataTableColumnFilterDropdown: FC<DataTableColumnFilterDropdownProps> = ({\n columns,\n visibleColumns,\n onCheckedChange,\n onReset\n}) => {\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button variant=\"outline\">\n Columns\n <IconV2 name=\"nav-arrow-down\" />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content>\n {columns.map(column => (\n <DropdownMenu.CheckboxItem\n key={column.value}\n title={column.label}\n checked={visibleColumns.includes(column.value)}\n onCheckedChange={checked => onCheckedChange(column.value, checked)}\n />\n ))}\n {onReset && (\n <DropdownMenu.Footer>\n <Button size=\"xs\" variant=\"transparent\" onClick={onReset}>\n <IconV2 size=\"xs\" name=\"refresh\" />\n Reset\n </Button>\n </DropdownMenu.Footer>\n )}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n\nDataTableColumnFilterDropdown.displayName = 'DataTableColumnFilterDropdown'\n","import { DataTable as DataTableRoot, type DataTableProps } from './data-table'\nimport {\n DataTableColumnFilterDropdown,\n type DataTableColumnFilterDropdownProps\n} from './data-table-columns-filter-dropdown'\n\nexport const DataTable = Object.assign(DataTableRoot, {\n ColumnFilter: DataTableColumnFilterDropdown\n})\n\nexport { type DataTableColumnFilterDropdownProps, type DataTableProps }\n","import { closestCenter, DndContext, PointerSensor, useSensor, useSensors } from '@dnd-kit/core'\nimport { SortableContext, useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport useDragAndDrop from '@hooks/use-drag-and-drop'\nimport { cn } from '@utils/cn'\n\nimport { Card, type CardRootProps } from './card'\nimport { IconV2 } from './icon-v2'\nimport { Layout } from './layout'\n\ninterface DraggableCardProps extends Omit<CardRootProps, 'title' | 'children'> {\n id: string\n title: string | React.ReactNode\n description?: string | React.ReactNode\n disableDragAndDrop?: boolean\n}\nexport interface CardData extends Omit<CardRootProps, 'title' | 'children'> {\n id: string\n name?: string\n title: string | React.ReactNode\n description?: string | React.ReactNode\n disableDragAndDrop?: boolean\n}\n\nexport const DraggableCard = ({\n id,\n title,\n description,\n disableDragAndDrop = false,\n ...cardProps\n}: DraggableCardProps) => {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n disabled: disableDragAndDrop\n })\n\n const style = transform\n ? {\n transform: CSS.Translate.toString(transform),\n transition: transition,\n opacity: isDragging ? 0.5 : 1,\n zIndex: isDragging ? 10 : 0\n }\n : {}\n\n return (\n <Card.Root ref={setNodeRef} style={style} {...cardProps}>\n <Card.Content>\n <div className={cn('-mx-cn-md px-cn-md', description ? 'border-b' : '')}>\n <div className={cn('flex items-center gap-cn-xs', description ? 'pb-cn-md' : '')}>\n {disableDragAndDrop ? null : (\n <div className=\"cursor-grab active:cursor-grabbing\" {...attributes} {...listeners}>\n <IconV2 name=\"grip-dots\" size=\"xs\" />\n </div>\n )}\n {title}\n </div>\n </div>\n {description && <div className=\"mt-cn-md\">{description}</div>}\n </Card.Content>\n </Card.Root>\n )\n}\n\nexport const DraggableCardList = ({\n cards,\n setCards\n}: {\n cards: CardData[]\n setCards: (newCards: CardData[]) => void\n}) => {\n const { handleDragEnd, getItemId } = useDragAndDrop({\n items: cards,\n onReorder: setCards\n })\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n // Add a small delay to allow clicks to be processed before starting drag\n activationConstraint: {\n delay: 100,\n tolerance: 0\n }\n })\n )\n\n return (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} collisionDetection={closestCenter}>\n <SortableContext items={cards.map((_, index) => getItemId(index))}>\n <Layout.Flex direction=\"column\" gap=\"md\">\n {cards.map((card, index) => (\n <DraggableCard\n key={card.id}\n description={card.description}\n disableDragAndDrop={card.disableDragAndDrop}\n {...card}\n id={getItemId(index)}\n />\n ))}\n </Layout.Flex>\n </SortableContext>\n </DndContext>\n )\n}\n","import { isValidElement, ReactNode, useCallback, useLayoutEffect, useRef, useState } from 'react'\n\nimport { Layout, Separator, Skeleton, Text } from '@/components'\nimport { useResizeObserver } from '@/hooks'\nimport { cn, wrapConditionalObjectElement } from '@/utils'\n\nexport type ViewOnlyItemData = { label: string; value: ReactNode } | ReactNode\n\nfunction splitArray<T>(array: T[]): [T[], T[]] {\n if (array.length <= 2) {\n return [array, []]\n }\n\n const midPoint = Math.ceil(array.length / 2)\n const firstHalf = array.slice(0, midPoint)\n const secondHalf = array.slice(midPoint)\n\n return [firstHalf, secondHalf]\n}\n\nexport const ViewOnlyItem = ({\n label,\n value,\n isLoading = false\n}: {\n label: string\n value: ReactNode\n isLoading?: boolean\n}) => {\n const valueNode = !value ? (\n <Text as=\"span\" color=\"disabled\">\n empty\n </Text>\n ) : typeof value === 'string' ? (\n <Text key=\"label\" color=\"inherit\" className=\"break-words\">\n {value}\n </Text>\n ) : (\n value\n )\n\n return (\n <Layout.Grid key={label} flow=\"row\" gapX=\"2xl\" columns=\"minmax(0, 200px) minmax(0, 1fr)\" align=\"start\">\n {isLoading ? (\n <>\n <Skeleton.Typography className=\"w-full\" />\n <Skeleton.Typography className=\"w-2/3\" />\n </>\n ) : (\n <>\n <Text color=\"foreground-3\" as=\"dt\">\n {label}\n </Text>\n <Text color=\"foreground-1\" as=\"dd\">\n {valueNode}\n </Text>\n </>\n )}\n </Layout.Grid>\n )\n}\n\nconst isWideEnoughForColumns = (width: number) => width >= 800\n\nexport interface ViewOnlyProps {\n title?: string\n data: ViewOnlyItemData[]\n layout?: 'singleColumn' | 'columns'\n className?: string\n isLoading?: boolean\n}\n\nexport const ViewOnly = ({ className, title, data, layout = 'columns', isLoading = false }: ViewOnlyProps) => {\n const [isLayoutColumns, setIsLayoutColumns] = useState(layout === 'columns')\n const contentRef = useRef<HTMLDivElement>(null)\n\n useLayoutEffect(() => {\n const el = contentRef.current\n if (!el) return\n\n const { offsetWidth } = el\n setIsLayoutColumns(isWideEnoughForColumns(offsetWidth) && layout === 'columns')\n }, [layout])\n\n useResizeObserver(\n contentRef,\n el => {\n if (!el || layout === 'singleColumn') return\n\n const { offsetWidth } = el\n setIsLayoutColumns(isWideEnoughForColumns(offsetWidth))\n },\n 200\n )\n\n const renderItem = useCallback(\n (item: ViewOnlyItemData) => {\n if (item instanceof Object && 'label' in item && 'value' in item && typeof item.label === 'string') {\n return <ViewOnlyItem key={item.label} label={item.label} value={item.value} isLoading={isLoading} />\n } else if (isValidElement(item)) {\n return item\n }\n\n return null\n },\n [isLoading]\n )\n\n if (!data || data.length === 0) return null\n\n const isSeparatorVisible = isLayoutColumns && data.length > 2\n const leftColumnData = isLayoutColumns ? splitArray(data)[0] : data\n const rightColumnData = isLayoutColumns ? splitArray(data)[1] : null\n\n return (\n <Layout.Grid ref={contentRef} gap=\"md\" className={cn('group', className)}>\n <Text variant=\"heading-base\" as=\"h4\">\n {title}\n </Text>\n\n <Layout.Grid\n as=\"dl\"\n flow=\"column\"\n align=\"start\"\n gapX=\"lg\"\n {...wrapConditionalObjectElement({ columns: '1fr auto 1fr' }, isLayoutColumns)}\n >\n <Layout.Grid gapY=\"sm\">{leftColumnData.map(item => renderItem(item))}</Layout.Grid>\n\n {isLayoutColumns && <Separator orientation=\"vertical\" className={cn({ invisible: !isSeparatorVisible })} />}\n\n {!!rightColumnData && <Layout.Grid gapY=\"sm\">{rightColumnData.map(item => renderItem(item))}</Layout.Grid>}\n </Layout.Grid>\n\n <Separator className=\"group-last:hidden mb-cn-md\" />\n </Layout.Grid>\n )\n}\n","import { Children, createContext, FC, ReactNode, useContext } from 'react'\nimport type { LinkProps } from 'react-router-dom'\n\nimport { Layout, Link, ScrollArea, Text } from '@/components'\nimport { useTranslation } from '@/context'\nimport { cn } from '@/utils'\n\ninterface WidgetsContextProps {\n isTwoColumn: boolean\n}\n\nconst WidgetsContext = createContext<WidgetsContextProps>({\n isTwoColumn: false\n})\n\nexport interface WidgetsRootProps extends Partial<WidgetsContextProps> {\n children: ReactNode\n}\n\nconst Root: FC<WidgetsRootProps> = ({ children, isTwoColumn: isTwoColumnProp = false }) => {\n const isTwoColumn = isTwoColumnProp && Children.count(children) > 1\n\n return (\n <WidgetsContext.Provider value={{ isTwoColumn }}>\n <div className={cn('gap-cn-3xl', isTwoColumn ? 'columns-2' : 'flex flex-col')}>{children}</div>\n </WidgetsContext.Provider>\n )\n}\n\nexport interface WidgetsItemProps {\n children: ReactNode\n title: string\n moreLink?: LinkProps\n isWidgetTable?: boolean\n className?: string\n}\n\nconst Item: FC<WidgetsItemProps> = ({ children, title, moreLink, isWidgetTable = false, className }) => {\n const { isTwoColumn } = useContext(WidgetsContext)\n const { t } = useTranslation()\n\n return (\n <Layout.Vertical\n className={cn('overflow-hidden', { 'break-inside-avoid pb-[var(--cn-spacing-10)] last:pb-0': isTwoColumn })}\n >\n <Layout.Flex justify=\"between\" gap=\"md\" align=\"start\">\n <Text as=\"h2\" variant=\"heading-subsection\">\n {title}\n </Text>\n {!!moreLink && (\n <Link className=\"shrink-0\" {...moreLink} suffixIcon=\"nav-arrow-right\">\n {t('component:widgets.viewMore', 'View more')}\n </Link>\n )}\n </Layout.Flex>\n <div\n className={cn(\n '[contain:inline-size]',\n { 'border border-cn-3 rounded-cn-3 p-cn-lg': !isWidgetTable },\n className\n )}\n >\n <ScrollArea classNameContent=\"w-full\">{children}</ScrollArea>\n </div>\n </Layout.Vertical>\n )\n}\n\nexport const Widgets = {\n Root,\n Item\n}\n","import { PropsWithChildren, useCallback, useMemo, type JSX } from 'react'\n\nimport { IconV2, StatusBadge, Text } from '@/components'\nimport { cn } from '@/utils'\n\nimport {\n StudioCardContentProps,\n StudioCardExpandButtonProps,\n StudioCardFooterProps,\n StudioCardHeaderProps,\n StudioCardMessageProps,\n StudioCardRootProps,\n StudioCardStatusProps\n} from './studio-card-types'\n\n/**\n * =================\n * Root Component\n * =================\n */\n\nfunction Root({ children, isGroupCard = false }: PropsWithChildren<StudioCardRootProps>): JSX.Element {\n return <div className={cn('cn-studio-card', { 'cn-studio-card-group': isGroupCard })}>{children}</div>\n}\n\n/**\n * ==================\n * Header Component\n * ==================\n */\n\nfunction Header({ icon, title, actions }: StudioCardHeaderProps): JSX.Element {\n const headerIcon = icon ?? <IconV2 size=\"lg\" name=\"harness-plugins\" />\n\n return (\n <div className=\"cn-studio-card-header\">\n {headerIcon}\n <Text className=\"cn-studio-card-header-title\" variant=\"body-strong\">\n {title}\n </Text>\n\n {/* Actions menu */}\n {actions}\n </div>\n )\n}\n\n/**\n * ====================\n * Content Component\n * ====================\n */\n\nfunction Content({ children, className }: PropsWithChildren<StudioCardContentProps>): JSX.Element {\n return <div className={cn('cn-studio-card-content', className)}>{children}</div>\n}\n\n/**\n * ====================\n * Message Component\n * ====================\n */\n\nfunction Message({ message }: StudioCardMessageProps): JSX.Element {\n return (\n <Text className=\"cn-studio-card-message\" lineClamp={2} color=\"foreground-2\" variant=\"caption-normal\">\n {message}\n </Text>\n )\n}\n\n/**\n * ==========================\n * Expand Button Component\n * ==========================\n */\n\nfunction ExpandButton({ stepCount, isExpanded = false, onToggle }: StudioCardExpandButtonProps): JSX.Element | null {\n // Calculate number of stacks to show (max 2)\n const stackCount = useMemo(() => {\n if (isExpanded || stepCount <= 1) return 0\n if (stepCount === 2) return 1\n return 2 // For 3 or more steps\n }, [stepCount, isExpanded])\n\n if (stepCount === 0) return null\n\n return (\n <div className=\"cn-studio-card-expand-button\" data-expanded={isExpanded}>\n {/* Stacking cards - positioned behind the button */}\n {stackCount > 0 && (\n <>\n {stackCount >= 2 && (\n <div className=\"cn-studio-card-expand-button-stack cn-studio-card-expand-button-stack-2\" />\n )}\n {stackCount >= 1 && (\n <div className=\"cn-studio-card-expand-button-stack cn-studio-card-expand-button-stack-1\" />\n )}\n </>\n )}\n\n {/* Main button */}\n <button type=\"button\" onClick={onToggle} className=\"cn-studio-card-expand-button-main\">\n <Text color=\"foreground-1\" variant=\"body-single-line-code\">\n {stepCount} steps\n </Text>\n <IconV2 className=\"text-cn-2\" name={isExpanded ? 'collapse' : 'expand'} size=\"sm\" />\n </button>\n </div>\n )\n}\n\n/**\n * ====================\n * Status Component\n * ====================\n */\n\nfunction Status({ status }: StudioCardStatusProps): JSX.Element | null {\n const getStatusConfig = useCallback(() => {\n switch (status) {\n case 'queued':\n return { theme: 'muted' as const, label: 'Queued' }\n case 'executing':\n return { theme: 'warning' as const, label: 'Running' }\n case 'success':\n return { theme: 'success' as const, label: 'Completed' }\n case 'warning':\n return { theme: 'warning' as const, label: 'Warning' }\n case 'error':\n return { theme: 'danger' as const, label: 'Error' }\n default:\n return { theme: 'muted' as const, label: 'Unknown' }\n }\n }, [status])\n\n const { theme, label } = useMemo(() => getStatusConfig(), [getStatusConfig])\n\n if (!status) return null\n\n return (\n <StatusBadge data-status={status} className=\"cn-studio-card-status\" size=\"sm\" variant=\"outline\" theme={theme}>\n {status === 'executing' && <IconV2 name=\"loader\" className=\"animate-spin\" size=\"xs\" />}\n {label}\n </StatusBadge>\n )\n}\n\n/**\n * ====================\n * Footer Component\n * ====================\n */\n\nfunction Footer({ message }: StudioCardFooterProps): JSX.Element | null {\n if (!message) return null\n\n return (\n <div className=\"cn-studio-card-footer\">\n <Text lineClamp={2} color=\"foreground-3\" variant=\"caption-normal\">\n {message}\n </Text>\n </div>\n )\n}\n\n/**\n * ===========================\n * Custom actions component\n * ===========================\n */\nfunction CustomActions({ children }: PropsWithChildren<any>): JSX.Element {\n return <>{children}</>\n}\n\nexport const StudioCard = {\n Root,\n Header,\n Status,\n Message,\n Content,\n Footer,\n ExpandButton,\n CustomActions\n}\n\nexport type * from './studio-card-types'\n","\"use client\";import o,{forwardRef as fe,isValidElement as xt}from\"react\";import vt from\"react-dom\";import E from\"react\";var jt=n=>{switch(n){case\"success\":return ee;case\"info\":return ae;case\"warning\":return oe;case\"error\":return se;default:return null}},te=Array(12).fill(0),Yt=({visible:n,className:e})=>E.createElement(\"div\",{className:[\"sonner-loading-wrapper\",e].filter(Boolean).join(\" \"),\"data-visible\":n},E.createElement(\"div\",{className:\"sonner-spinner\"},te.map((t,a)=>E.createElement(\"div\",{className:\"sonner-loading-bar\",key:`spinner-bar-${a}`})))),ee=E.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},E.createElement(\"path\",{fillRule:\"evenodd\",d:\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\",clipRule:\"evenodd\"})),oe=E.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 24 24\",fill:\"currentColor\",height:\"20\",width:\"20\"},E.createElement(\"path\",{fillRule:\"evenodd\",d:\"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z\",clipRule:\"evenodd\"})),ae=E.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},E.createElement(\"path\",{fillRule:\"evenodd\",d:\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\",clipRule:\"evenodd\"})),se=E.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 20 20\",fill:\"currentColor\",height:\"20\",width:\"20\"},E.createElement(\"path\",{fillRule:\"evenodd\",d:\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z\",clipRule:\"evenodd\"})),Ot=E.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"12\",height:\"12\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},E.createElement(\"line\",{x1:\"18\",y1:\"6\",x2:\"6\",y2:\"18\"}),E.createElement(\"line\",{x1:\"6\",y1:\"6\",x2:\"18\",y2:\"18\"}));import $t from\"react\";var Ft=()=>{let[n,e]=$t.useState(document.hidden);return $t.useEffect(()=>{let t=()=>{e(document.hidden)};return document.addEventListener(\"visibilitychange\",t),()=>window.removeEventListener(\"visibilitychange\",t)},[]),n};import re from\"react\";var bt=1,yt=class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)});this.publish=e=>{this.subscribers.forEach(t=>t(e))};this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]};this.create=e=>{var S;let{message:t,...a}=e,u=typeof(e==null?void 0:e.id)==\"number\"||((S=e.id)==null?void 0:S.length)>0?e.id:bt++,f=this.toasts.find(g=>g.id===u),w=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(u)&&this.dismissedToasts.delete(u),f?this.toasts=this.toasts.map(g=>g.id===u?(this.publish({...g,...e,id:u,title:t}),{...g,...e,id:u,dismissible:w,title:t}):g):this.addToast({title:t,...a,dismissible:w,id:u}),u};this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(t=>{this.subscribers.forEach(a=>a({id:t.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e);this.message=(e,t)=>this.create({...t,message:e});this.error=(e,t)=>this.create({...t,message:e,type:\"error\"});this.success=(e,t)=>this.create({...t,type:\"success\",message:e});this.info=(e,t)=>this.create({...t,type:\"info\",message:e});this.warning=(e,t)=>this.create({...t,type:\"warning\",message:e});this.loading=(e,t)=>this.create({...t,type:\"loading\",message:e});this.promise=(e,t)=>{if(!t)return;let a;t.loading!==void 0&&(a=this.create({...t,promise:e,type:\"loading\",message:t.loading,description:typeof t.description!=\"function\"?t.description:void 0}));let u=e instanceof Promise?e:e(),f=a!==void 0,w,S=u.then(async i=>{if(w=[\"resolve\",i],re.isValidElement(i))f=!1,this.create({id:a,type:\"default\",message:i});else if(ie(i)&&!i.ok){f=!1;let T=typeof t.error==\"function\"?await t.error(`HTTP error! status: ${i.status}`):t.error,F=typeof t.description==\"function\"?await t.description(`HTTP error! status: ${i.status}`):t.description;this.create({id:a,type:\"error\",message:T,description:F})}else if(t.success!==void 0){f=!1;let T=typeof t.success==\"function\"?await t.success(i):t.success,F=typeof t.description==\"function\"?await t.description(i):t.description;this.create({id:a,type:\"success\",message:T,description:F})}}).catch(async i=>{if(w=[\"reject\",i],t.error!==void 0){f=!1;let D=typeof t.error==\"function\"?await t.error(i):t.error,T=typeof t.description==\"function\"?await t.description(i):t.description;this.create({id:a,type:\"error\",message:D,description:T})}}).finally(()=>{var i;f&&(this.dismiss(a),a=void 0),(i=t.finally)==null||i.call(t)}),g=()=>new Promise((i,D)=>S.then(()=>w[0]===\"reject\"?D(w[1]):i(w[1])).catch(D));return typeof a!=\"string\"&&typeof a!=\"number\"?{unwrap:g}:Object.assign(a,{unwrap:g})};this.custom=(e,t)=>{let a=(t==null?void 0:t.id)||bt++;return this.create({jsx:e(a),id:a,...t}),a};this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id));this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},v=new yt,ne=(n,e)=>{let t=(e==null?void 0:e.id)||bt++;return v.addToast({title:n,...e,id:t}),t},ie=n=>n&&typeof n==\"object\"&&\"ok\"in n&&typeof n.ok==\"boolean\"&&\"status\"in n&&typeof n.status==\"number\",le=ne,ce=()=>v.toasts,de=()=>v.getActiveToasts(),ue=Object.assign(le,{success:v.success,info:v.info,warning:v.warning,error:v.error,custom:v.custom,message:v.message,promise:v.promise,dismiss:v.dismiss,loading:v.loading},{getHistory:ce,getToasts:de});function wt(n,{insertAt:e}={}){if(!n||typeof document==\"undefined\")return;let t=document.head||document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.type=\"text/css\",e===\"top\"&&t.firstChild?t.insertBefore(a,t.firstChild):t.appendChild(a),a.styleSheet?a.styleSheet.cssText=n:a.appendChild(document.createTextNode(n))}wt(`:where(html[dir=\"ltr\"]),:where([data-sonner-toaster][dir=\"ltr\"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir=\"rtl\"]),:where([data-sonner-toaster][dir=\"rtl\"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted=\"true\"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted=\"true\"]){transform:none}}:where([data-sonner-toaster][data-x-position=\"right\"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position=\"left\"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position=\"center\"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position=\"top\"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position=\"bottom\"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled=\"true\"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position=\"top\"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position=\"bottom\"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise=\"true\"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme=\"dark\"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled=\"true\"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping=\"true\"]):before{content:\"\";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position=\"top\"][data-swiping=\"true\"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position=\"bottom\"][data-swiping=\"true\"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping=\"false\"][data-removed=\"true\"]):before{content:\"\";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:\"\";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted=\"true\"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded=\"false\"][data-front=\"false\"][data-styled=\"true\"])>*{opacity:0}:where([data-sonner-toast][data-visible=\"false\"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted=\"true\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"true\"][data-swipe-out=\"false\"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"true\"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"][data-swipe-out=\"false\"][data-expanded=\"false\"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed=\"true\"][data-front=\"false\"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}\n`);function tt(n){return n.label!==void 0}var pe=3,me=\"32px\",ge=\"16px\",Wt=4e3,he=356,be=14,ye=20,we=200;function M(...n){return n.filter(Boolean).join(\" \")}function xe(n){let[e,t]=n.split(\"-\"),a=[];return e&&a.push(e),t&&a.push(t),a}var ve=n=>{var Dt,Pt,Nt,Bt,Ct,kt,It,Mt,Ht,At,Lt;let{invert:e,toast:t,unstyled:a,interacting:u,setHeights:f,visibleToasts:w,heights:S,index:g,toasts:i,expanded:D,removeToast:T,defaultRichColors:F,closeButton:et,style:ut,cancelButtonStyle:ft,actionButtonStyle:l,className:ot=\"\",descriptionClassName:at=\"\",duration:X,position:st,gap:pt,loadingIcon:rt,expandByDefault:B,classNames:s,icons:P,closeButtonAriaLabel:nt=\"Close toast\",pauseWhenPageIsHidden:it}=n,[Y,C]=o.useState(null),[lt,J]=o.useState(null),[W,H]=o.useState(!1),[A,mt]=o.useState(!1),[L,z]=o.useState(!1),[ct,d]=o.useState(!1),[h,y]=o.useState(!1),[R,j]=o.useState(0),[p,_]=o.useState(0),O=o.useRef(t.duration||X||Wt),G=o.useRef(null),k=o.useRef(null),Vt=g===0,Ut=g+1<=w,N=t.type,V=t.dismissible!==!1,Kt=t.className||\"\",Xt=t.descriptionClassName||\"\",dt=o.useMemo(()=>S.findIndex(r=>r.toastId===t.id)||0,[S,t.id]),Jt=o.useMemo(()=>{var r;return(r=t.closeButton)!=null?r:et},[t.closeButton,et]),Tt=o.useMemo(()=>t.duration||X||Wt,[t.duration,X]),gt=o.useRef(0),U=o.useRef(0),St=o.useRef(0),K=o.useRef(null),[Gt,Qt]=st.split(\"-\"),Rt=o.useMemo(()=>S.reduce((r,m,c)=>c>=dt?r:r+m.height,0),[S,dt]),Et=Ft(),qt=t.invert||e,ht=N===\"loading\";U.current=o.useMemo(()=>dt*pt+Rt,[dt,Rt]),o.useEffect(()=>{O.current=Tt},[Tt]),o.useEffect(()=>{H(!0)},[]),o.useEffect(()=>{let r=k.current;if(r){let m=r.getBoundingClientRect().height;return _(m),f(c=>[{toastId:t.id,height:m,position:t.position},...c]),()=>f(c=>c.filter(b=>b.toastId!==t.id))}},[f,t.id]),o.useLayoutEffect(()=>{if(!W)return;let r=k.current,m=r.style.height;r.style.height=\"auto\";let c=r.getBoundingClientRect().height;r.style.height=m,_(c),f(b=>b.find(x=>x.toastId===t.id)?b.map(x=>x.toastId===t.id?{...x,height:c}:x):[{toastId:t.id,height:c,position:t.position},...b])},[W,t.title,t.description,f,t.id]);let $=o.useCallback(()=>{mt(!0),j(U.current),f(r=>r.filter(m=>m.toastId!==t.id)),setTimeout(()=>{T(t)},we)},[t,T,f,U]);o.useEffect(()=>{if(t.promise&&N===\"loading\"||t.duration===1/0||t.type===\"loading\")return;let r;return D||u||it&&Et?(()=>{if(St.current<gt.current){let b=new Date().getTime()-gt.current;O.current=O.current-b}St.current=new Date().getTime()})():(()=>{O.current!==1/0&&(gt.current=new Date().getTime(),r=setTimeout(()=>{var b;(b=t.onAutoClose)==null||b.call(t,t),$()},O.current))})(),()=>clearTimeout(r)},[D,u,t,N,it,Et,$]),o.useEffect(()=>{t.delete&&$()},[$,t.delete]);function Zt(){var r,m,c;return P!=null&&P.loading?o.createElement(\"div\",{className:M(s==null?void 0:s.loader,(r=t==null?void 0:t.classNames)==null?void 0:r.loader,\"sonner-loader\"),\"data-visible\":N===\"loading\"},P.loading):rt?o.createElement(\"div\",{className:M(s==null?void 0:s.loader,(m=t==null?void 0:t.classNames)==null?void 0:m.loader,\"sonner-loader\"),\"data-visible\":N===\"loading\"},rt):o.createElement(Yt,{className:M(s==null?void 0:s.loader,(c=t==null?void 0:t.classNames)==null?void 0:c.loader),visible:N===\"loading\"})}return o.createElement(\"li\",{tabIndex:0,ref:k,className:M(ot,Kt,s==null?void 0:s.toast,(Dt=t==null?void 0:t.classNames)==null?void 0:Dt.toast,s==null?void 0:s.default,s==null?void 0:s[N],(Pt=t==null?void 0:t.classNames)==null?void 0:Pt[N]),\"data-sonner-toast\":\"\",\"data-rich-colors\":(Nt=t.richColors)!=null?Nt:F,\"data-styled\":!(t.jsx||t.unstyled||a),\"data-mounted\":W,\"data-promise\":!!t.promise,\"data-swiped\":h,\"data-removed\":A,\"data-visible\":Ut,\"data-y-position\":Gt,\"data-x-position\":Qt,\"data-index\":g,\"data-front\":Vt,\"data-swiping\":L,\"data-dismissible\":V,\"data-type\":N,\"data-invert\":qt,\"data-swipe-out\":ct,\"data-swipe-direction\":lt,\"data-expanded\":!!(D||B&&W),style:{\"--index\":g,\"--toasts-before\":g,\"--z-index\":i.length-g,\"--offset\":`${A?R:U.current}px`,\"--initial-height\":B?\"auto\":`${p}px`,...ut,...t.style},onDragEnd:()=>{z(!1),C(null),K.current=null},onPointerDown:r=>{ht||!V||(G.current=new Date,j(U.current),r.target.setPointerCapture(r.pointerId),r.target.tagName!==\"BUTTON\"&&(z(!0),K.current={x:r.clientX,y:r.clientY}))},onPointerUp:()=>{var x,Q,q,Z;if(ct||!V)return;K.current=null;let r=Number(((x=k.current)==null?void 0:x.style.getPropertyValue(\"--swipe-amount-x\").replace(\"px\",\"\"))||0),m=Number(((Q=k.current)==null?void 0:Q.style.getPropertyValue(\"--swipe-amount-y\").replace(\"px\",\"\"))||0),c=new Date().getTime()-((q=G.current)==null?void 0:q.getTime()),b=Y===\"x\"?r:m,I=Math.abs(b)/c;if(Math.abs(b)>=ye||I>.11){j(U.current),(Z=t.onDismiss)==null||Z.call(t,t),J(Y===\"x\"?r>0?\"right\":\"left\":m>0?\"down\":\"up\"),$(),d(!0),y(!1);return}z(!1),C(null)},onPointerMove:r=>{var Q,q,Z,zt;if(!K.current||!V||((Q=window.getSelection())==null?void 0:Q.toString().length)>0)return;let c=r.clientY-K.current.y,b=r.clientX-K.current.x,I=(q=n.swipeDirections)!=null?q:xe(st);!Y&&(Math.abs(b)>1||Math.abs(c)>1)&&C(Math.abs(b)>Math.abs(c)?\"x\":\"y\");let x={x:0,y:0};Y===\"y\"?(I.includes(\"top\")||I.includes(\"bottom\"))&&(I.includes(\"top\")&&c<0||I.includes(\"bottom\")&&c>0)&&(x.y=c):Y===\"x\"&&(I.includes(\"left\")||I.includes(\"right\"))&&(I.includes(\"left\")&&b<0||I.includes(\"right\")&&b>0)&&(x.x=b),(Math.abs(x.x)>0||Math.abs(x.y)>0)&&y(!0),(Z=k.current)==null||Z.style.setProperty(\"--swipe-amount-x\",`${x.x}px`),(zt=k.current)==null||zt.style.setProperty(\"--swipe-amount-y\",`${x.y}px`)}},Jt&&!t.jsx?o.createElement(\"button\",{\"aria-label\":nt,\"data-disabled\":ht,\"data-close-button\":!0,onClick:ht||!V?()=>{}:()=>{var r;$(),(r=t.onDismiss)==null||r.call(t,t)},className:M(s==null?void 0:s.closeButton,(Bt=t==null?void 0:t.classNames)==null?void 0:Bt.closeButton)},(Ct=P==null?void 0:P.close)!=null?Ct:Ot):null,t.jsx||xt(t.title)?t.jsx?t.jsx:typeof t.title==\"function\"?t.title():t.title:o.createElement(o.Fragment,null,N||t.icon||t.promise?o.createElement(\"div\",{\"data-icon\":\"\",className:M(s==null?void 0:s.icon,(kt=t==null?void 0:t.classNames)==null?void 0:kt.icon)},t.promise||t.type===\"loading\"&&!t.icon?t.icon||Zt():null,t.type!==\"loading\"?t.icon||(P==null?void 0:P[N])||jt(N):null):null,o.createElement(\"div\",{\"data-content\":\"\",className:M(s==null?void 0:s.content,(It=t==null?void 0:t.classNames)==null?void 0:It.content)},o.createElement(\"div\",{\"data-title\":\"\",className:M(s==null?void 0:s.title,(Mt=t==null?void 0:t.classNames)==null?void 0:Mt.title)},typeof t.title==\"function\"?t.title():t.title),t.description?o.createElement(\"div\",{\"data-description\":\"\",className:M(at,Xt,s==null?void 0:s.description,(Ht=t==null?void 0:t.classNames)==null?void 0:Ht.description)},typeof t.description==\"function\"?t.description():t.description):null),xt(t.cancel)?t.cancel:t.cancel&&tt(t.cancel)?o.createElement(\"button\",{\"data-button\":!0,\"data-cancel\":!0,style:t.cancelButtonStyle||ft,onClick:r=>{var m,c;tt(t.cancel)&&V&&((c=(m=t.cancel).onClick)==null||c.call(m,r),$())},className:M(s==null?void 0:s.cancelButton,(At=t==null?void 0:t.classNames)==null?void 0:At.cancelButton)},t.cancel.label):null,xt(t.action)?t.action:t.action&&tt(t.action)?o.createElement(\"button\",{\"data-button\":!0,\"data-action\":!0,style:t.actionButtonStyle||l,onClick:r=>{var m,c;tt(t.action)&&((c=(m=t.action).onClick)==null||c.call(m,r),!r.defaultPrevented&&$())},className:M(s==null?void 0:s.actionButton,(Lt=t==null?void 0:t.classNames)==null?void 0:Lt.actionButton)},t.action.label):null))};function _t(){if(typeof window==\"undefined\"||typeof document==\"undefined\")return\"ltr\";let n=document.documentElement.getAttribute(\"dir\");return n===\"auto\"||!n?window.getComputedStyle(document.documentElement).direction:n}function Te(n,e){let t={};return[n,e].forEach((a,u)=>{let f=u===1,w=f?\"--mobile-offset\":\"--offset\",S=f?ge:me;function g(i){[\"top\",\"right\",\"bottom\",\"left\"].forEach(D=>{t[`${w}-${D}`]=typeof i==\"number\"?`${i}px`:i})}typeof a==\"number\"||typeof a==\"string\"?g(a):typeof a==\"object\"?[\"top\",\"right\",\"bottom\",\"left\"].forEach(i=>{a[i]===void 0?t[`${w}-${i}`]=S:t[`${w}-${i}`]=typeof a[i]==\"number\"?`${a[i]}px`:a[i]}):g(S)}),t}function Oe(){let[n,e]=o.useState([]);return o.useEffect(()=>v.subscribe(t=>{if(t.dismiss){setTimeout(()=>{vt.flushSync(()=>{e(a=>a.filter(u=>u.id!==t.id))})});return}setTimeout(()=>{vt.flushSync(()=>{e(a=>{let u=a.findIndex(f=>f.id===t.id);return u!==-1?[...a.slice(0,u),{...a[u],...t},...a.slice(u+1)]:[t,...a]})})})}),[]),{toasts:n}}var $e=fe(function(e,t){let{invert:a,position:u=\"bottom-right\",hotkey:f=[\"altKey\",\"KeyT\"],expand:w,closeButton:S,className:g,offset:i,mobileOffset:D,theme:T=\"light\",richColors:F,duration:et,style:ut,visibleToasts:ft=pe,toastOptions:l,dir:ot=_t(),gap:at=be,loadingIcon:X,icons:st,containerAriaLabel:pt=\"Notifications\",pauseWhenPageIsHidden:rt}=e,[B,s]=o.useState([]),P=o.useMemo(()=>Array.from(new Set([u].concat(B.filter(d=>d.position).map(d=>d.position)))),[B,u]),[nt,it]=o.useState([]),[Y,C]=o.useState(!1),[lt,J]=o.useState(!1),[W,H]=o.useState(T!==\"system\"?T:typeof window!=\"undefined\"&&window.matchMedia&&window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"),A=o.useRef(null),mt=f.join(\"+\").replace(/Key/g,\"\").replace(/Digit/g,\"\"),L=o.useRef(null),z=o.useRef(!1),ct=o.useCallback(d=>{s(h=>{var y;return(y=h.find(R=>R.id===d.id))!=null&&y.delete||v.dismiss(d.id),h.filter(({id:R})=>R!==d.id)})},[]);return o.useEffect(()=>v.subscribe(d=>{if(d.dismiss){s(h=>h.map(y=>y.id===d.id?{...y,delete:!0}:y));return}setTimeout(()=>{vt.flushSync(()=>{s(h=>{let y=h.findIndex(R=>R.id===d.id);return y!==-1?[...h.slice(0,y),{...h[y],...d},...h.slice(y+1)]:[d,...h]})})})}),[]),o.useEffect(()=>{if(T!==\"system\"){H(T);return}if(T===\"system\"&&(window.matchMedia&&window.matchMedia(\"(prefers-color-scheme: dark)\").matches?H(\"dark\"):H(\"light\")),typeof window==\"undefined\")return;let d=window.matchMedia(\"(prefers-color-scheme: dark)\");try{d.addEventListener(\"change\",({matches:h})=>{H(h?\"dark\":\"light\")})}catch(h){d.addListener(({matches:y})=>{try{H(y?\"dark\":\"light\")}catch(R){console.error(R)}})}},[T]),o.useEffect(()=>{B.length<=1&&C(!1)},[B]),o.useEffect(()=>{let d=h=>{var R,j;f.every(p=>h[p]||h.code===p)&&(C(!0),(R=A.current)==null||R.focus()),h.code===\"Escape\"&&(document.activeElement===A.current||(j=A.current)!=null&&j.contains(document.activeElement))&&C(!1)};return document.addEventListener(\"keydown\",d),()=>document.removeEventListener(\"keydown\",d)},[f]),o.useEffect(()=>{if(A.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,z.current=!1)}},[A.current]),o.createElement(\"section\",{ref:t,\"aria-label\":`${pt} ${mt}`,tabIndex:-1,\"aria-live\":\"polite\",\"aria-relevant\":\"additions text\",\"aria-atomic\":\"false\",suppressHydrationWarning:!0},P.map((d,h)=>{var j;let[y,R]=d.split(\"-\");return B.length?o.createElement(\"ol\",{key:d,dir:ot===\"auto\"?_t():ot,tabIndex:-1,ref:A,className:g,\"data-sonner-toaster\":!0,\"data-theme\":W,\"data-y-position\":y,\"data-lifted\":Y&&B.length>1&&!w,\"data-x-position\":R,style:{\"--front-toast-height\":`${((j=nt[0])==null?void 0:j.height)||0}px`,\"--width\":`${he}px`,\"--gap\":`${at}px`,...ut,...Te(i,D)},onBlur:p=>{z.current&&!p.currentTarget.contains(p.relatedTarget)&&(z.current=!1,L.current&&(L.current.focus({preventScroll:!0}),L.current=null))},onFocus:p=>{p.target instanceof HTMLElement&&p.target.dataset.dismissible===\"false\"||z.current||(z.current=!0,L.current=p.relatedTarget)},onMouseEnter:()=>C(!0),onMouseMove:()=>C(!0),onMouseLeave:()=>{lt||C(!1)},onDragEnd:()=>C(!1),onPointerDown:p=>{p.target instanceof HTMLElement&&p.target.dataset.dismissible===\"false\"||J(!0)},onPointerUp:()=>J(!1)},B.filter(p=>!p.position&&h===0||p.position===d).map((p,_)=>{var O,G;return o.createElement(ve,{key:p.id,icons:st,index:_,toast:p,defaultRichColors:F,duration:(O=l==null?void 0:l.duration)!=null?O:et,className:l==null?void 0:l.className,descriptionClassName:l==null?void 0:l.descriptionClassName,invert:a,visibleToasts:ft,closeButton:(G=l==null?void 0:l.closeButton)!=null?G:S,interacting:lt,position:d,style:l==null?void 0:l.style,unstyled:l==null?void 0:l.unstyled,classNames:l==null?void 0:l.classNames,cancelButtonStyle:l==null?void 0:l.cancelButtonStyle,actionButtonStyle:l==null?void 0:l.actionButtonStyle,removeToast:ct,toasts:B.filter(k=>k.position==p.position),heights:nt.filter(k=>k.position==p.position),setHeights:it,expandByDefault:w,gap:at,loadingIcon:X,expanded:Y,pauseWhenPageIsHidden:rt,swipeDirections:e.swipeDirections})})):null}))});export{$e as Toaster,ue as toast,Oe as useSonner};\n//# sourceMappingURL=index.mjs.map","import { ReactNode, useCallback, useMemo, useRef, useState } from 'react'\n\nimport { useTranslation } from '@/context'\nimport { Button } from '@components/button'\nimport { IconV2 } from '@components/icon-v2'\nimport { Layout } from '@components/layout'\nimport { Text } from '@components/text'\nimport { useResizeObserver } from '@hooks/use-resize-observer'\nimport { cn } from '@utils/cn'\nimport { cva, VariantProps } from 'class-variance-authority'\nimport { Action, toast as sonnerToast } from 'sonner'\n\nconst toastVariants = cva('cn-toast', {\n variants: {\n variant: {\n default: '',\n loading: '',\n danger: 'cn-toast-danger',\n info: 'cn-toast-info',\n success: 'cn-toast-success'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n})\n\ninterface CustomToastProps {\n toastId: string | number\n variant?: VariantProps<typeof toastVariants>['variant']\n title: string\n description?: ReactNode\n onClose?: () => void\n className?: string\n closeButton?: boolean\n action?: Action\n promise?: Promise<any>\n successMessage?: string\n errorMessage?: string\n}\n\nconst MAX_HEIGHT = 100\n\nexport function CustomToast({\n toastId,\n variant = 'default',\n title,\n description,\n onClose,\n closeButton = true,\n action,\n promise = undefined,\n successMessage,\n errorMessage\n}: CustomToastProps) {\n const { t } = useTranslation()\n\n const [internalVariant, setInternalVariant] = useState(variant)\n const [internalTitle, setInternalTitle] = useState(title)\n\n const contentRef = useRef<HTMLDivElement>(null)\n const [isOverflowing, setIsOverflowing] = useState(false)\n const [isExpanded, setIsExpanded] = useState(false)\n\n const showExpandButton = description && isOverflowing\n\n const toggleExpand = useCallback(() => setIsExpanded(prev => !prev), [])\n\n useResizeObserver(\n contentRef,\n el => {\n if (!el) return\n const { scrollHeight } = el\n setIsOverflowing(scrollHeight > MAX_HEIGHT)\n },\n 100\n )\n\n if (promise) {\n promise\n .then(() => {\n setInternalVariant('success')\n setInternalTitle(successMessage ?? title)\n })\n .catch(() => {\n setInternalVariant('danger')\n setInternalTitle(errorMessage ?? title)\n })\n .finally(() => {\n setTimeout(() => {\n sonnerToast.dismiss(toastId)\n }, 7000)\n })\n }\n\n const titleIcon = useMemo(() => {\n switch (internalVariant) {\n case 'danger':\n return <IconV2 size=\"lg\" name=\"warning-triangle\" />\n case 'info':\n return <IconV2 size=\"lg\" name=\"info-circle\" />\n case 'success':\n return <IconV2 color=\"success\" size=\"lg\" name=\"check-circle\" />\n case 'loading':\n return <IconV2 className=\"animate-spin\" size=\"lg\" name=\"loader\" />\n default:\n return null\n }\n }, [internalVariant])\n\n return (\n <Layout.Vertical gap=\"xs\" className={toastVariants({ variant: internalVariant })}>\n <Layout.Flex align=\"center\" gap=\"2xs\" justify=\"between\" className=\"cn-toast-title\">\n <Layout.Horizontal className=\"flex-1\" align=\"center\" gap=\"xs\">\n {titleIcon}\n <Text variant=\"body-strong\" color=\"inherit\">\n {internalTitle}\n </Text>\n </Layout.Horizontal>\n\n {action && (\n <Button\n className=\"cn-toast-action-button\"\n size=\"sm\"\n // TODO: remove this cast\n title={action.label as string}\n onClick={e => {\n action.onClick?.(e)\n }}\n >\n {action.label}\n </Button>\n )}\n\n {closeButton && (\n <Button size=\"xs\" ignoreIconOnlyTooltip title=\"Close\" variant=\"transparent\" iconOnly onClick={onClose}>\n <IconV2 size=\"xs\" name=\"xmark\" />\n </Button>\n )}\n </Layout.Flex>\n\n {description && (\n <div\n ref={contentRef}\n className={cn('cn-toast-description-container', {\n 'cn-toast-description-container-expanded': isExpanded\n })}\n >\n <Text variant=\"body-normal\" className={cn('cn-toast-description')}>\n {description}\n </Text>\n </div>\n )}\n\n {showExpandButton && (\n <>\n <Button\n variant=\"transparent\"\n className=\"cn-toast-expand-button\"\n onClick={toggleExpand}\n aria-expanded={isExpanded}\n >\n {isExpanded ? t('component:alert.showLess', 'Show less') : t('component:alert.showMore', 'Show more')}\n <IconV2\n className={cn({\n 'cn-toast-expand-button-icon-rotate-180': isExpanded\n })}\n name=\"nav-arrow-down\"\n />\n </Button>\n\n <div className={cn('cn-toast-fade-overlay', { 'cn-toast-fade-overlay-not-visible': isExpanded })} />\n </>\n )}\n </Layout.Vertical>\n )\n}\n","import { toast as sonnerToast } from 'sonner'\n\nimport { CustomToast } from './custom-toast'\nimport { LoadingToastParamsType, PromiseToastParamsType, ToastParamsType, ToastPromiseType } from './types'\n\nconst DEFAULT_DURATION = 10_000\n\nconst defaultToast = ({ title, description, options = {} }: ToastParamsType) => {\n const { dismissible, duration, action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n title={title}\n description={description}\n onClose={() => sonnerToast.dismiss(t)}\n closeButton={dismissible}\n action={action}\n />\n ),\n {\n duration: duration || DEFAULT_DURATION,\n dismissible: dismissible !== false\n }\n )\n}\n\nconst infoToast = ({ title, description, options = {} }: ToastParamsType) => {\n const { dismissible, duration, action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n title={title}\n description={description}\n onClose={() => sonnerToast.dismiss(t)}\n closeButton={dismissible}\n variant=\"info\"\n action={action}\n />\n ),\n {\n duration: duration || DEFAULT_DURATION,\n dismissible: dismissible !== false\n }\n )\n}\n\nconst successToast = ({ title, description, options = {} }: ToastParamsType) => {\n const { dismissible, duration, action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n title={title}\n description={description}\n onClose={() => sonnerToast.dismiss(t)}\n closeButton={dismissible}\n variant=\"success\"\n action={action}\n />\n ),\n {\n duration: duration || DEFAULT_DURATION,\n dismissible: dismissible !== false\n }\n )\n}\n\nconst dangerToast = ({ title, description, options = {} }: ToastParamsType) => {\n const { dismissible, duration, action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n title={title}\n variant=\"danger\"\n description={description}\n onClose={() => sonnerToast.dismiss(t)}\n closeButton={dismissible}\n action={action}\n />\n ),\n {\n duration: duration || DEFAULT_DURATION,\n dismissible: dismissible !== false\n }\n )\n}\n\nconst loadingToast = ({ title, options = {} }: LoadingToastParamsType) => {\n const { action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n variant=\"loading\"\n title={title}\n closeButton={false}\n onClose={() => sonnerToast.dismiss(t)}\n action={action}\n />\n ),\n {\n duration: Number.POSITIVE_INFINITY,\n dismissible: false\n }\n )\n}\n\nconst promiseToast = (\n promise: ToastPromiseType,\n { loadingMessage, successMessage, errorMessage, options = {} }: PromiseToastParamsType\n) => {\n const { dismissible, action } = options\n return sonnerToast.custom(\n t => (\n <CustomToast\n toastId={t}\n variant=\"loading\"\n title={loadingMessage}\n onClose={() => sonnerToast.dismiss(t)}\n closeButton={dismissible}\n promise={promise}\n action={action}\n successMessage={successMessage}\n errorMessage={errorMessage}\n />\n ),\n {\n dismissible: dismissible !== false,\n duration: Number.POSITIVE_INFINITY\n }\n )\n}\n\nexport const toast = Object.assign(defaultToast, {\n danger: dangerToast,\n info: infoToast,\n loading: loadingToast,\n success: successToast,\n promise: promiseToast,\n\n // to dismiss a toast manually\n dismiss: sonnerToast.dismiss\n})\n","import { cn } from '@utils/cn'\nimport { Toaster as SonnerToaster, type ToasterProps as SonnerToasterProps } from 'sonner'\n\ntype ToasterProps = Pick<SonnerToasterProps, 'richColors' | 'position' | 'duration' | 'className'>\n\nexport function Toaster({ duration = 5000, className }: ToasterProps) {\n return (\n <SonnerToaster\n richColors={false}\n position=\"bottom-right\"\n duration={duration}\n visibleToasts={3}\n className={cn('cn-toast-wrapper', className)}\n toastOptions={{\n style: {\n background: 'transparent',\n border: 'none',\n padding: 0,\n boxShadow: 'none',\n right: 0,\n height: 'auto',\n overflow: 'hidden'\n }\n }}\n />\n )\n}\n","import { useRef, useState } from 'react'\n\nimport { Button, IconV2, Text } from '@/components'\n\nexport const ChatV2 = () => {\n const [collapsed, setCollapsed] = useState(false)\n const containerRef = useRef<HTMLDivElement>(null)\n\n // Optional: Scroll to top when expanding\n const handleToggle = () => {\n setCollapsed(isCollapsed => {\n const next = !isCollapsed\n if (!next && containerRef.current) {\n containerRef.current.scrollTo({ top: 0, behavior: 'smooth' })\n }\n return next\n })\n }\n\n return (\n <div\n ref={containerRef}\n className=\"bg-cn-2 border-r p-cn-container h-full\"\n style={{\n width: collapsed ? '80px' : '412px',\n transition: 'width 0.3s cubic-bezier(0.4,0,0.2,1)'\n }}\n >\n {collapsed ? (\n <div className=\"flex h-full items-end justify-center\">\n <Button variant=\"transparent\" size=\"sm\" iconOnly tooltipProps={{ content: 'Expand' }} onClick={handleToggle}>\n <IconV2 name=\"expand-sidebar\" skipSize />\n </Button>\n </div>\n ) : (\n <Text>Chat</Text>\n )}\n </div>\n )\n}\n","import { useEffect } from 'react'\n\nimport { NavbarItemType } from '@/components'\nimport { useRouterContext } from '@/context'\n\nexport const useLocationChange = ({\n items,\n onRouteChange\n}: {\n items: NavbarItemType[]\n onRouteChange: (item: NavbarItemType) => void\n}) => {\n const { location } = useRouterContext()\n useEffect(() => {\n const matchedItem = items.find(item => item.to === location.pathname)\n if (matchedItem) {\n onRouteChange(matchedItem)\n }\n }, [location])\n}\n","import { NavbarItemType } from '@components/app-sidebar'\n\nconst RECENT_KEY = 'nav_recent_menu'\nconst PINNED_KEY = 'nav_pinned_menu'\n\nconst mockPinnedItems: NavbarItemType[] = [{ title: 'Repositories', to: '/', id: '1', iconName: 'account' }]\n\nconst mockRecentItems: NavbarItemType[] = [\n { title: 'Connectors', to: '/connectors', id: '2', iconName: 'connectors' },\n { title: 'Secrets', to: '/secrets', id: '2', iconName: 'key' },\n {\n title: 'Builds',\n to: '/builds',\n id: '3',\n iconName: 'builds',\n subItems: [\n { title: 'Pipelines', to: '/builds/pipelines', id: '3-1', iconName: 'pipeline' },\n { title: 'Overview', to: '/builds/overview', id: '3-2', iconName: 'settings' }\n ]\n }\n]\n\nconst setLocal = (key: string, value: NavbarItemType[]) => {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n // do nothing\n }\n}\n\nexport const useNav = () => {\n const recentMenu = mockRecentItems\n const pinnedMenu = mockPinnedItems\n\n const setRecent = (item: NavbarItemType, remove?: boolean) => {\n let updated: NavbarItemType[]\n if (remove) {\n updated = recentMenu.filter(i => i.title !== item.title)\n } else {\n const filtered = recentMenu.filter(i => i.title !== item.title)\n updated = [item, ...filtered]\n }\n setLocal(RECENT_KEY, updated)\n }\n\n const setPinned = (item: NavbarItemType, pin: boolean) => {\n let updated: NavbarItemType[]\n if (pin) {\n if (pinnedMenu.some(i => i.title === item.title)) {\n updated = pinnedMenu\n } else {\n updated = [...pinnedMenu, item]\n }\n } else {\n updated = pinnedMenu.filter(i => i.title !== item.title)\n }\n setLocal(PINNED_KEY, updated)\n }\n\n const setNavLinks = ({ recents, pinned }: { recents: NavbarItemType[]; pinned: NavbarItemType[] }) => {\n setLocal(RECENT_KEY, recents)\n setLocal(PINNED_KEY, pinned)\n }\n\n return { recentMenu, setRecent, pinnedMenu, setPinned, setNavLinks }\n}\n","import type { Params } from 'react-router-dom'\n\nimport { TFunctionWithFallback } from '@/context'\nimport { ScopeType } from '@/views'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar'\n\nexport interface ScopedNavbarItemType extends NavbarItemType {\n scopes?: ScopeType[]\n}\n\nexport interface ScopedMenuGroupType extends Omit<MenuGroupType, 'items'> {\n items: ScopedNavbarItemType[]\n scopes?: ScopeType[]\n}\n\nexport type RouteDefinitions = Record<string, (params: Params) => string>\n\nexport type GetNavbarMenuDataParams = {\n t: TFunctionWithFallback\n params: Params\n routes?: RouteDefinitions\n}\n\nexport enum NavEnum {\n Home = 0,\n Activities = 1,\n Settings = 2\n}\n\nexport type GetNavbarMenuData = ({ t, routes }: GetNavbarMenuDataParams) => ScopedMenuGroupType[]\n","import { MenuGroupTypes, NavbarItemType } from '@/components'\n\nimport { GetNavbarMenuData, NavEnum } from '../types'\n\nexport const NavItems: Map<NavEnum, Omit<NavbarItemType, 'to'>> = new Map([\n [\n NavEnum.Home,\n {\n id: NavEnum.Home,\n iconName: 'dashboard',\n title: 'Home',\n permanentlyPinned: true\n }\n ],\n [\n NavEnum.Activities,\n {\n id: NavEnum.Activities,\n iconName: 'ai',\n title: 'Activity',\n permanentlyPinned: true\n }\n ],\n [\n NavEnum.Settings,\n {\n id: NavEnum.Settings,\n iconName: 'settings',\n title: 'Settings',\n description: 'Account Settings',\n permanentlyPinned: true\n }\n ]\n])\n\nexport const getNavbarMoreMenuData: GetNavbarMenuData = ({ t, routes, params }) => [\n {\n groupId: 0,\n title: t('component:navbar.devops', 'DevOps'),\n type: MenuGroupTypes.GENERAL,\n items: [\n {\n id: 1,\n iconName: 'pipeline',\n title: 'Pipelines',\n description: 'Up to 4X faster than other solutions.',\n to: routes?.toPipelines?.(params) || ''\n },\n {\n id: 2,\n iconName: 'database',\n title: t('component:navbar.databases', 'Databases'),\n description: 'Manage all your infrastructure.',\n to: routes?.toDatabases?.(params) || ''\n },\n {\n id: 3,\n iconName: 'deployments',\n title: t('component:navbar.deployments', 'Deployments'),\n description: 'Automate and manage your deployments.',\n to: routes?.toDeployments?.(params) || ''\n },\n {\n id: 4,\n iconName: 'artifacts',\n title: t('component:navbar.artifacts', 'Artifacts'),\n description: 'Store and manage build artifacts.',\n to: routes?.toArtifacts?.(params) || ''\n },\n {\n id: 5,\n iconName: 'builds',\n title: t('component:navbar.builds', 'Builds'),\n description: 'Continuous integration and build pipelines.',\n to: routes?.toBuilds?.(params) || ''\n },\n {\n id: 6,\n iconName: 'portal',\n title: t('component:navbar.developer-portal', 'Developer Portal'),\n description: 'Built for developers, onboard in minutes.',\n to: routes?.toDeveloperPortal?.(params) || ''\n },\n {\n id: 7,\n iconName: 'repository',\n title: t('component:navbar.repositories', 'Repositories'),\n description: 'Integrated & familiar git experience.',\n to: routes?.toRepositories?.(params) || ''\n },\n {\n id: 8,\n iconName: 'workspaces',\n title: t('component:navbar.developer-environments', 'Developer Environments'),\n description: 'Integrated & familiar git experience.',\n to: routes?.toDeveloperEnvironments?.(params) || ''\n },\n {\n id: 9,\n iconName: 'infrastructure',\n title: t('component:navbar.infrastructure', 'Infrastructure'),\n description: 'Manage all your infrastructure.',\n to: routes?.toInfrastructure?.(params) || ''\n },\n {\n id: 10,\n iconName: 'ai-ml-ops',\n title: t('component:navbar.ai-ml-ops', 'AI / ML Ops'),\n description: 'Operationalize and manage AI/ML workflows.',\n to: routes?.toAiMlOps?.(params) || ''\n }\n ]\n },\n {\n groupId: 1,\n title: t('component:navbar.testing', 'Testing'),\n type: MenuGroupTypes.GENERAL,\n items: [\n {\n id: 11,\n iconName: 'feature-flags',\n title: t('component:navbar.featureFlags.mainTitle', 'Feature Flags'),\n description: 'Manage all your infrastructure.',\n to: routes?.toFeatureFlags?.(params) || '',\n subItems: [\n {\n id: 11.1,\n iconName: 'feature-flags',\n title: t('component:navbar.featureFlags.targetGroups', 'Target groups'),\n description: 'To manage target groups',\n to: routes?.toFeatureFlagsTargetGroups?.(params) || ''\n }\n ]\n },\n {\n id: 12,\n iconName: 'warning-triangle',\n title: t('component:navbar.incidents', 'Incidents'),\n description: 'Shift left security testing.',\n to: routes?.toIncidents?.(params) || ''\n },\n {\n id: 13,\n iconName: 'chaos-tests',\n title: t('component:navbar.chaos-engineering', 'Chaos Engineering'),\n description: 'Validate service resilience.',\n to: routes?.toChaosEngineering?.(params) || ''\n }\n ]\n },\n {\n groupId: 2,\n title: t('component:navbar.security', 'Security'),\n type: MenuGroupTypes.GENERAL,\n items: [\n {\n id: 14,\n iconName: 'security-tests',\n title: t('component:navbar.security-tests', 'Security Tests'),\n description: 'Shift left security testing.',\n to: routes?.toSecurityTests?.(params) || ''\n },\n {\n id: 15,\n iconName: 'runtime-security',\n title: t('component:navbar.runtime-security', 'Runtime Security'),\n description: 'Protect workloads at runtime.',\n to: routes?.toRuntimeSecurity?.(params) || ''\n },\n {\n id: 16,\n iconName: 'supply-chain',\n title: t('component:navbar.supply-chain', 'Supply Chain'),\n description: 'Artifact integrity and governance.',\n to: routes?.toSupplyChain?.(params) || ''\n }\n ]\n },\n {\n groupId: 3,\n title: t('component:navbar.efficiency', 'Efficiency'),\n type: MenuGroupTypes.GENERAL,\n items: [\n {\n id: 17,\n iconName: 'cloud-costs',\n title: t('component:navbar.cloud-costs', 'Cloud Costs'),\n description: 'Intelligent cost management.',\n to: routes?.toCloudCosts?.(params) || ''\n },\n {\n id: 18,\n iconName: 'engineering-insights',\n title: 'Engineerings Insights',\n description: 'Actionable insights on SDLC.',\n to: routes?.toDeveloperInsights?.(params) || ''\n }\n ]\n },\n {\n groupId: 4,\n title: t('component:navbar.platform', 'Platform'),\n type: MenuGroupTypes.GENERAL,\n items: [\n {\n id: 19,\n iconName: 'dashboard',\n title: t('component:navbar.dashboards', 'Dashboards'),\n description: 'Intelligent cost management.',\n to: routes?.toDashboards?.(params) || ''\n },\n {\n id: 20,\n iconName: 'account',\n title: t('component:navbar.account', 'Account'),\n description: 'Manage your account settings.',\n to: routes?.toAccount?.(params) || ''\n },\n {\n id: 21,\n iconName: 'organizations',\n title: t('component:navbar.organization', 'Organization'),\n description: 'Manage your organization settings.',\n to: routes?.toOrganization?.(params) || ''\n }\n ]\n }\n]\n","import { MenuGroupTypes } from '@/components'\n\nimport { GetNavbarMenuData } from '../types'\n\nexport const getNavbarSettingsMenuData: GetNavbarMenuData = ({ t, routes, params }) => [\n {\n groupId: 6,\n title: t('component:navbar.settings', 'Settings'),\n type: MenuGroupTypes.SETTINGS,\n items: [\n {\n id: 16,\n iconName: 'settings',\n title: t('component:navbar.general', 'General'),\n to: routes?.toSettings?.(params) || ''\n },\n {\n id: 32,\n iconName: 'user',\n title: t('component:navbar.access-control', 'Access Control'),\n to: routes?.toAccessControl?.(params) || ''\n },\n {\n id: 17,\n iconName: 'bell',\n title: t('component:navbar.notifications', 'Notifications'),\n to: routes?.toNotificationsManagement?.(params) || ''\n }\n ]\n },\n {\n groupId: 7,\n title: t('component:navbar.resources', 'Resources'),\n type: MenuGroupTypes.SETTINGS,\n items: [\n {\n id: 30,\n iconName: 'bookmark',\n title: t('component:navbar.certificates', 'Certificates'),\n to: routes?.toCertificates?.(params) || ''\n },\n {\n id: 20,\n iconName: 'connectors',\n title: t('component:navbar.connectors', 'Connectors'),\n to: routes?.toConnectors?.(params) || ''\n },\n {\n id: 18,\n iconName: 'services',\n title: t('component:navbar.services', 'Services'),\n to: routes?.toSettingsServices?.(params) || ''\n },\n {\n id: 22,\n iconName: 'key',\n title: t('component:navbar.secrets', 'Secrets'),\n to: routes?.toSecretsSettings?.(params) || ''\n },\n {\n id: 21,\n iconName: 'delegates',\n title: t('component:navbar.delegates', 'Delegates'),\n to: routes?.toDelegateList?.(params) || ''\n },\n {\n id: 19,\n iconName: 'environments',\n title: t('component:navbar.environments', 'Environments'),\n to: routes?.toSettingsEnvironments?.(params) || ''\n },\n {\n id: 25,\n iconName: 'variables',\n title: t('component:navbar.variables', 'Variables'),\n to: routes?.toVariables?.(params) || ''\n },\n {\n id: 24,\n iconName: 'sidebar',\n title: t('component:navbar.templates', 'Templates'),\n to: routes?.toTemplates?.(params) || ''\n },\n {\n id: 37,\n iconName: 'shield',\n title: t('component:navbar.policies', 'Policies'),\n to: routes?.toGovernancePolicyListingSettings?.(params) || ''\n },\n {\n id: 31,\n iconName: 'webhook',\n title: t('component:navbar.webhooks', 'Webhooks'),\n to: routes?.toWebhooks?.(params) || ''\n }\n ]\n }\n]\n","import { NavbarItemType } from '@/components'\nimport { TFunctionWithFallback } from '@/context'\n\n/**\n * No pinned menu items by default\n */\nexport const getPinnedMenuItems = (_t: TFunctionWithFallback): NavbarItemType[] => []\n","import { Drawer, GridProps, Layout, Sidebar } from '@/components'\n\nimport { ScopedMenuGroupType, ScopedNavbarItemType } from './types'\n\nexport default function SidebarGroupMenu({\n menuItems,\n columns\n}: {\n menuItems: ScopedMenuGroupType[]\n columns: GridProps['columns']\n}) {\n const renderMenuItems = (items: ScopedNavbarItemType[]) => (\n <Layout.Grid columns={columns} gap=\"4xs\">\n {items.map(item => (\n <Drawer.Close key={item.id} asChild>\n <Sidebar.Item to={item.to} title={item.title} icon={item.iconName} />\n </Drawer.Close>\n ))}\n </Layout.Grid>\n )\n\n return (\n <Layout.Flex direction=\"column\" gap=\"none\">\n {menuItems.map((group, index) => (\n <>\n <Sidebar.Group label={(group.title ?? '').toUpperCase()} key={group.groupId}>\n {renderMenuItems(group.items)}\n </Sidebar.Group>\n {index !== menuItems.length - 1 && <Sidebar.Separator />}\n </>\n ))}\n </Layout.Flex>\n )\n}\n","import { useCallback, useMemo, useState } from 'react'\n\nimport { AppSidebarItem, IconV2NamesType, NavbarItemType, Sidebar } from '@/components'\nimport { useNav } from '@hooks/useNav'\nimport { noop } from 'lodash-es'\n\ninterface SidebarItemProps {\n item: NavbarItemType\n isPinned?: boolean\n}\n\nexport default function SidebarItem({ item, isPinned }: SidebarItemProps) {\n const [open, setOpen] = useState(true)\n const { setRecent, setPinned } = useNav()\n\n const handleChangePinnedMenuItem = useCallback(\n (item: NavbarItemType, pin: boolean) => setPinned(item, pin),\n [setPinned]\n )\n\n const handleRemoveRecentMenuItem = useCallback((item: NavbarItemType) => setRecent(item, true), [setRecent])\n\n const actionButtons = useMemo(() => {\n if (item.permanentlyPinned) {\n return []\n }\n\n return [\n {\n iconName: isPinned ? ('pin-slash-solid' as IconV2NamesType) : ('pin' as IconV2NamesType),\n onClick: () => handleChangePinnedMenuItem(item, isPinned ? false : true)\n }\n ]\n }, [item, isPinned, handleChangePinnedMenuItem])\n\n if (Array.isArray(item.subItems) && item.subItems.length > 0) {\n return (\n <Sidebar.Item\n defaultSubmenuOpen={!isPinned}\n key={item.id}\n actionButtons={actionButtons}\n icon={item.iconName}\n title={item.title}\n subMenuOpen={open}\n onSubmenuChange={setOpen}\n >\n {item.subItems.map(subItem => (\n <Sidebar.MenuSubItem key={subItem.id} title={subItem.title} to={subItem.to} />\n ))}\n </Sidebar.Item>\n )\n }\n\n return (\n <AppSidebarItem\n key={item.id}\n hideMenuItems\n item={item}\n handleChangePinnedMenuItem={handleChangePinnedMenuItem}\n handleRemoveRecentMenuItem={handleRemoveRecentMenuItem}\n handleCustomNav={noop}\n actionButtons={actionButtons}\n />\n )\n}\n","import { useEffect, useMemo, useState } from 'react'\n\nimport {\n Drawer,\n ManageNavigation,\n Sidebar,\n useSidebar,\n type DrawerContentProps,\n type NavbarItemType\n} from '@/components'\nimport { useRouterContext, useTranslation } from '@/context'\nimport { cn } from '@/utils'\n\nimport { useLocationChange } from '../../hooks/useLocationChange'\nimport { useNav } from '../../hooks/useNav'\nimport { getNavbarMoreMenuData, NavItems } from './data/navbar-more-menu-items'\nimport { getNavbarSettingsMenuData } from './data/navbar-settings-menu-items'\nimport { getPinnedMenuItems } from './data/pinned-menu-items'\nimport SidebarGroupMenu from './sidebar-group-menu'\nimport SidebarItem from './sidebar-item'\nimport { NavEnum, RouteDefinitions } from './types'\n\ninterface NavLinkStorageInterface {\n state: {\n recentMenu: NavbarItemType[]\n pinnedMenu: NavbarItemType[]\n }\n}\n\nexport const SideNav: React.FC<{ routes?: RouteDefinitions }> = ({ routes }) => {\n const { useParams } = useRouterContext()\n const params = useParams()\n const { recentMenu, setRecent, pinnedMenu, setNavLinks } = useNav()\n const { state } = useSidebar()\n const { t } = useTranslation()\n const [showMoreMenu, setShowMoreMenu] = useState(false)\n const [showSettingsMenu, setShowSettingsMenu] = useState(false)\n\n const [showManageNavigation, setShowManageNavigation] = useState(false)\n\n const collapsed = useMemo(() => state === 'collapsed', [state])\n\n const commonParams = { ...params, mode: 'all' }\n\n const moreMenuItems = useMemo(() => getNavbarMoreMenuData({ t, routes, params: commonParams }), [t])\n const settingsMenuItems = useMemo(() => getNavbarSettingsMenuData({ t, routes, params: commonParams }), [t])\n const pinnedMenuItems = useMemo(() => getPinnedMenuItems(t), [t])\n const combinedMenuItems = useMemo(\n () => [\n ...pinnedMenuItems,\n ...moreMenuItems.flatMap(item => item.items),\n ...settingsMenuItems.flatMap(item => item.items)\n ],\n [pinnedMenuItems, moreMenuItems, settingsMenuItems]\n )\n\n // --- Initialization: Load from localStorage ---\n useEffect(() => {\n const stored = localStorage.getItem('nav-items')\n let parsed: NavLinkStorageInterface | undefined\n try {\n parsed = stored ? JSON.parse(stored) : undefined\n } catch {\n // Invalid JSON, use defaults\n parsed = undefined\n }\n\n if (parsed) {\n setNavLinks({\n pinned: parsed.state?.pinnedMenu?.length ? parsed.state.pinnedMenu : pinnedMenuItems,\n recents: parsed.state?.recentMenu ?? []\n })\n } else {\n // First time: set default pinned\n setNavLinks({ pinned: pinnedMenuItems, recents: [] })\n }\n }, [setNavLinks])\n\n useLocationChange({ items: combinedMenuItems, onRouteChange: item => setRecent(item) })\n\n const drawerContentCommonProps: DrawerContentProps = useMemo(\n () => ({\n className: cn('cn-sidebar-drawer-content z-20 overflow-x-hidden rounded', {\n 'cn-sidebar-menu-drawer-content-collapsed': collapsed\n }),\n overlayClassName: cn('bg-transparent z-20 opacity-0', {\n 'cn-sidebar-drawer-overlay-collapsed': collapsed\n }),\n onOpenAutoFocus: (e: Event) => {\n const target = e.target instanceof HTMLElement && e.target.querySelector('.cn-sidebar-item-wrapper a')\n if (target instanceof HTMLElement) target.focus()\n }\n }),\n [collapsed]\n )\n\n /**\n * Handle save recent and pinned items\n */\n const handleSave = (nextRecentItems: NavbarItemType[], nextPinnedItems: NavbarItemType[]) => {\n setNavLinks({\n pinned: nextPinnedItems,\n recents: nextRecentItems\n })\n }\n\n return (\n <>\n <Sidebar.Root className=\"z-10 cn-content-full-height\">\n <Sidebar.Content>\n <Sidebar.Group>\n {/* 👉 Static pinned menu */}\n <SidebarItem isPinned item={{ ...NavItems.get(NavEnum.Home)!, to: routes?.toHome?.(params) || '' }} />\n <SidebarItem\n isPinned\n item={{ ...NavItems.get(NavEnum.Activities)!, to: routes?.Activities?.(params) || '' }}\n />\n\n {/* 👉 User pinned menu */}\n {pinnedMenu.map(item => (\n <SidebarItem isPinned key={item.id} item={item} />\n ))}\n\n {/* 👉 Settings menu */}\n <Drawer.Root direction=\"left\" open={showSettingsMenu} onOpenChange={setShowSettingsMenu}>\n <Drawer.Trigger>\n <Sidebar.Item\n withRightIndicator\n title={NavItems.get(NavEnum.Settings)!.title}\n icon={NavItems.get(NavEnum.Settings)!.iconName}\n onHoverIn={() => setShowSettingsMenu(true)}\n onHoverOut={() => setShowSettingsMenu(false)}\n clickable={false}\n />\n </Drawer.Trigger>\n\n <Drawer.Content\n {...drawerContentCommonProps}\n size=\"2xs\"\n onPointerDownOutside={() => setShowSettingsMenu(false)}\n >\n <Drawer.Title className=\"sr-only\">Settings menu</Drawer.Title>\n <Drawer.Description className=\"sr-only\">Settings menu</Drawer.Description>\n <Drawer.Body>\n <SidebarGroupMenu menuItems={settingsMenuItems} columns={1} />\n </Drawer.Body>\n </Drawer.Content>\n </Drawer.Root>\n\n {/* 👉 More menu */}\n <Drawer.Root direction=\"left\" open={showMoreMenu} onOpenChange={setShowMoreMenu}>\n <Drawer.Trigger>\n <Sidebar.Item\n title=\"More\"\n icon=\"menu-more-horizontal\"\n withRightIndicator\n onHoverIn={() => setShowMoreMenu(true)}\n onHoverOut={() => setShowMoreMenu(false)}\n clickable={false}\n />\n </Drawer.Trigger>\n\n <Drawer.Content\n {...drawerContentCommonProps}\n size=\"xs\"\n onPointerDownOutside={() => setShowMoreMenu(false)}\n >\n <Drawer.Title className=\"sr-only\">More menu</Drawer.Title>\n <Drawer.Description className=\"sr-only\">More menu</Drawer.Description>\n <Drawer.Body>\n <SidebarGroupMenu menuItems={moreMenuItems} columns={2} />\n </Drawer.Body>\n </Drawer.Content>\n </Drawer.Root>\n </Sidebar.Group>\n\n <Sidebar.Separator />\n\n {/* 👉 Recent menu */}\n <Sidebar.Group\n label=\"RECENT\"\n onActionClick={() => {\n setShowManageNavigation(true)\n }}\n >\n {recentMenu.map(item => (\n <SidebarItem key={item.id} item={item} />\n ))}\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.Root>\n\n <ManageNavigation\n pinnedItems={pinnedMenu}\n recentItems={recentMenu}\n navbarMenuData={moreMenuItems}\n showManageNavigation={showManageNavigation}\n isSubmitting={false}\n submitted={false}\n onSave={handleSave}\n onClose={() => setShowManageNavigation(false)}\n />\n </>\n )\n}\n","import { Avatar, Button, DropdownMenu, IconV2 } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { noop } from 'lodash-es'\n\nimport { RouteDefinitions } from './types'\n\nexport default function AvatarDropdown({ routes }: { routes?: RouteDefinitions }) {\n const { Link } = useRouterContext()\n const user = {\n name: 'John Doe',\n email: 'john.doe@gmail.com'\n }\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button variant=\"ghost\" size=\"sm\" rounded className=\"pl-0 pr-cn-xs\">\n <Avatar rounded name={user?.name || user?.email} size=\"md\" />\n <IconV2 name=\"nav-arrow-down\" size=\"2xs\" />\n </Button>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content>\n <Link to={routes?.toUserProfile({ accountId: 'accountId' }) ?? ''}>\n <DropdownMenu.IconItem icon=\"user\" title=\"Profile\" className=\"cursor-pointer\" />\n </Link>\n <DropdownMenu.Separator />\n <DropdownMenu.IconItem\n icon=\"docs\"\n title=\"Documentation\"\n className=\"cursor-pointer\"\n onClick={() => window.open('https://developer.harness.io/docs/', '_blank')}\n />\n <DropdownMenu.IconItem\n icon=\"shield\"\n title=\"Privacy\"\n className=\"cursor-pointer\"\n onClick={() => window.open('https://www.harness.io/legal/privacy', '_blank')}\n />\n <DropdownMenu.Separator />\n\n <DropdownMenu.IconItem icon=\"logout\" title=\"Logout\" className=\"cursor-pointer\" onClick={noop} />\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n","const ScopeSelector = () => {\n return <div>Scope</div>\n}\n\nexport default ScopeSelector\n","import { HarnessLogo, Layout } from '@/components'\nimport { useRouterContext } from '@/context'\n\nimport AvatarDropdown from './avatar-dropdown'\nimport ScopeSelector from './scope-selector'\n\nexport default function Header() {\n const { Link } = useRouterContext()\n\n return (\n <Layout.Flex className=\"bg-cn-0 p-cn-header h-cn-header\" gap=\"md\" justify=\"between\" align=\"center\">\n <Link to=\"/\">\n <HarnessLogo />\n </Link>\n <div className=\"w-full\">\n <ScopeSelector />\n </div>\n <AvatarDropdown />\n </Layout.Flex>\n )\n}\n","import { Layout, Sidebar } from '@/components'\n\nimport Header from './header'\n\nexport const SidebarLayout = ({\n sidebar,\n chat,\n mainContent\n}: {\n sidebar: React.ReactNode\n chat: React.ReactNode\n mainContent: React.ReactNode\n}) => {\n return (\n <Layout.Flex className=\"w-full\" direction=\"column\">\n <Header />\n <Layout.Grid columns=\"auto 1fr\">\n {sidebar}\n\n <Sidebar.Rail animate />\n\n <Sidebar.Inset className=\"bg-cn-1 grid grid-cols-[auto_1fr] border border-l-0 rounded-t-cn-3 cn-content-full-height mr-cn-2xs\">\n <div className=\"overflow-y-auto overflow-x-hidden\">{chat}</div>\n <div className=\"overflow-y-auto overflow-x-hidden\">{mainContent}</div>\n </Sidebar.Inset>\n </Layout.Grid>\n </Layout.Flex>\n )\n}\n"],"names":["DraggableItem","id","children","Tag","className","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","cn","filterRecentItems","pinnedItems","recentItems","item","pinnedItem","ManageNavigation","showManageNavigation","onSave","onClose","isSubmitting","submitted","currentPinnedItems","setCurrentPinnedItems","useState","currentFilteredRecentItems","setCurrentFilteredRecentItems","isRecentCleared","setIsRecentCleared","useEffect","handleDragEnd","getItemId","useDragAndDrop","handleCancel","handleClearRecent","onSubmit","updatePinnedItems","items","prevRecentItems","unpinnedItems","newItem","recentItem","addToPinnedItems","removeFromPinnedItems","permanentlyPinnedItems","useMemo","draggablePinnedItems","jsx","Dialog","jsxs","Layout","Text","DndContext","closestCenter","args","SortableContext","_","index","IconV2","Button","ButtonLayout","Fragment","MenuGroupTypes","UserMenuKeys","getRandomPixelWidth","min","max","SkeletonFileExplorer","linesCount","Skeleton","FileViewerControlBar","view","isMarkdown","fileBytesSize","fileContent","url","isGitLfsObject","handleDownloadFile","handleEditFile","_handleOpenDeleteDialog","refType","BranchSelectorTab","triggerRef","registerTrigger","useCustomDialogTrigger","handleViewRaw","handleOpenDeleteDialog","useCallback","rightDetails","Separator","FileToolbarActions","DropdownMenu","StackedList","Tabs","FileEditorControlBar","showPreview","createGitCommitSchema","isFileNameRequired","fileNameSchema","z","CommitToGitRefOption","data","ctx","GitCommitDialog","isOpen","onFormSubmit","commitTitlePlaceHolder","dryRun","currentBranch","violation","bypassable","setAllStates","disableCTA","error","t","useTranslation","formMethods","useForm","zodResolver","register","handleSubmit","setValue","watch","reset","isDisabledSubmission","commitToGitRefValue","fileNameValue","newBranchNameValue","handleDialogClose","open","FormWrapper","FormInput","ControlGroup","Radio","Link","Message","MessageTheme","commitSuggestionsSchema","CommitSuggestionsDialog","Alert","isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","a","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","Alignment","align","viewSize","predefined","start","center","end","measure","EventStore","add","node","type","handler","options","removeListener","legacyMediaQueryList","self","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","destroy","stop","animate","timeStamp","timeElapsed","alpha","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","direction","Limit","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","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","emblaApi","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","next","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","pointerDown","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","pointerUp","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","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","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","event","Vector1D","initialValue","value","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","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","map","EmblaCarousel","userOptions","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","optionsBase","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","viewport","setViewport","newEmblaApi","CarouselContext","createContext","useCarousel","context","useContext","CarouselRoot","forwardRef","orientation","opts","setApi","initialSlide","props","ref","carouselRef","setCanScrollPrev","setCanScrollNext","onSelect","handleKeyDown","scrollToSlide","CarouselContent","carouselBlockClassName","CarouselItem","CarouselPrevious","variant","theme","size","CarouselNext","Carousel","ImageCarousel","setIsOpen","imgEvent","title","zoomLevel","setZoomLevel","INITIAL_ZOOM_LEVEL","Spacer","image","idx","ZOOM_INC_DEC_LEVEL","isElement","Topbar","hasCenter","React","child","RepoTabsKeys","repoTabsKeysArr","RepoSubheader","showPipelinesTab","showSearchTab","summaryPath","filesPath","commitsPath","isRepoEmpty","SandboxLayout","Root","Header","Body","Footer","avatar","actions","Illustration","CodeBlock","Typing","emptyStateButtons","EmptyState","text","InputField","inputRef","onChange","onKeyDown","onSend","placeholder","sendIcon","Input","Chat","ChatDiffViewer","mode","lang","fileName","setLoading","diffFileInstance","setDiffFileInstance","highlighter","setHighlighter","shikiHighlighter","getDiffViewHighlighter","setDiffInstanceCb","debounce","diffString","content","DiffFile","DiffModeEnum","DiffView","diffData","ChatPreviewWrapper","ChatEmptyPreviewWrapper","MessageBubbleRoot","role","MessageBubbleContent","MessageBubbleText","MessageBubbleMarkdown","MarkdownViewer","MessageBubble","PromptInputRoot","PromptInputTextarea","Textarea","form","PromptInputToolbar","PromptInputTools","PromptInputSubmit","status","Icon","PromptInputButton","PromptInput","shimmerVariants","cva","typographyVariantConfig","ShimmerComponent","Component","spread","color","MotionComponent","motion","dynamicSpread","Shimmer","memo","ReasoningContext","useReasoning","AUTO_CLOSE_DELAY","MS_IN_S","ReasoningRoot","isStreaming","defaultOpen","onOpenChange","durationProp","setDuration","hasAutoClosed","setHasAutoClosed","startTimeRef","timer","handleOpenChange","newOpen","CollapsiblePrimitive.Root","defaultGetThinkingMessage","ReasoningTrigger","getThinkingMessage","CollapsiblePrimitive.Trigger","ReasoningContent","CollapsiblePrimitive.Content","Reasoning","functionalUpdate","updater","input","makeStateUpdater","instance","old","isFunction","d","isNumberArray","val","flattenBy","arr","getChildren","flat","recurse","subArr","getDeps","fn","deps","result","depArgs","depTime","newDeps","dep","resultTime","depEndTime","resultEndTime","resultFpsPercentage","pad","str","getMemoOptions","tableOptions","debugLevel","_tableOptions$debugAl","createCell","table","row","column","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$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","_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","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","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","nextValue","extent","mean","leafRows","count","median","values","mid","nums","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","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","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","isSelected","_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","compareBasic","textCaseSensitive","datetime","basic","aStr","bStr","aa","bb","an","bn","combo","sortingFns","RowSorting","firstRows","_table$options$sortin","_table$options$sortin2","desc","multi","nextSortingOrder","hasManualValue","existingSorting","existingIndex","newSorting","sortAction","nextDesc","_table$options$maxMul","_column$columnDef$sor","firstSortDirection","isSorted","_column$columnDef$ena2","_table$getState$sorti","columnSort","_table$getState$sorti2","_table$getState$sorti3","canSort","_table$initialState$s","builtInFeatures","createTable","_options$_features","_options$initialState","_features","initialState","_feature$getInitialSt","queuedTimeout","coreInstance","newOptions","searchAll","defaultColumn","_defaultColumn","_props$renderValue$to","_props$renderValue","columnDefs","recurseColumns","groupingColumnDef","flatColumns","getCoreRowModel","accessRows","originalRows","_row$originalSubRows","flexRender","Comp","isReactComponent","component","isClassComponent","isExoticComponent","proto","useReactTable","resolvedOptions","tableRef","setState","getCommonPinningStyles","isPinned","isLastLeftPinnedColumn","_a","isFirstRightPinnedColumn","_b","DataTable","paginationProps","getRowClassName","onRowClick","disableHighlightOnHover","currentSorting","currentRowSelection","externalOnSortingChange","enableRowSelection","externalOnRowSelectionChange","enableExpanding","getRowCanExpand","getRowCanSelect","currentExpanded","externalOnExpandedChange","renderSubComponent","_enableColumnResizing","getRowId","visibleColumns","columnPinning","tableColumns","cols","handleToggleAll","Checkbox","hideableColumns","hasPinnedColumns","Table","DataTableColumnFilterDropdown","onCheckedChange","onReset","checked","DataTableRoot","DraggableCard","description","disableDragAndDrop","cardProps","Card","DraggableCardList","cards","setCards","sensors","useSensors","useSensor","PointerSensor","card","splitArray","midPoint","firstHalf","secondHalf","ViewOnlyItem","label","isLoading","valueNode","isWideEnoughForColumns","ViewOnly","layout","isLayoutColumns","setIsLayoutColumns","contentRef","useLayoutEffect","el","useResizeObserver","renderItem","isValidElement","isSeparatorVisible","leftColumnData","rightColumnData","wrapConditionalObjectElement","WidgetsContext","isTwoColumnProp","isTwoColumn","Children","Item","moreLink","isWidgetTable","ScrollArea","Widgets","isGroupCard","icon","Content","message","ExpandButton","stepCount","isExpanded","onToggle","stackCount","Status","getStatusConfig","StatusBadge","CustomActions","StudioCard","jt","ee","ae","oe","se","te","Yt","E","Ot","Ft","$t","bt","yt","S","u","f","w","re","ie","T","F","D","ne","le","ce","de","ue","wt","tt","pe","me","ge","Wt","he","be","ye","we","M","xe","ve","Dt","Pt","Nt","Bt","Ct","kt","It","Mt","Ht","At","Lt","et","ut","ft","l","ot","at","X","st","pt","rt","B","s","P","nt","it","Y","C","o","lt","J","W","H","A","mt","L","ct","R","j","p","O","G","k","Vt","Ut","N","V","Xt","dt","r","Jt","Tt","gt","U","St","K","Gt","Qt","Rt","m","Et","qt","ht","$","Zt","Q","q","Z","I","zt","xt","_t","Te","$e","fe","vt","toastVariants","MAX_HEIGHT","CustomToast","toastId","closeButton","action","promise","successMessage","errorMessage","internalVariant","setInternalVariant","internalTitle","setInternalTitle","isOverflowing","setIsOverflowing","setIsExpanded","showExpandButton","toggleExpand","scrollHeight","sonnerToast","titleIcon","DEFAULT_DURATION","defaultToast","dismissible","infoToast","successToast","dangerToast","loadingToast","promiseToast","loadingMessage","toast","Toaster","SonnerToaster","ChatV2","collapsed","setCollapsed","containerRef","isCollapsed","useLocationChange","onRouteChange","useRouterContext","matchedItem","RECENT_KEY","PINNED_KEY","mockPinnedItems","mockRecentItems","setLocal","useNav","recentMenu","pinnedMenu","updated","filtered","pin","recents","pinned","NavEnum","NavItems","getNavbarMoreMenuData","routes","params","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_u","_v","getNavbarSettingsMenuData","getPinnedMenuItems","SidebarGroupMenu","menuItems","renderMenuItems","Drawer","Sidebar","SidebarItem","setOpen","setRecent","setPinned","handleChangePinnedMenuItem","handleRemoveRecentMenuItem","actionButtons","subItem","AppSidebarItem","SideNav","useParams","setNavLinks","useSidebar","showMoreMenu","setShowMoreMenu","showSettingsMenu","setShowSettingsMenu","setShowManageNavigation","commonParams","moreMenuItems","settingsMenuItems","pinnedMenuItems","combinedMenuItems","stored","parsed","drawerContentCommonProps","handleSave","nextRecentItems","nextPinnedItems","AvatarDropdown","user","Avatar","ScopeSelector","HarnessLogo","SidebarLayout","sidebar","chat","mainContent"],"mappings":"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","x_google_ignoreList":[10,11,12,25,26,35]}