@harnessio/ui 0.0.226 → 0.0.227
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components.d.ts +9 -0
- package/dist/components.js +61 -60
- package/dist/{index-yy4P7w4N.js → index-CKWZmzUD.js} +766 -743
- package/dist/index-CKWZmzUD.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +1 -1
- package/package.json +3 -3
- package/dist/index-yy4P7w4N.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-yy4P7w4N.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","../../../node_modules/.pnpm/diff@7.0.0/node_modules/diff/lib/index.mjs","../../../node_modules/.pnpm/@git-diff-view+file@0.0.30/node_modules/@git-diff-view/file/dist/esm/index.mjs","../src/components/diff-viewer/use-diff-highlighter.ts","../src/components/diff-viewer/diff-viewer.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","function Diff() {}\nDiff.prototype = {\n diff: function diff(oldString, newString) {\n var _options$timeout;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n var self = this;\n function done(value) {\n value = self.postProcess(value, options);\n if (callback) {\n setTimeout(function () {\n callback(value);\n }, 0);\n return true;\n } else {\n return value;\n }\n }\n\n // Allow subclasses to massage the input prior to running\n oldString = this.castInput(oldString, options);\n newString = this.castInput(newString, options);\n oldString = this.removeEmpty(this.tokenize(oldString, options));\n newString = this.removeEmpty(this.tokenize(newString, options));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n var maxExecutionTime = (_options$timeout = options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }];\n\n // Seed editLength = 0, i.e. the content starts with the same values\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(buildValues(self, bestPath[0].lastComponent, newString, oldString, self.useLongestToken));\n }\n\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity;\n\n // Main worker method. checks all permutations of a given edit length for acceptance.\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath = void 0;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n var canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n }\n\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, false, 0, options);\n } else {\n basePath = self.addToPath(removePath, false, true, 1, options);\n }\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n }\n\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n },\n addToPath: function addToPath(path, added, removed, oldPosInc, options) {\n var last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath, options) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldString[oldPos + 1], newString[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = {\n count: 1,\n previousComponent: basePath.lastComponent,\n added: false,\n removed: false\n };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent,\n added: false,\n removed: false\n };\n }\n basePath.oldPos = oldPos;\n return newPos;\n },\n equals: function equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n } else {\n return left === right || options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n },\n castInput: function castInput(value) {\n return value;\n },\n tokenize: function tokenize(value) {\n return Array.from(value);\n },\n join: function join(chars) {\n return chars.join('');\n },\n postProcess: function postProcess(changeObjects) {\n return changeObjects;\n }\n};\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n}\n\nvar characterDiff = new Diff();\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n\nfunction longestCommonPrefix(str1, str2) {\n var i;\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[i] != str2[i]) {\n return str1.slice(0, i);\n }\n }\n return str1.slice(0, i);\n}\nfunction longestCommonSuffix(str1, str2) {\n var i;\n\n // Unlike longestCommonPrefix, we need a special case to handle all scenarios\n // where we return the empty string since str1.slice(-0) will return the\n // entire string.\n if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {\n return '';\n }\n for (i = 0; i < str1.length && i < str2.length; i++) {\n if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {\n return str1.slice(-i);\n }\n }\n return str1.slice(-i);\n}\nfunction replacePrefix(string, oldPrefix, newPrefix) {\n if (string.slice(0, oldPrefix.length) != oldPrefix) {\n throw Error(\"string \".concat(JSON.stringify(string), \" doesn't start with prefix \").concat(JSON.stringify(oldPrefix), \"; this is a bug\"));\n }\n return newPrefix + string.slice(oldPrefix.length);\n}\nfunction replaceSuffix(string, oldSuffix, newSuffix) {\n if (!oldSuffix) {\n return string + newSuffix;\n }\n if (string.slice(-oldSuffix.length) != oldSuffix) {\n throw Error(\"string \".concat(JSON.stringify(string), \" doesn't end with suffix \").concat(JSON.stringify(oldSuffix), \"; this is a bug\"));\n }\n return string.slice(0, -oldSuffix.length) + newSuffix;\n}\nfunction removePrefix(string, oldPrefix) {\n return replacePrefix(string, oldPrefix, '');\n}\nfunction removeSuffix(string, oldSuffix) {\n return replaceSuffix(string, oldSuffix, '');\n}\nfunction maximumOverlap(string1, string2) {\n return string2.slice(0, overlapCount(string1, string2));\n}\n\n// Nicked from https://stackoverflow.com/a/60422853/1709587\nfunction overlapCount(a, b) {\n // Deal with cases where the strings differ in length\n var startA = 0;\n if (a.length > b.length) {\n startA = a.length - b.length;\n }\n var endB = b.length;\n if (a.length < b.length) {\n endB = a.length;\n }\n // Create a back-reference for each index\n // that should be followed in case of a mismatch.\n // We only need B to make these references:\n var map = Array(endB);\n var k = 0; // Index that lags behind j\n map[0] = 0;\n for (var j = 1; j < endB; j++) {\n if (b[j] == b[k]) {\n map[j] = map[k]; // skip over the same character (optional optimisation)\n } else {\n map[j] = k;\n }\n while (k > 0 && b[j] != b[k]) {\n k = map[k];\n }\n if (b[j] == b[k]) {\n k++;\n }\n }\n // Phase 2: use these references while iterating over A\n k = 0;\n for (var i = startA; i < a.length; i++) {\n while (k > 0 && a[i] != b[k]) {\n k = map[k];\n }\n if (a[i] == b[k]) {\n k++;\n }\n }\n return k;\n}\n\n/**\n * Returns true if the string consistently uses Windows line endings.\n */\nfunction hasOnlyWinLineEndings(string) {\n return string.includes('\\r\\n') && !string.startsWith('\\n') && !string.match(/[^\\r]\\n/);\n}\n\n/**\n * Returns true if the string consistently uses Unix line endings.\n */\nfunction hasOnlyUnixLineEndings(string) {\n return !string.includes('\\r\\n') && string.includes('\\n');\n}\n\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = \"a-zA-Z0-9_\\\\u{C0}-\\\\u{FF}\\\\u{D8}-\\\\u{F6}\\\\u{F8}-\\\\u{2C6}\\\\u{2C8}-\\\\u{2D7}\\\\u{2DE}-\\\\u{2FF}\\\\u{1E00}-\\\\u{1EFF}\";\n\n// Each token is one of the following:\n// - A punctuation mark plus the surrounding whitespace\n// - A word plus the surrounding whitespace\n// - Pure whitespace (but only in the special case where this the entire text\n// is just whitespace)\n//\n// We have to include surrounding whitespace in the tokens because the two\n// alternative approaches produce horribly broken results:\n// * If we just discard the whitespace, we can't fully reproduce the original\n// text from the sequence of tokens and any attempt to render the diff will\n// get the whitespace wrong.\n// * If we have separate tokens for whitespace, then in a typical text every\n// second token will be a single space character. But this often results in\n// the optimal diff between two texts being a perverse one that preserves\n// the spaces between words but deletes and reinserts actual common words.\n// See https://github.com/kpdecker/jsdiff/issues/160#issuecomment-1866099640\n// for an example.\n//\n// Keeping the surrounding whitespace of course has implications for .equals\n// and .join, not just .tokenize.\n\n// This regex does NOT fully implement the tokenization rules described above.\n// Instead, it gives runs of whitespace their own \"token\". The tokenize method\n// then handles stitching whitespace tokens onto adjacent word or punctuation\n// tokens.\nvar tokenizeIncludingWhitespace = new RegExp(\"[\".concat(extendedWordChars, \"]+|\\\\s+|[^\").concat(extendedWordChars, \"]\"), 'ug');\nvar wordDiff = new Diff();\nwordDiff.equals = function (left, right, options) {\n if (options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n return left.trim() === right.trim();\n};\nwordDiff.tokenize = function (value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parts;\n if (options.intlSegmenter) {\n if (options.intlSegmenter.resolvedOptions().granularity != 'word') {\n throw new Error('The segmenter passed must have a granularity of \"word\"');\n }\n parts = Array.from(options.intlSegmenter.segment(value), function (segment) {\n return segment.segment;\n });\n } else {\n parts = value.match(tokenizeIncludingWhitespace) || [];\n }\n var tokens = [];\n var prevPart = null;\n parts.forEach(function (part) {\n if (/\\s/.test(part)) {\n if (prevPart == null) {\n tokens.push(part);\n } else {\n tokens.push(tokens.pop() + part);\n }\n } else if (/\\s/.test(prevPart)) {\n if (tokens[tokens.length - 1] == prevPart) {\n tokens.push(tokens.pop() + part);\n } else {\n tokens.push(prevPart + part);\n }\n } else {\n tokens.push(part);\n }\n prevPart = part;\n });\n return tokens;\n};\nwordDiff.join = function (tokens) {\n // Tokens being joined here will always have appeared consecutively in the\n // same text, so we can simply strip off the leading whitespace from all the\n // tokens except the first (and except any whitespace-only tokens - but such\n // a token will always be the first and only token anyway) and then join them\n // and the whitespace around words and punctuation will end up correct.\n return tokens.map(function (token, i) {\n if (i == 0) {\n return token;\n } else {\n return token.replace(/^\\s+/, '');\n }\n }).join('');\n};\nwordDiff.postProcess = function (changes, options) {\n if (!changes || options.oneChangePerToken) {\n return changes;\n }\n var lastKeep = null;\n // Change objects representing any insertion or deletion since the last\n // \"keep\" change object. There can be at most one of each.\n var insertion = null;\n var deletion = null;\n changes.forEach(function (change) {\n if (change.added) {\n insertion = change;\n } else if (change.removed) {\n deletion = change;\n } else {\n if (insertion || deletion) {\n // May be false at start of text\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change);\n }\n lastKeep = change;\n insertion = null;\n deletion = null;\n }\n });\n if (insertion || deletion) {\n dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null);\n }\n return changes;\n};\nfunction diffWords(oldStr, newStr, options) {\n // This option has never been documented and never will be (it's clearer to\n // just call `diffWordsWithSpace` directly if you need that behavior), but\n // has existed in jsdiff for a long time, so we retain support for it here\n // for the sake of backwards compatibility.\n if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {\n return diffWordsWithSpace(oldStr, newStr, options);\n }\n return wordDiff.diff(oldStr, newStr, options);\n}\nfunction dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep) {\n // Before returning, we tidy up the leading and trailing whitespace of the\n // change objects to eliminate cases where trailing whitespace in one object\n // is repeated as leading whitespace in the next.\n // Below are examples of the outcomes we want here to explain the code.\n // I=insert, K=keep, D=delete\n // 1. diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want: K:'foo ' D:'bar ' K:'baz'\n //\n // 2. Diffing 'foo bar baz' vs 'foo qux baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' I:' qux ' K:' baz'\n // After cleanup, we want K:'foo ' D:'bar' I:'qux' K:' baz'\n //\n // 3. Diffing 'foo\\nbar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:'\\nbar ' K:' baz'\n // After cleanup, we want K'foo' D:'\\nbar' K:' baz'\n //\n // 4. Diffing 'foo baz' vs 'foo\\nbar baz'\n // Prior to cleanup, we have K:'foo\\n' I:'\\nbar ' K:' baz'\n // After cleanup, we ideally want K'foo' I:'\\nbar' K:' baz'\n // but don't actually manage this currently (the pre-cleanup change\n // objects don't contain enough information to make it possible).\n //\n // 5. Diffing 'foo bar baz' vs 'foo baz'\n // Prior to cleanup, we have K:'foo ' D:' bar ' K:' baz'\n // After cleanup, we want K:'foo ' D:' bar ' K:'baz'\n //\n // Our handling is unavoidably imperfect in the case where there's a single\n // indel between keeps and the whitespace has changed. For instance, consider\n // diffing 'foo\\tbar\\nbaz' vs 'foo baz'. Unless we create an extra change\n // object to represent the insertion of the space character (which isn't even\n // a token), we have no way to avoid losing information about the texts'\n // original whitespace in the result we return. Still, we do our best to\n // output something that will look sensible if we e.g. print it with\n // insertions in green and deletions in red.\n\n // Between two \"keep\" change objects (or before the first or after the last\n // change object), we can have either:\n // * A \"delete\" followed by an \"insert\"\n // * Just an \"insert\"\n // * Just a \"delete\"\n // We handle the three cases separately.\n if (deletion && insertion) {\n var oldWsPrefix = deletion.value.match(/^\\s*/)[0];\n var oldWsSuffix = deletion.value.match(/\\s*$/)[0];\n var newWsPrefix = insertion.value.match(/^\\s*/)[0];\n var newWsSuffix = insertion.value.match(/\\s*$/)[0];\n if (startKeep) {\n var commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);\n startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);\n deletion.value = removePrefix(deletion.value, commonWsPrefix);\n insertion.value = removePrefix(insertion.value, commonWsPrefix);\n }\n if (endKeep) {\n var commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);\n endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);\n deletion.value = removeSuffix(deletion.value, commonWsSuffix);\n insertion.value = removeSuffix(insertion.value, commonWsSuffix);\n }\n } else if (insertion) {\n // The whitespaces all reflect what was in the new text rather than\n // the old, so we essentially have no information about whitespace\n // insertion or deletion. We just want to dedupe the whitespace.\n // We do that by having each change object keep its trailing\n // whitespace and deleting duplicate leading whitespace where\n // present.\n if (startKeep) {\n insertion.value = insertion.value.replace(/^\\s*/, '');\n }\n if (endKeep) {\n endKeep.value = endKeep.value.replace(/^\\s*/, '');\n }\n // otherwise we've got a deletion and no insertion\n } else if (startKeep && endKeep) {\n var newWsFull = endKeep.value.match(/^\\s*/)[0],\n delWsStart = deletion.value.match(/^\\s*/)[0],\n delWsEnd = deletion.value.match(/\\s*$/)[0];\n\n // Any whitespace that comes straight after startKeep in both the old and\n // new texts, assign to startKeep and remove from the deletion.\n var newWsStart = longestCommonPrefix(newWsFull, delWsStart);\n deletion.value = removePrefix(deletion.value, newWsStart);\n\n // Any whitespace that comes straight before endKeep in both the old and\n // new texts, and hasn't already been assigned to startKeep, assign to\n // endKeep and remove from the deletion.\n var newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);\n deletion.value = removeSuffix(deletion.value, newWsEnd);\n endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);\n\n // If there's any whitespace from the new text that HASN'T already been\n // assigned, assign it to the start:\n startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));\n } else if (endKeep) {\n // We are at the start of the text. Preserve all the whitespace on\n // endKeep, and just remove whitespace from the end of deletion to the\n // extent that it overlaps with the start of endKeep.\n var endKeepWsPrefix = endKeep.value.match(/^\\s*/)[0];\n var deletionWsSuffix = deletion.value.match(/\\s*$/)[0];\n var overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);\n deletion.value = removeSuffix(deletion.value, overlap);\n } else if (startKeep) {\n // We are at the END of the text. Preserve all the whitespace on\n // startKeep, and just remove whitespace from the start of deletion to\n // the extent that it overlaps with the end of startKeep.\n var startKeepWsSuffix = startKeep.value.match(/\\s*$/)[0];\n var deletionWsPrefix = deletion.value.match(/^\\s*/)[0];\n var _overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);\n deletion.value = removePrefix(deletion.value, _overlap);\n }\n}\nvar wordWithSpaceDiff = new Diff();\nwordWithSpaceDiff.tokenize = function (value) {\n // Slightly different to the tokenizeIncludingWhitespace regex used above in\n // that this one treats each individual newline as a distinct tokens, rather\n // than merging them into other surrounding whitespace. This was requested\n // in https://github.com/kpdecker/jsdiff/issues/180 &\n // https://github.com/kpdecker/jsdiff/issues/211\n var regex = new RegExp(\"(\\\\r?\\\\n)|[\".concat(extendedWordChars, \"]+|[^\\\\S\\\\n\\\\r]+|[^\").concat(extendedWordChars, \"]\"), 'ug');\n return value.match(regex) || [];\n};\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordWithSpaceDiff.diff(oldStr, newStr, options);\n}\n\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n return defaults;\n}\n\nvar lineDiff = new Diff();\nlineDiff.tokenize = function (value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n\n // Merge the content and line separators into single tokens\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n retLines.push(line);\n }\n }\n return retLines;\n};\nlineDiff.equals = function (left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n } else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return Diff.prototype.equals.call(this, left, right, options);\n};\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\n// Kept for backwards compatibility. This is a rather arbitrary wrapper method\n// that just calls `diffLines` with `ignoreWhitespace: true`. It's confusing to\n// have two ways to do exactly the same thing in the API, so we no longer\n// document this one (library users should explicitly use `diffLines` with\n// `ignoreWhitespace: true` instead) but we keep it around to maintain\n// compatibility with code that used old versions.\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options = generateOptions(callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n\nvar sentenceDiff = new Diff();\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n\nvar cssDiff = new Diff();\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar jsonDiff = new Diff();\n// Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\njsonDiff.useLongestToken = true;\njsonDiff.tokenize = lineDiff.tokenize;\njsonDiff.castInput = function (value, options) {\n var undefinedReplacement = options.undefinedReplacement,\n _options$stringifyRep = options.stringifyReplacer,\n stringifyReplacer = _options$stringifyRep === void 0 ? function (k, v) {\n return typeof v === 'undefined' ? undefinedReplacement : v;\n } : _options$stringifyRep;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\njsonDiff.equals = function (left, right, options) {\n return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'), options);\n};\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n}\n\n// This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n if (replacer) {\n obj = replacer(key, obj);\n }\n var i;\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n var canonicalizedObj;\n if ('[object Array]' === Object.prototype.toString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n if (_typeof(obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n var sortedKeys = [],\n _key;\n for (_key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, _key)) {\n sortedKeys.push(_key);\n }\n }\n sortedKeys.sort();\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n return canonicalizedObj;\n}\n\nvar arrayDiff = new Diff();\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n\nfunction unixToWin(patch) {\n if (Array.isArray(patch)) {\n return patch.map(unixToWin);\n }\n return _objectSpread2(_objectSpread2({}, patch), {}, {\n hunks: patch.hunks.map(function (hunk) {\n return _objectSpread2(_objectSpread2({}, hunk), {}, {\n lines: hunk.lines.map(function (line, i) {\n var _hunk$lines;\n return line.startsWith('\\\\') || line.endsWith('\\r') || (_hunk$lines = hunk.lines[i + 1]) !== null && _hunk$lines !== void 0 && _hunk$lines.startsWith('\\\\') ? line : line + '\\r';\n })\n });\n })\n });\n}\nfunction winToUnix(patch) {\n if (Array.isArray(patch)) {\n return patch.map(winToUnix);\n }\n return _objectSpread2(_objectSpread2({}, patch), {}, {\n hunks: patch.hunks.map(function (hunk) {\n return _objectSpread2(_objectSpread2({}, hunk), {}, {\n lines: hunk.lines.map(function (line) {\n return line.endsWith('\\r') ? line.substring(0, line.length - 1) : line;\n })\n });\n })\n });\n}\n\n/**\n * Returns true if the patch consistently uses Unix line endings (or only involves one line and has\n * no line endings).\n */\nfunction isUnix(patch) {\n if (!Array.isArray(patch)) {\n patch = [patch];\n }\n return !patch.some(function (index) {\n return index.hunks.some(function (hunk) {\n return hunk.lines.some(function (line) {\n return !line.startsWith('\\\\') && line.endsWith('\\r');\n });\n });\n });\n}\n\n/**\n * Returns true if the patch uses Windows line endings and only Windows line endings.\n */\nfunction isWin(patch) {\n if (!Array.isArray(patch)) {\n patch = [patch];\n }\n return patch.some(function (index) {\n return index.hunks.some(function (hunk) {\n return hunk.lines.some(function (line) {\n return line.endsWith('\\r');\n });\n });\n }) && patch.every(function (index) {\n return index.hunks.every(function (hunk) {\n return hunk.lines.every(function (line, i) {\n var _hunk$lines2;\n return line.startsWith('\\\\') || line.endsWith('\\r') || ((_hunk$lines2 = hunk.lines[i + 1]) === null || _hunk$lines2 === void 0 ? void 0 : _hunk$lines2.startsWith('\\\\'));\n });\n });\n });\n}\n\nfunction parsePatch(uniDiff) {\n var diffstr = uniDiff.split(/\\n/),\n list = [],\n i = 0;\n function parseIndex() {\n var index = {};\n list.push(index);\n\n // Parse diff metadata\n while (i < diffstr.length) {\n var line = diffstr[i];\n\n // File header found, end parsing diff metadata\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n }\n\n // Diff index\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n if (header) {\n index.index = header[1];\n }\n i++;\n }\n\n // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n parseFileHeader(index);\n parseFileHeader(index);\n\n // Parse hunks\n index.hunks = [];\n while (i < diffstr.length) {\n var _line = diffstr[i];\n if (/^(Index:\\s|diff\\s|\\-\\-\\-\\s|\\+\\+\\+\\s|===================================================================)/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line) {\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n }\n\n // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)\\r?$/.exec(diffstr[i]);\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n }\n\n // Parses a hunk\n // This assumes that we are at the start of a hunk.\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: []\n };\n\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n var addCount = 0,\n removeCount = 0;\n for (; i < diffstr.length && (removeCount < hunk.oldLines || addCount < hunk.newLines || (_diffstr$i = diffstr[i]) !== null && _diffstr$i !== void 0 && _diffstr$i.startsWith('\\\\')); i++) {\n var _diffstr$i;\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n throw new Error(\"Hunk at line \".concat(chunkHeaderIndex + 1, \" contained invalid line \").concat(diffstr[i]));\n }\n }\n\n // Handle the empty block count case\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n }\n\n // Perform sanity checking\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n return hunk;\n }\n while (i < diffstr.length) {\n parseIndex();\n }\n return list;\n}\n\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction distanceIterator (start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n }\n\n // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n if (start + localOffset <= maxLine) {\n return start + localOffset;\n }\n forwardExhausted = true;\n }\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n }\n\n // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n if (minLine <= start - localOffset) {\n return start - localOffset++;\n }\n backwardExhausted = true;\n return iterator();\n }\n\n // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n };\n}\n\nfunction applyPatch(source, uniDiff) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n uniDiff = uniDiff[0];\n }\n if (options.autoConvertLineEndings || options.autoConvertLineEndings == null) {\n if (hasOnlyWinLineEndings(source) && isUnix(uniDiff)) {\n uniDiff = unixToWin(uniDiff);\n } else if (hasOnlyUnixLineEndings(source) && isWin(uniDiff)) {\n uniDiff = winToUnix(uniDiff);\n }\n }\n\n // Apply the diff to the input\n var lines = source.split('\\n'),\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {\n return line === patchContent;\n },\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0;\n if (fuzzFactor < 0 || !Number.isInteger(fuzzFactor)) {\n throw new Error('fuzzFactor must be a non-negative integer');\n }\n\n // Special case for empty patch.\n if (!hunks.length) {\n return source;\n }\n\n // Before anything else, handle EOFNL insertion/removal. If the patch tells us to make a change\n // to the EOFNL that is redundant/impossible - i.e. to remove a newline that's not there, or add a\n // newline that already exists - then we either return false and fail to apply the patch (if\n // fuzzFactor is 0) or simply ignore the problem and do nothing (if fuzzFactor is >0).\n // If we do need to remove/add a newline at EOF, this will always be in the final hunk:\n var prevLine = '',\n removeEOFNL = false,\n addEOFNL = false;\n for (var i = 0; i < hunks[hunks.length - 1].lines.length; i++) {\n var line = hunks[hunks.length - 1].lines[i];\n if (line[0] == '\\\\') {\n if (prevLine[0] == '+') {\n removeEOFNL = true;\n } else if (prevLine[0] == '-') {\n addEOFNL = true;\n }\n }\n prevLine = line;\n }\n if (removeEOFNL) {\n if (addEOFNL) {\n // This means the final line gets changed but doesn't have a trailing newline in either the\n // original or patched version. In that case, we do nothing if fuzzFactor > 0, and if\n // fuzzFactor is 0, we simply validate that the source file has no trailing newline.\n if (!fuzzFactor && lines[lines.length - 1] == '') {\n return false;\n }\n } else if (lines[lines.length - 1] == '') {\n lines.pop();\n } else if (!fuzzFactor) {\n return false;\n }\n } else if (addEOFNL) {\n if (lines[lines.length - 1] != '') {\n lines.push('');\n } else if (!fuzzFactor) {\n return false;\n }\n }\n\n /**\n * Checks if the hunk can be made to fit at the provided location with at most `maxErrors`\n * insertions, substitutions, or deletions, while ensuring also that:\n * - lines deleted in the hunk match exactly, and\n * - wherever an insertion operation or block of insertion operations appears in the hunk, the\n * immediately preceding and following lines of context match exactly\n *\n * `toPos` should be set such that lines[toPos] is meant to match hunkLines[0].\n *\n * If the hunk can be applied, returns an object with properties `oldLineLastI` and\n * `replacementLines`. Otherwise, returns null.\n */\n function applyHunk(hunkLines, toPos, maxErrors) {\n var hunkLinesI = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var lastContextLineMatched = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n var patchedLines = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var patchedLinesLength = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 0;\n var nConsecutiveOldContextLines = 0;\n var nextContextLineMustMatch = false;\n for (; hunkLinesI < hunkLines.length; hunkLinesI++) {\n var hunkLine = hunkLines[hunkLinesI],\n operation = hunkLine.length > 0 ? hunkLine[0] : ' ',\n content = hunkLine.length > 0 ? hunkLine.substr(1) : hunkLine;\n if (operation === '-') {\n if (compareLine(toPos + 1, lines[toPos], operation, content)) {\n toPos++;\n nConsecutiveOldContextLines = 0;\n } else {\n if (!maxErrors || lines[toPos] == null) {\n return null;\n }\n patchedLines[patchedLinesLength] = lines[toPos];\n return applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1);\n }\n }\n if (operation === '+') {\n if (!lastContextLineMatched) {\n return null;\n }\n patchedLines[patchedLinesLength] = content;\n patchedLinesLength++;\n nConsecutiveOldContextLines = 0;\n nextContextLineMustMatch = true;\n }\n if (operation === ' ') {\n nConsecutiveOldContextLines++;\n patchedLines[patchedLinesLength] = lines[toPos];\n if (compareLine(toPos + 1, lines[toPos], operation, content)) {\n patchedLinesLength++;\n lastContextLineMatched = true;\n nextContextLineMustMatch = false;\n toPos++;\n } else {\n if (nextContextLineMustMatch || !maxErrors) {\n return null;\n }\n\n // Consider 3 possibilities in sequence:\n // 1. lines contains a *substitution* not included in the patch context, or\n // 2. lines contains an *insertion* not included in the patch context, or\n // 3. lines contains a *deletion* not included in the patch context\n // The first two options are of course only possible if the line from lines is non-null -\n // i.e. only option 3 is possible if we've overrun the end of the old file.\n return lines[toPos] && (applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength + 1) || applyHunk(hunkLines, toPos + 1, maxErrors - 1, hunkLinesI, false, patchedLines, patchedLinesLength + 1)) || applyHunk(hunkLines, toPos, maxErrors - 1, hunkLinesI + 1, false, patchedLines, patchedLinesLength);\n }\n }\n }\n\n // Before returning, trim any unmodified context lines off the end of patchedLines and reduce\n // toPos (and thus oldLineLastI) accordingly. This allows later hunks to be applied to a region\n // that starts in this hunk's trailing context.\n patchedLinesLength -= nConsecutiveOldContextLines;\n toPos -= nConsecutiveOldContextLines;\n patchedLines.length = patchedLinesLength;\n return {\n patchedLines: patchedLines,\n oldLineLastI: toPos - 1\n };\n }\n var resultLines = [];\n\n // Search best fit offsets for each hunk based on the previous ones\n var prevHunkOffset = 0;\n for (var _i = 0; _i < hunks.length; _i++) {\n var hunk = hunks[_i];\n var hunkResult = void 0;\n var maxLine = lines.length - hunk.oldLines + fuzzFactor;\n var toPos = void 0;\n for (var maxErrors = 0; maxErrors <= fuzzFactor; maxErrors++) {\n toPos = hunk.oldStart + prevHunkOffset - 1;\n var iterator = distanceIterator(toPos, minLine, maxLine);\n for (; toPos !== undefined; toPos = iterator()) {\n hunkResult = applyHunk(hunk.lines, toPos, maxErrors);\n if (hunkResult) {\n break;\n }\n }\n if (hunkResult) {\n break;\n }\n }\n if (!hunkResult) {\n return false;\n }\n\n // Copy everything from the end of where we applied the last hunk to the start of this hunk\n for (var _i2 = minLine; _i2 < toPos; _i2++) {\n resultLines.push(lines[_i2]);\n }\n\n // Add the lines produced by applying the hunk:\n for (var _i3 = 0; _i3 < hunkResult.patchedLines.length; _i3++) {\n var _line = hunkResult.patchedLines[_i3];\n resultLines.push(_line);\n }\n\n // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n minLine = hunkResult.oldLineLastI + 1;\n\n // Note the offset between where the patch said the hunk should've applied and where we\n // applied it, so we can adjust future hunks accordingly:\n prevHunkOffset = toPos + 1 - hunk.oldStart;\n }\n\n // Copy over the rest of the lines from the old text\n for (var _i4 = minLine; _i4 < lines.length; _i4++) {\n resultLines.push(lines[_i4]);\n }\n return resultLines.join('\\n');\n}\n\n// Wrapper that supports multiple file patches via callbacks.\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff = parsePatch(uniDiff);\n }\n var currentIndex = 0;\n function processIndex() {\n var index = uniDiff[currentIndex++];\n if (!index) {\n return options.complete();\n }\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n processIndex();\n });\n });\n }\n processIndex();\n}\n\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n if (typeof options === 'function') {\n options = {\n callback: options\n };\n }\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n if (options.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!options.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, options));\n } else {\n var _options = options,\n _callback = _options.callback;\n diffLines(oldStr, newStr, _objectSpread2(_objectSpread2({}, options), {}, {\n callback: function callback(diff) {\n var patch = diffLinesResultToPatch(diff);\n _callback(patch);\n }\n }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n\n if (!diff) {\n return;\n }\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n var _loop = function _loop() {\n var current = diff[i],\n lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n var _curRange;\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n\n // Output our changes\n (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n })));\n\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n var _curRange2;\n // Overlapping\n (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));\n } else {\n var _curRange3;\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));\n var _hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n hunks.push(_hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n for (var i = 0; i < diff.length; i++) {\n _loop();\n }\n\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (var _i = 0, _hunks = hunks; _i < _hunks.length; _i++) {\n var hunk = _hunks[_i];\n for (var _i2 = 0; _i2 < hunk.lines.length; _i2++) {\n if (hunk.lines[_i2].endsWith('\\n')) {\n hunk.lines[_i2] = hunk.lines[_i2].slice(0, -1);\n } else {\n hunk.lines.splice(_i2 + 1, 0, '\\\');\n _i2++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n }\n}\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n var ret = [];\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n return ret.join('\\n') + '\\n';\n}\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n var _options2;\n if (typeof options === 'function') {\n options = {\n callback: options\n };\n }\n if (!((_options2 = options) !== null && _options2 !== void 0 && _options2.callback)) {\n var patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj);\n } else {\n var _options3 = options,\n _callback2 = _options3.callback;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, _objectSpread2(_objectSpread2({}, options), {}, {\n callback: function callback(patchObj) {\n if (!patchObj) {\n _callback2();\n } else {\n _callback2(formatPatch(patchObj));\n }\n }\n }));\n }\n}\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n var hasTrailingNl = text.endsWith('\\n');\n var result = text.split('\\n').map(function (line) {\n return line + '\\n';\n });\n if (hasTrailingNl) {\n result.pop();\n } else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n return arrayStartsWith(a, b);\n}\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction calcLineCount(hunk) {\n var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {};\n\n // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n return ret;\n}\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return parsePatch(param)[0];\n }\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n return structuredPatch(undefined, undefined, base, param);\n }\n return param;\n}\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n };\n\n // Handle any leading content\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine);\n\n // Now in the overlap content. Scan through and select the best changes from each.\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n var _hunk$lines;\n // Mine inserted\n (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n var _hunk$lines2;\n // Theirs inserted\n (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n }\n\n // Now push anything that may be remaining\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n var _hunk$lines3;\n (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));\n return;\n } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n var _hunk$lines4;\n (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));\n return;\n }\n } else if (arrayEqual(myChanges, theirChanges)) {\n var _hunk$lines5;\n (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));\n return;\n }\n conflict(hunk, myChanges, theirChanges);\n}\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n if (theirChanges.merged) {\n var _hunk$lines6;\n (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n while (state.index < state.lines.length) {\n var line = state.lines[state.index];\n\n // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n return ret;\n}\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex];\n\n // Once we've hit our add, then we are done\n if (match[0] === '+') {\n break;\n }\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++;\n\n // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n if (change[0] === '+') {\n conflicted = true;\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n if (conflicted) {\n return changes;\n }\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n return {\n merged: merged,\n changes: changes\n };\n}\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n state.index += delta;\n return true;\n}\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n return _objectSpread2(_objectSpread2({}, structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return \"+\".concat(l.slice(1));\n }\n if (l.startsWith('+')) {\n return \"-\".concat(l.slice(1));\n }\n return l;\n })\n };\n })\n });\n}\n\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n ret.push([operation, change.value]);\n }\n return ret;\n}\n\nfunction convertChangesToXML(changes) {\n var ret = [];\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n if (change.added) {\n ret.push('<ins>');\n } else if (change.removed) {\n ret.push('<del>');\n }\n ret.push(escapeHTML(change.value));\n if (change.added) {\n ret.push('</ins>');\n } else if (change.removed) {\n ret.push('</del>');\n }\n }\n return ret.join('');\n}\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(/</g, '<');\n n = n.replace(/>/g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n\nexport { Diff, applyPatch, applyPatches, canonicalize, convertChangesToDMP, convertChangesToXML, createPatch, createTwoFilesPatch, diffArrays, diffChars, diffCss, diffJson, diffLines, diffSentences, diffTrimmedLines, diffWords, diffWordsWithSpace, formatPatch, merge, parsePatch, reversePatch, structuredPatch };\n","import { _cacheMap, DiffFile } from '@git-diff-view/core';\nexport * from '@git-diff-view/core';\nimport { createTwoFilesPatch } from 'diff';\n\n_cacheMap.name = \"@git-diff-view/file\";\nfunction generateDiffFile(oldFileName, oldFileContent, newFileName, newFileContent, oldFileLang, newFileLang, option, uuid) {\n const diffString = createTwoFilesPatch(oldFileName, newFileName, oldFileContent, newFileContent, \"\", \"\", option);\n return new DiffFile(oldFileName, oldFileContent, newFileName, newFileContent, [diffString], oldFileLang, newFileLang, uuid);\n}\n\nexport { generateDiffFile };\n//# sourceMappingURL=index.mjs.map\n","import { useEffect, useState, type Dispatch, type SetStateAction } from 'react'\n\nimport type { DiffHighlighter } from '@git-diff-view/react'\nimport { getDiffViewHighlighter } from '@git-diff-view/shiki'\n\nexport type HighlighterType = Omit<DiffHighlighter, 'getHighlighterEngine'>\n\nexport const useDiffHighlighter = ({ setLoading }: { setLoading: Dispatch<SetStateAction<boolean>> }) => {\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 return highlighter\n}\n","import { generateDiffFile, type DiffHighlighterLang } from '@git-diff-view/file'\nimport { DiffModeEnum, DiffView } from '@git-diff-view/react'\n\nimport '@git-diff-view/react/styles/diff-view.css'\n\nimport { useMemo } from 'react'\n\nimport { useTheme } from '@/context'\n\nimport { useDiffHighlighter } from './use-diff-highlighter'\n\ninterface DiffViewerProps {\n oldCode: string\n newCode: string\n lang?: DiffHighlighterLang\n diffViewWrap?: boolean\n}\n\nconst DiffViewer = ({ newCode, oldCode, lang = 'yaml', diffViewWrap = false }: DiffViewerProps) => {\n const { isLightTheme } = useTheme()\n const highlighter = useDiffHighlighter({ setLoading: () => {} })\n\n const diffFile = useMemo(() => {\n const instance = generateDiffFile('oldFile', oldCode, 'newFile', newCode, lang, lang)\n instance.initRaw()\n return instance\n }, [oldCode, newCode, lang])\n\n if (!diffFile) return null\n\n return (\n <DiffView\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n diffFile={diffFile}\n diffViewHighlight\n diffViewWrap={diffViewWrap}\n registerHighlighter={highlighter}\n diffViewMode={DiffModeEnum.Split}\n diffViewTheme={isLightTheme ? 'light' : 'dark'}\n />\n )\n}\n\nexport { DiffViewer, DiffModeEnum }\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'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'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'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'll have a look today. They're looking great! Here'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, IconV2NamesType, 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 */\n\nfunction Tag({ tagText, icon }: PropsWithChildren<{ tagText: string; icon?: IconV2NamesType }>): JSX.Element {\n return (\n <div className=\"cn-studio-card-tag\">\n {icon && <IconV2 name={icon} size=\"xs\" />}\n <Text className=\"text-cn-gray-outline\" variant=\"caption-single-line-normal\">\n {tagText}\n </Text>\n </div>\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 Tag,\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","Diff","oldString","newString","_options$timeout","options","callback","self","done","value","newLen","oldLen","editLength","maxEditLength","maxExecutionTime","abortAfterTimestamp","bestPath","newPos","buildValues","minDiagonalToConsider","maxDiagonalToConsider","execEditLength","diagonalPath","basePath","removePath","addPath","canAdd","addPathNewPos","canRemove","exec","ret","path","added","removed","oldPosInc","last","oldPos","commonCount","left","right","array","i","chars","changeObjects","diff","lastComponent","useLongestToken","components","nextComponent","componentPos","componentLen","component","oldValue","longestCommonPrefix","str1","str2","longestCommonSuffix","replacePrefix","string","oldPrefix","newPrefix","replaceSuffix","oldSuffix","newSuffix","removePrefix","removeSuffix","maximumOverlap","string1","string2","overlapCount","a","b","startA","endB","map","k","j","extendedWordChars","tokenizeIncludingWhitespace","wordDiff","parts","segment","tokens","prevPart","part","token","changes","lastKeep","insertion","deletion","change","dedupeWhitespaceInChangeObjects","startKeep","endKeep","oldWsPrefix","oldWsSuffix","newWsPrefix","newWsSuffix","commonWsPrefix","commonWsSuffix","newWsFull","delWsStart","delWsEnd","newWsStart","newWsEnd","endKeepWsPrefix","deletionWsSuffix","overlap","startKeepWsSuffix","deletionWsPrefix","_overlap","wordWithSpaceDiff","regex","lineDiff","retLines","linesAndNewlines","line","diffLines","oldStr","newStr","sentenceDiff","cssDiff","ownKeys","r","t","_objectSpread2","_defineProperty","_toPrimitive","e","_toPropertyKey","_typeof","o","obj","key","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","len","arr2","jsonDiff","undefinedReplacement","_options$stringifyRep","stringifyReplacer","v","canonicalize","stack","replacementStack","replacer","canonicalizedObj","sortedKeys","_key","arrayDiff","structuredPatch","oldFileName","newFileName","oldHeader","newHeader","_options","_callback","patch","diffLinesResultToPatch","contextLines","lines","entry","hunks","oldRangeStart","newRangeStart","curRange","oldLine","newLine","_loop","current","splitLines","_curRange","prev","_curRange2","_curRange3","contextSize","_hunk","_i","_hunks","hunk","_i2","formatPatch","createTwoFilesPatch","_options2","_options3","_callback2","patchObj","text","hasTrailingNl","result","_cacheMap","generateDiffFile","oldFileContent","newFileContent","oldFileLang","newFileLang","option","uuid","diffString","DiffFile","useDiffHighlighter","setLoading","highlighter","setHighlighter","shikiHighlighter","getDiffViewHighlighter","DiffViewer","newCode","oldCode","lang","diffViewWrap","isLightTheme","useTheme","diffFile","instance","DiffView","DiffModeEnum","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","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","valueA","valueB","sortAndMapPluginToOptions","plugins","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","roundToTwoDecimals","num","arrayKeys","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","areObjects","isMouseEvent","evt","ownerWindow","Alignment","align","viewSize","predefined","start","center","end","measure","EventStore","add","node","type","handler","removeListener","legacyMediaQueryList","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","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","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","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","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","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","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","InputField","inputRef","onChange","onKeyDown","onSend","placeholder","sendIcon","Input","Chat","ChatDiffViewer","mode","fileName","diffFileInstance","setDiffFileInstance","setDiffInstanceCb","debounce","content","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","old","isFunction","d","isNumberArray","val","flattenBy","getChildren","flat","recurse","subArr","getDeps","fn","deps","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$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","_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","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","tagText","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","lt","J","W","H","A","mt","L","ct","R","p","O","G","Vt","Ut","N","V","Kt","Xt","dt","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","_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":[5,6,14,15,16,29,30,39]}
|