@pstdio/ui 0.44.0-nightly.20261018030230 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/{MermaidComponent-DIHl8p85.js → MermaidComponent-DhNTaUMt.js} +2 -2
  2. package/dist/{MermaidComponent-DIHl8p85.js.map → MermaidComponent-DhNTaUMt.js.map} +1 -1
  3. package/dist/apply-theme-preference-B0vCu8zY.d.ts +26 -0
  4. package/dist/chat-ui.d.ts +50 -50
  5. package/dist/chat-ui.js +143 -141
  6. package/dist/chat-ui.js.map +1 -1
  7. package/dist/{collection-view-fields-Sa5HO5P7.d.ts → collection-view-fields-tMtZmuhS.d.ts} +0 -2
  8. package/dist/{collection-view-grouping-aKZhxYfX.js → collection-view-grouping-BKIr4QAb.js} +2 -2
  9. package/dist/{collection-view-grouping-aKZhxYfX.js.map → collection-view-grouping-BKIr4QAb.js.map} +1 -1
  10. package/dist/{collection-view-search-mHPkdyxT.js → collection-view-search-D7HFymZW.js} +160 -166
  11. package/dist/collection-view-search-D7HFymZW.js.map +1 -0
  12. package/dist/collection-view.d.ts +3 -90
  13. package/dist/collection-view.js +1 -1
  14. package/dist/data-table.d.ts +3 -2
  15. package/dist/data-table.js +98 -88
  16. package/dist/data-table.js.map +1 -1
  17. package/dist/{diff-drawer-BMl0zobj.js → diff-drawer-ByJsQg8F.js} +10 -10
  18. package/dist/diff-drawer-ByJsQg8F.js.map +1 -0
  19. package/dist/{diff-viewer-C5KXwq7E.js → diff-viewer-Cpiw-1ut.js} +4 -4
  20. package/dist/{diff-viewer-C5KXwq7E.js.map → diff-viewer-Cpiw-1ut.js.map} +1 -1
  21. package/dist/diff.js +2 -2
  22. package/dist/{display-sort-control-0_gG-W9g.js → display-sort-control-BuqijDAl.js} +3 -3
  23. package/dist/{display-sort-control-0_gG-W9g.js.map → display-sort-control-BuqijDAl.js.map} +1 -1
  24. package/dist/{edit-mode-data-table-BI_UDPfF.js → edit-mode-data-table-BwNTRik5.js} +147 -136
  25. package/dist/edit-mode-data-table-BwNTRik5.js.map +1 -0
  26. package/dist/host-storage-28AkEy1N.js +98 -0
  27. package/dist/host-storage-28AkEy1N.js.map +1 -0
  28. package/dist/index-3H4B61XK.d.ts +38 -0
  29. package/dist/{index-BTABZd25.d.ts → index-DTjRTEez.d.ts} +2 -2
  30. package/dist/index-kYQwGcym.d.ts +91 -0
  31. package/dist/index.d.ts +114 -101
  32. package/dist/index.js +763 -761
  33. package/dist/index.js.map +1 -1
  34. package/dist/kanban-renderer.d.ts +2 -2
  35. package/dist/kanban-renderer.js +509 -494
  36. package/dist/kanban-renderer.js.map +1 -1
  37. package/dist/list-row-BDDAVuVd.js +1228 -0
  38. package/dist/list-row-BDDAVuVd.js.map +1 -0
  39. package/dist/{markdown-editor-Dx41ftfs.js → markdown-editor-DUBUE7M-.js} +150 -138
  40. package/dist/markdown-editor-DUBUE7M-.js.map +1 -0
  41. package/dist/{param-editor-C4IUuO77.js → param-editor-DK1uCOh3.js} +2 -2
  42. package/dist/{param-editor-C4IUuO77.js.map → param-editor-DK1uCOh3.js.map} +1 -1
  43. package/dist/{param-editor-field-uBStVJ48.js → param-editor-field-B5z6200g.js} +278 -282
  44. package/dist/param-editor-field-B5z6200g.js.map +1 -0
  45. package/dist/param-editor.js +2 -2
  46. package/dist/{rich-text-Dlv0q1r_.js → rich-text-2c_ra5gK.js} +3 -3
  47. package/dist/{rich-text-Dlv0q1r_.js.map → rich-text-2c_ra5gK.js.map} +1 -1
  48. package/dist/rich-text.js +3 -3
  49. package/dist/terminal.d.ts +28 -0
  50. package/dist/terminal.js +59 -32
  51. package/dist/terminal.js.map +1 -1
  52. package/dist/{theme-DJE3KvWt.js → theme-Chgjys_o.js} +124 -96
  53. package/dist/theme-Chgjys_o.js.map +1 -0
  54. package/dist/theme.d.ts +1 -1
  55. package/dist/theme.js +1 -1
  56. package/dist/{tree-list-Ces1hpRd.js → tree-list-B8Gtot1M.js} +99 -99
  57. package/dist/tree-list-B8Gtot1M.js.map +1 -0
  58. package/dist/{use-virtualizer-CfDHoDer.js → use-virtualizer-CqDYJolY.js} +8 -3
  59. package/dist/use-virtualizer-CqDYJolY.js.map +1 -0
  60. package/dist/{workspace-badge-CvQBU6Hs.d.ts → workspace-badge-BMjS8ii4.d.ts} +6 -1
  61. package/package.json +2 -2
  62. package/dist/collection-view-search-mHPkdyxT.js.map +0 -1
  63. package/dist/diff-drawer-BMl0zobj.js.map +0 -1
  64. package/dist/edit-mode-data-table-BI_UDPfF.js.map +0 -1
  65. package/dist/host-storage-BIo5azql.js +0 -31
  66. package/dist/host-storage-BIo5azql.js.map +0 -1
  67. package/dist/index-Dd6e8lU_.d.ts +0 -61
  68. package/dist/list-row-F8kBQGB-.js +0 -1232
  69. package/dist/list-row-F8kBQGB-.js.map +0 -1
  70. package/dist/markdown-editor-Dx41ftfs.js.map +0 -1
  71. package/dist/param-editor-field-uBStVJ48.js.map +0 -1
  72. package/dist/theme-DJE3KvWt.js.map +0 -1
  73. package/dist/tree-list-Ces1hpRd.js.map +0 -1
  74. package/dist/use-virtualizer-CfDHoDer.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff-drawer-BMl0zobj.js","names":["Box","Button","Grid","Image","Text","EmptyState","Diff","DiffEditor","getDiffLineCount","isBinaryDiffPath","isImageDiffPath","BuiltDiffViewData","buildDiffViewData","DiffViewMode","DiffCardBodyProps","diff","filePath","oldContent","newContent","isLargeDiff","hasOptedIntoLargeDiff","onShowFullDiff","diffViewMode","DiffCardBodyModelInput","buildViewData","createDiffCardBodyModel","input","oldImageSrc","getImagePreviewSource","newImageSrc","kind","const","oldSrc","newSrc","isImage","renderedLineCount","diffViewData","original","modified","oldPath","newPath","sideBySide","content","startsWith","DiffCardBody","props","$","_c","t0","undefined","t1","model","t2","t3","t4","t5","t6","ImageDiffPreviewProps","ImageDiffPreview","Symbol","for","base","md","ImageDiffPanelProps","label","src","fallback","ImageDiffPanel","LargeDiffPlaceholderProps","LargeDiffPlaceholder","BinaryDiffPlaceholderProps","BinaryDiffPlaceholder","title","TestDiffViewData","_c","EmptyState","Box","Button","Skeleton","Stack","EmptyState","DeferredDiffLoadProps","title","actionLabel","isLoadingDiff","onAction","DeferredDiffLoad","props","$","_c","t0","t1","loadingDiffContentRows","const","LoadingDiffContent","Symbol","for","map","_temp","row","_c","EmptyState","Diff","DiffCardBody","DeferredDiffLoad","LoadingDiffContent","DiffViewMode","DiffCardContentProps","diff","filePath","oldContent","newContent","isExpanded","isLargeDiff","isGeneratedDiff","isBinaryDiff","hasDiffContent","canLoadDiff","shouldAutoLoadDiff","loadError","isLoadingDiff","onLoadDiff","Promise","hasOptedIntoLargeDiff","onShowFullDiff","diffViewMode","DeferredDiffLoadStateInput","buildDeferredDiffLoadState","input","title","actionLabel","undefined","onAction","DiffCardContent","props","$","_c","t0","t1","t2","Symbol","for","_c","Box","Grid","IconButton","Text","Check","ChevronDown","ChevronRight","Copy","useEffect","useRef","useState","Tooltip","DiffBubble","DiffCardContent","isBinaryDiffPath","isGeneratedDiffPath","isImageDiffPath","isLargeDiffContent","DiffViewMode","Diff","change","oldPath","newPath","oldContent","newContent","additions","deletions","DiffCardProps","diff","isSelected","isExpanded","onToggleExpanded","onSelect","onLoadDiff","path","Promise","hasOptedIntoLargeDiff","onShowFullDiff","diffViewMode","DiffCardHeaderProps","shouldAutoLoadDiffContent","input","hasDiffContent","isLargeDiff","isGeneratedDiff","isBinaryDiff","requestedPath","filePath","resolveRequestedDiffPath","shouldShowDiffStats","resolveDiffFilePath","useDiffContentLoader","isLoadingDiff","setLoadingDiff","setRequestedPath","loadError","setLoadError","loadDiff","shouldAutoLoadDiff","current","Boolean","DiffCard","props","$","_c","t0","t1","t2","t3","undefined","t4","blocksDiffContentLoad","t5","t6","t7","t8","Symbol","for","borderColor","t9","t10","t11","t12","DiffCardHeader","showStats","isCopied","setIsCopied","copyResetTimeoutRef","window","clearTimeout","navigator","clipboard","writeText","setTimeout","copyFilePath","bg","event","stopPropagation","t13","t14","t15","t16","t17","t18","t19","opacity","pointerEvents","t20","t21","t22","event_0","t23","t24","t25","t26","t27","t28","t29","_c","Tooltip","Stack","EmptyState","ScrollArea","DiffDrawerEmptyState","$","_c","t0","Symbol","for","p","spaceY","_c","ScrollArea","EmptyState","Diff","isBinaryDiffPath","isImageDiffPath","isLargeDiffContent","buildDiffViewData","DiffViewMode","CARD_HEADER_HEIGHT","CARD_BODY_LINE_HEIGHT","HUNK_ROW_HEIGHT","COLLAPSED_CARD_HEIGHT","DEFERRED_BODY_HEIGHT","IMAGE_BODY_HEIGHT","ITEM_GAP_HEIGHT","EstimateDiffCardHeightInput","diff","isCollapsed","hasOptedIntoLargeDiff","diffViewMode","deferredCardHeight","estimateDiffCardHeight","input","hasDiffContent","oldContent","undefined","newContent","filePath","newPath","oldPath","unifiedContentRows","splitContentRows","hunkRows","original","modified","contentRows","bodyHeight","Diff","SelectedExpansionCommand","action","id","path","direction","ResolveSelectedScrollStateInput","diffs","selectedDiffPath","collapsedPaths","Set","expansionCommand","completedScrollCommandId","getDiffPath","diff","newPath","oldPath","PINNED_DIFF_LOOKBEHIND_COUNT","resolveSelectedScrollState","input","selectedScrollPath","selectedScrollSourceKey","selectedScrollCommandId","hasCompletedSelectedScroll","selectedScrollKey","selectedScrollExpansionState","has","selectedScrollIndex","findIndex","shouldPinSelectedScrollIndex","includePinnedDiffIndexes","indexes","includes","pinnedStartIndex","Math","max","pinnedIndexes","Array","from","length","_","index","sort","a","b","getDiffPath","Virtualizer","useLayoutEffect","useState","Diff","DiffExpansionCommand","resolveSelectedScrollState","UseSelectedDiffScrollInput","diffs","selectedDiffPath","collapsedPaths","Set","expansionCommand","scrollRef","current","HTMLDivElement","virtualizerRef","Element","suppressScrollAdjustRef","SETTLE_FRAME_COUNT","MAX_ALIGNMENT_FRAMES","getDiffPath","diff","newPath","oldPath","useSelectedDiffScroll","input","$","_c","completedScrollCommandId","setCompletedScrollCommandId","t0","selectedScrollPath","selectedScrollKey","selectedScrollCommandId","selectedScrollIndex","shouldPinSelectedScrollIndex","hasCompletedSelectedScroll","t1","t2","has","index","findIndex","virtualizer","scrollElement","frameIds","cancelledByUserScroll","stopAligning","cancelSelectedScroll","alignmentFrames","alignSelectedDiff","scrollToIndex","align","push","requestAnimationFrame","addEventListener","passive","removeEventListener","frameId","cancelAnimationFrame","t3","getDiffPath","_c","Box","Stack","defaultRangeExtractor","Virtualizer","useEffect","useLayoutEffect","useRef","useState","ScrollArea","useVirtualizer","Diff","DiffCard","DiffDrawerEmptyState","estimateDiffCardHeight","includePinnedDiffIndexes","DiffViewMode","useSelectedDiffScroll","DiffDrawerProps","diffs","selectedDiffPath","onLoadDiff","path","Promise","onSelectDiffPath","onExpansionStateChange","state","DiffDrawerExpansionState","expansionCommand","DiffExpansionCommand","diffViewMode","action","id","direction","allExpanded","allCollapsed","getDiffPath","diff","newPath","oldPath","INITIAL_EXPANDED_DIFF_COUNT","INITIAL_COLLAPSED_LINE_THRESHOLD","buildInitialCollapsedPaths","length","Set","filter","index","lineCount","additions","deletions","map","buildAllCollapsedPaths","toggleCollapsedPath","collapsedPaths","next","has","delete","add","resolveCollapsedPathsForSelectedDiff","some","resolveCollapsedPathsForNavigation","previousNavigatedPath","expanded","DiffDrawer","props","scrollRef","HTMLDivElement","reportedExpansionStateRef","virtualizerRef","Element","suppressScrollAdjustRef","lastNavigatedPathRef","setCollapsedPaths","largeDiffOptInPaths","setLargeDiffOptInPaths","selectedScrollIndex","shouldPinSelectedScrollIndex","virtualizer","count","getScrollElement","current","estimateSize","isCollapsed","hasOptedIntoLargeDiff","getItemKey","overscan","rangeExtractor","range","indexes","shouldAdjustScrollPositionOnItemSizeChange","_item","_delta","instance","isScrolling","prev","navigatedPath","expansionState","size","every","reportedExpansionState","toggleExpanded","showFullDiff","virtualItems","getVirtualItems","style","overflowAnchor","p","height","getTotalSize","virtualItem","key","measureElement","top","start","useVirtualizer","ScrollArea","Tooltip$1","useVirtualizer$1","EmptyState$1","DiffBubble","isGeneratedDiffPath","getDiffLineCount","isLargeDiffContent","isBinaryDiffPath","buildDiffViewData","DiffEditor","createDiffCardBodyModel","input","filePath","oldImageSrc","getImagePreviewSource","oldContent","newImageSrc","newContent","isImageDiffPath","isLargeDiff","hasOptedIntoLargeDiff","diff","buildViewData","diffViewMode","content","DiffCardBody","$","c","t0","props","t1","onShowFullDiff","model","t2","t3","ImageDiffPreview","t4","BinaryDiffPlaceholder","t5","LargeDiffPlaceholder","t6","Box","oldSrc","ImageDiffPanel","newSrc","Grid","label","Text","fallback","src","Image","Button","title","isImage","DeferredDiffLoad","actionLabel","isLoadingDiff","onAction","loadingDiffContentRows","LoadingDiffContent","Stack","_temp","Skeleton","row","buildDeferredDiffLoadState","canLoadDiff","onLoadDiff","isGeneratedDiff","loadError","DiffCardContent","isExpanded","isBinaryDiff","hasDiffContent","shouldAutoLoadDiff","shouldAutoLoadDiffContent","isSelected","requestedPath","resolveRequestedDiffPath","shouldShowDiffStats","resolveDiffFilePath","useDiffContentLoader","setLoadingDiff","useState","setRequestedPath","setLoadError","loadDiff","useEffect","current","DiffCard","blocksDiffContentLoad","t7","t8","t9","onToggleExpanded","DiffCardHeader","t10","t11","t12","onSelect","additions","deletions","showStats","isCopied","setIsCopied","copyResetTimeoutRef","useRef","copyFilePath","event","jsx","ChevronDown","ChevronRight","IconButton","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","event_0","t23","Check","Copy","t24","t25","t26","t27","t28","t29","DiffDrawerEmptyState","ScrollArea$1","CARD_HEADER_HEIGHT","CARD_BODY_LINE_HEIGHT","HUNK_ROW_HEIGHT","ITEM_GAP_HEIGHT","deferredCardHeight","estimateDiffCardHeight","isCollapsed","contentRows","splitContentRows","unifiedContentRows","hunkRows","getDiffPath$2","PINNED_DIFF_LOOKBEHIND_COUNT","resolveSelectedScrollState","selectedScrollPath","selectedDiffPath","selectedScrollSourceKey","selectedScrollCommandId","expansionCommand","hasCompletedSelectedScroll","completedScrollCommandId","selectedScrollKey","selectedScrollExpansionState","collapsedPaths","selectedScrollIndex","diffs","shouldPinSelectedScrollIndex","includePinnedDiffIndexes","indexes","pinnedStartIndex","pinnedIndexes","index","a","b","SETTLE_FRAME_COUNT","MAX_ALIGNMENT_FRAMES","getDiffPath$1","useSelectedDiffScroll","setCompletedScrollCommandId","scrollRef","suppressScrollAdjustRef","virtualizerRef","virtualizer","scrollElement","frameIds","cancelledByUserScroll","stopAligning","cancelSelectedScroll","alignmentFrames","alignSelectedDiff","frameId","useLayoutEffect","getDiffPath","INITIAL_EXPANDED_DIFF_COUNT","INITIAL_COLLAPSED_LINE_THRESHOLD","buildInitialCollapsedPaths","lineCount","buildAllCollapsedPaths","toggleCollapsedPath","next","path","resolveCollapsedPathsForSelectedDiff","resolveCollapsedPathsForNavigation","expanded","previousNavigatedPath","DiffDrawer","reportedExpansionStateRef","lastNavigatedPathRef","setCollapsedPaths","largeDiffOptInPaths","setLargeDiffOptInPaths","index_0","defaultRangeExtractor","range","instance","prev","navigatedPath","prev_0","expansionState","diff_0","reportedExpansionState","onExpansionStateChange","toggleExpanded","prev_1","path_0","showFullDiff","prev_2","path_1","virtualItems","diff_1","virtualItem","path_2","onSelectDiffPath"],"sources":["../src/components/diff-viewer/diff-card-body.tsx","../src/components/diff-viewer/diff-card-load-state.tsx","../src/components/diff-viewer/diff-card-content.tsx","../src/components/diff-viewer/diff-card.tsx","../src/components/diff-viewer/diff-drawer-empty-state.tsx","../src/components/diff-viewer/diff-drawer-height.ts","../src/components/diff-viewer/diff-drawer-scroll.ts","../src/components/diff-viewer/use-selected-diff-scroll.ts","../src/components/diff-viewer/diff-drawer.tsx"],"sourcesContent":["import { Box, Button, Grid, Image, Text } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport type { Diff } from \"./diff-card\";\nimport { DiffEditor } from \"./diff-editor\";\nimport { getDiffLineCount, isBinaryDiffPath, isImageDiffPath } from \"./diff-size\";\nimport { type BuiltDiffViewData, buildDiffViewData } from \"./diff-view-adapter\";\nimport type { DiffViewMode } from \"./types\";\n\ninterface DiffCardBodyProps {\n diff: Diff;\n filePath: string;\n oldContent: string;\n newContent: string;\n isLargeDiff: boolean;\n hasOptedIntoLargeDiff: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DiffCardBodyModelInput extends DiffCardBodyProps {\n buildViewData?: typeof buildDiffViewData;\n}\n\nexport const createDiffCardBodyModel = (input: DiffCardBodyModelInput) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n buildViewData,\n } = input;\n\n if (isBinaryDiffPath(filePath)) {\n const oldImageSrc = getImagePreviewSource(oldContent);\n const newImageSrc = getImagePreviewSource(newContent);\n if (isImageDiffPath(filePath) && (oldImageSrc || newImageSrc)) {\n return {\n kind: \"image\" as const,\n filePath,\n oldSrc: oldImageSrc,\n newSrc: newImageSrc,\n };\n }\n\n return {\n kind: \"binary\" as const,\n filePath,\n isImage: isImageDiffPath(filePath),\n };\n }\n\n if (isLargeDiff && !hasOptedIntoLargeDiff) {\n return {\n kind: \"placeholder\" as const,\n filePath,\n renderedLineCount: getDiffLineCount(diff),\n onShowFullDiff,\n };\n }\n\n const diffViewData = (buildViewData ?? buildDiffViewData)({\n original: oldContent,\n modified: newContent,\n oldPath: diff.oldPath,\n newPath: diff.newPath,\n });\n return {\n kind: \"editor\" as const,\n diffViewData,\n sideBySide: diffViewMode === \"split\",\n };\n};\n\nconst getImagePreviewSource = (content: string) => (content.startsWith(\"data:image/\") ? content : \"\");\n\nexport const DiffCardBody = (props: DiffCardBodyProps) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n const model = createDiffCardBodyModel({\n diff,\n filePath,\n oldContent,\n newContent,\n isLargeDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode,\n });\n\n return (\n <Box bg=\"bg\" borderBottomRadius=\"xs\" overflow=\"hidden\">\n {model.kind === \"editor\" && (\n <DiffEditor\n original={oldContent}\n modified={newContent}\n oldPath={diff.oldPath}\n newPath={diff.newPath}\n sideBySide={model.sideBySide}\n data={model.diffViewData}\n />\n )}\n {model.kind === \"image\" && <ImageDiffPreview oldSrc={model.oldSrc} newSrc={model.newSrc} />}\n {model.kind === \"binary\" && <BinaryDiffPlaceholder isImage={model.isImage} />}\n {model.kind === \"placeholder\" && (\n <LargeDiffPlaceholder\n filePath={model.filePath}\n renderedLineCount={model.renderedLineCount}\n onShowFullDiff={model.onShowFullDiff}\n />\n )}\n </Box>\n );\n};\n\ninterface ImageDiffPreviewProps {\n oldSrc: string;\n newSrc: string;\n}\n\nconst ImageDiffPreview = (props: ImageDiffPreviewProps) => {\n const { oldSrc, newSrc } = props;\n\n return (\n <Grid\n templateColumns={{ base: \"1fr\", md: \"1fr 1fr\" }}\n gap=\"sm\"\n p=\"sm\"\n borderTop=\"1px solid\"\n borderColor=\"border.subtle\"\n bg=\"bg\"\n >\n <ImageDiffPanel label=\"Old\" src={oldSrc} fallback=\"No old image\" />\n <ImageDiffPanel label=\"New\" src={newSrc} fallback=\"No new image\" />\n </Grid>\n );\n};\n\ninterface ImageDiffPanelProps {\n label: string;\n src: string;\n fallback: string;\n}\n\nconst ImageDiffPanel = (props: ImageDiffPanelProps) => {\n const { label, src, fallback } = props;\n\n return (\n <Box border=\"1px solid\" borderColor=\"border.subtle\" borderRadius=\"xs\" overflow=\"hidden\" bg=\"bg.subtle\" minW=\"0\">\n <Text\n px=\"xs\"\n py=\"2xs\"\n textStyle=\"label/S/medium\"\n color=\"fg.muted\"\n borderBottom=\"1px solid\"\n borderColor=\"border.subtle\"\n >\n {label}\n </Text>\n <Box display=\"grid\" placeItems=\"center\" minH=\"180px\" p=\"sm\">\n {src ? (\n <Image src={src} alt={`${label} image diff`} maxH=\"260px\" maxW=\"100%\" objectFit=\"contain\" />\n ) : (\n <Text color=\"fg.muted\" textStyle=\"body/S/regular\">\n {fallback}\n </Text>\n )}\n </Box>\n </Box>\n );\n};\n\ninterface LargeDiffPlaceholderProps {\n filePath: string;\n renderedLineCount: number;\n onShowFullDiff?: () => void;\n}\n\nconst LargeDiffPlaceholder = (props: LargeDiffPlaceholderProps) => {\n const { filePath, onShowFullDiff } = props;\n\n return (\n <Box p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg\">\n <EmptyState title=\"Large diffs are hidden by default\" paddingY=\"sm\">\n {onShowFullDiff ? (\n <Button size=\"xs\" variant=\"outline\" aria-label={`Render full diff for ${filePath}`} onClick={onShowFullDiff}>\n Show full diff\n </Button>\n ) : null}\n </EmptyState>\n </Box>\n );\n};\n\ninterface BinaryDiffPlaceholderProps {\n isImage: boolean;\n}\n\nconst BinaryDiffPlaceholder = (props: BinaryDiffPlaceholderProps) => {\n const { isImage } = props;\n const title = isImage ? \"Image diffs are not shown\" : \"Binary diffs are not shown\";\n\n return (\n <Box p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\" bg=\"bg\">\n <EmptyState title={title} paddingY=\"sm\" />\n </Box>\n );\n};\n\nexport type TestDiffViewData = BuiltDiffViewData;\n","import { Box, Button, Skeleton, Stack } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\n\ninterface DeferredDiffLoadProps {\n title: string;\n actionLabel?: string;\n isLoadingDiff: boolean;\n onAction?: () => void;\n}\n\nexport const DeferredDiffLoad = (props: DeferredDiffLoadProps) => {\n const { title, actionLabel, isLoadingDiff, onAction } = props;\n\n return (\n <Box bg=\"bg\" p=\"md\" borderTop=\"1px solid\" borderColor=\"border.subtle\">\n <EmptyState title={title} paddingY=\"sm\">\n {actionLabel ? (\n <Button size=\"xs\" variant=\"outline\" loading={isLoadingDiff} onClick={onAction}>\n {actionLabel}\n </Button>\n ) : null}\n </EmptyState>\n </Box>\n );\n};\n\nconst loadingDiffContentRows = [\"first\", \"second\", \"third\"] as const;\n\nexport const LoadingDiffContent = () => (\n <Stack\n h=\"280px\"\n bg=\"bg\"\n borderTop=\"1px solid\"\n borderColor=\"border.subtle\"\n p=\"xs\"\n gap=\"2xs\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label=\"Loading diff\"\n >\n {loadingDiffContentRows.map((row) => (\n <Skeleton key={row} h=\"20px\" w=\"full\" borderRadius=\"xs\" />\n ))}\n </Stack>\n);\n","import type { Diff } from \"./diff-card\";\nimport { DiffCardBody } from \"./diff-card-body\";\nimport { DeferredDiffLoad, LoadingDiffContent } from \"./diff-card-load-state\";\nimport type { DiffViewMode } from \"./types\";\n\ninterface DiffCardContentProps {\n diff: Diff;\n filePath: string;\n oldContent: string;\n newContent: string;\n isExpanded: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n hasDiffContent: boolean;\n canLoadDiff: boolean;\n shouldAutoLoadDiff: boolean;\n loadError: boolean;\n isLoadingDiff: boolean;\n onLoadDiff: () => Promise<void>;\n hasOptedIntoLargeDiff: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DeferredDiffLoadStateInput {\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n loadError: boolean;\n canLoadDiff: boolean;\n onLoadDiff: () => Promise<void>;\n onShowFullDiff?: () => void;\n}\n\nconst buildDeferredDiffLoadState = (input: DeferredDiffLoadStateInput) => {\n const { isLargeDiff, isGeneratedDiff, loadError, canLoadDiff, onLoadDiff, onShowFullDiff } = input;\n let title = \"Diff content is not loaded yet.\";\n let actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n let onAction: (() => void) | undefined = canLoadDiff ? () => void onLoadDiff() : undefined;\n\n if (isLargeDiff) {\n title = \"Large diffs are hidden by default\";\n actionLabel = canLoadDiff ? \"Show full diff\" : undefined;\n onAction = () => {\n onShowFullDiff?.();\n void onLoadDiff();\n };\n }\n\n if (isGeneratedDiff) {\n title = \"Generated diffs are hidden by default\";\n actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n onAction = canLoadDiff ? () => void onLoadDiff() : undefined;\n }\n\n if (loadError) {\n title = \"Diff failed to load. Try again.\";\n actionLabel = canLoadDiff ? \"Load diff\" : undefined;\n onAction = canLoadDiff ? () => void onLoadDiff() : undefined;\n }\n\n return { title, actionLabel, onAction };\n};\n\nexport const DiffCardContent = (props: DiffCardContentProps) => {\n const {\n diff,\n filePath,\n oldContent,\n newContent,\n isExpanded,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n hasDiffContent,\n canLoadDiff,\n shouldAutoLoadDiff,\n loadError,\n isLoadingDiff,\n onLoadDiff,\n hasOptedIntoLargeDiff,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n\n if (!isExpanded) return null;\n\n if (isBinaryDiff) {\n return (\n <DiffCardBody\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isLargeDiff={false}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n );\n }\n\n if (!hasDiffContent && !shouldAutoLoadDiff) {\n const { title, actionLabel, onAction } = buildDeferredDiffLoadState({\n isLargeDiff,\n isGeneratedDiff,\n loadError,\n canLoadDiff,\n onLoadDiff,\n onShowFullDiff,\n });\n\n return (\n <DeferredDiffLoad title={title} actionLabel={actionLabel} isLoadingDiff={isLoadingDiff} onAction={onAction} />\n );\n }\n\n if (shouldAutoLoadDiff) {\n return <LoadingDiffContent />;\n }\n\n return (\n <DiffCardBody\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isLargeDiff={isLargeDiff}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n );\n};\n","import { Box, Grid, IconButton, Text } from \"@chakra-ui/react\";\nimport { Check, ChevronDown, ChevronRight, Copy } from \"lucide-react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { DiffBubble } from \"./diff-bubble\";\nimport { DiffCardContent } from \"./diff-card-content\";\nimport { isBinaryDiffPath, isGeneratedDiffPath, isImageDiffPath, isLargeDiffContent } from \"./diff-size\";\nimport type { DiffViewMode } from \"./types\";\n\nexport interface Diff {\n change: \"added\" | \"deleted\" | \"modified\" | \"renamed\" | \"copied\" | \"permissionChange\";\n oldPath?: string;\n newPath?: string;\n oldContent?: string;\n newContent?: string;\n additions?: number;\n deletions?: number;\n}\n\ninterface DiffCardProps {\n diff: Diff;\n isSelected?: boolean;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n onSelect?: () => void;\n onLoadDiff?: (path: string) => Promise<void>;\n hasOptedIntoLargeDiff?: boolean;\n onShowFullDiff?: () => void;\n diffViewMode?: DiffViewMode;\n}\n\ninterface DiffCardHeaderProps {\n diff: Diff;\n isExpanded?: boolean;\n onToggleExpanded?: () => void;\n}\n\nexport const shouldAutoLoadDiffContent = (input: {\n isExpanded: boolean;\n isSelected: boolean;\n hasDiffContent: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n requestedPath: string | null;\n filePath: string;\n}) => {\n const {\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n requestedPath,\n filePath,\n } = input;\n\n return (\n isExpanded &&\n isSelected &&\n !hasDiffContent &&\n !isLargeDiff &&\n !isGeneratedDiff &&\n !isBinaryDiff &&\n requestedPath !== filePath\n );\n};\n\nexport const resolveRequestedDiffPath = (input: {\n requestedPath: string | null;\n filePath: string;\n hasDiffContent: boolean;\n}) => {\n const { requestedPath, filePath, hasDiffContent } = input;\n\n if (requestedPath === filePath && hasDiffContent) {\n return null;\n }\n\n return requestedPath;\n};\n\nexport const shouldShowDiffStats = (filePath: string) => !isImageDiffPath(filePath);\n\nexport const resolveDiffFilePath = (diff: Diff) => diff.newPath || diff.oldPath || \"unknown\";\n\nconst useDiffContentLoader = (input: {\n filePath: string;\n isExpanded: boolean;\n isSelected: boolean;\n hasDiffContent: boolean;\n isLargeDiff: boolean;\n isGeneratedDiff: boolean;\n isBinaryDiff: boolean;\n onLoadDiff?: (path: string) => Promise<void>;\n}) => {\n const { filePath, isExpanded, isSelected, hasDiffContent, isLargeDiff, isGeneratedDiff, isBinaryDiff, onLoadDiff } =\n input;\n const [isLoadingDiff, setLoadingDiff] = useState(false);\n const [requestedPath, setRequestedPath] = useState<string | null>(null);\n const [loadError, setLoadError] = useState(false);\n\n const loadDiff = async () => {\n if (!onLoadDiff || isLoadingDiff) return;\n\n setRequestedPath(filePath);\n setLoadError(false);\n setLoadingDiff(true);\n try {\n await onLoadDiff(filePath);\n } catch {\n setRequestedPath(null);\n setLoadError(true);\n } finally {\n setLoadingDiff(false);\n }\n };\n\n const shouldAutoLoadDiff = shouldAutoLoadDiffContent({\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff,\n isGeneratedDiff,\n isBinaryDiff,\n requestedPath,\n filePath,\n });\n\n useEffect(() => {\n setRequestedPath((current) => resolveRequestedDiffPath({ requestedPath: current, filePath, hasDiffContent }));\n }, [filePath, hasDiffContent]);\n\n useEffect(() => {\n if (!onLoadDiff || !shouldAutoLoadDiff || loadError) {\n return;\n }\n\n void loadDiff();\n });\n\n return {\n isLoadingDiff,\n loadError,\n shouldAutoLoadDiff: Boolean(onLoadDiff) && shouldAutoLoadDiff && !loadError,\n loadDiff,\n };\n};\n\nexport const DiffCard = (props: DiffCardProps) => {\n const {\n diff,\n isSelected = false,\n isExpanded = true,\n onToggleExpanded,\n onSelect,\n onLoadDiff,\n hasOptedIntoLargeDiff = false,\n onShowFullDiff,\n diffViewMode = \"unified\",\n } = props;\n\n const filePath = resolveDiffFilePath(diff);\n const oldContent = diff.oldContent || \"\";\n const newContent = diff.newContent || \"\";\n const isLargeDiff = isLargeDiffContent(diff);\n const isGeneratedDiff = isGeneratedDiffPath(filePath);\n const isBinaryDiff = isBinaryDiffPath(filePath);\n const blocksDiffContentLoad = isBinaryDiff && !isImageDiffPath(filePath);\n const hasDiffContent = diff.oldContent !== undefined || diff.newContent !== undefined;\n const { isLoadingDiff, loadError, shouldAutoLoadDiff, loadDiff } = useDiffContentLoader({\n filePath,\n isExpanded,\n isSelected,\n hasDiffContent,\n isLargeDiff: isLargeDiff && !hasOptedIntoLargeDiff,\n isGeneratedDiff,\n isBinaryDiff: blocksDiffContentLoad,\n onLoadDiff,\n });\n\n return (\n <Box\n data-testid=\"diff-card\"\n border=\"1px solid\"\n borderColor={isSelected ? \"border.accent\" : \"border.subtle\"}\n borderRadius=\"xs\"\n overflow=\"visible\"\n bg=\"bg\"\n width=\"100%\"\n maxW=\"100%\"\n transition=\"border-color 0.14s ease\"\n _hover={{ borderColor: \"border.accent\" }}\n onClick={onSelect}\n >\n <DiffCardHeader diff={diff} isExpanded={isExpanded} onToggleExpanded={onToggleExpanded} />\n\n <DiffCardContent\n diff={diff}\n filePath={filePath}\n oldContent={oldContent}\n newContent={newContent}\n isExpanded={isExpanded}\n isLargeDiff={isLargeDiff}\n isGeneratedDiff={isGeneratedDiff}\n isBinaryDiff={blocksDiffContentLoad}\n hasDiffContent={hasDiffContent}\n canLoadDiff={Boolean(onLoadDiff)}\n shouldAutoLoadDiff={shouldAutoLoadDiff}\n loadError={loadError}\n isLoadingDiff={isLoadingDiff}\n onLoadDiff={loadDiff}\n hasOptedIntoLargeDiff={hasOptedIntoLargeDiff}\n onShowFullDiff={onShowFullDiff}\n diffViewMode={diffViewMode}\n />\n </Box>\n );\n};\n\nexport const DiffCardHeader = (props: DiffCardHeaderProps) => {\n const { diff, isExpanded = true, onToggleExpanded } = props;\n const filePath = resolveDiffFilePath(diff);\n const additions = diff.additions ?? 0;\n const deletions = diff.deletions ?? 0;\n const showStats = shouldShowDiffStats(filePath);\n const [isCopied, setIsCopied] = useState(false);\n const copyResetTimeoutRef = useRef<number | null>(null);\n\n useEffect(() => {\n return () => {\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n };\n }, []);\n\n const copyFilePath = async () => {\n try {\n await navigator.clipboard.writeText(filePath);\n setIsCopied(true);\n if (copyResetTimeoutRef.current !== null) {\n window.clearTimeout(copyResetTimeoutRef.current);\n }\n copyResetTimeoutRef.current = window.setTimeout(() => setIsCopied(false), 1200);\n } catch {\n setIsCopied(false);\n }\n };\n\n return (\n <Grid\n data-testid=\"diff-card-header\"\n templateColumns=\"auto minmax(0, 1fr) auto\"\n px=\"xs\"\n py=\"2xs\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n borderBottom={isExpanded ? \"1px solid\" : \"none\"}\n borderColor=\"border.subtle\"\n borderTopRadius=\"xs\"\n borderBottomRadius={isExpanded ? \"0\" : \"xs\"}\n position=\"sticky\"\n top=\"0\"\n zIndex=\"1\"\n bg=\"bg\"\n cursor=\"pointer\"\n transition=\"background 0.14s ease\"\n _hover={{ bg: \"bg\" }}\n onClick={() => onToggleExpanded?.()}\n gap=\"sm\"\n >\n <IconButton\n aria-label={isExpanded ? \"Collapse\" : \"Expand\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n onToggleExpanded?.();\n }}\n flexShrink={0}\n >\n {isExpanded ? <ChevronDown size={16} /> : <ChevronRight size={16} />}\n </IconButton>\n\n <Grid templateColumns=\"minmax(0, max-content) auto\" alignItems=\"center\" justifyContent=\"start\" gap=\"2xs\" minW={0}>\n <Box minW={0} overflow=\"hidden\" textOverflow=\"ellipsis\" whiteSpace=\"nowrap\" title={filePath}>\n {diff.change === \"renamed\" && (\n <Text as=\"span\" textStyle=\"sm\">\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" mr=\"xs\">\n {diff.oldPath}\n </Text>\n <Box as=\"span\" display=\"inline-flex\" alignItems=\"center\" verticalAlign=\"middle\" mr=\"xs\">\n <ChevronRight size={12} />\n </Box>\n {diff.newPath}\n </Text>\n )}\n {diff.change === \"deleted\" && (\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" textStyle=\"sm\">\n {filePath}\n </Text>\n )}\n {diff.change !== \"renamed\" && diff.change !== \"deleted\" && (\n <Text as=\"span\" textStyle=\"sm\">\n {filePath}\n </Text>\n )}\n </Box>\n\n <Box\n opacity={isCopied ? \"1\" : \"0\"}\n pointerEvents={isCopied ? \"auto\" : \"none\"}\n transition=\"opacity 120ms ease\"\n css={{\n \"[data-testid='diff-card-header']:hover &, [data-testid='diff-card-header']:focus-within &\": {\n opacity: 1,\n pointerEvents: \"auto\",\n },\n }}\n >\n <Tooltip content={isCopied ? \"Copied\" : \"Copy file path\"}>\n <IconButton\n aria-label={isCopied ? \"Copied\" : \"Copy file path\"}\n variant=\"ghost\"\n size=\"2xs\"\n onClick={(event) => {\n event.stopPropagation();\n void copyFilePath();\n }}\n flexShrink={0}\n >\n {isCopied ? <Check size={12} /> : <Copy size={12} />}\n </IconButton>\n </Tooltip>\n </Box>\n </Grid>\n\n {showStats ? (\n <Box flexShrink={0}>\n <DiffBubble variant=\"ghost\" additions={additions} deletions={deletions} />\n </Box>\n ) : null}\n </Grid>\n );\n};\n","import { Stack } from \"@chakra-ui/react\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\nexport const DiffDrawerEmptyState = () => (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\">\n <ScrollArea flex=\"1\" minH=\"0\" contentProps={{ p: \"xs\", spaceY: \"xs\" }}>\n <EmptyState title=\"No changes detected\" description=\"Make some changes to see the diff here.\" paddingY=\"sm\" />\n </ScrollArea>\n </Stack>\n);\n","import type { Diff } from \"./diff-card\";\nimport { isBinaryDiffPath, isImageDiffPath, isLargeDiffContent } from \"./diff-size\";\nimport { buildDiffViewData } from \"./diff-view-adapter\";\nimport type { DiffViewMode } from \"./types\";\n\nconst CARD_HEADER_HEIGHT = 34;\nconst CARD_BODY_LINE_HEIGHT = 18;\nconst HUNK_ROW_HEIGHT = 28;\nconst COLLAPSED_CARD_HEIGHT = 34;\nconst DEFERRED_BODY_HEIGHT = 88;\nconst IMAGE_BODY_HEIGHT = 338;\nconst ITEM_GAP_HEIGHT = 8;\n\ninterface EstimateDiffCardHeightInput {\n diff: Diff;\n isCollapsed: boolean;\n hasOptedIntoLargeDiff?: boolean;\n diffViewMode?: DiffViewMode;\n}\n\nconst deferredCardHeight = () => CARD_HEADER_HEIGHT + DEFERRED_BODY_HEIGHT + ITEM_GAP_HEIGHT;\n\n// Mirrors the branches DiffCardContent renders, so the virtualizer's estimate matches the DOM\n// before measureElement gets a chance to refine it.\nexport const estimateDiffCardHeight = (input: EstimateDiffCardHeightInput) => {\n const { diff, isCollapsed, hasOptedIntoLargeDiff = false, diffViewMode = \"unified\" } = input;\n\n if (isCollapsed) return COLLAPSED_CARD_HEIGHT + ITEM_GAP_HEIGHT;\n\n const hasDiffContent = diff.oldContent !== undefined || diff.newContent !== undefined;\n const filePath = diff.newPath ?? diff.oldPath ?? \"\";\n if (isImageDiffPath(filePath) && (diff.oldContent || diff.newContent)) {\n return CARD_HEADER_HEIGHT + IMAGE_BODY_HEIGHT + ITEM_GAP_HEIGHT;\n }\n if (isBinaryDiffPath(filePath)) return deferredCardHeight();\n if (!hasDiffContent) return deferredCardHeight();\n if (isLargeDiffContent(diff) && !hasOptedIntoLargeDiff) return deferredCardHeight();\n\n const { unifiedContentRows, splitContentRows, hunkRows } = buildDiffViewData({\n original: diff.oldContent ?? \"\",\n modified: diff.newContent ?? \"\",\n oldPath: diff.oldPath,\n newPath: diff.newPath,\n });\n const contentRows = diffViewMode === \"split\" ? splitContentRows : unifiedContentRows;\n if (contentRows === 0 && hunkRows === 0) return deferredCardHeight();\n\n const bodyHeight = contentRows * CARD_BODY_LINE_HEIGHT + hunkRows * HUNK_ROW_HEIGHT;\n return CARD_HEADER_HEIGHT + bodyHeight + ITEM_GAP_HEIGHT;\n};\n","import type { Diff } from \"./diff-card\";\n\ninterface SelectedExpansionCommand {\n action: string;\n id: number;\n path?: string;\n direction?: \"up\" | \"down\";\n}\n\ninterface ResolveSelectedScrollStateInput {\n diffs: Diff[];\n selectedDiffPath: string | null;\n collapsedPaths: Set<string>;\n expansionCommand: SelectedExpansionCommand | null;\n completedScrollCommandId: number | null;\n}\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\nconst PINNED_DIFF_LOOKBEHIND_COUNT = 24;\n\nexport const resolveSelectedScrollState = (input: ResolveSelectedScrollStateInput) => {\n const { diffs, selectedDiffPath, collapsedPaths, expansionCommand, completedScrollCommandId } = input;\n let selectedScrollPath = selectedDiffPath;\n let selectedScrollSourceKey = selectedDiffPath ? `selected:${selectedDiffPath}` : null;\n const selectedScrollCommandId = expansionCommand?.action === \"expand-selected\" ? expansionCommand.id : null;\n const hasCompletedSelectedScroll =\n selectedScrollCommandId !== null && completedScrollCommandId === selectedScrollCommandId;\n\n if (expansionCommand?.action === \"expand-selected\" && expansionCommand.path) {\n selectedScrollPath = expansionCommand.path;\n selectedScrollSourceKey = `command:${expansionCommand.id}:${expansionCommand.path}`;\n }\n\n let selectedScrollKey = selectedScrollSourceKey;\n if (selectedScrollPath && selectedScrollSourceKey) {\n const selectedScrollExpansionState = collapsedPaths.has(selectedScrollPath) ? \"collapsed\" : \"expanded\";\n selectedScrollKey = `${selectedScrollSourceKey}:${selectedScrollExpansionState}`;\n }\n\n const selectedScrollIndex = selectedScrollPath\n ? diffs.findIndex((diff) => getDiffPath(diff) === selectedScrollPath)\n : -1;\n const shouldPinSelectedScrollIndex =\n selectedScrollIndex >= 0 &&\n expansionCommand?.action === \"expand-selected\" &&\n expansionCommand.direction === \"up\" &&\n !hasCompletedSelectedScroll;\n\n return {\n selectedScrollPath,\n selectedScrollKey,\n selectedScrollCommandId,\n selectedScrollIndex,\n shouldPinSelectedScrollIndex,\n hasCompletedSelectedScroll,\n };\n};\n\nexport const includePinnedDiffIndexes = (input: {\n indexes: number[];\n selectedScrollIndex: number;\n shouldPinSelectedScrollIndex: boolean;\n}) => {\n const { indexes, selectedScrollIndex, shouldPinSelectedScrollIndex } = input;\n if (!shouldPinSelectedScrollIndex || indexes.includes(selectedScrollIndex)) return indexes;\n\n const pinnedStartIndex = Math.max(0, selectedScrollIndex - PINNED_DIFF_LOOKBEHIND_COUNT);\n const pinnedIndexes = Array.from(\n { length: selectedScrollIndex - pinnedStartIndex + 1 },\n (_, index) => pinnedStartIndex + index,\n );\n\n return Array.from(new Set([...indexes, ...pinnedIndexes])).sort((a, b) => a - b);\n};\n","import type { Virtualizer } from \"@tanstack/react-virtual\";\nimport { useLayoutEffect, useState } from \"react\";\nimport type { Diff } from \"./diff-card\";\nimport type { DiffExpansionCommand } from \"./diff-drawer\";\nimport { resolveSelectedScrollState } from \"./diff-drawer-scroll\";\n\ninterface UseSelectedDiffScrollInput {\n diffs: Diff[];\n selectedDiffPath: string | null;\n collapsedPaths: Set<string>;\n expansionCommand: DiffExpansionCommand | null;\n scrollRef: { current: HTMLDivElement | null };\n virtualizerRef: { current: Virtualizer<HTMLDivElement, Element> | null };\n suppressScrollAdjustRef: { current: boolean };\n}\n\n// Re-align for a few frames so the target settles as it and its neighbours measure, then latch the\n// command as done. Capped so a diff that never settles can't spin the animation loop.\nconst SETTLE_FRAME_COUNT = 3;\nconst MAX_ALIGNMENT_FRAMES = 12;\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nexport const useSelectedDiffScroll = (input: UseSelectedDiffScrollInput) => {\n const {\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n } = input;\n const [completedScrollCommandId, setCompletedScrollCommandId] = useState<number | null>(null);\n const {\n selectedScrollPath,\n selectedScrollKey,\n selectedScrollCommandId,\n selectedScrollIndex,\n shouldPinSelectedScrollIndex,\n hasCompletedSelectedScroll,\n } = resolveSelectedScrollState({\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n completedScrollCommandId,\n });\n\n useLayoutEffect(() => {\n if (!selectedScrollPath || !selectedScrollKey) return;\n if (hasCompletedSelectedScroll) return;\n // Selecting a collapsed diff expands it first (a sibling layout effect updates collapsedPaths and\n // re-runs this one). Wait for that: scrolling to a card that is about to grow lands on a stale\n // offset and snaps once it expands. Once expanded, its measured offset is stable.\n if (collapsedPaths.has(selectedScrollPath)) return;\n\n const index = diffs.findIndex((diff) => getDiffPath(diff) === selectedScrollPath);\n if (index < 0) return;\n\n const virtualizer = virtualizerRef.current;\n const scrollElement = scrollRef.current;\n if (!virtualizer || !scrollElement) return;\n\n const frameIds: number[] = [];\n let cancelledByUserScroll = false;\n // Drive the scroll from the virtualizer's measured card heights (not per-diff estimates) and hold\n // its keep-in-place adjustments off while we do, so a mid-list target lands where it actually is\n // instead of overshooting and snapping back — the \"wild jump\" when opening files further down.\n suppressScrollAdjustRef.current = true;\n const stopAligning = () => {\n suppressScrollAdjustRef.current = false;\n };\n const cancelSelectedScroll = () => {\n cancelledByUserScroll = true;\n stopAligning();\n if (selectedScrollCommandId !== null) {\n setCompletedScrollCommandId(selectedScrollCommandId);\n }\n };\n\n let alignmentFrames = 0;\n const alignSelectedDiff = () => {\n if (cancelledByUserScroll) return;\n virtualizer.scrollToIndex(index, { align: \"start\" });\n alignmentFrames += 1;\n if (alignmentFrames >= SETTLE_FRAME_COUNT && selectedScrollCommandId !== null) {\n stopAligning();\n setCompletedScrollCommandId(selectedScrollCommandId);\n return;\n }\n if (alignmentFrames < MAX_ALIGNMENT_FRAMES) {\n frameIds.push(requestAnimationFrame(alignSelectedDiff));\n return;\n }\n stopAligning();\n };\n\n scrollElement.addEventListener(\"wheel\", cancelSelectedScroll, { passive: true });\n scrollElement.addEventListener(\"touchmove\", cancelSelectedScroll, { passive: true });\n alignSelectedDiff();\n\n return () => {\n stopAligning();\n scrollElement.removeEventListener(\"wheel\", cancelSelectedScroll);\n scrollElement.removeEventListener(\"touchmove\", cancelSelectedScroll);\n for (const frameId of frameIds) {\n cancelAnimationFrame(frameId);\n }\n };\n }, [\n selectedScrollKey,\n selectedScrollPath,\n selectedScrollCommandId,\n hasCompletedSelectedScroll,\n diffs,\n collapsedPaths,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n ]);\n\n return { selectedScrollIndex, shouldPinSelectedScrollIndex };\n};\n","import { Box, Stack } from \"@chakra-ui/react\";\nimport { defaultRangeExtractor, type Virtualizer } from \"@tanstack/react-virtual\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { useVirtualizer } from \"@/utils/use-virtualizer\";\nimport { type Diff, DiffCard } from \"./diff-card\";\nimport { DiffDrawerEmptyState } from \"./diff-drawer-empty-state\";\nimport { estimateDiffCardHeight } from \"./diff-drawer-height\";\nimport { includePinnedDiffIndexes } from \"./diff-drawer-scroll\";\nimport type { DiffViewMode } from \"./types\";\nimport { useSelectedDiffScroll } from \"./use-selected-diff-scroll\";\n\nexport interface DiffDrawerProps {\n diffs: Diff[];\n selectedDiffPath?: string | null;\n onLoadDiff?: (path: string) => Promise<void>;\n onSelectDiffPath?: (path: string) => void;\n onExpansionStateChange?: (state: DiffDrawerExpansionState) => void;\n expansionCommand?: DiffExpansionCommand | null;\n diffViewMode?: DiffViewMode;\n}\n\nexport interface DiffExpansionCommand {\n action: \"expand\" | \"collapse\" | \"expand-selected\";\n id: number;\n path?: string;\n direction?: \"up\" | \"down\";\n}\n\nexport interface DiffDrawerExpansionState {\n allExpanded: boolean;\n allCollapsed: boolean;\n}\n\nexport { estimateDiffCardHeight } from \"./diff-drawer-height\";\nexport type { Diff };\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\n\nconst INITIAL_EXPANDED_DIFF_COUNT = 10;\nconst INITIAL_COLLAPSED_LINE_THRESHOLD = 100;\n\nexport const buildInitialCollapsedPaths = (diffs: Diff[]) => {\n if (diffs.length <= INITIAL_EXPANDED_DIFF_COUNT) return new Set<string>();\n\n return new Set(\n diffs\n .filter((diff, index) => {\n const lineCount = (diff.additions ?? 0) + (diff.deletions ?? 0);\n return index >= INITIAL_EXPANDED_DIFF_COUNT || lineCount > INITIAL_COLLAPSED_LINE_THRESHOLD;\n })\n .map((diff) => getDiffPath(diff)),\n );\n};\n\nexport const buildAllCollapsedPaths = (diffs: Diff[]) => new Set(diffs.map((diff) => getDiffPath(diff)));\n\nexport const toggleCollapsedPath = (collapsedPaths: Set<string>, path: string) => {\n const next = new Set(collapsedPaths);\n if (next.has(path)) {\n next.delete(path);\n } else {\n next.add(path);\n }\n return next;\n};\n\nexport const resolveCollapsedPathsForSelectedDiff = (\n diffs: Diff[],\n collapsedPaths: Set<string>,\n selectedDiffPath: string | null,\n) => {\n if (!selectedDiffPath) return collapsedPaths;\n if (!collapsedPaths.has(selectedDiffPath)) return collapsedPaths;\n if (!diffs.some((diff) => getDiffPath(diff) === selectedDiffPath)) return collapsedPaths;\n\n const next = new Set(collapsedPaths);\n next.delete(selectedDiffPath);\n return next;\n};\n\n// Expand the newly navigated-to diff and re-collapse the one the previous tree navigation expanded.\n// Clicking through the tree otherwise leaves a growing wall of expanded diffs; their measured heights\n// drift ever further from the scroll estimates, which is what makes the panel overshoot and jump.\n// Manual chevron toggles don't flow through here, so diffs the user opens by hand stay open.\nexport const resolveCollapsedPathsForNavigation = (\n diffs: Diff[],\n collapsedPaths: Set<string>,\n selectedDiffPath: string,\n previousNavigatedPath: string | null,\n) => {\n const expanded = resolveCollapsedPathsForSelectedDiff(diffs, collapsedPaths, selectedDiffPath);\n if (\n !previousNavigatedPath ||\n previousNavigatedPath === selectedDiffPath ||\n expanded.has(previousNavigatedPath) ||\n !diffs.some((diff) => getDiffPath(diff) === previousNavigatedPath)\n ) {\n return expanded;\n }\n\n const next = expanded === collapsedPaths ? new Set(collapsedPaths) : expanded;\n next.add(previousNavigatedPath);\n return next;\n};\n\nexport function DiffDrawer(props: DiffDrawerProps) {\n const {\n diffs,\n selectedDiffPath = null,\n onLoadDiff,\n onSelectDiffPath,\n onExpansionStateChange,\n expansionCommand = null,\n diffViewMode = \"unified\",\n } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const reportedExpansionStateRef = useRef<DiffDrawerExpansionState | null>(null);\n // Populated after the virtualizer is created below so the scroll hook (which runs first) can drive\n // it from a layout effect. `suppressScrollAdjustRef` lets the hook freeze the virtualizer's\n // keep-in-place adjustments while it aligns the selected diff, so re-measuring off-screen cards\n // can't shove the scroll around mid-align.\n const virtualizerRef = useRef<Virtualizer<HTMLDivElement, Element> | null>(null);\n const suppressScrollAdjustRef = useRef(false);\n const lastNavigatedPathRef = useRef<string | null>(null);\n const [collapsedPaths, setCollapsedPaths] = useState<Set<string>>(() => buildInitialCollapsedPaths(diffs));\n const [largeDiffOptInPaths, setLargeDiffOptInPaths] = useState<Set<string>>(() => new Set());\n const { selectedScrollIndex, shouldPinSelectedScrollIndex } = useSelectedDiffScroll({\n diffs,\n selectedDiffPath,\n collapsedPaths,\n expansionCommand,\n scrollRef,\n virtualizerRef,\n suppressScrollAdjustRef,\n });\n\n const virtualizer = useVirtualizer({\n count: diffs.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: (index) => {\n const diff = diffs[index];\n const path = getDiffPath(diff);\n return estimateDiffCardHeight({\n diff,\n isCollapsed: collapsedPaths.has(path),\n hasOptedIntoLargeDiff: largeDiffOptInPaths.has(path),\n diffViewMode,\n });\n },\n getItemKey: (index) => getDiffPath(diffs[index]),\n overscan: 3,\n rangeExtractor: (range) => {\n const indexes = defaultRangeExtractor(range);\n return includePinnedDiffIndexes({ indexes, selectedScrollIndex, shouldPinSelectedScrollIndex });\n },\n });\n virtualizer.shouldAdjustScrollPositionOnItemSizeChange = (_item, _delta, instance) =>\n !instance.isScrolling && !suppressScrollAdjustRef.current;\n virtualizerRef.current = virtualizer;\n\n useLayoutEffect(() => {\n if (!selectedDiffPath) return;\n\n setCollapsedPaths((prev) => resolveCollapsedPathsForSelectedDiff(diffs, prev, selectedDiffPath));\n }, [diffs, selectedDiffPath]);\n\n useLayoutEffect(() => {\n if (!expansionCommand) return;\n\n if (expansionCommand.action === \"expand-selected\") {\n const navigatedPath = expansionCommand.path;\n if (navigatedPath) {\n const previousNavigatedPath = lastNavigatedPathRef.current;\n lastNavigatedPathRef.current = navigatedPath;\n setCollapsedPaths((prev) =>\n resolveCollapsedPathsForNavigation(diffs, prev, navigatedPath, previousNavigatedPath),\n );\n }\n return;\n }\n\n // Expand/collapse all is an explicit user choice; don't let it re-collapse on the next navigation.\n lastNavigatedPathRef.current = null;\n setCollapsedPaths(expansionCommand.action === \"collapse\" ? buildAllCollapsedPaths(diffs) : new Set());\n }, [diffs, expansionCommand]);\n\n useEffect(() => {\n const expansionState = {\n allExpanded: collapsedPaths.size === 0,\n allCollapsed: diffs.length > 0 && diffs.every((diff) => collapsedPaths.has(getDiffPath(diff))),\n };\n const reportedExpansionState = reportedExpansionStateRef.current;\n if (\n reportedExpansionState?.allExpanded === expansionState.allExpanded &&\n reportedExpansionState.allCollapsed === expansionState.allCollapsed\n ) {\n return;\n }\n\n reportedExpansionStateRef.current = expansionState;\n onExpansionStateChange?.(expansionState);\n }, [collapsedPaths, diffs, onExpansionStateChange]);\n\n if (diffs.length === 0) return <DiffDrawerEmptyState />;\n\n const toggleExpanded = (path: string) => {\n setCollapsedPaths((prev) => toggleCollapsedPath(prev, path));\n };\n\n const showFullDiff = (path: string) => {\n setLargeDiffOptInPaths((prev) => {\n const next = new Set(prev);\n next.add(path);\n return next;\n });\n };\n\n const virtualItems = virtualizer.getVirtualItems();\n\n return (\n <Stack h=\"full\" minH=\"0\" gap=\"0\" bg=\"bg\">\n <Box position=\"relative\" flex=\"1\" minH=\"0\" bg=\"bg\">\n <ScrollArea\n position=\"absolute\"\n inset=\"0\"\n viewportRef={scrollRef}\n viewportProps={{ style: { overflowAnchor: \"none\" } }}\n contentProps={{ p: \"xs\" }}\n >\n <Box position=\"relative\" width=\"100%\" style={{ height: virtualizer.getTotalSize() }}>\n {virtualItems.map((virtualItem) => {\n const diff = diffs[virtualItem.index];\n const path = getDiffPath(diff);\n\n return (\n <Box\n key={virtualItem.key}\n data-index={virtualItem.index}\n ref={virtualizer.measureElement}\n position=\"absolute\"\n left=\"0\"\n width=\"100%\"\n pb=\"xs\"\n style={{ top: `${virtualItem.start}px` }}\n >\n <DiffCard\n key={path}\n diff={diff}\n isSelected={selectedDiffPath === path}\n isExpanded={!collapsedPaths.has(path)}\n onToggleExpanded={() => toggleExpanded(path)}\n onSelect={() => onSelectDiffPath?.(path)}\n onLoadDiff={onLoadDiff}\n hasOptedIntoLargeDiff={largeDiffOptInPaths.has(path)}\n onShowFullDiff={() => showFullDiff(path)}\n diffViewMode={diffViewMode}\n />\n </Box>\n );\n })}\n </Box>\n </ScrollArea>\n </Box>\n </Stack>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAuBA,IAAayB,KAA2BC,MAAkC;CACxE,IAAM,EACJX,SACAC,aACAC,eACAC,eACAC,gBACAC,0BACAC,mBACAC,kBAAe,WACfE,qBACEE;CAEJ,IAAIjB,EAAiBO,CAAQ,GAAG;EAC9B,IAAMW,IAAcC,EAAsBX,CAAU,GAC9CY,IAAcD,EAAsBV,CAAU;EAUpD,OATIR,EAAgBM,CAAQ,MAAMW,KAAeE,KACxC;GACLC,MAAM;GACNd;GACAgB,QAAQL;GACRM,QAAQJ;EACV,IAGK;GACLC,MAAM;GACNd;GACAkB,SAASxB,EAAgBM,CAAQ;EACnC;CACF;CAiBA,OAfIG,KAAe,CAACC,IACX;EACLU,MAAM;EACNd;EACAmB,mBAAmB3B,EAAiBO,CAAI;EACxCM;CACF,IASK;EACLS,MAAM;EACNM,eARoBZ,KAAiBZ,EAAAA,CAAmB;GACxDyB,UAAUpB;GACVqB,UAAUpB;GACVqB,SAASxB,EAAKwB;GACdC,SAASzB,EAAKyB;EAChB,CAGEJ;EACAK,YAAYnB,MAAiB;CAC/B;AACF,GAEMM,KAAyBc,MAAqBA,EAAQC,WAAW,aAAa,IAAID,IAAU,IAErFE,KAAeC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC1B,EAAAhC,SAAAC,aAAAC,eAAAC,eAAAC,gBAAAC,0BAAAC,mBAAAC,cAAA0B,MASIH,GADFvB,IAAA0B,MAAAC,KAAAA,IAAA,YAAAD,GAAwBE;CAAA,AAAAJ,EAAA,OAAA/B,KAAA+B,EAAA,OAAAxB,KAAAwB,EAAA,OAAA9B,KAAA8B,EAAA,OAAA1B,KAAA0B,EAAA,OAAA3B,KAAA2B,EAAA,OAAA5B,KAAA4B,EAAA,OAAA7B,KAAA6B,EAAA,OAAAzB,KAEZ6B,IAAAzB,EAAwB;EAAAV;EAAAC;EAAAC;EAAAC;EAAAC;EAAAC;EAAAC;EAAAC;CAStC,CAAC,GAACwB,EAAA,KAAA/B,GAAA+B,EAAA,KAAAxB,GAAAwB,EAAA,KAAA9B,GAAA8B,EAAA,KAAA1B,GAAA0B,EAAA,KAAA3B,GAAA2B,EAAA,KAAA5B,GAAA4B,EAAA,KAAA7B,GAAA6B,EAAA,KAAAzB,GAAAyB,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CATF,IAAAK,IAAcD,GASXE;CAAA,AAAAN,EAAA,OAAA/B,KAAA+B,EAAA,QAAAK,EAAAf,gBAAAU,EAAA,QAAAK,EAAArB,QAAAgB,EAAA,QAAAK,EAAAV,cAAAK,EAAA,QAAA5B,KAAA4B,EAAA,QAAA7B,KAIEmC,IAAAD,EAAKrB,SAAU,YACd,kBAACkgB,GAAD;EACY/gB,UAAAA;EACAC,UAAAA;EACD,SAAAH,EAAIwB;EACJ,SAAAxB,EAAIyB;EACD,YAAAW,EAAKV;EACX,MAAAU,EAAKf;CAAa,CAAA,GAE3BU,EAAA,KAAA/B,GAAA+B,EAAA,MAAAK,EAAAf,cAAAU,EAAA,MAAAK,EAAArB,MAAAgB,EAAA,MAAAK,EAAAV,YAAAK,EAAA,MAAA5B,GAAA4B,EAAA,MAAA7B,GAAA6B,EAAA,MAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;CAAA,AAAAP,EAAA,QAAAK,EAAArB,QAAAgB,EAAA,QAAAK,EAAAlB,UAAAa,EAAA,QAAAK,EAAAnB,UACAqB,IAAAF,EAAKrB,SAAU,WAAW,kBAAC4hB,GAAD;EAA0B,QAAAvgB,EAAKnB;EAAiB,QAAAmB,EAAKlB;CAAO,CAAA,GAAIa,EAAA,MAAAK,EAAArB,MAAAgB,EAAA,MAAAK,EAAAlB,QAAAa,EAAA,MAAAK,EAAAnB,QAAAc,EAAA,MAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAQ;CAAA,AAAAR,EAAA,QAAAK,EAAAjB,WAAAY,EAAA,QAAAK,EAAArB,QAC1FwB,IAAAH,EAAKrB,SAAU,YAAY,kBAAC8hB,GAAD,EAAgC,SAAAzgB,EAAKjB,QAAQ,CAAA,GAAIY,EAAA,MAAAK,EAAAjB,SAAAY,EAAA,MAAAK,EAAArB,MAAAgB,EAAA,MAAAQ,KAAAA,IAAAR,EAAA;CAAA,IAAAS;CAAA,AAAAT,EAAA,QAAAK,EAAAnC,YAAA8B,EAAA,QAAAK,EAAArB,QAAAgB,EAAA,QAAAK,EAAA9B,kBAAAyB,EAAA,QAAAK,EAAAhB,qBAC5EoB,IAAAJ,EAAKrB,SAAU,iBACd,kBAACgiB,GAAD;EACY,UAAA3gB,EAAKnC;EACI,mBAAAmC,EAAKhB;EACR,gBAAAgB,EAAK9B;CAAe,CAAA,GAEvCyB,EAAA,MAAAK,EAAAnC,UAAA8B,EAAA,MAAAK,EAAArB,MAAAgB,EAAA,MAAAK,EAAA9B,gBAAAyB,EAAA,MAAAK,EAAAhB,mBAAAW,EAAA,MAAAS,KAAAA,IAAAT,EAAA;CAAA,IAAAU;CACG,OADHV,EAAA,QAAAM,KAAAN,EAAA,QAAAO,KAAAP,EAAA,QAAAQ,KAAAR,EAAA,QAAAS,KAnBHC,IAAA,kBAACwgB,GAAD;EAAQ,IAAA;EAAwB,oBAAA;EAAc,UAAA;EAA9C,UAAA;GACG5gB;GAUAC;GACAC;GACAC;EAbC;KAoBET,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAAAP,EAAA,MAAAQ,GAAAR,EAAA,MAAAS,GAAAT,EAAA,MAAAU,KAAAA,IAAAV,EAAA,KApBNU;AAoBM,GASJE,KAAmBb,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACvB,EAAAf,WAAAC,cAA2BY,GAAMG;CAAA,AAAAF,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAIZZ,IAAA;EAAAa,MAAQ;EAAKC,IAAM;CAAU,GAAChB,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAI;CAAA,AAAAJ,EAAA,OAAAd,IAOoBkB,IAAAJ,EAAA,MAAnEI,IAAA,kBAACghB,GAAD;EAAsB,OAAA;EAAWliB,KAAAA;EAAiB,UAAA;CAAc,CAAA,GAAGc,EAAA,KAAAd,GAAAc,EAAA,KAAAI;CAAA,IAAAE;CAAA,AAAAN,EAAA,OAAAb,IACAmB,IAAAN,EAAA,MAAnEM,IAAA,kBAAC8gB,GAAD;EAAsB,OAAA;EAAWjiB,KAAAA;EAAiB,UAAA;CAAc,CAAA,GAAGa,EAAA,KAAAb,GAAAa,EAAA,KAAAM;CAAA,IAAAC;CAC9D,OAD8DP,EAAA,OAAAI,KAAAJ,EAAA,OAAAM,KATrEC,IAAA,kBAAC+gB,GAAD;EACmB,iBAAAphB;EACb,KAAA;EACF,GAAA;EACQ,WAAA;EACE,aAAA;EACT,IAAA;EANL,UAAA,CAQEE,GACAE,CATG;KAUEN,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAVPO;AAUO,GAULc,KAAiBtB,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACrB,EAAAiB,UAAAC,QAAAC,gBAAiCrB,GAAMG;CAAA,AAAAF,EAAA,OAAAkB,IAa5BhB,IAAAF,EAAA,MATPE,IAAA,kBAACshB,GAAD;EACK,IAAA;EACA,IAAA;EACO,WAAA;EACJ,OAAA;EACO,cAAA;EACD,aAAA;EAEXtgB,UAAAA;CARE,CAAA,GASElB,EAAA,KAAAkB,GAAAlB,EAAA,KAAAE;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAoB,KAAApB,EAAA,OAAAkB,KAAAlB,EAAA,OAAAmB,KACPf,IAAA,kBAAC8gB,GAAD;EAAa,SAAA;EAAkB,YAAA;EAAc,MAAA;EAAU,GAAA;EACpD/f,UAAAA,IACC,kBAACwgB,GAAD;GAAYxgB;GAAU,KAAA,GAAGD,EAAK;GAAoB,MAAA;GAAa,MAAA;GAAiB,WAAA;EAAS,CAAA,IAEzF,kBAACsgB,GAAD;GAAY,OAAA;GAAqB,WAAA;GAC9BpgB,UAAAA;EADE,CAAA;CAJL,CAAA,GAQEpB,EAAA,KAAAoB,GAAApB,EAAA,KAAAkB,GAAAlB,EAAA,KAAAmB,GAAAnB,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAM;CACF,OADEN,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAnBRE,IAAA,kBAAC4gB,GAAD;EAAY,QAAA;EAAwB,aAAA;EAA6B,cAAA;EAAc,UAAA;EAAY,IAAA;EAAiB,MAAA;EAA5G,UAAA,CACEhhB,GAUAE,CAXE;KAoBEJ,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,KAAAA,IAAAN,EAAA,IApBNM;AAoBM,GAUJiB,KAAuBxB,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC3B,EAAA/B,aAAAK,sBAAqCwB,GAAMG;CAAA,AAAAF,EAAA,OAAA9B,KAAA8B,EAAA,OAAAzB,KAKpC2B,IAAA3B,IACC,kBAACqjB,GAAD;EAAa,MAAA;EAAa,SAAA;EAAsB,cAAA,wBAAwB1jB;EAAqBK,SAAAA;EAAgB,UAAA;CAAtG,CAAA,IADR,MAIOyB,EAAA,KAAA9B,GAAA8B,EAAA,KAAAzB,GAAAyB,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAI;CAEN,OAFMJ,EAAA,OAAAE,IAENE,IAAAJ,EAAA,MARNI,IAAA,kBAAC8gB,GAAD;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EAAmB,IAAA;EAC/D,UAAA,kBAACrf,GAAD;GAAkB,OAAA;GAA6C,UAAA;GAC5D3B,UAAAA;EADQ,CAAA;CADT,CAAA,GAQEF,EAAA,KAAAE,GAAAF,EAAA,KAAAI,IARNA;AAQM,GAQJqB,KAAwB1B,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC5B,EAAAb,eAAoBW,GACpB2B,IAActC,IAAA,8BAAA,8BAAqEc;CAK3E,OAL2EF,EAAA,OAAA0B,IAK3ExB,IAAAF,EAAA,MAFNE,IAAA,kBAACghB,GAAD;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EAAmB,IAAA;EAC/D,UAAA,kBAACrf,GAAD;GAAmBH;GAAgB,UAAA;EAAI,CAAA;CADrC,CAAA,GAEE1B,EAAA,KAAA0B,GAAA1B,EAAA,KAAAE,IAFNA;AAEM,GC9MGsC,KAAmBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC9B,EAAAP,UAAAC,gBAAAC,kBAAAC,gBAAwDE,GAAMG;CAAA,AAAAF,EAAA,OAAAL,KAAAK,EAAA,OAAAJ,KAAAI,EAAA,OAAAH,KAKvDK,IAAAP,IACC,kBAACuf,GAAD;EAAa,MAAA;EAAa,SAAA;EAAmBtf,SAAAA;EAAwBC,SAAAA;EAClEF,UAAAA;CADI,CAAA,IADR,MAIOK,EAAA,KAAAL,GAAAK,EAAA,KAAAJ,GAAAI,EAAA,KAAAH,GAAAG,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAG;CAEN,OAFMH,EAAA,OAAAE,KAAAF,EAAA,OAAAN,KANZS,IAAA,kBAACqe,GAAD;EAAQ,IAAA;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EACpD,UAAA,kBAAC3d,GAAD;GAAmBnB;GAAgB,UAAA;GAChCQ,UAAAA;EADQ,CAAA;CADT,CAAA,GAQEF,EAAA,KAAAE,GAAAF,EAAA,KAAAN,GAAAM,EAAA,KAAAG,KAAAA,IAAAH,EAAA,IARNG;AAQM,GAIJC,IAAyB;CAAC;CAAS;CAAU;AAAO,GAE7CE,UAAqB;CAAA,IAAAN,IAAAC,EAAA,CAAA,GAAAC;CAexB,OAfwBF,EAAA,OAAAO,OAAAC,IAAA,2BAAA,KAChCN,IAAA,kBAACyf,GAAD;EACI,GAAA;EACC,IAAA;EACO,WAAA;EACE,aAAA;EACV,GAAA;EACE,KAAA;EACC,MAAA;EACK,aAAA;EACC,cAAA;EAEVvf,UAAAA,EAAsBK,IAAKC,CAE3B;CAbG,CAAA,GAcEV,EAAA,KAAAE,KAAAA,IAAAF,EAAA,IAdRE;AAcQ;AAfwB,SAAAQ,EAAAC,GAAA;CAAA,OAa5B,kBAACkf,GAAD;EAAsB,GAAA;EAAS,GAAA;EAAoB,cAAA;CAAI,GAAxClf,CAAwC;AAAG;;;ACPhE,IAAM4B,KAA8BC,MAAsC;CACxE,IAAM,EAAEf,gBAAaC,oBAAiBK,cAAWF,gBAAaI,eAAYG,sBAAmBI,GACzFC,IAAQ,mCACRC,IAAcb,IAAc,cAAcc,KAAAA,GAC1CC,IAAqCf,UAAoB,KAAKI,EAAW,IAAIU,KAAAA;CAuBjF,OArBIlB,MACFgB,IAAQ,qCACRC,IAAcb,IAAc,mBAAmBc,KAAAA,GAC/CC,UAAiB;EAEf,AADAR,IAAiB,GACjB6d,EAAgB;CAClB,IAGEve,MACFe,IAAQ,yCACRC,IAAcb,IAAc,cAAcc,KAAAA,GAC1CC,IAAWf,UAAoB,KAAKI,EAAW,IAAIU,KAAAA,IAGjDZ,MACFU,IAAQ,mCACRC,IAAcb,IAAc,cAAcc,KAAAA,GAC1CC,IAAWf,UAAoB,KAAKI,EAAW,IAAIU,KAAAA,IAG9C;EAAEF;EAAOC;EAAaE;CAAS;AACxC,GAEaC,KAAkBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC7B,EAAA5B,SAAAC,aAAAC,eAAAC,eAAAC,eAAAC,gBAAAC,oBAAAC,iBAAAC,mBAAAC,gBAAAC,uBAAAC,cAAAC,kBAAAC,eAAAE,0BAAAC,mBAAAC,cAAAY,MAkBIH,GADFT,IAAAY,MAAAN,KAAAA,IAAA,YAAAM;CAGF,IAAI,CAACzB,GAAU,OAAS;CAExB,IAAIG,GAAY;EAAA,IAAAuB;EAWV,OAXUH,EAAA,OAAA3B,KAAA2B,EAAA,OAAAV,KAAAU,EAAA,OAAA1B,KAAA0B,EAAA,OAAAZ,KAAAY,EAAA,OAAAxB,KAAAwB,EAAA,OAAAzB,KAAAyB,EAAA,OAAAX,KAEZc,IAAA,kBAACsa,GAAD;GACQpc;GACIC;GACEC;GACAC;GACC,aAAA;GACUY;GACPC;GACFC;EAAY,CAAA,GAC1BU,EAAA,KAAA3B,GAAA2B,EAAA,KAAAV,GAAAU,EAAA,KAAA1B,GAAA0B,EAAA,KAAAZ,GAAAY,EAAA,KAAAxB,GAAAwB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAX,GAAAW,EAAA,KAAAG,KAAAA,IAAAH,EAAA,IATFG;CASE;CAIN,IAAI,CAACtB,KAAD,CAAoBE,GAAkB;EAAA,IAAAoB;EAAA,AAAAH,EAAA,OAAAlB,KAAAkB,EAAA,OAAArB,KAAAqB,EAAA,QAAAtB,KAAAsB,EAAA,QAAAhB,KAAAgB,EAAA,QAAAd,KAAAc,EAAA,QAAAX,KACCc,IAAAX,EAA2B;GAAAd;GAAAC;GAAAK;GAAAF;GAAAI;GAAAG;EAOpE,CAAC,GAACW,EAAA,KAAAlB,GAAAkB,EAAA,KAAArB,GAAAqB,EAAA,MAAAtB,GAAAsB,EAAA,MAAAhB,GAAAgB,EAAA,MAAAd,GAAAc,EAAA,MAAAX,GAAAW,EAAA,MAAAG,KAAAA,IAAAH,EAAA;EAPF,IAAA,EAAAN,UAAAC,gBAAAE,gBAAyCM,GAOtCC;EAG6G,OAH7GJ,EAAA,QAAAL,KAAAK,EAAA,QAAAf,KAAAe,EAAA,QAAAH,KAAAG,EAAA,QAAAN,KAGDU,IAAA,kBAACkc,GAAD;GAAyB5c;GAAoBC;GAA4BV;GAAyBY;EAAQ,CAAA,GAAIG,EAAA,MAAAL,GAAAK,EAAA,MAAAf,GAAAe,EAAA,MAAAH,GAAAG,EAAA,MAAAN,GAAAM,EAAA,MAAAI,KAAAA,IAAAJ,EAAA,KAA9GI;CAA8G;CAIlH,IAAIrB,GAAkB;EAAA,IAAAoB;EACS,OADTH,EAAA,QAAAK,OAAAC,IAAA,2BAAA,KACbH,IAAA,kBAACwc,GAAD,CAAmB,CAAA,GAAG3c,EAAA,MAAAG,KAAAA,IAAAH,EAAA,KAAtBG;CAAsB;CAC9B,IAAAA;CAYG,OAZHH,EAAA,QAAA3B,KAAA2B,EAAA,QAAAV,KAAAU,EAAA,QAAA1B,KAAA0B,EAAA,QAAAZ,KAAAY,EAAA,QAAAtB,KAAAsB,EAAA,QAAAxB,KAAAwB,EAAA,QAAAzB,KAAAyB,EAAA,QAAAX,KAGCc,IAAA,kBAACsa,GAAD;EACQpc;EACIC;EACEC;EACAC;EACCE;EACUU;EACPC;EACFC;CAAY,CAAA,GAC1BU,EAAA,MAAA3B,GAAA2B,EAAA,MAAAV,GAAAU,EAAA,MAAA1B,GAAA0B,EAAA,MAAAZ,GAAAY,EAAA,MAAAtB,GAAAsB,EAAA,MAAAxB,GAAAwB,EAAA,MAAAzB,GAAAyB,EAAA,MAAAX,GAAAW,EAAA,MAAAG,KAAAA,IAAAH,EAAA,KATFG;AASE,GC9FO6C,KAA6BC,MASpC;CACJ,IAAM,EACJX,eACAD,eACAa,mBACAC,gBACAC,oBACAC,iBACAC,kBACAC,gBACEN;CAEJ,OACEX,KACAD,KACA,CAACa,KACD,CAACC,KACD,CAACC,KACD,CAACC,KACDC,MAAkBC;AAEtB,GAEaC,MAA4BP,MAInC;CACJ,IAAM,EAAEK,kBAAeC,aAAUL,sBAAmBD;CAMpD,OAJIK,MAAkBC,KAAYL,IACzB,OAGFI;AACT,GAEaG,MAAuBF,MAAqB,CAAC/B,EAAgB+B,CAAQ,GAErEG,MAAuBtB,MAAeA,EAAKN,WAAWM,EAAKP,WAAW,WAE7E8B,MAAwBV,MASxB;CACJ,IAAM,EAAEM,aAAUjB,eAAYD,eAAYa,mBAAgBC,gBAAaC,oBAAiBC,iBAAcZ,kBACpGQ,GACI,CAACW,GAAeC,KAAkB3C,EAAS,EAAK,GAChD,CAACoC,GAAeQ,KAAoB5C,EAAwB,IAAI,GAChE,CAAC6C,GAAWC,KAAgB9C,EAAS,EAAK,GAE1C+C,IAAW,YAAY;EAC3B,IAAKxB,KAAcmB,IAInBC;GAFAC,EAAiBP,CAAQ,GACzBS,EAAa,EAAK,GAClBH,EAAe,EAAI;GACnB,IAAI;IACF,MAAMpB,EAAWc,CAAQ;GAC3B,QAAQ;IAENS,AADAF,EAAiB,IAAI,GACrBE,EAAa,EAAI;GACnB,UAAU;IACRH,EAAe,EAAK;GACtB;EARmB;CASrB,GAEMK,IAAqBlB,EAA0B;EACnDV;EACAD;EACAa;EACAC;EACAC;EACAC;EACAC;EACAC;CACF,CAAC;CAcD,OAZAvC,QAAgB;EACd8C,GAAkBK,MAAYX,GAAyB;GAAEF,eAAea;GAASZ;GAAUL;EAAe,CAAC,CAAC;CAC9G,GAAG,CAACK,GAAUL,CAAc,CAAC,GAE7BlC,QAAgB;EACd,AAAKyB,KAAeyB,KAAsBH,MAI1Csa,EAAc;CAChB,CAAC,GAEM;EACLza;EACAG;EACAG,oBAAoBE,EAAQ3B,KAAeyB,KAAsB,CAACH;EAClEE;CACF;AACF,GAEaI,MAAWC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACtB,EAAApC,SAAAC,YAAAoC,GAAAnC,YAAAoC,GAAAnC,qBAAAC,aAAAC,eAAAG,uBAAA+B,GAAA9B,mBAAAC,cAAA8B,MAUIN,GARFjC,IAAAoC,MAAAI,KAAAA,KAAAJ,GACAnC,IAAAoC,MAAAG,KAAAA,KAAAH,GAIA9B,IAAA+B,MAAAE,KAAAA,KAAAF,GAEA7B,IAAA8B,MAAAC,KAAAA,IAAA,YAAAD,GAAwBrB,GAAAH,GAAAD,GAAAnB,GAAAD,GAAA+C;CAAA,AAAAP,EAAA,OAAAnC,KAS8CmB,IAAAgB,EAAA,IAAAnB,IAAAmB,EAAA,IAAApB,IAAAoB,EAAA,IAAAvC,IAAAuC,EAAA,IAAAxC,IAAAwC,EAAA,IAAAO,IAAAP,EAAA,OANxEhB,IAAiBG,GAAoBtB,CAAI,GACzCL,IAAmBK,EAAIL,cAAJ,IACnBC,IAAmBI,EAAIJ,cAAJ,IACnBmB,IAAoB1B,EAAmBW,CAAI,GAC3CgB,IAAwB7B,EAAoBgC,CAAQ,GAEtBuB,IADTxD,EAAiBiC,CACRF,KAAA,CAAiB7B,EAAgB+B,CAAQ,GAACgB,EAAA,KAAAnC,GAAAmC,EAAA,KAAAhB,GAAAgB,EAAA,KAAAnB,GAAAmB,EAAA,KAAApB,GAAAoB,EAAA,KAAAvC,GAAAuC,EAAA,KAAAxC,GAAAwC,EAAA,KAAAO;CAAxE,IAAAC,IAA8BD,GAC9B5B,IAAuBd,EAAIL,eAAgB8C,KAAAA,KAAazC,EAAIJ,eAAgB6C,KAAAA,GAM7DG,IAAA7B,KAAA,CAAgBP,GAAqBqC;CAAA,AAAAV,EAAA,OAAAQ,KAAAR,EAAA,OAAAhB,KAAAgB,EAAA,OAAArB,KAAAqB,EAAA,QAAAjC,KAAAiC,EAAA,QAAAnB,KAAAmB,EAAA,QAAAlC,KAAAkC,EAAA,QAAA9B,KAAA8B,EAAA,QAAAS,KALoCC,IAAA;EAAA1B;EAAAjB;EAAAD;EAAAa;EAAAC,aAKzE6B;EAAqC5B;EAAAC,cAEpC0B;EAAqBtC;CAErC,GAAC8B,EAAA,KAAAQ,GAAAR,EAAA,KAAAhB,GAAAgB,EAAA,KAAArB,GAAAqB,EAAA,MAAAjC,GAAAiC,EAAA,MAAAnB,GAAAmB,EAAA,MAAAlC,GAAAkC,EAAA,MAAA9B,GAAA8B,EAAA,MAAAS,GAAAT,EAAA,MAAAU,KAAAA,IAAAV,EAAA;CATD,IAAA,EAAAX,kBAAAG,cAAAG,uBAAAD,gBAAmEN,GAAqBsB,CASvF,GAMgBC,IAAA7C,IAAA,kBAAA,iBAA8C8C;CAAA,AAAAZ,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAOnDF,IAAA,EAAAG,aAAe,gBAAgB,GAACf,EAAA,MAAAY,KAAAA,IAAAZ,EAAA;CAAA,IAAAgB;CAAA,AAAAhB,EAAA,QAAAnC,KAAAmC,EAAA,QAAAjC,KAAAiC,EAAA,QAAAhC,KAGxCgD,IAAA,kBAACuZ,IAAD;EAAsB1c;EAAkBE;EAA8BC;CAAgB,CAAA,GAAIgC,EAAA,MAAAnC,GAAAmC,EAAA,MAAAjC,GAAAiC,EAAA,MAAAhC,GAAAgC,EAAA,MAAAgB,KAAAA,IAAAhB,EAAA;CAY3E,IAAAiB,IAAApB,EAAQ3B,GAAWgD;CAAA,AAAAlB,EAAA,QAAAQ,KAAAR,EAAA,QAAAnC,KAAAmC,EAAA,QAAAzB,KAAAyB,EAAA,QAAAhB,KAAAgB,EAAA,QAAArB,KAAAqB,EAAA,QAAA3B,KAAA2B,EAAA,QAAAjC,KAAAiC,EAAA,QAAAnB,KAAAmB,EAAA,QAAApB,KAAAoB,EAAA,QAAAX,KAAAW,EAAA,QAAAN,KAAAM,EAAA,QAAAR,KAAAQ,EAAA,QAAAvC,KAAAuC,EAAA,QAAAxC,KAAAwC,EAAA,QAAA1B,KAAA0B,EAAA,QAAAL,KAAAK,EAAA,QAAAiB,KAVlCC,IAAA,kBAAC4X,GAAD;EACQjb;EACImB;EACExB;EACAC;EACAM;EACCa;EACIC;EACH2B,cAAAA;EACE7B;EACH,aAAAsC;EACOtB;EACTH;EACIH;EACHK,YAAAA;EACWrB;EACPC;EACFC;CAAY,CAAA,GAC1ByB,EAAA,MAAAQ,GAAAR,EAAA,MAAAnC,GAAAmC,EAAA,MAAAzB,GAAAyB,EAAA,MAAAhB,GAAAgB,EAAA,MAAArB,GAAAqB,EAAA,MAAA3B,GAAA2B,EAAA,MAAAjC,GAAAiC,EAAA,MAAAnB,GAAAmB,EAAA,MAAApB,GAAAoB,EAAA,MAAAX,GAAAW,EAAA,MAAAN,GAAAM,EAAA,MAAAR,GAAAQ,EAAA,MAAAvC,GAAAuC,EAAA,MAAAxC,GAAAwC,EAAA,MAAA1B,GAAA0B,EAAA,MAAAL,GAAAK,EAAA,MAAAiB,GAAAjB,EAAA,MAAAkB,KAAAA,IAAAlB,EAAA;CAAA,IAAAmB;CACE,OADFnB,EAAA,QAAA/B,KAAA+B,EAAA,QAAAkB,KAAAlB,EAAA,QAAAW,KAAAX,EAAA,QAAAgB,KAjCJG,IAAA,kBAAC+V,GAAD;EACc,eAAA;EACL,QAAA;EACM,aAAAvW;EACA,cAAA;EACJ,UAAA;EACN,IAAA;EACG,OAAA;EACD,MAAA;EACM,YAAA;EACH,QAAAC;EACC3C,SAAAA;EAXX,UAAA,CAaE+C,GAEAE,CAfE;KAkCElB,EAAA,MAAA/B,GAAA+B,EAAA,MAAAkB,GAAAlB,EAAA,MAAAW,GAAAX,EAAA,MAAAgB,GAAAhB,EAAA,MAAAmB,KAAAA,IAAAnB,EAAA,KAlCNmB;AAkCM,GAIGC,MAAiBrB,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAC5B,EAAApC,SAAAE,YAAAmC,GAAAlC,wBAAsD+B,GAAxChC,IAAAmC,MAAAI,KAAAA,KAAAJ,GAAiBxC,GAAAC,GAAAqB,GAAAmB;CAAA,AAAAH,EAAA,OAAAnC,KAIgBH,IAAAsC,EAAA,IAAArC,IAAAqC,EAAA,IAAAhB,IAAAgB,EAAA,IAAAG,IAAAH,EAAA,OAH/ChB,IAAiBG,GAAoBtB,CAAI,GACzCH,IAAkBG,EAAIH,aAAJ,GAClBC,IAAkBE,EAAIF,aAAJ,GACAwC,IAAAjB,GAAoBF,CAAQ,GAACgB,EAAA,KAAAnC,GAAAmC,EAAA,KAAAtC,GAAAsC,EAAA,KAAArC,GAAAqC,EAAA,KAAAhB,GAAAgB,EAAA,KAAAG;CAA/C,IAAAkB,IAAkBlB,GAClB,CAAAmB,GAAAC,KAAgC5E,EAAS,EAAK,GAC9C6E,IAA4B9E,EAAsB,IAAI,GAAE0D,GAAAC;CAExD5D,AAFwDuD,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAE9CV,gBACD;EACL,AAAIoB,EAAmB5B,YAAa,QAClC6B,OAAMC,aAAcF,EAAmB5B,OAAQ;CAChD,GAEFS,IAAA,CAAA,GAAEL,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,MAAAD,IAAAJ,EAAA,IAAAK,IAAAL,EAAA,KANLvD,EAAU2D,GAMPC,CAAE;CAAC,IAAAE;CAAA,AAAAP,EAAA,OAAAhB,IAaLuB,IAAAP,EAAA,MAXoBO,IAAA,YAAA;EACnB,IAAA;GAMEiB,AALA,MAAMG,UAASC,UAAUC,UAAW7C,CAAQ,GAC5CuC,EAAY,EAAI,GACZC,EAAmB5B,YAAa,QAClC6B,OAAMC,aAAcF,EAAmB5B,OAAQ,GAEjD4B,EAAmB5B,UAAW6B,OAAMK,iBAAkBP,EAAY,EAAK,GAAG,IAAI;EAAnD,QAAA;GAE3BA,EAAY,EAAK;EAAC;CACnB,GACFvB,EAAA,KAAAhB,GAAAgB,EAAA,KAAAO;CAXD,IAAAwB,IAAqBxB,GAqBHE,IAAA1C,IAAA,cAAA,QAGM2C,IAAA3C,IAAA,MAAA,MAAuB4C;CAAA,AAAAX,EAAA,OAAAa,OAAAC,IAAA,2BAAA,KAOnCH,IAAA,EAAAqB,IAAM,KAAK,GAAChC,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,QAAAhC,IACe4C,IAAAZ,EAAA,OAA1BY,UAAM5C,IAAmB,GAACgC,EAAA,MAAAhC,GAAAgC,EAAA,MAAAY;CAIrB,IAAAI,IAAAjD,IAAA,aAAA,UAAkCkD;CAAA,AAAAjB,EAAA,QAAAhC,IAM7CiD,IAAAjB,EAAA,OAHQiB,KAAAgB,MAAA;EAEPjE,AADAiE,EAAKC,gBAAiB,GACtBlE,IAAmB;CAAC,GACrBgC,EAAA,MAAAhC,GAAAgC,EAAA,MAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,QAAAjC,IAGmEmD,IAAAlB,EAAA,OAAnEkB,IAAama,EAAbtd,IAAcud,IAA4BC,GAA7B,EAAmB,MAAA,GAAE,CAA6B,GAAIvb,EAAA,MAAAjC,GAAAiC,EAAA,MAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAkB,KAAAlB,EAAA,QAAAgB,KAVtEG,IAAA,kBAACqa,GAAD;EACc,cAAAxa;EACJ,SAAA;EACH,MAAA;EACI,SAAAC;EAIG,YAAA;EAEXC,UAAAA;CAVQ,CAAA,GAWElB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAkB,GAAAlB,EAAA,MAAAgB,GAAAhB,EAAA,MAAAmB,KAAAA,IAAAnB,EAAA;CAAA,IAAAmC;CAAA,AAAAnC,EAAA,QAAAnC,EAAAR,UAAA2C,EAAA,QAAAnC,EAAAN,WAAAyC,EAAA,QAAAnC,EAAAP,WAIR6E,IAAAtE,EAAIR,WAAY,aACf,kBAACma,GAAD;EAAS,IAAA;EAAiB,WAAA;EAA1B,UAAA;GACE,kBAACA,GAAD;IAAS,IAAA;IAAa,OAAA;IAA0B,gBAAA;IAAkB,IAAA;IAC/D3Z,UAAAA,EAAIP;GADF,CAAA;GAGL,kBAAC4Z,GAAD;IAAQ,IAAA;IAAe,SAAA;IAAyB,YAAA;IAAuB,eAAA;IAAY,IAAA;IACjF,UAAA,kBAACqE,GAAD,EAAoB,MAAA,GAAE,CAAA;GADpB,CAAA;GAGH1d,EAAIN;EAPF;KASNyC,EAAA,MAAAnC,EAAAR,QAAA2C,EAAA,MAAAnC,EAAAN,SAAAyC,EAAA,MAAAnC,EAAAP,SAAA0C,EAAA,MAAAmC,KAAAA,IAAAnC,EAAA;CAAA,IAAAoC;CAAA,AAAApC,EAAA,QAAAnC,EAAAR,UAAA2C,EAAA,QAAAhB,KACAoD,IAAAvE,EAAIR,WAAY,aACf,kBAACma,GAAD;EAAS,IAAA;EAAa,OAAA;EAA0B,gBAAA;EAAyB,WAAA;EACtExY,UAAAA;CADE,CAAA,GAGNgB,EAAA,MAAAnC,EAAAR,QAAA2C,EAAA,MAAAhB,GAAAgB,EAAA,MAAAoC,KAAAA,IAAApC,EAAA;CAAA,IAAAqC;CAAA,AAAArC,EAAA,QAAAnC,EAAAR,UAAA2C,EAAA,QAAAhB,KACAqD,IAAAxE,EAAIR,WAAY,aAAaQ,EAAIR,WAAY,aAC5C,kBAACma,GAAD;EAAS,IAAA;EAAiB,WAAA;EACvBxY,UAAAA;CADE,CAAA,GAGNgB,EAAA,MAAAnC,EAAAR,QAAA2C,EAAA,MAAAhB,GAAAgB,EAAA,MAAAqC,KAAAA,IAAArC,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAAhB,KAAAgB,EAAA,QAAAmC,KAAAnC,EAAA,QAAAoC,KAAApC,EAAA,QAAAqC,KArBHC,IAAA,kBAAC4U,GAAD;EAAW,MAAA;EAAY,UAAA;EAAsB,cAAA;EAAsB,YAAA;EAAgBlY,OAAAA;EAAnF,UAAA;GACGmD;GAWAC;GAKAC;EAjBC;KAsBErC,EAAA,MAAAhB,GAAAgB,EAAA,MAAAmC,GAAAnC,EAAA,MAAAoC,GAAApC,EAAA,MAAAqC,GAAArC,EAAA,MAAAsC,KAAAA,IAAAtC,EAAA;CAGK,IAAAuC,KAAAjB,IAAA,MAAA,KACMkB,KAAAlB,IAAA,SAAA,QAA0BmB;CAAA,AAAAzC,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAEpC2B,KAAA,EAAA,6FAC0F;EAAAC,SAClF;EAACC,eACK;CACjB,EACF,GAAC3C,EAAA,MAAAyC,MAAAA,KAAAzC,EAAA;CAEiB,IAAA4C,KAAAtB,IAAA,WAAA,kBAEFuB,KAAAvB,IAAA,WAAA,kBAAsCwB;CAAA,AAAA9C,EAAA,QAAA+B,IAMjDe,IAAA9C,EAAA,OAHQ8C,KAAAC,MAAA;EAEFhB,AADLE,EAAKC,gBAAiB,GACjBH,EAAa;CAAC,GACpB/B,EAAA,MAAA+B,GAAA/B,EAAA,MAAA8C;CAAA,IAAAE;CAAA,AAAAhD,EAAA,QAAAsB,IAGmD0B,IAAAhD,EAAA,OAAnDgD,IAAWqY,EAAX/Z,IAAY+a,IAAsBC,GAAvB,EAAa,MAAA,GAAE,CAAqB,GAAItc,EAAA,MAAAsB,GAAAtB,EAAA,MAAAgD;CAAA,IAAAC;CAAA,AAAAjD,EAAA,QAAA6C,MAAA7C,EAAA,QAAA8C,KAAA9C,EAAA,QAAAgD,KAVtDC,IAAA,kBAACuY,GAAD;EACc,cAAA3Y;EACJ,SAAA;EACH,MAAA;EACI,SAAAC;EAIG,YAAA;EAEXE,UAAAA;CAVQ,CAAA,GAWEhD,EAAA,MAAA6C,IAAA7C,EAAA,MAAA8C,GAAA9C,EAAA,MAAAgD,GAAAhD,EAAA,MAAAiD,KAAAA,IAAAjD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAA4C,MAAA5C,EAAA,QAAAiD,KAZfC,IAAA,kBAACM,GAAD;EAAkB,SAAAZ;EAChBK,UAAAA;CADM,CAAA,GAaEjD,EAAA,MAAA4C,IAAA5C,EAAA,MAAAiD,GAAAjD,EAAA,MAAAkD,KAAAA,IAAAlD,EAAA;CAAA,IAAAmD;CAAA,AAAAnD,EAAA,QAAAuC,MAAAvC,EAAA,QAAAwC,MAAAxC,EAAA,QAAAkD,KAxBZC,IAAA,kBAAC+T,GAAD;EACW,SAAA3U;EACM,eAAAC;EACJ,YAAA;EACN,KAAAC;EAOLS,UAAAA;CAXE,CAAA,GAyBElD,EAAA,MAAAuC,IAAAvC,EAAA,MAAAwC,IAAAxC,EAAA,MAAAkD,GAAAlD,EAAA,MAAAmD,KAAAA,IAAAnD,EAAA;CAAA,IAAAoD;CAAA,AAAApD,EAAA,QAAAsC,KAAAtC,EAAA,QAAAmD,KAlDRC,IAAA,kBAACkU,GAAD;EAAsB,iBAAA;EAAyC,YAAA;EAAwB,gBAAA;EAAY,KAAA;EAAY,MAAA;EAA/G,UAAA,CACEhV,GAwBAa,CAzBG;KAmDEnD,EAAA,MAAAsC,GAAAtC,EAAA,MAAAmD,GAAAnD,EAAA,MAAAoD,KAAAA,IAAApD,EAAA;CAAA,IAAAqD;CAAA,AAAArD,EAAA,QAAAtC,KAAAsC,EAAA,QAAArC,KAAAqC,EAAA,QAAAqB,KAENgC,IAAAhC,IACC,kBAAC6V,GAAD;EAAiB,YAAA;EACf,UAAA,kBAACtC,GAAD;GAAoB,SAAA;GAAmBlX;GAAsBC;EAAS,CAAA;CADpE,CAAA,IADL,MAIOqC,EAAA,MAAAtC,GAAAsC,EAAA,MAAArC,GAAAqC,EAAA,MAAAqB,GAAArB,EAAA,MAAAqD,KAAAA,IAAArD,EAAA;CAAA,IAAAsD;CACH,OADGtD,EAAA,QAAAmB,KAAAnB,EAAA,QAAAoD,KAAApD,EAAA,QAAAqD,KAAArD,EAAA,QAAAS,KAAAT,EAAA,QAAAU,KAAAV,EAAA,QAAAY,KA3FV0C,KAAA,kBAACgU,GAAD;EACc,eAAA;EACI,iBAAA;EACb,IAAA;EACA,IAAA;EACQ,YAAA;EACI,gBAAA;EACD,cAAA7W;EACF,aAAA;EACI,iBAAA;EACI,oBAAAC;EACX,UAAA;EACL,KAAA;EACG,QAAA;EACJ,IAAA;EACI,QAAA;EACI,YAAA;EACH,QAAAC;EACC,SAAAC;EACL,KAAA;EAnBN,UAAA;GAqBEO;GAaAiC;GAqDCC;EAvFE;KA4FErD,EAAA,MAAAmB,GAAAnB,EAAA,MAAAoD,GAAApD,EAAA,MAAAqD,GAAArD,EAAA,MAAAS,GAAAT,EAAA,MAAAU,GAAAV,EAAA,MAAAY,GAAAZ,EAAA,MAAAsD,MAAAA,KAAAtD,EAAA,KA5FPsD;AA4FO,GCpVEM,WAAuB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAK1B,OAL0BF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAClCF,IAAA,kBAACsU,GAAD;EAAS,GAAA;EAAY,MAAA;EAAQ,KAAA;EAAO,IAAA;EAClC,UAAA,kBAAChU,GAAD;GAAiB,MAAA;GAAS,MAAA;GAAkB,cAAA;IAAAH,GAAK;IAAIC,QAAU;GAAK;GAClE,UAAA,kBAACG,GAAD;IAAkB,OAAA;IAAkC,aAAA;IAAmD,UAAA;GAAI,CAAA;EADlG,CAAA;CADP,CAAA,GAIET,EAAA,KAAAE,KAAAA,IAAAF,EAAA,IAJRE;AAIQ,GCJJc,IAAqB,IACrBC,IAAwB,IACxBC,IAAkB,IAIlBI,IAAkB,GASlBM,UAA2BZ,KAIpBa,KAA0BC,MAAuC;CAC5E,IAAM,EAAEN,SAAMC,gBAAaC,2BAAwB,IAAOC,kBAAe,cAAcG;CAEvF,IAAIL,GAAa,OAAON;CAExB,IAAMY,IAAiBP,EAAKQ,eAAeC,KAAAA,KAAaT,EAAKU,eAAeD,KAAAA,GACtEE,IAAWX,EAAKY,WAAWZ,EAAKa,WAAW;CACjD,IAAIzB,EAAgBuB,CAAQ,MAAMX,EAAKQ,cAAcR,EAAKU,aACxD,OAAOlB;CAIT,IAFIL,EAAiBwB,CAAQ,KACzB,CAACJ,KACDlB,EAAmBW,CAAI,KAAK,CAACE,GAAuB,OAAOE,EAAmB;CAElF,IAAM,EAAEU,uBAAoBC,qBAAkBC,gBAAa1B,EAAkB;EAC3E2B,UAAUjB,EAAKQ,cAAc;EAC7BU,UAAUlB,EAAKU,cAAc;EAC7BG,SAASb,EAAKa;EACdD,SAASZ,EAAKY;CAChB,CAAC,GACKO,IAAchB,MAAiB,UAAUY,IAAmBD;CAIlE,OAHIK,MAAgB,KAAKH,MAAa,IAAUZ,EAAmB,IAG5DZ,KADY2B,IAAc1B,IAAwBuB,IAAWtB,KAC3BI;AAC3C,GChCMoC,KAAeC,MAAeA,EAAKC,WAAWD,EAAKE,WAAW,WAC9DC,KAA+B,IAExBC,MAA8BC,MAA2C;CACpF,IAAM,EAAEZ,UAAOC,qBAAkBC,mBAAgBE,qBAAkBC,gCAA6BO,GAC5FC,IAAqBZ,GACrBa,IAA0Bb,IAAmB,YAAYA,MAAqB,MAC5Ec,IAA0BX,GAAkBT,WAAW,oBAAoBS,EAAiBR,KAAK,MACjGoB,IACJD,MAA4B,QAAQV,MAA6BU;CAEnE,AAAIX,GAAkBT,WAAW,qBAAqBS,EAAiBP,SACrEgB,IAAqBT,EAAiBP,MACtCiB,IAA0B,WAAWV,EAAiBR,GAAE,GAAIQ,EAAiBP;CAG/E,IAAIoB,IAAoBH;CACxB,IAAID,KAAsBC,GAAyB;EACjD,IAAMI,IAA+BhB,EAAeiB,IAAIN,CAAkB,IAAI,cAAc;EAC5FI,IAAoB,GAAGH,EAAuB,GAAII;CACpD;CAEA,IAAME,IAAsBP,IACxBb,EAAMqB,WAAWd,MAASD,EAAYC,CAAI,MAAMM,CAAkB,IAClE,IACES,IACJF,KAAuB,KACvBhB,GAAkBT,WAAW,qBAC7BS,EAAiBN,cAAc,QAC/B,CAACkB;CAEH,OAAO;EACLH;EACAI;EACAF;EACAK;EACAE;EACAN;CACF;AACF,GAEaO,MAA4BX,MAInC;CACJ,IAAM,EAAEY,YAASJ,wBAAqBE,oCAAiCV;CACvE,IAAI,CAACU,KAAgCE,EAAQC,SAASL,CAAmB,GAAG,OAAOI;CAEnF,IAAME,IAAmBC,KAAKC,IAAI,GAAGR,IAAsBV,EAA4B,GACjFmB,IAAgBC,MAAMC,KAC1B,EAAEC,QAAQZ,IAAsBM,IAAmB,EAAE,IACpDO,GAAGC,MAAUR,IAAmBQ,CACnC;CAEA,OAAOJ,MAAMC,qBAAK,IAAI5B,IAAI,CAAC,GAAGqB,GAAS,GAAGK,CAAa,CAAC,CAAC,CAAC,CAACM,MAAMC,GAAGC,MAAMD,IAAIC,CAAC;AACjF,GCvDMoB,KAAqB,GACrBC,KAAuB,IAEvBC,MAAeC,MAAeA,EAAKC,WAAWD,EAAKE,WAAW,WAEvDC,MAAwBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GACnC,EAAApB,UAAAC,qBAAAC,mBAAAE,qBAAAC,cAAAG,mBAAAE,+BAQIQ,GACJ,CAAAG,GAAAC,KAAgE3B,EAAwB,IAAI,GAAE4B;CAAA,AAAAJ,EAAA,OAAAjB,KAAAiB,EAAA,OAAAE,KAAAF,EAAA,OAAAnB,KAAAmB,EAAA,OAAAf,KAAAe,EAAA,OAAAlB,KAQ1FsB,IAAAzB,GAA2B;EAAAE;EAAAC;EAAAC;EAAAE;EAAAiB;CAM/B,CAAC,GAACF,EAAA,KAAAjB,GAAAiB,EAAA,KAAAE,GAAAF,EAAA,KAAAnB,GAAAmB,EAAA,KAAAf,GAAAe,EAAA,KAAAlB,GAAAkB,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAbF,IAAA,EAAAK,uBAAAC,sBAAAC,4BAAAC,wBAAAC,iCAAAC,kCAOIN,GAMDO,GAAAC;CAEHrC,AAFGyB,EAAA,OAAAjB,KAAAiB,EAAA,OAAAnB,KAAAmB,EAAA,OAAAU,KAAAV,EAAA,OAAAd,KAAAc,EAAA,QAAAO,KAAAP,EAAA,QAAAM,KAAAN,EAAA,QAAAK,KAAAL,EAAA,QAAAT,KAAAS,EAAA,QAAAX,KAEasB,UAAA;EAMd,IALI,CAACN,KAAD,CAAwBC,KACxBI,KAIA3B,EAAc8B,IAAKR,CAAkB,GAAC;EAE1C,IAAAS,IAAcjC,EAAKkC,WAAWpB,MAAUD,GAAYC,CAAI,MAAMU,CAAkB;EAChF,IAAIS,IAAQ,GAAC;EAEb,IAAAE,IAAoB3B,EAAcF,SAClC8B,IAAsB/B,EAASC;EAC/B,IAAI,CAAC6B,KAAD,CAAiBC,GAAa;EAElC,IAAAC,IAA2B,CAAA,GAC3BC,IAA4B;EAI5B5B,EAAuBJ,UAAW;EAClC,IAAAiC,UAAqB;GACnB7B,EAAuBJ,UAAW;EAAH,GAEjCkC,UAA6B;GAG3B,AAFAF,IAAwBA,IACxBC,EAAa,GACTb,MAA4B,QAC9BJ,EAA4BI,CAAuB;EACpD,GAGHe,IAAsB,GACtBC,UAA0B;GACxB,IAAIJ,IAGJ;QAFAH,EAAWQ,cAAeV,GAAO,EAAAW,OAAS,QAAQ,CAAC,GACnDH,KAAmB,GACfA,KAAmB9B,MAAsBe,MAA4B,MAAI;KAE3EJ,AADAiB,EAAa,GACbjB,EAA4BI,CAAuB;KAAC;IAAA;IAGtD,IAAIe,IAAkB7B,IAAoB;KACxCyB,EAAQQ,KAAMC,sBAAsBJ,CAAiB,CAAC;KAAC;IAAA;IAGzDH,EAAa;GAPyC;EAOxC;EAKG,OAFnBH,EAAaW,iBAAkB,SAASP,GAAsB,EAAAQ,SAAW,GAAK,CAAC,GAC/EZ,EAAaW,iBAAkB,aAAaP,GAAsB,EAAAQ,SAAW,GAAK,CAAC,GACnFN,EAAkB,SAEX;GAGLN,AAFAG,EAAa,GACbH,EAAaa,oBAAqB,SAAST,CAAoB,GAC/DJ,EAAaa,oBAAqB,aAAaT,CAAoB;GACnE,KAAK,IAAAU,KAAiBb,GACpBc,qBAAqBD,CAAO;EAC7B;CACF,GACAnB,IAAA;EACDN;EACAD;EACAE;EACAG;EACA7B;EACAE;EACAG;EACAG;EACAE;CAAuB,GACxBS,EAAA,KAAAjB,GAAAiB,EAAA,KAAAnB,GAAAmB,EAAA,KAAAU,GAAAV,EAAA,KAAAd,GAAAc,EAAA,MAAAO,GAAAP,EAAA,MAAAM,GAAAN,EAAA,MAAAK,GAAAL,EAAA,MAAAT,GAAAS,EAAA,MAAAX,GAAAW,EAAA,MAAAW,GAAAX,EAAA,MAAAY,MAAAD,IAAAX,EAAA,KAAAY,IAAAZ,EAAA,MAvEDzB,EAAgBoC,GA6DbC,CAUF;CAAC,IAAAqB;CAE0D,OAF1DjC,EAAA,QAAAQ,KAAAR,EAAA,QAAAS,KAEKwB,IAAA;EAAAzB;EAAAC;CAAoD,GAACT,EAAA,MAAAQ,GAAAR,EAAA,MAAAS,GAAAT,EAAA,MAAAiC,KAAAA,IAAAjC,EAAA,KAArDiC;AAAqD,GCrFxDsC,KAAeC,MAAeA,EAAKC,WAAWD,EAAKE,WAAW,WAE9DC,KAA8B,IAC9BC,KAAmC,KAE5BC,MAA8BvB,MACrCA,EAAMwB,UAAUH,qBAAoC,IAAII,IAAY,IAEjE,IAAIA,IACTzB,EACG0B,QAAQR,GAAMS,MAAU;CACvB,IAAMC,KAAaV,EAAKW,aAAa,MAAMX,EAAKY,aAAa;CAC7D,OAAOH,KAASN,MAA+BO,IAAYN;AAC7D,CAAC,CAAC,CACDS,KAAKb,MAASD,EAAYC,CAAI,CAAC,CACpC,GAGWc,MAA0BhC,MAAkB,IAAIyB,IAAIzB,EAAM+B,KAAKb,MAASD,EAAYC,CAAI,CAAC,CAAC,GAE1Fe,MAAuBC,GAA6B/B,MAAiB;CAChF,IAAMgC,IAAO,IAAIV,IAAIS,CAAc;CAMnC,OALIC,EAAKC,IAAIjC,CAAI,IACfgC,EAAKE,OAAOlC,CAAI,IAEhBgC,EAAKG,IAAInC,CAAI,GAERgC;AACT,GAEaI,MACXvC,GACAkC,GACAjC,MACG;CAGH,IAFI,CAACA,KACD,CAACiC,EAAeE,IAAInC,CAAgB,KACpC,CAACD,EAAMwC,MAAMtB,MAASD,EAAYC,CAAI,MAAMjB,CAAgB,GAAG,OAAOiC;CAE1E,IAAMC,IAAO,IAAIV,IAAIS,CAAc;CAEnC,OADAC,EAAKE,OAAOpC,CAAgB,GACrBkC;AACT,GAMaM,MACXzC,GACAkC,GACAjC,GACAyC,MACG;CACH,IAAMC,IAAWJ,GAAqCvC,GAAOkC,GAAgBjC,CAAgB;CAC7F,IACE,CAACyC,KACDA,MAA0BzC,KAC1B0C,EAASP,IAAIM,CAAqB,KAClC,CAAC1C,EAAMwC,MAAMtB,MAASD,EAAYC,CAAI,MAAMwB,CAAqB,GAEjE,OAAOC;CAGT,IAAMR,IAAOQ,MAAaT,IAAiB,IAAIT,IAAIS,CAAc,IAAIS;CAErE,OADAR,EAAKG,IAAII,CAAqB,GACvBP;AACT;AAEA,SAAgBS,GAAWC,GAAwB;CACjD,IAAM,EACJ7C,UACAC,sBAAmB,MACnBC,eACAG,qBACAC,2BACAG,sBAAmB,MACnBE,kBAAe,cACbkC,GACEC,IAAY1D,EAAuB,IAAI,GACvC4D,IAA4B5D,EAAwC,IAAI,GAKxE6D,IAAiB7D,EAAoD,IAAI,GACzE+D,IAA0B/D,EAAO,EAAK,GACtCgE,IAAuBhE,EAAsB,IAAI,GACjD,CAAC8C,GAAgBmB,KAAqBhE,QAA4BkC,GAA2BvB,CAAK,CAAC,GACnG,CAACsD,GAAqBC,KAA0BlE,wBAA4B,IAAIoC,IAAI,CAAC,GACrF,EAAE+B,wBAAqBC,oCAAiC3D,GAAsB;EAClFE;EACAC;EACAiC;EACAzB;EACAqC;EACAG;EACAE;CACF,CAAC,GAEKO,IAAcnE,EAAe;EACjCoE,OAAO3D,EAAMwB;EACboC,wBAAwBd,EAAUe;EAClCC,eAAenC,MAAU;GACvB,IAAMT,IAAOlB,EAAM2B,IACbxB,IAAOc,EAAYC,CAAI;GAC7B,OAAOvB,EAAuB;IAC5BuB;IACA6C,aAAa7B,EAAeE,IAAIjC,CAAI;IACpC6D,uBAAuBV,EAAoBlB,IAAIjC,CAAI;IACnDQ;GACF,CAAC;EACH;EACAsD,aAAatC,MAAUV,EAAYjB,EAAM2B,EAAM;EAC/CuC,UAAU;EACVC,iBAAiBC,MAERxE,GAAyB;GAAEyE,SADlBrF,EAAsBoF,CACJC;GAASb;GAAqBC;EAA6B,CAAC;CAElG,CAAC;CAgDD,IA/CAC,EAAYY,8CAA8CC,GAAOC,GAAQC,MACvE,CAACA,EAASC,eAAe,CAACvB,EAAwBU,SACpDZ,EAAeY,UAAUH,GAEzBvE,QAAsB;EACpB,AAAKc,KAELoD,GAAmBsB,MAASpC,GAAqCvC,GAAO2E,GAAM1E,CAAgB,CAAC;CACjG,GAAG,CAACD,GAAOC,CAAgB,CAAC,GAE5Bd,QAAsB;EACpB,IAAKsB,GAEL;OAAIA,EAAiBG,WAAW,mBAAmB;IACjD,IAAMgE,IAAgBnE,EAAiBN;IACvC,IAAIyE,GAAe;KACjB,IAAMlC,IAAwBU,EAAqBS;KAEnDR,AADAD,EAAqBS,UAAUe,GAC/BvB,GAAmBsB,MACjBlC,GAAmCzC,GAAO2E,GAAMC,GAAelC,CAAqB,CACtF;IACF;IACA;GACF;GAIAW,AADAD,EAAqBS,UAAU,MAC/BR,EAAkB5C,EAAiBG,WAAW,aAAaoB,GAAuBhC,CAAK,oBAAI,IAAIyB,IAAI,CAAC;EAJpG;CAKF,GAAG,CAACzB,GAAOS,CAAgB,CAAC,GAE5BvB,QAAgB;EACd,IAAM2F,IAAiB;GACrB9D,aAAamB,EAAe4C,SAAS;GACrC9D,cAAchB,EAAMwB,SAAS,KAAKxB,EAAM+E,OAAO7D,MAASgB,EAAeE,IAAInB,EAAYC,CAAI,CAAC,CAAC;EAC/F,GACM8D,IAAyBhC,EAA0Ba;EACzD,CACEmB,GAAwBjE,gBAAgB8D,EAAe9D,eACvDiE,EAAuBhE,iBAAiB6D,EAAe7D,kBAKzDgC,EAA0Ba,UAAUgB,GACpCvE,IAAyBuE,CAAc;CACzC,GAAG;EAAC3C;EAAgBlC;EAAOM;CAAsB,CAAC,GAE9CN,EAAMwB,WAAW,GAAG,OAAO,kBAAC6M,IAAD,CAAqB,CAAA;CAEpD,IAAMpJ,KAAkB9E,MAAiB;EACvCkD,GAAmBsB,MAAS1C,GAAoB0C,GAAMxE,CAAI,CAAC;CAC7D,GAEM+E,KAAgB/E,MAAiB;EACrCoD,GAAwBoB,MAAS;GAC/B,IAAMxC,IAAO,IAAIV,IAAIkD,CAAI;GAEzB,OADAxC,EAAKG,IAAInC,CAAI,GACNgC;EACT,CAAC;CACH,GAEMgD,IAAezB,EAAY0B,gBAAgB;CAEjD,OACE,kBAACyE,GAAD;EAAO,GAAE;EAAO,MAAK;EAAI,KAAI;EAAI,IAAG;EAClC,UAAA,kBAACnB,GAAD;GAAK,UAAS;GAAW,MAAK;GAAI,MAAK;GAAI,IAAG;GAC5C,UAAA,kBAAC1C,GAAD;IACE,UAAS;IACT,OAAM;IACN,aAAalD;IACb,eAAe,EAAEuC,OAAO,EAAEC,gBAAgB,OAAO,EAAE;IACnD,cAAc,EAAEC,GAAG,KAAK;IAExB,UAAA,kBAACmD,GAAD;KAAK,UAAS;KAAW,OAAM;KAAO,OAAO,EAAElD,QAAQ9B,EAAY+B,aAAa,EAAE;KAC/EN,UAAAA,EAAapD,KAAK2D,MAAgB;MACjC,IAAMxE,IAAOlB,EAAM0F,EAAY/D,QACzBxB,IAAOc,EAAYC,CAAI;MAE7B,OACE,kBAACwH,GAAD;OAEE,cAAYhD,EAAY/D;OACxB,KAAK+B,EAAYkC;OACjB,UAAS;OACT,MAAK;OACL,OAAM;OACN,IAAG;OACH,OAAO,EAAEC,KAAK,GAAGH,EAAYI,MAAK,IAAK;OAEvC,UAAA,kBAAC2F,IAAD;QAEE,MAAMvK;QACN,YAAYjB,MAAqBE;QACjC,YAAY,CAAC+B,EAAeE,IAAIjC,CAAI;QACpC,wBAAwB8E,EAAe9E,CAAI;QAC3C,gBAAgBE,IAAmBF,CAAI;QAC3BD;QACZ,uBAAuBoD,EAAoBlB,IAAIjC,CAAI;QACnD,sBAAsB+E,EAAa/E,CAAI;QACzBQ;OAAa,GATtBR,CASsB;MAE1B,GArBEuF,EAAYC,GAqBd;KAET,CAAC;IACE,CAAA;GACK,CAAA;EACT,CAAA;CACA,CAAA;AAEX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit-mode-data-table-BI_UDPfF.js","names":["ReactNode","CollectionViewBar","AttributeDescriptor","DataTableViewsSource","useDataTableView","DataTableHeaderProps","itemLabel","view","ReturnType","viewsSource","displayControl","actions","noOptions","_field","DataTableHeader","props","$","_c","searching","deferredSearch","trim","t0","shownRows","length","filteredRows","undefined","t1","attributes","initialState","search","setSearch","storageKey","views","_c","Box","Icon","IconButton","Popover","Portal","Text","Settings2","Switch","DataTableRowDisplaySwitchProps","showDivider","wrapRows","onWrapRowsChange","DataTableRowDisplaySwitch","props","$","_c","t0","undefined","t1","t2","Symbol","for","role","t3","details","checked","t4","t5","t6","DataTableRowDisplayMenuProps","compact","DataTableRowDisplayMenu","content","mainAxis","placement","offset","t7","t8","t9","_c","Switch","resolveDataTableComparableValue","DataTableDiffValue","isDataTableDiffValue","value","additions","deletions","Text","useEffect","useState","Tooltip","HighlightedText","relativeUnits","unit","seconds","const","parseDate","value","time","Date","parse","Number","isNaN","formatDataTableRelativeDate","now","locale","date","format","Intl","RelativeTimeFormat","numeric","elapsedSeconds","getTime","match","find","candidate","Math","abs","round","DataTableDateCellProps","search","DataTableDateCell","props","$","_c","t0","undefined","setNow","_temp","t1","t2","Symbol","for","timer","setInterval","clearInterval","t3","relativeLabel","t4","toLocaleString","dateStyle","timeStyle","fullDate","t5","t6","t7","_c","_temp","Tooltip","ParamEditor","JsonField","label","value","FriendlyJsonDisplayProps","imageExtensionPattern","imageLabelPattern","humanizeKey","key","words","replace","trim","toLowerCase","toUpperCase","slice","formatPath","path","map","part","test","join","isPrimitiveArray","every","item","appendJsonFields","fields","Array","isArray","length","push","forEach","index","String","entries","Object","parseJsonCellValue","JSON","parse","buildJsonFields","field","isJsonImageValue","startsWith","url","URL","protocol","pathname","isJsonImageArray","formatJsonPrimitive","undefined","formatJsonValue","getJsonCellSummary","parsedValue","keys","filter","visibleValues","remainingCount","Boolean","toReadOnlyValue","type","const","src","alt","images","image","buildFriendlyJsonParams","id","name","FriendlyJsonDisplay","props","$","_c","t0","t1","_c","Icon","ChakraIcon","createColumnHelper","CalendarClock","CheckCircle2","Hash","Type","isValidElement","ReactElement","ReactNode","ColumnType","DisplayValue","RowData","isDisplayValue","value","isString","v","String","isNumber","Number","isBoolean","Boolean","getType","values","comparableValues","map","sortValue","valueOf","filter","undefined","length","every","isNaN","Date","parse","toString","headerIconProps","boxSize","marginRight","getIcon","type","formatDisplayValue","display","JSON","stringify","columnHelper","ChakraIcon","resolveDataTableFieldKind","isValidElement","ReactNode","AttributeDescriptor","KanbanRendererRow","isDataTableDiffValue","resolveDataTableComparableValue","formatDataTableRelativeDate","getJsonCellSummary","formatDisplayValue","DataTableProps","DataTableSelectionAction","RowData","defaultPageSize","DataTableRendererRow","sourceRow","resolveDataTableRowId","row","index","getRowId","id","String","resolveInitialPageSize","props","Pick","initialPageSize","getSelectedOriginalRows","rows","Array","original","map","resolveSelectionActions","actions","selectionActions","onCSVDownload","push","label","onSelect","shouldEnableSelection","selectionMode","Boolean","length","shouldHighlightActiveRow","enableRowActivation","activeRowId","rowId","ColumnRenderers","toAttributeValue","value","renderer","NonNullable","raw","ColumnOptions","resolveAttributeType","columnKey","options","kind","type","columnTypes","columnRenderers","buildDataTableRendererAttributes","columnKeys","compactHeaders","filterable","filterableColumns","includes","sortable","groupable","groupableColumns","displayable","buildDataTableRendererRows","renderers","attributes","Object","fromEntries","firstValue","title","resolveDataTableColumnOrder","availableColumnIds","requestedColumnOrder","availableColumnIdSet","Set","orderedColumnIds","filter","columnId","has","orderedColumnIdSet","missingColumnIds","toggleHiddenDataTableColumn","hiddenColumnIds","visible","nodeText","isArray","flatMap","children","dataTableCellText","now","Date","additions","deletions","reorderDataTableColumns","columnIds","activeColumnId","overColumnId","activeIndex","indexOf","overIndex","nextColumnIds","activeColumn","splice","resolveDataTableToolbarStorageKey","toolbarStorageKey","join","Box","chakra","Flex","IconButton","Popover","Portal","Check","X","KeyboardEvent","ReactNode","RefObject","useEffect","useRef","ScrollArea","InlineEditActionsProps","cancelLabel","saveLabel","onCancel","onSave","InlineEditActions","props","$","_c","t0","Symbol","for","t1","t2","t3","t4","EditModeTextSurfaceProps","accessibleName","textStyle","value","onChange","EditModeTextSurface","elementRef","initialValueRef","element","current","textContent","focus","selection","globalThis","getSelection","range","document","createRange","selectNodeContents","removeAllRanges","addRange","event","key","preventDefault","handleKeyDown","event_0","currentTarget","EditModeHeaderEditorProps","draft","EditModeHeaderEditor","EditModeCellEditorProps","anchorRef","HTMLElement","customEditor","EditModeCellEditor","mainAxis","placement","offset","getAnchorElement","minHeight","maxHeight","overscrollBehavior","t5","t6","t7","t8","_c","ScrollArea","Box","Table","KeyboardEvent","ReactNode","useRef","EditModeCellEditor","DataTableCellContext","DataTableEditModeColumn","DataTableEditModeConfig","EditModeDataTableCellProps","activeDraft","column","context","editMode","isActive","isReadOnly","wrapRows","onActivate","onCancel","onDraftChange","draft","onSave","getRowDisplayProps","height","undefined","maxHeight","overflowWrap","const","textOverflow","verticalAlign","whiteSpace","EditModeDataTableCell","props","$","_c","t0","cellRef","t1","isCellEditable","isEditable","t2","rowDisplayProps","content","t3","renderCellEditor","value","onChange","customEditor","t4","renderCell","String","event","key","preventDefault","handleKeyDown","id","t5","t6","t7","t8","t9","alignment","t10","t11","t12","t13","_c","Icon","ChakraIcon","Table","Check","Minus","Checkbox","stopControlPropagation","event","stopPropagation","EditModeSelectionHeaderProps","checked","indeterminate","onChange","EditModeSelectionHeader","props","$","_c","t0","t1","t2","t3","details","t4","EditModeSelectionCellProps","EditModeSelectionCell","Symbol","for","_c","ChakraIcon","Checkbox","Button","Icon","Table","Plus","Trash2","ResourceContextMenu","EditModeDataTableCell","EditModeSelectionCell","DataTableCellContext","DataTableEditModeColumn","DataTableEditModeConfig","RowData","ActiveCell","rowId","columnId","draft","EditModeDataTableBodyProps","activeCell","columns","data","editMode","enableSelection","isReadOnly","pageIndex","pageRows","pageSize","rowNumbers","selectedRowIds","Set","showNewRow","wrapRows","onActivateCell","cell","onAddRow","onCancelCell","onCommitCell","onDraftChange","onRemoveRow","onToggleRowSelection","checked","rowIdFor","row","index","EditModeDataTableBody","props","$","_c","rowHeight","undefined","verticalAlign","t0","t1","visibleIndex","rowIndex","sourceIndex","indexOf","tableRow","has","map","column","context","id","value","isActive","String","key","label","icon","onClick","length","t2","_c","Flex","Icon","IconButton","Table","Text","Pencil","Plus","Trash2","ReactNode","ResourceContextMenu","EditModeHeaderEditor","getIcon","DataTableEditModeColumn","DataTableEditModeConfig","RowData","ActiveHeader","columnId","draft","EditModeDataTableHeaderProps","activeHeader","columnIcons","Record","columns","data","editMode","isReadOnly","rowNumbers","rowDisplayControl","selectionHeader","onAddColumn","onCancelHeaderEdit","onDeleteColumn","onHeaderDraftChange","onHeaderEdit","column","onSaveHeader","EditModeDataTableHeader","props","$","_c","t0","t1","t2","t3","length","index","isEditing","id","headerIcon","map","row","header","alignment","label","renderHeader","key","icon","onClick","isDisabled","separatorBefore","t4","_c","Button","Icon","ChakraIcon","Flex","IconButton","Menu","Portal","Stack","Text","ChevronLeft","ChevronRight","ChevronsLeft","ChevronsRight","NumberInputField","NumberInputRoot","ListRow","PaginationFooterProps","pageCount","pageIndex","pageSize","pageSizeOptions","onPageChange","onPageSizeChange","PaginationFooter","props","$","_c","totalPages","Math","max","canGoBack","canGoForward","t0","Symbol","for","t1","t2","t3","option","map","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","details","next","Number","isNaN","valueAsNumber","clamped","min","t24","t25","t26","t27","t28","_c","ChakraIcon","Button","Icon","ChakraIcon","Flex","IconButton","Menu","Portal","Stack","Text","X","ListRow","DataTableSelectionAction","RowData","SelectionToolbarProps","selectedCount","totalCount","onClearSelection","onSelectAll","actions","selectedRows","SelectionToolbar","props","$","_c","actionLabel","length","label","t0","Symbol","for","t1","t2","t3","t4","onSelect","t5","map","action","destructive","icon","t6","_c","ChakraIcon","DEFAULT_DATA_TABLE_SETTINGS","useDeferredValue","useState","findField","filterRowsByView","groupRowsByField","searchRows","sortRowsByView","CollectionViewStoreState","useCollectionViewStore","useCollectionViews","buildDataTableRendererAttributes","buildDataTableRendererRows","dataTableCellText","resolveDataTableColumnOrder","resolveDataTableToolbarStorageKey","DataTableProps","DataTableSettings","DataTableViewDefaults","Pick","dataTableInitialState","defaults","settings","defaultSettings","filter","defaultFilter","sorts","defaultSorts","useDataTableViewStore","storageKey","selector","t0","$","_c","t1","undefined","t2","useDataTableView","props","data","hiddenColumns","getRowId","compactHeaders","columnRenderers","columnTypes","groupableColumns","filterableColumns","permanentlyHidden","Set","baseColumnKeys","Object","keys","key","has","toolbarStorageKey","columnKeys","initialState","views","viewsSource","defaultViews","defaultActiveViewId","store","_temp","search","setSearch","deferredSearch","orderedColumnKeys","columnOrder","key_0","includes","visibleColumnKeys","attributes","rows","filteredRows","sortedRows","shownRows","row","flatMap","key_1","sourceRow","groupField","grouping","groups","groupable","map","_temp2","state","group","_c","_temp","_temp2","Box","Flex","Table","useEffect","useState","ScrollArea","DataTableHeader","DataTableRowDisplayMenu","resolveSelectionActions","shouldEnableSelection","EditModeDataTableBody","EditModeDataTableHeader","EditModeSelectionHeader","PaginationFooter","SelectionToolbar","DataTableEditModeColumn","DataTableProps","RowData","useDataTableView","createId","kind","unique","globalThis","crypto","randomUUID","Date","now","Math","random","ActiveCell","rowId","columnId","draft","ActiveHeader","EditModeDataTable","props","$","_c","data","editMode","fullWidth","t0","initialPageSize","t1","pageSizeOptions","t2","isReadOnly","t3","getRowId","columnIcons","toolbarStorageKey","undefined","pageIndex","setPageIndex","t4","min","max","pageSize","setPageSize","activeCell","setActiveCell","activeHeader","setActiveHeader","selectedRowIds","setSelectedRowIds","_temp","columns","t5","t6","t7","t8","columnKeys","map","_temp2","Object","fromEntries","_temp3","keys","filter","key","includes","t9","compactHeaders","hiddenColumns","view","wrapRows","settings","rowNumbers","t10","next","setSettings","setWrapRows","filteredRendererRows","shownRows","filteredData","_temp4","cappedPageSizeOptions","Set","_temp5","pageCount","ceil","length","pageRows","slice","tableWidth","t11","enableSelection","t12","selectionActions","t13","t14","t15","visibleIds","_temp6","current","next_0","has","isUnchanged","size","every","rowId_0","t16","t17","row_1","index","row","String","id","rowIdFor","t18","onDataChange","row_2","index_0","commitCell","t19","update","onColumnsChange","column_1","column","updateColumn","t20","label","commitHeader","t21","alignment","addColumn","t22","columnId_0","column_2","removeColumn","t23","row_3","_temp7","addRow","t24","nextPageSize","changePageSize","t25","rowId_1","row_4","index_1","removeRow","t26","rowId_2","checked","current_0","next_1","add","delete","toggleRowSelection","allRowsSelected","t27","t28","row_5","_temp8","selectedRows","t29","rowDisplayControl","t30","viewsSource","t31","Symbol","for","overflowY","t33","t34","t35","_temp9","t36","t37","t38","t39","t40","t41","current_1","column_5","t42","checked_0","_temp0","t43","t44","t45","t46","t47","t48","_temp1","t49","t50","t51","column_0","sourceRow","option","row_0","column_3","row_6","column_4","row_7","row_8","_c","ScrollArea","Tooltip$1","Checkbox$1","ListRow","ResourceContextMenu","Switch$1","useCollectionViewStore","findField","useCollectionViews","searchRows","CollectionViewBar","filterRowsByView","NumberInputRoot","NumberInputField","HighlightedText","sortRowsByView","groupRowsByField","ParamEditor","noOptions","DataTableHeader","$","c","props","t0","view","t1","actions","displayControl","viewsSource","DataTableRowDisplaySwitch","t2","t3","onWrapRowsChange","details","t4","Text","t5","wrapRows","t6","Box","DataTableRowDisplayMenu","compact","Popover","content","Icon","Settings2","t7","IconButton","t8","Portal","t9","isDataTableDiffValue","value","relativeUnits","parseDate","time","formatDataTableRelativeDate","date","format","locale","elapsedSeconds","now","match","candidate","DataTableDateCell","search","setNow","useState","_temp$2","timer","useEffect","relativeLabel","fullDate","imageExtensionPattern","imageLabelPattern","humanizeKey","words","key","formatPath","path","part","isPrimitiveArray","item","appendJsonFields","index","fields","entries","parseJsonCellValue","buildJsonFields","field","isJsonImageValue","url","label","isJsonImageArray","formatJsonPrimitive","formatJsonValue","getJsonCellSummary","parsedValue","visibleValues","remainingCount","toReadOnlyValue","image","buildFriendlyJsonParams","FriendlyJsonDisplay","isDisplayValue","isString","v","isNumber","isBoolean","getType","comparableValues","values","isValidElement","headerIconProps","getIcon","type","CalendarClock","Type","Hash","CheckCircle2","formatDisplayValue","columnHelper","createColumnHelper","resolveDataTableRowId","getRowId","row","resolveInitialPageSize","getSelectedOriginalRows","rows","resolveSelectionActions","shouldEnableSelection","shouldHighlightActiveRow","toAttributeValue","resolveDataTableComparableValue","renderer","resolveAttributeType","resolveDataTableFieldKind","columnKey","options","buildDataTableRendererAttributes","columnKeys","buildDataTableRendererRows","attributes","renderers","rowId","firstValue","resolveDataTableColumnOrder","availableColumnIdSet","availableColumnIds","orderedColumnIds","requestedColumnOrder","columnId","orderedColumnIdSet","missingColumnIds","toggleHiddenDataTableColumn","visible","hiddenColumnIds","id","nodeText","dataTableCellText","reorderDataTableColumns","activeIndex","columnIds","activeColumnId","overIndex","overColumnId","nextColumnIds","activeColumn","resolveDataTableToolbarStorageKey","InlineEditActions","Check","onSave","saveLabel","X","cancelLabel","onCancel","Flex","EditModeTextSurface","elementRef","useRef","initialValueRef","element","selection","range","event","handleKeyDown","onChange","event_0","accessibleName","textStyle","chakra","EditModeHeaderEditor","draft","EditModeCellEditor","anchorRef","customEditor","ScrollArea$1","getRowDisplayProps","EditModeDataTableCell","activeDraft","cellRef","context","editMode","isReadOnly","isEditable","rowDisplayProps","isActive","onDraftChange","onActivate","column","t10","t11","t12","t13","Table","stopControlPropagation","EditModeSelectionHeader","checked","indeterminate","Minus","EditModeSelectionCell","EditModeDataTableBody","rowHeight","verticalAlign","activeCell","columns","data","enableSelection","onActivateCell","onCancelCell","onCommitCell","onRemoveRow","onToggleRowSelection","pageIndex","pageRows","pageSize","rowIdFor","rowNumbers","selectedRowIds","rowIndex","visibleIndex","sourceIndex","tableRow","Trash2","onAddRow","showNewRow","Button","Plus","EditModeDataTableHeader","rowDisplayControl","selectionHeader","activeHeader","columnIcons","onCancelHeaderEdit","onDeleteColumn","onHeaderDraftChange","onHeaderEdit","onSaveHeader","isEditing","headerIcon","header","Pencil","onAddColumn","PaginationFooter","totalPages","pageCount","canGoBack","canGoForward","Menu","onPageSizeChange","pageSizeOptions","option","onPageChange","ChevronsLeft","ChevronLeft","t14","t15","ChevronRight","t16","t17","t18","t19","ChevronsRight","t20","t21","t22","t23","next","t24","t25","t26","t27","t28","Stack","SelectionToolbar","actionLabel","onClearSelection","selectedCount","onSelectAll","totalCount","selectedRows","action","dataTableInitialState","DEFAULT_DATA_TABLE_SETTINGS","defaults","useDataTableViewStore","storageKey","selector","useDataTableView","permanentlyHidden","hiddenColumns","baseColumnKeys","initialState","views","store","_temp$1","setSearch","deferredSearch","useDeferredValue","orderedColumnKeys","settings","key_0","visibleColumnKeys","columnRenderers","filteredRows","filter","sortedRows","sorts","shownRows","key_1","groupField","groups","_temp2$1","state","group","createId","kind","EditModeDataTable","fullWidth","initialPageSize","setPageIndex","setPageSize","setActiveCell","setActiveHeader","setSelectedRowIds","_temp","_temp2","_temp3","setWrapRows","filteredRendererRows","filteredData","_temp4","cappedPageSizeOptions","_temp5","tableWidth","selectionActions","visibleIds","_temp6","next_0","current","rowId_0","row_1","row_2","index_0","commitCell","column_1","update","updateColumn","commitHeader","addColumn","column_2","columnId_0","removeColumn","row_3","_temp7","addRow","nextPageSize","changePageSize","row_4","index_1","rowId_1","removeRow","next_1","current_0","rowId_2","toggleRowSelection","allRowsSelected","row_5","_temp8","toolbarStorageKey","t29","t30","t31","t32","t33","t34","t35","_temp9","t36","t37","t38","t39","t40","t41","current_1","column_5","t42","checked_0","_temp0","t43","t44","t45","t46","t47","t48","_temp1","t49","t50","t51","column_0","row_0","column_3","row_6","column_4","row_7","row_8"],"sources":["../src/components/data-table/data-table-header.tsx","../src/components/data-table/data-table-row-display.tsx","../src/components/data-table/data-table-cell-value.ts","../src/components/data-table/data-table-date-cell.tsx","../src/components/data-table/friendly-json-display.tsx","../src/components/data-table/helpers.tsx","../src/components/data-table/data-table-state.ts","../src/components/data-table/edit-mode-data-table-editors.tsx","../src/components/data-table/edit-mode-data-table-cell.tsx","../src/components/data-table/edit-mode-data-table-selection.tsx","../src/components/data-table/edit-mode-data-table-body.tsx","../src/components/data-table/edit-mode-data-table-header.tsx","../src/components/data-table/pagination-footer.tsx","../src/components/data-table/selection-toolbar.tsx","../src/components/data-table/use-data-table-view.ts","../src/components/data-table/edit-mode-data-table.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { CollectionViewBar } from \"../collection-view/collection-view-bar\";\nimport type { AttributeDescriptor } from \"../kanban-renderer/types\";\nimport type { DataTableViewsSource } from \"./types\";\nimport type { useDataTableView } from \"./use-data-table-view\";\n\ninterface DataTableHeaderProps {\n itemLabel?: string;\n view: ReturnType<typeof useDataTableView>;\n viewsSource?: DataTableViewsSource;\n displayControl: ReactNode;\n actions?: ReactNode;\n}\n\n// Table columns have no option lists, so every rule is built in the rule editor.\nconst noOptions = (_field: AttributeDescriptor) => [];\n\n/** The table uses the same view bar as boards: saved views, Search, Filter, and Display. */\nexport const DataTableHeader = (props: DataTableHeaderProps) => {\n const { view, viewsSource, displayControl, actions } = props;\n const searching = view.deferredSearch.trim() !== \"\";\n\n return (\n <CollectionViewBar\n itemLabel={props.itemLabel}\n storageKey={view.storageKey}\n initialState={view.initialState}\n views={view.views.views}\n viewsSource={viewsSource}\n fields={view.attributes}\n optionsFor={noOptions}\n search={view.search}\n onSearchChange={view.setSearch}\n searchResultLabel={searching ? `${view.shownRows.length} of ${view.filteredRows.length}` : undefined}\n displayControl={displayControl}\n actions={actions}\n />\n );\n};\n","import { Box, Icon, IconButton, Popover, Portal, Text } from \"@chakra-ui/react\";\nimport { Settings2 } from \"lucide-react\";\nimport { Switch } from \"@/components/primitives/switch\";\n\ninterface DataTableRowDisplaySwitchProps {\n showDivider?: boolean;\n wrapRows: boolean;\n onWrapRowsChange: (wrapRows: boolean) => void;\n}\n\nexport const DataTableRowDisplaySwitch = (props: DataTableRowDisplaySwitchProps) => {\n const { showDivider = false, wrapRows, onWrapRowsChange } = props;\n\n return (\n <Box borderBottomWidth={showDivider ? \"1px\" : undefined} borderColor=\"border.subtle\" padding=\"xs\">\n <Switch\n checked={wrapRows}\n inputProps={{ role: \"switch\" }}\n width=\"full\"\n flexDirection=\"row-reverse\"\n justifyContent=\"space-between\"\n onCheckedChange={(details) => onWrapRowsChange(details.checked === true)}\n >\n <Text as=\"span\" textStyle=\"label/S/regular\">\n Wrap rows\n </Text>\n </Switch>\n </Box>\n );\n};\n\ninterface DataTableRowDisplayMenuProps extends DataTableRowDisplaySwitchProps {\n compact?: boolean;\n}\n\nexport const DataTableRowDisplayMenu = (props: DataTableRowDisplayMenuProps) => {\n const { compact = false, wrapRows, onWrapRowsChange } = props;\n const content = (\n <Popover.Positioner>\n <Popover.Content width=\"min(240px, calc(100vw - 32px))\" p=\"0\" bg=\"bg\" overflow=\"hidden\">\n <DataTableRowDisplaySwitch wrapRows={wrapRows} onWrapRowsChange={onWrapRowsChange} />\n </Popover.Content>\n </Popover.Positioner>\n );\n\n return (\n <Popover.Root positioning={{ placement: compact ? \"bottom-start\" : \"bottom-end\", offset: { mainAxis: 8 } }}>\n <Popover.Trigger asChild>\n <IconButton aria-label=\"Display settings\" variant=\"ghost\" size={compact ? \"2xs\" : \"sm\"}>\n <Icon as={Settings2} boxSize=\"14px\" />\n </IconButton>\n </Popover.Trigger>\n <Portal>{content}</Portal>\n </Popover.Root>\n );\n};\n","export { resolveDataTableComparableValue } from \"@pstdio/sdk/extensions\";\n\nimport type { DataTableDiffValue } from \"./types\";\n\nexport const isDataTableDiffValue = (value: unknown): value is DataTableDiffValue =>\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as DataTableDiffValue).additions === \"number\" &&\n typeof (value as DataTableDiffValue).deletions === \"number\";\n","import { Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Tooltip } from \"@/components/primitives/tooltip\";\nimport { HighlightedText } from \"../collection-view/highlighted-text\";\n\nconst relativeUnits = [\n { unit: \"year\", seconds: 365 * 24 * 60 * 60 },\n { unit: \"month\", seconds: 30 * 24 * 60 * 60 },\n { unit: \"day\", seconds: 24 * 60 * 60 },\n { unit: \"hour\", seconds: 60 * 60 },\n { unit: \"minute\", seconds: 60 },\n] as const;\n\nconst parseDate = (value: unknown) => {\n if (typeof value !== \"string\") return null;\n const time = Date.parse(value);\n return Number.isNaN(time) ? null : new Date(time);\n};\n\nexport const formatDataTableRelativeDate = (value: unknown, now = new Date(), locale?: string) => {\n const date = parseDate(value);\n if (!date) return null;\n const format = new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n const elapsedSeconds = (date.getTime() - now.getTime()) / 1000;\n const match = relativeUnits.find((candidate) => Math.abs(elapsedSeconds) >= candidate.seconds);\n if (!match) return format.format(0, \"second\");\n return format.format(Math.round(elapsedSeconds / match.seconds), match.unit);\n};\n\ninterface DataTableDateCellProps {\n value: string;\n search?: string;\n}\n\nexport const DataTableDateCell = (props: DataTableDateCellProps) => {\n const { value, search = \"\" } = props;\n const [now, setNow] = useState(() => new Date());\n useEffect(() => {\n const timer = setInterval(() => setNow(new Date()), 60_000);\n return () => clearInterval(timer);\n }, []);\n const relativeLabel = formatDataTableRelativeDate(value, now);\n const fullDate = new Date(value).toLocaleString(undefined, { dateStyle: \"medium\", timeStyle: \"short\" });\n\n return (\n <Tooltip content={fullDate} openDelay={300}>\n <Text as=\"span\" tabIndex={0} textStyle=\"paragraph/S/regular\" color=\"fg.muted\" whiteSpace=\"nowrap\">\n <HighlightedText text={relativeLabel ?? \"\"} query={search} />\n </Text>\n </Tooltip>\n );\n};\n","import { ParamEditor } from \"@/components/param-editor\";\n\ninterface JsonField {\n label: string;\n value: unknown;\n}\n\nexport interface FriendlyJsonDisplayProps {\n value: unknown;\n}\n\nconst imageExtensionPattern = /\\.(avif|bmp|gif|jpe?g|png|svg|webp)$/i;\nconst imageLabelPattern = /(^|\\s)(avatar|image|logo|photo|picture|thumbnail)(\\s|$)/i;\n\nconst humanizeKey = (key: string) => {\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/[_-]+/g, \" \")\n .trim()\n .toLowerCase();\n\n return words ? `${words[0]?.toUpperCase()}${words.slice(1)}` : \"Details\";\n};\n\nconst formatPath = (path: string[]) => path.map((part) => (/^\\d+$/.test(part) ? part : humanizeKey(part))).join(\" / \");\n\nconst isPrimitiveArray = (value: unknown[]) => value.every((item) => item === null || typeof item !== \"object\");\n\nconst appendJsonFields = (value: unknown, path: string[], fields: JsonField[]) => {\n if (Array.isArray(value)) {\n if (value.length === 0 || isPrimitiveArray(value)) {\n fields.push({ label: formatPath(path), value });\n return;\n }\n\n value.forEach((item, index) => {\n appendJsonFields(item, [...path, String(index + 1)], fields);\n });\n return;\n }\n\n if (value !== null && typeof value === \"object\") {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n fields.push({ label: formatPath(path), value: null });\n return;\n }\n\n entries.forEach(([key, item]) => {\n appendJsonFields(item, [...path, key], fields);\n });\n return;\n }\n\n fields.push({ label: formatPath(path), value });\n};\n\nexport const parseJsonCellValue = (value: unknown) => {\n if (typeof value !== \"string\") return value;\n\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return value;\n }\n};\n\nexport const buildJsonFields = (value: unknown) => {\n const fields: JsonField[] = [];\n appendJsonFields(parseJsonCellValue(value), [], fields);\n return fields.map((field) => ({ ...field, label: field.label || \"Value\" }));\n};\n\nexport const isJsonImageValue = (value: unknown, label: string) => {\n if (typeof value !== \"string\") return false;\n if (value.startsWith(\"data:image/\")) return true;\n\n try {\n const url = new URL(value);\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") return false;\n return imageExtensionPattern.test(url.pathname) || imageLabelPattern.test(label);\n } catch {\n return false;\n }\n};\n\nexport const isJsonImageArray = (value: unknown, label: string) => {\n return Array.isArray(value) && value.length > 0 && value.every((item) => isJsonImageValue(item, label));\n};\n\nconst formatJsonPrimitive = (value: unknown) => {\n if (value === null || value === undefined || value === \"\") return \"Not provided\";\n if (typeof value === \"boolean\") return value ? \"Yes\" : \"No\";\n return String(value);\n};\n\nconst formatJsonValue = (value: unknown) => {\n if (Array.isArray(value)) return value.length === 0 ? \"None\" : value.map(formatJsonPrimitive).join(\", \");\n return formatJsonPrimitive(value);\n};\n\nexport const getJsonCellSummary = (value: unknown) => {\n const parsedValue = parseJsonCellValue(value);\n if (Array.isArray(parsedValue) && parsedValue.length === 0) return \"No details\";\n if (parsedValue !== null && typeof parsedValue === \"object\" && Object.keys(parsedValue).length === 0) {\n return \"No details\";\n }\n\n const fields = buildJsonFields(value).filter(\n (field) => !isJsonImageValue(field.value, field.label) && !isJsonImageArray(field.value, field.label),\n );\n if (fields.length === 0) return \"No details\";\n\n const visibleValues = fields.slice(0, 2).map((field) => formatJsonValue(field.value));\n const remainingCount = fields.length - visibleValues.length;\n return [...visibleValues, remainingCount > 0 ? `${remainingCount} more` : null].filter(Boolean).join(\" · \");\n};\n\nconst toReadOnlyValue = (field: JsonField) => {\n const { label, value } = field;\n if (isJsonImageValue(value, label)) {\n return { type: \"image\" as const, src: String(value), alt: `${label} preview` };\n }\n if (Array.isArray(value) && isJsonImageArray(value, label)) {\n return {\n type: \"image-gallery\" as const,\n images: value.map((image, index) => ({ src: String(image), alt: `${label} ${index + 1} preview` })),\n };\n }\n if (Array.isArray(value)) return value as Array<string | number | boolean | null>;\n if (value === undefined) return null;\n return value as string | number | boolean | null;\n};\n\nexport const buildFriendlyJsonParams = (value: unknown) =>\n buildJsonFields(value).map((field, index) => ({\n id: `friendly-json-${index}`,\n name: field.label,\n type: \"readOnly\" as const,\n value: toReadOnlyValue(field),\n }));\n\nexport const FriendlyJsonDisplay = (props: FriendlyJsonDisplayProps) => {\n const { value } = props;\n return <ParamEditor params={buildFriendlyJsonParams(value)} readOnly fullWidth />;\n};\n","import { Icon as ChakraIcon } from \"@chakra-ui/react\";\nimport { createColumnHelper } from \"@tanstack/react-table\";\nimport { CalendarClock, CheckCircle2, Hash, Type } from \"lucide-react\";\nimport { isValidElement, type ReactElement, type ReactNode } from \"react\";\n\nimport type { ColumnType, DisplayValue, RowData } from \"./types\";\n\nexport const isDisplayValue = (value: unknown): value is DisplayValue =>\n typeof value === \"object\" && value !== null && \"display\" in value;\n\nexport const isString = (v: unknown): v is string => typeof v === \"string\" || v instanceof String;\nexport const isNumber = (v: unknown): v is number => typeof v === \"number\" || v instanceof Number;\nexport const isBoolean = (v: unknown): v is boolean => typeof v === \"boolean\" || v instanceof Boolean;\n\nexport const getType = (values: unknown[]): ColumnType => {\n const comparableValues = values\n .map((value) => {\n if (isDisplayValue(value)) return value.sortValue ?? null;\n if (value instanceof String || value instanceof Number || value instanceof Boolean) return value.valueOf();\n if (isValidElement(value)) return null;\n return value;\n })\n .filter((value) => value !== null && value !== undefined);\n\n if (comparableValues.length === 0) return \"unknown\";\n if (comparableValues.every((v) => isString(v) && !Number.isNaN(Date.parse(v.toString())))) return \"date\";\n if (comparableValues.every((v) => isNumber(v))) return \"number\";\n if (comparableValues.every((v) => isBoolean(v))) return \"boolean\";\n if (comparableValues.every((v) => isString(v))) return \"string\";\n return \"unknown\";\n};\n\nconst headerIconProps = {\n boxSize: \"14px\",\n marginRight: \"2px\",\n};\n\nexport const getIcon = (values: unknown[]): ReactElement | null => {\n const type = getType(values);\n if (type === \"date\") return <ChakraIcon as={CalendarClock} {...headerIconProps} />;\n if (type === \"string\") return <ChakraIcon as={Type} {...headerIconProps} />;\n if (type === \"number\") return <ChakraIcon as={Hash} {...headerIconProps} />;\n if (type === \"boolean\") return <ChakraIcon as={CheckCircle2} {...headerIconProps} />;\n return null;\n};\n\nexport function formatDisplayValue(value: unknown): ReactNode {\n if (isDisplayValue(value)) return value.display;\n if (isValidElement(value)) return value;\n\n if (value instanceof String || value instanceof Number || value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (typeof value) {\n case \"boolean\":\n return value ? \"TRUE\" : \"FALSE\";\n case \"number\":\n return value;\n case \"object\":\n return value !== null ? JSON.stringify(value) : \"-\";\n case \"undefined\":\n return \"-\";\n default:\n return value ? String(value) : \"-\";\n }\n}\n\nexport const columnHelper = createColumnHelper<RowData>();\n","import { resolveDataTableFieldKind } from \"@pstdio/sdk/extensions\";\nimport { isValidElement, type ReactNode } from \"react\";\nimport type { AttributeDescriptor, KanbanRendererRow } from \"@/components/kanban-renderer/types\";\nimport { isDataTableDiffValue, resolveDataTableComparableValue } from \"./data-table-cell-value\";\nimport { formatDataTableRelativeDate } from \"./data-table-date-cell\";\nimport { getJsonCellSummary } from \"./friendly-json-display\";\nimport { formatDisplayValue } from \"./helpers\";\nimport type { DataTableProps, DataTableSelectionAction, RowData } from \"./types\";\n\nexport const defaultPageSize = 30;\n\nexport interface DataTableRendererRow extends KanbanRendererRow {\n sourceRow: RowData;\n}\n\nexport const resolveDataTableRowId = (row: RowData, index: number, getRowId?: DataTableProps[\"getRowId\"]) => {\n if (getRowId) return getRowId(row, index);\n return typeof row.id === \"string\" ? row.id : String(index);\n};\n\nexport const resolveInitialPageSize = (props: Pick<DataTableProps, \"initialPageSize\">) => {\n if (typeof props.initialPageSize === \"number\" && props.initialPageSize > 0) return props.initialPageSize;\n return defaultPageSize;\n};\n\nexport const getSelectedOriginalRows = (rows: Array<{ original: RowData }>) => rows.map((row) => row.original);\n\nexport const resolveSelectionActions = (\n props: Pick<DataTableProps, \"selectionActions\" | \"onCSVDownload\" | \"getRowId\">,\n) => {\n const actions: DataTableSelectionAction[] = [...(props.selectionActions ?? [])];\n\n if (props.onCSVDownload) {\n actions.push({\n label: \"Download CSV\",\n onSelect: (rows) => {\n props.onCSVDownload?.(rows.map((row, index) => resolveDataTableRowId(row, index, props.getRowId)));\n },\n });\n }\n\n return actions;\n};\n\nexport const shouldEnableSelection = (\n props: Pick<DataTableProps, \"selectionMode\" | \"selectionActions\" | \"onCSVDownload\">,\n) => props.selectionMode === \"multiple\" || Boolean(props.onCSVDownload) || Boolean(props.selectionActions?.length);\n\nexport const shouldHighlightActiveRow = (props: {\n enableRowActivation?: boolean;\n activeRowId?: string | null;\n rowId: string;\n}) => props.enableRowActivation === true && props.activeRowId === props.rowId;\n\ntype ColumnRenderers = DataTableProps[\"columnRenderers\"];\n\nconst toAttributeValue = (value: unknown, renderer?: NonNullable<ColumnRenderers>[string]) => {\n const raw = resolveDataTableComparableValue(value, renderer);\n return raw;\n};\n\ntype ColumnOptions = Pick<\n DataTableProps,\n \"compactHeaders\" | \"columnRenderers\" | \"columnTypes\" | \"groupableColumns\" | \"filterableColumns\"\n>;\n\nconst resolveAttributeType = (\n rows: RowData[],\n columnKey: string,\n options: ColumnOptions,\n): AttributeDescriptor[\"type\"] => {\n return {\n kind: resolveDataTableFieldKind(\n rows.map((row) => row[columnKey]),\n { type: options.columnTypes?.[columnKey], renderer: options.columnRenderers?.[columnKey] },\n ),\n };\n};\n\n/** Every column is a view field, so filters, sorts, and grouping read them like board attributes. */\nexport const buildDataTableRendererAttributes = (\n rows: RowData[],\n columnKeys: string[],\n options: ColumnOptions = {},\n): AttributeDescriptor[] =>\n columnKeys.map((columnKey) => ({\n id: columnKey,\n label: options.compactHeaders?.[columnKey] ?? columnKey,\n type: resolveAttributeType(rows, columnKey, options),\n filterable: options.filterableColumns?.includes(columnKey) ?? true,\n sortable: true,\n groupable: options.groupableColumns?.includes(columnKey) ?? false,\n displayable: true,\n }));\n\nexport const buildDataTableRendererRows = (\n rows: RowData[],\n columnKeys: string[],\n getRowId?: DataTableProps[\"getRowId\"],\n renderers?: ColumnRenderers,\n): DataTableRendererRow[] =>\n rows.map((row, index) => {\n const attributes = Object.fromEntries(\n columnKeys.map((columnKey) => [columnKey, toAttributeValue(row[columnKey], renderers?.[columnKey])]),\n );\n const rowId = resolveDataTableRowId(row, index, getRowId);\n const firstValue = columnKeys.length > 0 ? attributes[columnKeys[0]!] : rowId;\n\n return {\n id: rowId,\n title: String(firstValue ?? rowId),\n attributes,\n sourceRow: row,\n };\n });\n\nexport const resolveDataTableColumnOrder = (availableColumnIds: string[], requestedColumnOrder: string[]) => {\n const availableColumnIdSet = new Set(availableColumnIds);\n const orderedColumnIds = requestedColumnOrder.filter((columnId) => availableColumnIdSet.has(columnId));\n const orderedColumnIdSet = new Set(orderedColumnIds);\n const missingColumnIds = availableColumnIds.filter((columnId) => !orderedColumnIdSet.has(columnId));\n\n return [...orderedColumnIds, ...missingColumnIds];\n};\n\nexport const toggleHiddenDataTableColumn = (hiddenColumnIds: string[], columnId: string, visible: boolean) =>\n visible ? hiddenColumnIds.filter((id) => id !== columnId) : [...new Set([...hiddenColumnIds, columnId])];\n\n/** The text a cell shows, which is all that search looks at. */\nconst nodeText = (value: ReactNode): string[] => {\n if (typeof value === \"string\" || typeof value === \"number\") return [String(value)];\n if (Array.isArray(value)) return value.flatMap(nodeText);\n if (isValidElement<{ children?: ReactNode }>(value)) return nodeText(value.props.children);\n return [];\n};\nexport const dataTableCellText = (\n value: unknown,\n renderer?: NonNullable<ColumnRenderers>[string],\n now = new Date(),\n) => {\n if (renderer?.type === \"json\") return [getJsonCellSummary(value)];\n if (renderer?.type === \"badge\" && [\"string\", \"number\", \"boolean\"].includes(typeof value)) return [String(value)];\n if (renderer?.type === \"date\") {\n const label = formatDataTableRelativeDate(value, now);\n if (label) return [label];\n }\n if (renderer?.type === \"diff\" && isDataTableDiffValue(value)) return [`+${value.additions}`, `-${value.deletions}`];\n return nodeText(formatDisplayValue(value));\n};\n\nexport const reorderDataTableColumns = (columnIds: string[], activeColumnId: string, overColumnId: string) => {\n const activeIndex = columnIds.indexOf(activeColumnId);\n const overIndex = columnIds.indexOf(overColumnId);\n\n if (activeIndex < 0 || overIndex < 0 || activeIndex === overIndex) return columnIds;\n\n const nextColumnIds = [...columnIds];\n const [activeColumn] = nextColumnIds.splice(activeIndex, 1);\n if (!activeColumn) return columnIds;\n\n nextColumnIds.splice(overIndex, 0, activeColumn);\n return nextColumnIds;\n};\n\nexport const resolveDataTableToolbarStorageKey = (props: { toolbarStorageKey?: string; columnKeys: string[] }) =>\n props.toolbarStorageKey ?? `data-table:${props.columnKeys.join(\"|\") || \"empty\"}`;\n","import { Box, chakra, Flex, IconButton, Popover, Portal } from \"@chakra-ui/react\";\nimport { Check, X } from \"lucide-react\";\nimport { type KeyboardEvent, type ReactNode, type RefObject, useEffect, useRef } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\n\ninterface InlineEditActionsProps {\n cancelLabel: string;\n saveLabel: string;\n onCancel: () => void;\n onSave: () => void;\n}\n\nconst InlineEditActions = (props: InlineEditActionsProps) => {\n const { cancelLabel, saveLabel, onCancel, onSave } = props;\n\n return (\n <Flex gap=\"2xs\" flexShrink=\"0\">\n <IconButton type=\"button\" size=\"2xs\" variant=\"ghost\" aria-label={saveLabel} onClick={onSave}>\n <Check />\n </IconButton>\n <IconButton type=\"button\" size=\"2xs\" variant=\"ghost\" aria-label={cancelLabel} onClick={onCancel}>\n <X />\n </IconButton>\n </Flex>\n );\n};\n\ninterface EditModeTextSurfaceProps {\n accessibleName: string;\n textStyle: string;\n value: string;\n onCancel: () => void;\n onChange: (value: string) => void;\n onSave: () => void;\n}\n\nconst EditModeTextSurface = (props: EditModeTextSurfaceProps) => {\n const { accessibleName, textStyle, value, onCancel, onChange, onSave } = props;\n const elementRef = useRef<HTMLDivElement>(null);\n const initialValueRef = useRef(value);\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element) return;\n\n element.textContent = initialValueRef.current;\n element.focus();\n const selection = globalThis.getSelection();\n const range = document.createRange();\n range.selectNodeContents(element);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }, []);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n onSave();\n }\n if (event.key === \"Escape\") onCancel();\n };\n\n return (\n <chakra.div\n ref={elementRef}\n role=\"textbox\"\n aria-label={accessibleName}\n contentEditable\n suppressContentEditableWarning\n height=\"10\"\n width=\"100%\"\n paddingX=\"xs\"\n paddingY=\"xs\"\n overflow=\"hidden\"\n background=\"transparent\"\n border=\"none\"\n borderRadius=\"0\"\n outline=\"none\"\n textStyle={textStyle}\n textOverflow=\"ellipsis\"\n whiteSpace=\"nowrap\"\n onInput={(event) => onChange(event.currentTarget.textContent ?? \"\")}\n onKeyDown={handleKeyDown}\n />\n );\n};\n\ninterface EditModeHeaderEditorProps {\n accessibleName: string;\n draft: string;\n onCancel: () => void;\n onChange: (value: string) => void;\n onSave: () => void;\n}\n\nexport const EditModeHeaderEditor = (props: EditModeHeaderEditorProps) => {\n const { accessibleName, draft, onCancel, onChange, onSave } = props;\n\n return (\n <Box position=\"absolute\" inset=\"0\" width=\"100%\" height=\"10\" background=\"bg.subtle\" zIndex=\"1\">\n <EditModeTextSurface\n accessibleName={`Rename column ${accessibleName}`}\n textStyle=\"label/S/medium\"\n value={draft}\n onChange={onChange}\n onSave={onSave}\n onCancel={onCancel}\n />\n <Box position=\"absolute\" top=\"50%\" right=\"2xs\" transform=\"translateY(-50%)\" background=\"bg.subtle\">\n <InlineEditActions\n saveLabel=\"Save column name\"\n cancelLabel=\"Cancel column rename\"\n onSave={onSave}\n onCancel={onCancel}\n />\n </Box>\n </Box>\n );\n};\n\ninterface EditModeCellEditorProps {\n anchorRef: RefObject<HTMLElement | null>;\n customEditor?: ReactNode;\n draft: string;\n onCancel: () => void;\n onChange: (value: string) => void;\n onSave: () => void;\n}\n\nexport const EditModeCellEditor = (props: EditModeCellEditorProps) => {\n const { anchorRef, customEditor, draft, onCancel, onChange, onSave } = props;\n\n return (\n <Popover.Root\n open\n closeOnInteractOutside={false}\n positioning={{\n placement: \"bottom-start\",\n offset: { mainAxis: -40 },\n getAnchorElement: () => anchorRef.current,\n }}\n >\n <Portal>\n <Popover.Positioner>\n <Popover.Content\n data-table-cell-editor\n width=\"calc(var(--reference-width) + 3rem)\"\n minWidth=\"calc(var(--reference-width) + 3rem)\"\n maxWidth=\"calc(100vw - 2rem)\"\n padding=\"0\"\n overflow=\"hidden\"\n background=\"bg\"\n animation=\"none\"\n zIndex=\"popover\"\n >\n <ScrollArea\n data-table-cell-editor-body\n width=\"100%\"\n minHeight=\"10\"\n maxHeight=\"48\"\n contentProps={{ minHeight: \"10\" }}\n viewportProps={{ maxHeight: \"48\", overscrollBehavior: \"contain\" }}\n >\n {customEditor ?? (\n <EditModeTextSurface\n accessibleName=\"Edit cell\"\n textStyle=\"paragraph/S/regular\"\n value={draft}\n onChange={onChange}\n onSave={onSave}\n onCancel={onCancel}\n />\n )}\n </ScrollArea>\n <Flex\n data-table-cell-editor-footer\n height=\"8\"\n flexShrink=\"0\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n paddingX=\"xs\"\n borderTopWidth=\"1px\"\n borderColor=\"border.subtle\"\n background=\"bg.subtle\"\n >\n <InlineEditActions\n saveLabel=\"Save cell\"\n cancelLabel=\"Cancel cell edit\"\n onSave={onSave}\n onCancel={onCancel}\n />\n </Flex>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import { Box, Table } from \"@chakra-ui/react\";\nimport { type KeyboardEvent, type ReactNode, useRef } from \"react\";\nimport { EditModeCellEditor } from \"./edit-mode-data-table-editors\";\nimport type { DataTableCellContext, DataTableEditModeColumn, DataTableEditModeConfig } from \"./types\";\n\ninterface EditModeDataTableCellProps {\n activeDraft?: string;\n column: DataTableEditModeColumn;\n context: DataTableCellContext;\n editMode: DataTableEditModeConfig;\n isActive: boolean;\n isReadOnly: boolean;\n wrapRows: boolean;\n onActivate: () => void;\n onCancel: () => void;\n onDraftChange: (draft: string) => void;\n onSave: () => void;\n}\n\nconst getRowDisplayProps = (wrapRows: boolean) => {\n if (wrapRows) {\n return {\n height: undefined,\n maxHeight: undefined,\n overflowWrap: \"anywhere\" as const,\n textOverflow: undefined,\n verticalAlign: \"top\" as const,\n whiteSpace: \"normal\" as const,\n };\n }\n\n return {\n height: \"10\",\n maxHeight: \"10\",\n overflowWrap: undefined,\n textOverflow: \"ellipsis\" as const,\n verticalAlign: \"middle\" as const,\n whiteSpace: \"nowrap\" as const,\n };\n};\n\nexport const EditModeDataTableCell = (props: EditModeDataTableCellProps) => {\n const {\n activeDraft = \"\",\n column,\n context,\n editMode,\n isActive,\n isReadOnly,\n wrapRows,\n onActivate,\n onCancel,\n onDraftChange,\n onSave,\n } = props;\n const cellRef = useRef<HTMLTableCellElement>(null);\n const isEditable = !isReadOnly && (editMode.isCellEditable?.(context) ?? true);\n const rowDisplayProps = getRowDisplayProps(wrapRows);\n let content: ReactNode;\n\n if (isActive) {\n const customEditor = editMode.renderCellEditor?.({ context, value: activeDraft, onChange: onDraftChange });\n content = (\n <EditModeCellEditor\n anchorRef={cellRef}\n draft={activeDraft}\n customEditor={customEditor}\n onChange={onDraftChange}\n onSave={onSave}\n onCancel={onCancel}\n />\n );\n } else {\n content = (\n <Box\n width=\"100%\"\n minHeight=\"5\"\n textAlign=\"inherit\"\n overflowWrap={rowDisplayProps.overflowWrap}\n whiteSpace={rowDisplayProps.whiteSpace}\n >\n {editMode.renderCell?.(context) ?? String(context.value ?? \"\")}\n </Box>\n );\n }\n\n const handleKeyDown = (event: KeyboardEvent<HTMLTableCellElement>) => {\n if (!isEditable || isActive || (event.key !== \"Enter\" && event.key !== \" \")) return;\n event.preventDefault();\n onActivate();\n };\n\n return (\n <Table.Cell\n ref={cellRef}\n data-column-id={column.id}\n data-editable={String(isEditable)}\n data-editing={isActive ? \"true\" : undefined}\n padding={isActive ? \"0\" : \"xs\"}\n height={rowDisplayProps.height}\n maxHeight={rowDisplayProps.maxHeight}\n position=\"relative\"\n overflow={isActive ? \"visible\" : \"hidden\"}\n background=\"bg\"\n textAlign={column.alignment ?? \"left\"}\n textStyle=\"paragraph/S/regular\"\n textOverflow={rowDisplayProps.textOverflow}\n verticalAlign={rowDisplayProps.verticalAlign}\n whiteSpace={rowDisplayProps.whiteSpace}\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n cursor={isEditable && !isActive ? \"text\" : undefined}\n tabIndex={isEditable && !isActive ? 0 : undefined}\n onClick={isEditable && !isActive ? onActivate : undefined}\n onKeyDown={handleKeyDown}\n >\n {content}\n </Table.Cell>\n );\n};\n","import { Icon as ChakraIcon, Table } from \"@chakra-ui/react\";\nimport { Check, Minus } from \"lucide-react\";\nimport { Checkbox } from \"@/components/primitives/checkbox\";\n\nconst stopControlPropagation = (event: { stopPropagation: () => void }) => {\n event.stopPropagation();\n};\n\ninterface EditModeSelectionHeaderProps {\n checked: boolean;\n indeterminate: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport const EditModeSelectionHeader = (props: EditModeSelectionHeaderProps) => {\n const { checked, indeterminate, onChange } = props;\n\n return (\n <Checkbox\n checked={checked || (indeterminate ? \"indeterminate\" : false)}\n aria-label=\"Select all\"\n icon={<ChakraIcon as={indeterminate ? Minus : Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => onChange(details.checked === true)}\n />\n );\n};\n\ninterface EditModeSelectionCellProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport const EditModeSelectionCell = (props: EditModeSelectionCellProps) => {\n const { checked, onChange } = props;\n\n return (\n <Table.Cell\n data-column-id=\"rowSelection\"\n height=\"10\"\n padding=\"xs\"\n textAlign=\"center\"\n background=\"bg\"\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <Checkbox\n checked={checked}\n aria-label=\"Select row\"\n icon={<ChakraIcon as={Check} boxSize=\"12px\" strokeWidth=\"3\" />}\n onClick={stopControlPropagation}\n onCheckedChange={(details) => onChange(details.checked === true)}\n />\n </Table.Cell>\n );\n};\n","import { Button, Icon, Table } from \"@chakra-ui/react\";\nimport { Plus, Trash2 } from \"lucide-react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { EditModeDataTableCell } from \"./edit-mode-data-table-cell\";\nimport { EditModeSelectionCell } from \"./edit-mode-data-table-selection\";\nimport type { DataTableCellContext, DataTableEditModeColumn, DataTableEditModeConfig, RowData } from \"./types\";\n\ninterface ActiveCell {\n rowId: string;\n columnId: string;\n draft: string;\n}\n\ninterface EditModeDataTableBodyProps {\n activeCell: ActiveCell | null;\n columns: DataTableEditModeColumn[];\n data: RowData[];\n editMode: DataTableEditModeConfig;\n enableSelection: boolean;\n isReadOnly: boolean;\n pageIndex: number;\n pageRows: RowData[];\n pageSize: number;\n rowNumbers: boolean;\n selectedRowIds: Set<string>;\n showNewRow: boolean;\n wrapRows: boolean;\n onActivateCell: (cell: ActiveCell) => void;\n onAddRow: () => void;\n onCancelCell: () => void;\n onCommitCell: () => void;\n onDraftChange: (cell: ActiveCell) => void;\n onRemoveRow: (rowId: string) => void;\n onToggleRowSelection: (rowId: string, checked: boolean) => void;\n rowIdFor: (row: RowData, index: number) => string;\n}\n\nexport const EditModeDataTableBody = (props: EditModeDataTableBodyProps) => {\n const {\n activeCell,\n columns,\n data,\n editMode,\n enableSelection,\n isReadOnly,\n pageIndex,\n pageRows,\n pageSize,\n rowNumbers,\n selectedRowIds,\n showNewRow,\n wrapRows,\n onActivateCell,\n onAddRow,\n onCancelCell,\n onCommitCell,\n onDraftChange,\n onRemoveRow,\n onToggleRowSelection,\n rowIdFor,\n } = props;\n\n const rowHeight = wrapRows ? undefined : \"10\";\n const verticalAlign = wrapRows ? \"top\" : \"middle\";\n\n return (\n <Table.Body>\n {pageRows.map((row, visibleIndex) => {\n const rowIndex = pageIndex * pageSize + visibleIndex;\n const sourceIndex = data.indexOf(row);\n const rowId = rowIdFor(row, sourceIndex);\n const tableRow = (\n <Table.Row\n key={rowId}\n data-document-row=\"true\"\n data-selected={selectedRowIds.has(rowId) ? \"true\" : undefined}\n aria-selected={selectedRowIds.has(rowId)}\n height={rowHeight}\n background=\"bg\"\n >\n {rowNumbers ? (\n <Table.Cell\n data-column-id=\"rowIndex\"\n height={rowHeight}\n padding=\"xs\"\n textAlign=\"center\"\n textStyle=\"paragraph/S/regular\"\n background=\"bg.subtle\"\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n verticalAlign={verticalAlign}\n >\n {rowIndex + 1}\n </Table.Cell>\n ) : null}\n {enableSelection ? (\n <EditModeSelectionCell\n checked={selectedRowIds.has(rowId)}\n onChange={(checked) => onToggleRowSelection(rowId, checked)}\n />\n ) : null}\n {columns.map((column) => {\n const context: DataTableCellContext = {\n row,\n rowId,\n columnId: column.id,\n value: row[column.id] ?? \"\",\n };\n const isActive = activeCell?.rowId === rowId && activeCell.columnId === column.id;\n return (\n <EditModeDataTableCell\n key={column.id}\n activeDraft={isActive ? activeCell?.draft : undefined}\n column={column}\n context={context}\n editMode={editMode}\n isActive={isActive}\n isReadOnly={isReadOnly}\n wrapRows={wrapRows}\n onActivate={() => onActivateCell({ rowId, columnId: column.id, draft: String(context.value ?? \"\") })}\n onDraftChange={(draft) => onDraftChange({ rowId, columnId: column.id, draft })}\n onSave={onCommitCell}\n onCancel={onCancelCell}\n />\n );\n })}\n {!isReadOnly ? (\n <Table.Cell\n data-column-id=\"editControl\"\n width=\"min-content\"\n height={rowHeight}\n position=\"sticky\"\n right=\"0\"\n zIndex=\"1\"\n background=\"bg\"\n borderLeftWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n verticalAlign={verticalAlign}\n />\n ) : null}\n </Table.Row>\n );\n\n if (isReadOnly) return tableRow;\n\n return (\n <ResourceContextMenu\n key={rowId}\n contentMinWidth=\"12rem\"\n actions={[\n {\n key: \"delete-row\",\n label: \"Delete row\",\n icon: <Icon as={Trash2} boxSize=\"14px\" />,\n onClick: () => onRemoveRow(rowId),\n },\n ]}\n >\n {tableRow}\n </ResourceContextMenu>\n );\n })}\n {!isReadOnly && showNewRow ? (\n <Table.Row>\n <Table.Cell colSpan={columns.length + 1 + (rowNumbers ? 1 : 0) + (enableSelection ? 1 : 0)} padding=\"0\">\n <Button\n size=\"xs\"\n variant=\"ghost-static\"\n width=\"100%\"\n justifyContent=\"flex-start\"\n paddingX=\"xs\"\n color=\"fg.muted\"\n onClick={onAddRow}\n >\n <Icon as={Plus} />\n New row\n </Button>\n </Table.Cell>\n </Table.Row>\n ) : null}\n </Table.Body>\n );\n};\n","import { Flex, Icon, IconButton, Table, Text } from \"@chakra-ui/react\";\nimport { Pencil, Plus, Trash2 } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ResourceContextMenu } from \"@/components/overlays/resource-context-menu\";\nimport { EditModeHeaderEditor } from \"./edit-mode-data-table-editors\";\nimport { getIcon } from \"./helpers\";\nimport type { DataTableEditModeColumn, DataTableEditModeConfig, RowData } from \"./types\";\n\ninterface ActiveHeader {\n columnId: string;\n draft: string;\n}\n\ninterface EditModeDataTableHeaderProps {\n activeHeader: ActiveHeader | null;\n columnIcons?: Record<string, ReactNode>;\n columns: DataTableEditModeColumn[];\n data: RowData[];\n editMode: DataTableEditModeConfig;\n isReadOnly: boolean;\n rowNumbers: boolean;\n rowDisplayControl?: ReactNode;\n selectionHeader?: ReactNode;\n onAddColumn: () => void;\n onCancelHeaderEdit: () => void;\n onDeleteColumn: (columnId: string) => void;\n onHeaderDraftChange: (draft: string) => void;\n onHeaderEdit: (column: DataTableEditModeColumn) => void;\n onSaveHeader: () => void;\n}\n\nexport const EditModeDataTableHeader = (props: EditModeDataTableHeaderProps) => {\n const {\n activeHeader,\n columnIcons,\n columns,\n data,\n editMode,\n isReadOnly,\n rowNumbers,\n rowDisplayControl,\n selectionHeader,\n onAddColumn,\n onCancelHeaderEdit,\n onDeleteColumn,\n onHeaderDraftChange,\n onHeaderEdit,\n onSaveHeader,\n } = props;\n\n return (\n <Table.Header>\n <Table.Row height=\"10\" background=\"bg.subtle\">\n {rowNumbers ? (\n <Table.ColumnHeader\n data-column-id=\"rowIndex\"\n width=\"fit-content\"\n padding={rowDisplayControl ? \"2xs\" : \"xs\"}\n background=\"bg.subtle\"\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n {rowDisplayControl}\n </Table.ColumnHeader>\n ) : null}\n {selectionHeader ? (\n <Table.ColumnHeader\n data-column-id=\"rowSelection\"\n padding=\"xs\"\n textAlign=\"center\"\n background=\"bg.subtle\"\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n {selectionHeader}\n </Table.ColumnHeader>\n ) : null}\n {columns.map((column, index) => {\n const isEditing = activeHeader?.columnId === column.id;\n const headerIcon = columnIcons?.[column.id] ?? getIcon(data.map((row) => row[column.id]));\n const header = (\n <Table.ColumnHeader\n key={column.id}\n data-column-id={column.id}\n data-data-column=\"true\"\n height=\"10\"\n padding={isEditing ? \"0\" : \"xs\"}\n position=\"relative\"\n overflow=\"hidden\"\n background=\"bg.subtle\"\n textAlign={column.alignment ?? \"left\"}\n borderRightWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n cursor={isReadOnly ? \"default\" : \"context-menu\"}\n >\n {isEditing ? (\n <EditModeHeaderEditor\n accessibleName={column.label || \"empty\"}\n draft={activeHeader.draft}\n onChange={onHeaderDraftChange}\n onSave={onSaveHeader}\n onCancel={onCancelHeaderEdit}\n />\n ) : (\n <Flex alignItems=\"center\" gap=\"1\" minWidth=\"0\" overflow=\"hidden\">\n {headerIcon}\n <Text as=\"div\" textStyle=\"label/S/medium\" truncate>\n {editMode.renderHeader?.(column) ?? column.label}\n </Text>\n {!rowNumbers && index === 0 ? rowDisplayControl : null}\n </Flex>\n )}\n </Table.ColumnHeader>\n );\n\n if (isReadOnly) return header;\n\n return (\n <ResourceContextMenu\n key={column.id}\n contentMinWidth=\"12rem\"\n actions={[\n {\n key: \"edit-header\",\n label: \"Rename column\",\n icon: <Icon as={Pencil} boxSize=\"14px\" />,\n onClick: () => onHeaderEdit(column),\n },\n {\n key: \"delete-column\",\n label: \"Delete column\",\n icon: <Icon as={Trash2} boxSize=\"14px\" />,\n isDisabled: columns.length === 1,\n separatorBefore: true,\n onClick: () => onDeleteColumn(column.id),\n },\n ]}\n >\n {header}\n </ResourceContextMenu>\n );\n })}\n {!isReadOnly ? (\n <Table.ColumnHeader\n data-column-id=\"editControl\"\n width=\"min-content\"\n padding=\"2xs\"\n textAlign=\"center\"\n position=\"sticky\"\n right=\"0\"\n zIndex=\"3\"\n background=\"bg.subtle\"\n borderLeftWidth=\"1px\"\n borderBottomWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <IconButton size=\"xs\" variant=\"ghost\" aria-label=\"Insert column\" onClick={onAddColumn}>\n <Plus />\n </IconButton>\n </Table.ColumnHeader>\n ) : null}\n </Table.Row>\n </Table.Header>\n );\n};\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from \"lucide-react\";\n\nimport { NumberInputField, NumberInputRoot } from \"@/components/primitives/number-input\";\nimport { ListRow } from \"../list-row/list-row\";\n\ninterface PaginationFooterProps {\n pageCount: number;\n pageIndex: number;\n pageSize: number;\n pageSizeOptions: number[];\n onPageChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n}\n\nexport function PaginationFooter(props: PaginationFooterProps) {\n const { pageCount, pageIndex, pageSize, pageSizeOptions, onPageChange, onPageSizeChange } = props;\n const totalPages = Math.max(pageCount, 1);\n const canGoBack = pageIndex > 0;\n const canGoForward = pageIndex < totalPages - 1;\n\n return (\n <Flex\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n borderTop=\"1px solid\"\n borderColor={\"border.subtle\"}\n paddingX=\"xs\"\n >\n <Stack alignItems=\"center\" direction=\"row\" justifyContent=\"flex-end\" paddingY=\"xs\">\n <Flex alignItems=\"center\" gap=\"xs\" marginRight=\"sm\">\n <Text textStyle=\"label/S/regular\">Rows per page</Text>\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\" variant=\"outline\">\n {pageSize}\n </Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content bg=\"bg\">\n {pageSizeOptions.map((option) => (\n <Menu.Item key={option} value={`${option}`} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n label={`${option}`}\n isSelected={option === pageSize}\n onActivate={() => onPageSizeChange(option)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n </Flex>\n <IconButton size=\"xs\" aria-label=\"Go to first page\" onClick={() => onPageChange(0)} disabled={!canGoBack}>\n <ChakraIcon as={ChevronsLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to previous page\"\n onClick={() => onPageChange(pageIndex - 1)}\n disabled={!canGoBack}\n >\n <ChakraIcon as={ChevronLeft} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to next page\"\n onClick={() => onPageChange(pageIndex + 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronRight} boxSize=\"14px\" />\n </IconButton>\n <IconButton\n size=\"xs\"\n aria-label=\"Go to last page\"\n onClick={() => onPageChange(totalPages - 1)}\n disabled={!canGoForward}\n >\n <ChakraIcon as={ChevronsRight} boxSize=\"14px\" />\n </IconButton>\n <Flex alignItems=\"center\" height=\"100%\" marginLeft=\"sm\" marginRight=\"md\" gap=\"xs\">\n <Text>Page</Text>\n <NumberInputRoot\n margin=\"2xs\"\n width=\"3rem\"\n size=\"xs\"\n min={1}\n max={totalPages}\n value={`${pageIndex + 1}`}\n onValueChange={(details) => {\n const next = Number.isNaN(details.valueAsNumber) ? 1 : details.valueAsNumber;\n const clamped = Math.min(totalPages, Math.max(1, next));\n onPageChange(clamped - 1);\n }}\n >\n <NumberInputField className=\"nodrag\" />\n </NumberInputRoot>\n <Text>of {totalPages}</Text>\n </Flex>\n </Stack>\n </Flex>\n );\n}\n","import { Button, Icon as ChakraIcon, Flex, IconButton, Menu, Portal, Stack, Text } from \"@chakra-ui/react\";\nimport { X } from \"lucide-react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { DataTableSelectionAction, RowData } from \"./types\";\n\ninterface SelectionToolbarProps {\n selectedCount: number;\n totalCount: number;\n onClearSelection: () => void;\n onSelectAll: () => void;\n actions: DataTableSelectionAction[];\n selectedRows: RowData[];\n}\n\nexport function SelectionToolbar(props: SelectionToolbarProps) {\n const { selectedCount, totalCount, onClearSelection, onSelectAll, actions, selectedRows } = props;\n const actionLabel = actions.length === 1 ? actions[0]?.label : \"Actions\";\n\n return (\n <Flex position=\"absolute\" insetX=\"sm\" bottom=\"sm\" zIndex=\"popover\" justifyContent=\"center\" pointerEvents=\"none\">\n <Stack\n role=\"toolbar\"\n aria-label=\"Selection actions\"\n direction=\"row\"\n alignItems=\"center\"\n layerStyle=\"floatingBar\"\n pointerEvents=\"auto\"\n maxWidth=\"100%\"\n overflowX=\"auto\"\n >\n <IconButton aria-label=\"clear-selection\" onClick={onClearSelection} size=\"xs\">\n <ChakraIcon as={X} boxSize=\"16px\" />\n </IconButton>\n <Text>{selectedCount} rows selected</Text>\n {selectedCount !== totalCount && (\n <Button size=\"xs\" onClick={onSelectAll}>\n Select all {totalCount} rows\n </Button>\n )}\n {actions.length === 1 && actions[0] ? (\n <Button size=\"xs\" onClick={() => actions[0]?.onSelect(selectedRows)}>\n {actionLabel}\n </Button>\n ) : null}\n {actions.length > 1 ? (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button size=\"xs\">{actionLabel}</Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content bg=\"bg\">\n {actions.map((action) => (\n <Menu.Item key={action.label} value={action.label} asChild>\n <ListRow\n asChild\n variant=\"full-width\"\n tone={action.destructive ? \"danger\" : \"default\"}\n label={action.label}\n icon={action.icon}\n onActivate={() => action.onSelect(selectedRows)}\n />\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n ) : null}\n </Stack>\n </Flex>\n );\n}\n","import { DEFAULT_DATA_TABLE_SETTINGS } from \"@pstdio/sdk/extensions\";\nimport { useDeferredValue, useState } from \"react\";\nimport { findField } from \"../collection-view/collection-view-fields\";\nimport { filterRowsByView } from \"../collection-view/collection-view-filter\";\nimport { groupRowsByField } from \"../collection-view/collection-view-grouping\";\nimport { searchRows } from \"../collection-view/collection-view-search\";\nimport { sortRowsByView } from \"../collection-view/collection-view-sort\";\nimport { type CollectionViewStoreState, useCollectionViewStore } from \"../collection-view/use-collection-view-store\";\nimport { useCollectionViews } from \"../collection-view/use-collection-views\";\nimport {\n buildDataTableRendererAttributes,\n buildDataTableRendererRows,\n dataTableCellText,\n resolveDataTableColumnOrder,\n resolveDataTableToolbarStorageKey,\n} from \"./data-table-state\";\nimport type { DataTableProps, DataTableSettings } from \"./types\";\n\ntype DataTableViewDefaults = Pick<DataTableProps, \"defaultSettings\" | \"defaultFilter\" | \"defaultSorts\">;\n\nexport const dataTableInitialState = (defaults: DataTableViewDefaults) => ({\n settings: { ...DEFAULT_DATA_TABLE_SETTINGS, ...defaults.defaultSettings } as DataTableSettings,\n filter: defaults.defaultFilter,\n sorts: defaults.defaultSorts,\n});\n\n/** The unsaved view state of one table. Hosts read it to send the view to their query. */\nexport const useDataTableViewStore = <T>(\n storageKey: string,\n selector: (state: CollectionViewStoreState<DataTableSettings>) => T,\n defaults: DataTableViewDefaults = {},\n) => useCollectionViewStore(storageKey, dataTableInitialState(defaults), selector);\n\n/**\n * Runs a table's view: the saved or edited filter, sorts, and display settings, plus the search\n * typed on screen. Order is decided here, so the table itself never sorts.\n */\nexport const useDataTableView = (props: DataTableProps) => {\n const {\n data,\n hiddenColumns,\n getRowId,\n compactHeaders,\n columnRenderers,\n columnTypes,\n groupableColumns,\n filterableColumns,\n } = props;\n const permanentlyHidden = new Set(hiddenColumns ?? []);\n const baseColumnKeys = Object.keys(data[0] || {}).filter((key) => !permanentlyHidden.has(key));\n const storageKey = resolveDataTableToolbarStorageKey({\n toolbarStorageKey: props.toolbarStorageKey,\n columnKeys: baseColumnKeys,\n });\n const initialState = dataTableInitialState(props);\n const views = useCollectionViews({\n storageKey,\n initialState,\n viewsSource: props.viewsSource,\n defaultViews: props.defaultViews,\n defaultActiveViewId: props.defaultActiveViewId,\n });\n const store = useCollectionViewStore(storageKey, initialState, (state) => state);\n const { settings, filter, sorts } = store;\n const [search, setSearch] = useState(\"\");\n // Typing stays responsive on large tables; the narrowed rows follow a frame later.\n const deferredSearch = useDeferredValue(search);\n\n const orderedColumnKeys = resolveDataTableColumnOrder(baseColumnKeys, settings.columnOrder);\n const visibleColumnKeys = orderedColumnKeys.filter((key) => !settings.hiddenColumns.includes(key));\n const attributes = buildDataTableRendererAttributes(data, orderedColumnKeys, {\n compactHeaders,\n columnRenderers,\n columnTypes,\n groupableColumns,\n filterableColumns,\n });\n const rows = buildDataTableRendererRows(data, orderedColumnKeys, getRowId, columnRenderers);\n const filteredRows = filterRowsByView(rows, filter, attributes);\n const sortedRows = sortRowsByView(filteredRows, sorts, attributes);\n // Hidden columns keep their rules but are not searched: search matches only what the view shows.\n const shownRows = searchRows(sortedRows, deferredSearch, (row) =>\n visibleColumnKeys.flatMap((key) => dataTableCellText(row.sourceRow[key], columnRenderers?.[key])),\n );\n const groupField = findField(attributes, settings.grouping);\n const groups = groupField?.groupable\n ? groupRowsByField(\n shownRows,\n groupField,\n groupRowsByField(rows, groupField).map((group) => group.key),\n )\n : undefined;\n\n return {\n ...store,\n storageKey,\n initialState,\n views,\n search,\n deferredSearch,\n setSearch,\n attributes,\n rows,\n filteredRows,\n shownRows,\n groups,\n orderedColumnKeys,\n visibleColumnKeys,\n };\n};\n","import { Box, Flex, Table } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { DataTableHeader } from \"./data-table-header\";\nimport { DataTableRowDisplayMenu } from \"./data-table-row-display\";\nimport { resolveSelectionActions, shouldEnableSelection } from \"./data-table-state\";\nimport { EditModeDataTableBody } from \"./edit-mode-data-table-body\";\nimport { EditModeDataTableHeader } from \"./edit-mode-data-table-header\";\nimport { EditModeSelectionHeader } from \"./edit-mode-data-table-selection\";\nimport { PaginationFooter } from \"./pagination-footer\";\nimport { SelectionToolbar } from \"./selection-toolbar\";\nimport type { DataTableEditModeColumn, DataTableProps, RowData } from \"./types\";\nimport { useDataTableView } from \"./use-data-table-view\";\n\nconst createId = (kind: \"column\" | \"row\") => {\n const unique = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`;\n return `${kind}-${unique}`;\n};\n\ninterface ActiveCell {\n rowId: string;\n columnId: string;\n draft: string;\n}\n\ninterface ActiveHeader {\n columnId: string;\n draft: string;\n}\n\nexport const EditModeDataTable = (props: DataTableProps) => {\n const {\n data,\n editMode,\n fullWidth = false,\n initialPageSize = 30,\n pageSizeOptions = [10, 20, 30, 50],\n isReadOnly = true,\n getRowId,\n columnIcons,\n toolbarStorageKey,\n } = props;\n const [pageIndex, setPageIndex] = useState(0);\n const [pageSize, setPageSize] = useState(() => Math.min(Math.max(initialPageSize, 1), 50));\n const [activeCell, setActiveCell] = useState<ActiveCell | null>(null);\n const [activeHeader, setActiveHeader] = useState<ActiveHeader | null>(null);\n const [selectedRowIds, setSelectedRowIds] = useState<Set<string>>(() => new Set());\n const columns = editMode?.columns ?? [];\n const columnKeys = columns.map((column) => column.id);\n // Edit mode owns its columns, so keys outside them, such as row ids, never become view fields.\n const view = useDataTableView({\n ...props,\n compactHeaders: Object.fromEntries(columns.map((column) => [column.id, column.label])),\n hiddenColumns: Object.keys(data[0] ?? {}).filter((key) => !columnKeys.includes(key)),\n });\n const wrapRows = view.settings.wrapRows;\n const rowNumbers = view.settings.rowNumbers;\n const setWrapRows = (next: boolean) => view.setSettings({ wrapRows: next });\n const filteredRendererRows = view.shownRows;\n const filteredData = filteredRendererRows.map((row) => row.sourceRow);\n const cappedPageSizeOptions = [...new Set(pageSizeOptions.filter((option) => option > 0 && option <= 50))];\n const pageCount = Math.max(Math.ceil(filteredData.length / pageSize), 1);\n const pageRows = filteredData.slice(pageIndex * pageSize, (pageIndex + 1) * pageSize);\n let tableWidth = \"fit-content\";\n if (fullWidth) tableWidth = isReadOnly ? \"100%\" : \"calc(100% + var(--chakra-spacing-10))\";\n const enableSelection = shouldEnableSelection(props);\n const selectionActions = resolveSelectionActions(props);\n\n useEffect(() => {\n if (pageIndex < pageCount) return;\n setPageIndex(pageCount - 1);\n }, [pageCount, pageIndex]);\n\n useEffect(() => {\n const visibleIds = new Set(filteredRendererRows.map((row) => row.id));\n setSelectedRowIds((current) => {\n const next = new Set([...current].filter((rowId) => visibleIds.has(rowId)));\n const isUnchanged = next.size === current.size && [...next].every((rowId) => current.has(rowId));\n return isUnchanged ? current : next;\n });\n }, [filteredRendererRows]);\n\n if (!editMode) return null;\n\n const rowIdFor = (row: RowData, index: number) => getRowId?.(row, index) ?? String(row.id ?? index);\n\n const commitCell = () => {\n if (!activeCell) return;\n\n editMode.onDataChange(\n data.map((row, index) =>\n rowIdFor(row, index) === activeCell.rowId ? { ...row, [activeCell.columnId]: activeCell.draft } : row,\n ),\n );\n setActiveCell(null);\n };\n\n const updateColumn = (columnId: string, update: Partial<DataTableEditModeColumn>) => {\n editMode.onColumnsChange(\n columns.map((column) => (column.id === columnId ? { ...column, ...update, id: column.id } : column)),\n );\n };\n\n const commitHeader = () => {\n if (!activeHeader) return;\n updateColumn(activeHeader.columnId, { label: activeHeader.draft });\n setActiveHeader(null);\n };\n\n const addColumn = () => {\n const id = createId(\"column\");\n editMode.onColumnsChange([...columns, { id, label: `Column ${columns.length + 1}`, alignment: null }]);\n };\n\n const removeColumn = (columnId: string) => {\n if (columns.length === 1) return;\n editMode.onColumnsChange(columns.filter((column) => column.id !== columnId));\n if (activeHeader?.columnId === columnId) setActiveHeader(null);\n };\n\n const addRow = () => {\n const row = Object.fromEntries(columns.map((column) => [column.id, \"\"]));\n row.id = createId(\"row\");\n editMode.onDataChange([...data, row]);\n };\n\n const changePageSize = (nextPageSize: number) => {\n setPageSize(Math.min(nextPageSize, 50));\n setPageIndex(0);\n };\n\n const removeRow = (rowId: string) => {\n editMode.onDataChange(data.filter((row, index) => rowIdFor(row, index) !== rowId));\n };\n\n const toggleRowSelection = (rowId: string, checked: boolean) => {\n setSelectedRowIds((current) => {\n const next = new Set(current);\n if (checked) next.add(rowId);\n else next.delete(rowId);\n return next;\n });\n };\n\n const allRowsSelected = filteredRendererRows.length > 0 && selectedRowIds.size === filteredRendererRows.length;\n const selectedRows = filteredRendererRows.filter((row) => selectedRowIds.has(row.id)).map((row) => row.sourceRow);\n const rowDisplayControl = (\n <DataTableRowDisplayMenu compact={!toolbarStorageKey} wrapRows={wrapRows} onWrapRowsChange={setWrapRows} />\n );\n\n return (\n <Flex direction=\"column\" width=\"100%\" gap=\"2xs\">\n {toolbarStorageKey ? (\n <DataTableHeader view={view} viewsSource={props.viewsSource} displayControl={rowDisplayControl} />\n ) : null}\n <Box position=\"relative\" width=\"100%\">\n <ScrollArea\n data-table-scroll-area\n maxWidth=\"100%\"\n showHorizontalScrollbar\n showVerticalScrollbar={false}\n viewportProps={{ overflowY: \"hidden\" }}\n >\n <Table.Root\n data-edit-mode=\"true\"\n size=\"sm\"\n tableLayout=\"fixed\"\n width={tableWidth}\n borderWidth=\"1px\"\n borderColor=\"border.subtle\"\n >\n <colgroup>\n {rowNumbers ? <Box as=\"col\" width=\"9\" /> : null}\n {enableSelection ? <Box as=\"col\" width=\"9\" /> : null}\n {columns.map((column) => (\n <col key={column.id} />\n ))}\n {!isReadOnly ? <Box as=\"col\" width=\"10\" /> : null}\n </colgroup>\n <EditModeDataTableHeader\n activeHeader={activeHeader}\n columnIcons={columnIcons}\n columns={columns}\n data={data}\n editMode={editMode}\n isReadOnly={isReadOnly}\n rowNumbers={rowNumbers}\n rowDisplayControl={toolbarStorageKey ? undefined : rowDisplayControl}\n onAddColumn={addColumn}\n onCancelHeaderEdit={() => setActiveHeader(null)}\n onDeleteColumn={removeColumn}\n onHeaderDraftChange={(draft) => setActiveHeader((current) => (current ? { ...current, draft } : current))}\n onHeaderEdit={(column) => setActiveHeader({ columnId: column.id, draft: column.label })}\n onSaveHeader={commitHeader}\n selectionHeader={\n enableSelection ? (\n <EditModeSelectionHeader\n checked={allRowsSelected}\n indeterminate={selectedRowIds.size > 0 && !allRowsSelected}\n onChange={(checked) =>\n setSelectedRowIds(checked ? new Set(filteredRendererRows.map((row) => row.id)) : new Set())\n }\n />\n ) : undefined\n }\n />\n <EditModeDataTableBody\n activeCell={activeCell}\n columns={columns}\n data={data}\n editMode={editMode}\n enableSelection={enableSelection}\n isReadOnly={isReadOnly}\n pageIndex={pageIndex}\n pageRows={pageRows}\n pageSize={pageSize}\n rowNumbers={rowNumbers}\n selectedRowIds={selectedRowIds}\n showNewRow={pageIndex === pageCount - 1}\n wrapRows={wrapRows}\n onActivateCell={setActiveCell}\n onAddRow={addRow}\n onCancelCell={() => setActiveCell(null)}\n onCommitCell={commitCell}\n onDraftChange={setActiveCell}\n onRemoveRow={removeRow}\n onToggleRowSelection={toggleRowSelection}\n rowIdFor={rowIdFor}\n />\n </Table.Root>\n </ScrollArea>\n {enableSelection && selectedRows.length > 0 ? (\n <SelectionToolbar\n selectedCount={selectedRows.length}\n totalCount={filteredRendererRows.length}\n onClearSelection={() => setSelectedRowIds(new Set())}\n onSelectAll={() => setSelectedRowIds(new Set(filteredRendererRows.map((row) => row.id)))}\n actions={selectionActions}\n selectedRows={selectedRows}\n />\n ) : null}\n </Box>\n {pageCount > 1 ? (\n <PaginationFooter\n pageCount={pageCount}\n pageIndex={pageIndex}\n pageSize={pageSize}\n pageSizeOptions={cappedPageSizeOptions}\n onPageChange={setPageIndex}\n onPageSizeChange={changePageSize}\n />\n ) : null}\n </Flex>\n );\n};\n"],"mappings":"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"}