@pstdio/ui 0.25.0 → 0.35.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 (607) hide show
  1. package/README.md +8 -1
  2. package/dist/EquationComponent-DDd5UoIP.js +65 -0
  3. package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
  4. package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
  5. package/dist/MermaidComponent-DGDnQ6pb.js.map +1 -0
  6. package/dist/browser-storage-C_ipoNwP.js +37 -0
  7. package/dist/browser-storage-C_ipoNwP.js.map +1 -0
  8. package/dist/chat-ui.d.ts +688 -2
  9. package/dist/chat-ui.js +3272 -2763
  10. package/dist/chat-ui.js.map +1 -1
  11. package/dist/data-table-stats-row-DNJG8tLZ.js +415 -0
  12. package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
  13. package/dist/data-table.d.ts +143 -2
  14. package/dist/data-table.js +1216 -1188
  15. package/dist/data-table.js.map +1 -1
  16. package/dist/diff-bubble-DZsarmSG.js +61 -0
  17. package/dist/diff-bubble-DZsarmSG.js.map +1 -0
  18. package/dist/diff-drawer-45rpk3aq.js +776 -0
  19. package/dist/diff-drawer-45rpk3aq.js.map +1 -0
  20. package/dist/diff-editor-CGpeyoCE.js +124 -0
  21. package/dist/diff-editor-CGpeyoCE.js.map +1 -0
  22. package/dist/diff-size-Dydn_Uw5.js +61 -0
  23. package/dist/diff-size-Dydn_Uw5.js.map +1 -0
  24. package/dist/diff-viewer-hGkaF_zW.js +558 -0
  25. package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
  26. package/dist/diff.d.ts +128 -2
  27. package/dist/diff.js +163 -1300
  28. package/dist/diff.js.map +1 -1
  29. package/dist/empty-state-3mVV_pV-.js +38 -0
  30. package/dist/empty-state-3mVV_pV-.js.map +1 -0
  31. package/dist/file-change-badge-0QFNv82B.js +64 -0
  32. package/dist/file-change-badge-0QFNv82B.js.map +1 -0
  33. package/dist/index-BfFLdci8.d.ts +189 -0
  34. package/dist/index-Dd6e8lU_.d.ts +61 -0
  35. package/dist/index-DlmvvQ6x.d.ts +143 -0
  36. package/dist/index.d.ts +1508 -41
  37. package/dist/index.js +3167 -3173
  38. package/dist/index.js.map +1 -1
  39. package/dist/kanban-renderer.d.ts +337 -2
  40. package/dist/kanban-renderer.js +1413 -1084
  41. package/dist/kanban-renderer.js.map +1 -1
  42. package/dist/list-row-De9R2zKU.js +1008 -0
  43. package/dist/list-row-De9R2zKU.js.map +1 -0
  44. package/dist/mermaid-renderer-DImi0fDp.js +553 -0
  45. package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
  46. package/dist/mermaid.d.ts +12 -2
  47. package/dist/mermaid.js +2 -5
  48. package/dist/monaco-browser-CLRPSE4-.js +14 -0
  49. package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
  50. package/dist/param-editor-IJzw1cA2.js +225 -0
  51. package/dist/param-editor-IJzw1cA2.js.map +1 -0
  52. package/dist/param-editor-field-DscIjv8s.js +2368 -0
  53. package/dist/param-editor-field-DscIjv8s.js.map +1 -0
  54. package/dist/param-editor.d.ts +407 -0
  55. package/dist/param-editor.js +3 -0
  56. package/dist/prism-pSHJejZx.js +646 -0
  57. package/dist/prism-pSHJejZx.js.map +1 -0
  58. package/dist/radio-CiFrDN6O.js +54 -0
  59. package/dist/radio-CiFrDN6O.js.map +1 -0
  60. package/dist/resource-badge-95WPVlZf.d.ts +76 -0
  61. package/dist/rich-text-DtQpHBlX.js +7018 -0
  62. package/dist/rich-text-DtQpHBlX.js.map +1 -0
  63. package/dist/rich-text.d.ts +3 -2
  64. package/dist/rich-text.js +2 -265
  65. package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
  66. package/dist/scroll-area-Cr1lNXAr.js +100 -0
  67. package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
  68. package/dist/slider-hwHYe98I.js +423 -0
  69. package/dist/slider-hwHYe98I.js.map +1 -0
  70. package/dist/style.css +2 -1
  71. package/dist/terminal.d.ts +203 -2
  72. package/dist/terminal.js +324 -357
  73. package/dist/terminal.js.map +1 -1
  74. package/dist/theme-kSkOHzbV.js +2852 -0
  75. package/dist/theme-kSkOHzbV.js.map +1 -0
  76. package/dist/theme-preference-pzfuK5cH.js +101 -0
  77. package/dist/theme-preference-pzfuK5cH.js.map +1 -0
  78. package/dist/theme.d.ts +3 -2
  79. package/dist/theme.js +2 -15
  80. package/dist/tree-list-BUfDQz3v.js +1449 -0
  81. package/dist/tree-list-BUfDQz3v.js.map +1 -0
  82. package/dist/types-yjKBk07w.d.ts +161 -0
  83. package/dist/workspace-badge-9g78pXHS.js +245 -0
  84. package/dist/workspace-badge-9g78pXHS.js.map +1 -0
  85. package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -0
  86. package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
  87. package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
  88. package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
  89. package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
  90. package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
  91. package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
  92. package/dist-monaco/monaco.css +1 -0
  93. package/dist-monaco/monaco.js +1201 -0
  94. package/package.json +30 -12
  95. package/dist/EquationComponent-DeDYHvqY.js +0 -62
  96. package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
  97. package/dist/MermaidComponent-BVdDqDRU.js +0 -60
  98. package/dist/MermaidComponent-BVdDqDRU.js.map +0 -1
  99. package/dist/browser-storage-DPtOQJx0.js +0 -127
  100. package/dist/browser-storage-DPtOQJx0.js.map +0 -1
  101. package/dist/components/activity/activity-avatar.d.ts +0 -9
  102. package/dist/components/activity/activity-comment.d.ts +0 -27
  103. package/dist/components/activity/activity-composer.d.ts +0 -18
  104. package/dist/components/activity/activity-event.d.ts +0 -12
  105. package/dist/components/activity/activity-root.d.ts +0 -15
  106. package/dist/components/activity/activity-timeline.d.ts +0 -6
  107. package/dist/components/activity/activity.types.d.ts +0 -5
  108. package/dist/components/activity/index.d.ts +0 -27
  109. package/dist/components/activity/resource-activity-feed.d.ts +0 -58
  110. package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
  111. package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
  112. package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
  113. package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
  114. package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
  115. package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
  116. package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
  117. package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
  118. package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
  119. package/dist/components/chat-ui/components/chat-input.d.ts +0 -31
  120. package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
  121. package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
  122. package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
  123. package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
  124. package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
  125. package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
  126. package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
  127. package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
  128. package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
  129. package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
  130. package/dist/components/chat-ui/components/message-types.d.ts +0 -116
  131. package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
  132. package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
  133. package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
  134. package/dist/components/chat-ui/components/send-button.d.ts +0 -7
  135. package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
  136. package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
  137. package/dist/components/chat-ui/components/timeline.d.ts +0 -113
  138. package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
  139. package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
  140. package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
  141. package/dist/components/chat-ui/index.d.ts +0 -19
  142. package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
  143. package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
  144. package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
  145. package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
  146. package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
  147. package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
  148. package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
  149. package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
  150. package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
  151. package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
  152. package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
  153. package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
  154. package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
  155. package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
  156. package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
  157. package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
  158. package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
  159. package/dist/components/chat-ui/utils/diff.d.ts +0 -21
  160. package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
  161. package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
  162. package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
  163. package/dist/components/command-palette/index.d.ts +0 -4
  164. package/dist/components/command-palette/palette-filter.d.ts +0 -23
  165. package/dist/components/command-palette/palette-list.d.ts +0 -11
  166. package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
  167. package/dist/components/command-palette/palette.d.ts +0 -48
  168. package/dist/components/data-table/build-columns.d.ts +0 -16
  169. package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
  170. package/dist/components/data-table/color-cell-style.d.ts +0 -13
  171. package/dist/components/data-table/color-scale-cell.d.ts +0 -7
  172. package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
  173. package/dist/components/data-table/data-table-header.d.ts +0 -12
  174. package/dist/components/data-table/data-table-row-display.d.ts +0 -11
  175. package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
  176. package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
  177. package/dist/components/data-table/data-table-state.d.ts +0 -27
  178. package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
  179. package/dist/components/data-table/data-table-stats.d.ts +0 -19
  180. package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
  181. package/dist/components/data-table/data-table.d.ts +0 -2
  182. package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
  183. package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
  184. package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
  185. package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
  186. package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
  187. package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
  188. package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
  189. package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
  190. package/dist/components/data-table/edit-mode-story.d.ts +0 -5
  191. package/dist/components/data-table/friendly-json-display.d.ts +0 -31
  192. package/dist/components/data-table/helpers.d.ts +0 -10
  193. package/dist/components/data-table/index.d.ts +0 -7
  194. package/dist/components/data-table/json-cell.d.ts +0 -6
  195. package/dist/components/data-table/pagination-footer.d.ts +0 -11
  196. package/dist/components/data-table/selection-toolbar.d.ts +0 -11
  197. package/dist/components/data-table/types.d.ts +0 -117
  198. package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
  199. package/dist/components/diff-viewer/code-editor.d.ts +0 -43
  200. package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
  201. package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
  202. package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
  203. package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
  204. package/dist/components/diff-viewer/diff-card.d.ts +0 -46
  205. package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
  206. package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
  207. package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
  208. package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
  209. package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
  210. package/dist/components/diff-viewer/diff-size.d.ts +0 -16
  211. package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
  212. package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
  213. package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
  214. package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
  215. package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
  216. package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
  217. package/dist/components/diff-viewer/index.d.ts +0 -9
  218. package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
  219. package/dist/components/diff-viewer/types.d.ts +0 -13
  220. package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
  221. package/dist/components/file-browser/column-file-browser.d.ts +0 -20
  222. package/dist/components/internal/performance-panel.d.ts +0 -40
  223. package/dist/components/internal/style-guide.d.ts +0 -14
  224. package/dist/components/internal/token-editor-controls.d.ts +0 -8
  225. package/dist/components/internal/token-editor-data.d.ts +0 -40
  226. package/dist/components/internal/token-editor-state.d.ts +0 -22
  227. package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
  228. package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
  229. package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
  230. package/dist/components/kanban-renderer/index.d.ts +0 -19
  231. package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
  232. package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
  233. package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
  234. package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
  235. package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
  236. package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
  237. package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
  238. package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
  239. package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
  240. package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
  241. package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
  242. package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
  243. package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
  244. package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
  245. package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
  246. package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
  247. package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
  248. package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
  249. package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
  250. package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
  251. package/dist/components/kanban-renderer/types.d.ts +0 -159
  252. package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
  253. package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
  254. package/dist/components/layout/header.d.ts +0 -7
  255. package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
  256. package/dist/components/layout/index.d.ts +0 -8
  257. package/dist/components/layout/item-section.d.ts +0 -11
  258. package/dist/components/layout/panel-header.constants.d.ts +0 -3
  259. package/dist/components/layout/resizable-split-layout.d.ts +0 -22
  260. package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
  261. package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
  262. package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
  263. package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
  264. package/dist/components/list-row/list-row-actions.d.ts +0 -11
  265. package/dist/components/list-row/list-row-chrome.d.ts +0 -11
  266. package/dist/components/list-row/list-row-content.d.ts +0 -17
  267. package/dist/components/list-row/list-row-menu.d.ts +0 -12
  268. package/dist/components/list-row/list-row-root-props.d.ts +0 -34
  269. package/dist/components/list-row/list-row.d.ts +0 -2
  270. package/dist/components/list-row/list-row.types.d.ts +0 -109
  271. package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
  272. package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
  273. package/dist/components/mermaid-renderer/index.d.ts +0 -2
  274. package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
  275. package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
  276. package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
  277. package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
  278. package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
  279. package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
  280. package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
  281. package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
  282. package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
  283. package/dist/components/notification-center/index.d.ts +0 -2
  284. package/dist/components/notification-center/notification-center.d.ts +0 -2
  285. package/dist/components/notification-center/notification-center.types.d.ts +0 -37
  286. package/dist/components/overlays/attached-menu.d.ts +0 -6
  287. package/dist/components/overlays/attached-panel.d.ts +0 -9
  288. package/dist/components/overlays/attachment-chip.d.ts +0 -13
  289. package/dist/components/overlays/bubble-button.d.ts +0 -10
  290. package/dist/components/overlays/bubble-panel.d.ts +0 -18
  291. package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
  292. package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
  293. package/dist/components/overlays/index.d.ts +0 -17
  294. package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
  295. package/dist/components/overlays/resource-context-menu.d.ts +0 -35
  296. package/dist/components/overlays/search-modal-content.d.ts +0 -20
  297. package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
  298. package/dist/components/overlays/searchable-menu.d.ts +0 -65
  299. package/dist/components/param-editor/index.d.ts +0 -31
  300. package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
  301. package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
  302. package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
  303. package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
  304. package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
  305. package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
  306. package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
  307. package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
  308. package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
  309. package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
  310. package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
  311. package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
  312. package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
  313. package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
  314. package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
  315. package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
  316. package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
  317. package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
  318. package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
  319. package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
  320. package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
  321. package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
  322. package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
  323. package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
  324. package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
  325. package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
  326. package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
  327. package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
  328. package/dist/components/param-editor/param-editor-field.d.ts +0 -13
  329. package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
  330. package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
  331. package/dist/components/param-editor/param-editor-label.d.ts +0 -7
  332. package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
  333. package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
  334. package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
  335. package/dist/components/param-editor/param-editor-row.d.ts +0 -17
  336. package/dist/components/param-editor/param-editor-section.d.ts +0 -17
  337. package/dist/components/param-editor/param-editor.d.ts +0 -12
  338. package/dist/components/param-editor/param-editor.types.d.ts +0 -31
  339. package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
  340. package/dist/components/primitives/alert.d.ts +0 -9
  341. package/dist/components/primitives/breadcrumb.d.ts +0 -20
  342. package/dist/components/primitives/checkbox.d.ts +0 -8
  343. package/dist/components/primitives/chip.d.ts +0 -4
  344. package/dist/components/primitives/content-placeholder.d.ts +0 -6
  345. package/dist/components/primitives/empty-state.d.ts +0 -12
  346. package/dist/components/primitives/error-boundary.d.ts +0 -26
  347. package/dist/components/primitives/glyph-icon.d.ts +0 -16
  348. package/dist/components/primitives/icon-color-picker.d.ts +0 -15
  349. package/dist/components/primitives/icon-options.d.ts +0 -301
  350. package/dist/components/primitives/index.d.ts +0 -39
  351. package/dist/components/primitives/info-card.d.ts +0 -12
  352. package/dist/components/primitives/integration-card.d.ts +0 -12
  353. package/dist/components/primitives/number-input.d.ts +0 -6
  354. package/dist/components/primitives/radio.d.ts +0 -8
  355. package/dist/components/primitives/resource-badge.d.ts +0 -64
  356. package/dist/components/primitives/scroll-area.d.ts +0 -17
  357. package/dist/components/primitives/segmented-control.d.ts +0 -20
  358. package/dist/components/primitives/session-indicator.d.ts +0 -15
  359. package/dist/components/primitives/simple-card.d.ts +0 -5
  360. package/dist/components/primitives/slider.d.ts +0 -5
  361. package/dist/components/primitives/switch.d.ts +0 -15
  362. package/dist/components/primitives/tag-swatch.d.ts +0 -10
  363. package/dist/components/primitives/toaster.d.ts +0 -3
  364. package/dist/components/primitives/tooltip.d.ts +0 -11
  365. package/dist/components/primitives/workspace-badge.d.ts +0 -23
  366. package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
  367. package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
  368. package/dist/components/rich-text/index.d.ts +0 -17
  369. package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
  370. package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
  371. package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
  372. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
  373. package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
  374. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  375. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  376. package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  377. package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
  378. package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
  379. package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
  380. package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
  381. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
  382. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
  383. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
  384. package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
  385. package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
  386. package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -4
  387. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
  388. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
  389. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
  390. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
  391. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
  392. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
  393. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
  394. package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
  395. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
  396. package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
  397. package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -9
  398. package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -25
  399. package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
  400. package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
  401. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
  402. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
  403. package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
  404. package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
  405. package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
  406. package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
  407. package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
  408. package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
  409. package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
  410. package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
  411. package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
  412. package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
  413. package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
  414. package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
  415. package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
  416. package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
  417. package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
  418. package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
  419. package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
  420. package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
  421. package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
  422. package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
  423. package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
  424. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
  425. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
  426. package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
  427. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
  428. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
  429. package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
  430. package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
  431. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
  432. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
  433. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
  434. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
  435. package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -11
  436. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
  437. package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
  438. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
  439. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
  440. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
  441. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
  442. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
  443. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
  444. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
  445. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
  446. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
  447. package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
  448. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
  449. package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
  450. package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
  451. package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
  452. package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
  453. package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
  454. package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
  455. package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
  456. package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
  457. package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
  458. package/dist/components/rich-text/types.d.ts +0 -8
  459. package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
  460. package/dist/components/rich-text/utils/markdown.d.ts +0 -5
  461. package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
  462. package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
  463. package/dist/components/sidenav/sidenav-header.d.ts +0 -6
  464. package/dist/components/sidenav/sidenav.d.ts +0 -2
  465. package/dist/components/sidenav/sidenav.store.d.ts +0 -49
  466. package/dist/components/sidenav/sidenav.types.d.ts +0 -31
  467. package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
  468. package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
  469. package/dist/components/tab-strip/window-tabs.d.ts +0 -15
  470. package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
  471. package/dist/components/tag-editor/index.d.ts +0 -8
  472. package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
  473. package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
  474. package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
  475. package/dist/components/tag-editor/tag-editor.d.ts +0 -2
  476. package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
  477. package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
  478. package/dist/components/terminal/bind-session.d.ts +0 -33
  479. package/dist/components/terminal/index.d.ts +0 -6
  480. package/dist/components/terminal/scripted-bridge.d.ts +0 -35
  481. package/dist/components/terminal/terminal-contract.d.ts +0 -22
  482. package/dist/components/terminal/terminal-theme.d.ts +0 -12
  483. package/dist/components/terminal/terminal.d.ts +0 -56
  484. package/dist/components/terminal/types.d.ts +0 -35
  485. package/dist/components/terminal/use-terminal-session.d.ts +0 -21
  486. package/dist/components/tree-list/tree-list-background.d.ts +0 -8
  487. package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
  488. package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
  489. package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
  490. package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
  491. package/dist/components/tree-list/tree-list-model.d.ts +0 -58
  492. package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
  493. package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
  494. package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
  495. package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
  496. package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
  497. package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
  498. package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
  499. package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
  500. package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
  501. package/dist/components/tree-list/tree-list.d.ts +0 -41
  502. package/dist/components/tree-list/tree-list.types.d.ts +0 -63
  503. package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
  504. package/dist/diff-bubble-DvUPRnfB.js +0 -183
  505. package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
  506. package/dist/edit-mode-data-table-B8UpWb7i.js +0 -846
  507. package/dist/edit-mode-data-table-B8UpWb7i.js.map +0 -1
  508. package/dist/empty-state-Bo4HVrgr.js +0 -34
  509. package/dist/empty-state-Bo4HVrgr.js.map +0 -1
  510. package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
  511. package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
  512. package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
  513. package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
  514. package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
  515. package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
  516. package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
  517. package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
  518. package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
  519. package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
  520. package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
  521. package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
  522. package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
  523. package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
  524. package/dist/kanban-renderer-toolbar-DzY6THJY.js +0 -1374
  525. package/dist/kanban-renderer-toolbar-DzY6THJY.js.map +0 -1
  526. package/dist/lazy-markdown-editor-ClZPZuaU.js +0 -235
  527. package/dist/lazy-markdown-editor-ClZPZuaU.js.map +0 -1
  528. package/dist/list-row-BDoV_iMV.js +0 -815
  529. package/dist/list-row-BDoV_iMV.js.map +0 -1
  530. package/dist/markdown-editor-CAVqJ9yR.js +0 -1019
  531. package/dist/markdown-editor-CAVqJ9yR.js.map +0 -1
  532. package/dist/markdown-gNucAjnF.js +0 -1643
  533. package/dist/markdown-gNucAjnF.js.map +0 -1
  534. package/dist/mermaid-renderer-CVnuKs-A.js +0 -425
  535. package/dist/mermaid-renderer-CVnuKs-A.js.map +0 -1
  536. package/dist/mermaid.js.map +0 -1
  537. package/dist/monaco-browser-l82HnffN.js +0 -22
  538. package/dist/monaco-browser-l82HnffN.js.map +0 -1
  539. package/dist/param-editor-CTx3mDxQ.js +0 -161
  540. package/dist/param-editor-CTx3mDxQ.js.map +0 -1
  541. package/dist/param-editor-field-DteDEyeU.js +0 -2810
  542. package/dist/param-editor-field-DteDEyeU.js.map +0 -1
  543. package/dist/prompt-input-DNpRL5tI.js +0 -564
  544. package/dist/prompt-input-DNpRL5tI.js.map +0 -1
  545. package/dist/radio-cLMEBBZk.js +0 -76
  546. package/dist/radio-cLMEBBZk.js.map +0 -1
  547. package/dist/rich-message-CuPiKxKX.js +0 -78
  548. package/dist/rich-message-CuPiKxKX.js.map +0 -1
  549. package/dist/rich-text.js.map +0 -1
  550. package/dist/test-utils/local-storage.d.ts +0 -1
  551. package/dist/theme/custom/index.d.ts +0 -2
  552. package/dist/theme/custom/vscode-theme.d.ts +0 -32
  553. package/dist/theme/global.d.ts +0 -62
  554. package/dist/theme/index.d.ts +0 -3
  555. package/dist/theme/primitives/colors.d.ts +0 -1081
  556. package/dist/theme/primitives/fonts.d.ts +0 -84
  557. package/dist/theme/primitives/sizes.d.ts +0 -207
  558. package/dist/theme/recipes/activity-comment.d.ts +0 -36
  559. package/dist/theme/recipes/alert.d.ts +0 -1
  560. package/dist/theme/recipes/badge.d.ts +0 -58
  561. package/dist/theme/recipes/button.d.ts +0 -188
  562. package/dist/theme/recipes/color-picker.d.ts +0 -18
  563. package/dist/theme/recipes/dialog.d.ts +0 -1
  564. package/dist/theme/recipes/divider.d.ts +0 -1
  565. package/dist/theme/recipes/drawer.d.ts +0 -1
  566. package/dist/theme/recipes/editable.d.ts +0 -46
  567. package/dist/theme/recipes/form.d.ts +0 -1
  568. package/dist/theme/recipes/input.d.ts +0 -94
  569. package/dist/theme/recipes/kbd.d.ts +0 -41
  570. package/dist/theme/recipes/menu.d.ts +0 -1
  571. package/dist/theme/recipes/number-input.d.ts +0 -98
  572. package/dist/theme/recipes/popover.d.ts +0 -16
  573. package/dist/theme/recipes/progress-circle.d.ts +0 -28
  574. package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
  575. package/dist/theme/recipes/segmented-control.d.ts +0 -22
  576. package/dist/theme/recipes/skeleton.d.ts +0 -1
  577. package/dist/theme/recipes/switch.d.ts +0 -18
  578. package/dist/theme/recipes/tabs.d.ts +0 -80
  579. package/dist/theme/recipes/textarea.d.ts +0 -62
  580. package/dist/theme/recipes/timeline.d.ts +0 -74
  581. package/dist/theme/recipes/tooltip.d.ts +0 -1
  582. package/dist/theme/recipes/window-title-bar.d.ts +0 -19
  583. package/dist/theme/shadowless-default-config.d.ts +0 -2
  584. package/dist/theme/theme.d.ts +0 -2
  585. package/dist/theme/tokens/borders.d.ts +0 -17
  586. package/dist/theme/tokens/colors-background.d.ts +0 -260
  587. package/dist/theme/tokens/colors-visualization.d.ts +0 -162
  588. package/dist/theme/tokens/colors.d.ts +0 -878
  589. package/dist/theme/tokens/layer-styles.d.ts +0 -1
  590. package/dist/theme/tokens/text.d.ts +0 -1
  591. package/dist/theme-Dc7hVvMC.js +0 -3990
  592. package/dist/theme-Dc7hVvMC.js.map +0 -1
  593. package/dist/theme-preference-Bpobguh4.js +0 -114
  594. package/dist/theme-preference-Bpobguh4.js.map +0 -1
  595. package/dist/theme.js.map +0 -1
  596. package/dist/tree-list-CZvcg3_6.js +0 -1348
  597. package/dist/tree-list-CZvcg3_6.js.map +0 -1
  598. package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
  599. package/dist/utils/apply-theme-preference.d.ts +0 -22
  600. package/dist/utils/browser-storage.d.ts +0 -7
  601. package/dist/utils/file-icon-theme-preference.d.ts +0 -15
  602. package/dist/utils/get-file-type-icon.d.ts +0 -2
  603. package/dist/utils/prism.d.ts +0 -1
  604. package/dist/utils/resolve-file-icon-element.d.ts +0 -8
  605. package/dist/utils/theme-preference.d.ts +0 -20
  606. package/dist/workspace-badge-BR_GgsAG.js +0 -175
  607. package/dist/workspace-badge-BR_GgsAG.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-drawer-45rpk3aq.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","ImageDiffPreviewProps","ImageDiffPreview","Symbol","for","base","md","t3","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","opacity","pointerEvents","t18","t19","t20","event_0","t21","t22","t23","t24","t25","t26","t27","_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","useVirtualizer","Virtualizer","useEffect","useLayoutEffect","useRef","useState","ScrollArea","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","ScrollArea","Tooltip$1","EmptyState$1","DiffBubble","isImageDiffPath","isGeneratedDiffPath","getDiffLineCount","isLargeDiffContent","isBinaryDiffPath","buildDiffViewData","DiffEditor","createDiffCardBodyModel","input","filePath","oldImageSrc","getImagePreviewSource","oldContent","newImageSrc","newContent","isLargeDiff","hasOptedIntoLargeDiff","diff","buildViewData","diffViewMode","content","DiffCardBody","$","c","t0","props","t1","onShowFullDiff","model","t2","Box","ImageDiffPreview","BinaryDiffPlaceholder","LargeDiffPlaceholder","oldSrc","ImageDiffPanel","newSrc","t3","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","t4","blocksDiffContentLoad","t5","t6","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","event_0","t21","Check","Copy","t22","t23","t24","t25","t26","t27","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","useVirtualizer","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 ) : model.kind === \"image\" ? (\n <ImageDiffPreview oldSrc={model.oldSrc} newSrc={model.newSrc} />\n ) : model.kind === \"binary\" ? (\n <BinaryDiffPlaceholder isImage={model.isImage} />\n ) : (\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 ) : diff.change === \"deleted\" ? (\n <Text as=\"span\" color=\"fg.muted\" textDecoration=\"line-through\" textStyle=\"sm\">\n {filePath}\n </Text>\n ) : (\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, useVirtualizer, type Virtualizer } from \"@tanstack/react-virtual\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\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;CAwBK,OAxBLN,EAAA,OAAA/B,KAAA+B,EAAA,QAAAK,EAAAf,gBAAAU,EAAA,QAAAK,EAAAnC,YAAA8B,EAAA,QAAAK,EAAAjB,WAAAY,EAAA,QAAAK,EAAArB,QAAAgB,EAAA,QAAAK,EAAAlB,UAAAa,EAAA,QAAAK,EAAAnB,UAAAc,EAAA,QAAAK,EAAA9B,kBAAAyB,EAAA,QAAAK,EAAAhB,qBAAAW,EAAA,QAAAK,EAAAV,cAAAK,EAAA,QAAA5B,KAAA4B,EAAA,QAAA7B,KAGDmC,IAAA,kBAAC8f,GAAD;EAAQ,IAAA;EAAwB,oBAAA;EAAc,UAAA;EAC3C/f,UAAAA,EAAKrB,SAAU,WACd,kBAAC4f,GAAD;GACYzgB,UAAAA;GACAC,UAAAA;GACD,SAAAH,EAAIwB;GACJ,SAAAxB,EAAIyB;GACD,YAAAW,EAAKV;GACX,MAAAU,EAAKf;EAAa,CAAA,IAExBe,EAAKrB,SAAU,UACjB,kBAACqhB,GAAD;GAA0B,QAAAhgB,EAAKnB;GAAiB,QAAAmB,EAAKlB;EAAO,CAAA,IAC1DkB,EAAKrB,SAAU,WACjB,kBAACshB,GAAD,EAAgC,SAAAjgB,EAAKjB,QAAQ,CAAA,IAE7C,kBAACmhB,GAAD;GACY,UAAAlgB,EAAKnC;GACI,mBAAAmC,EAAKhB;GACR,gBAAAgB,EAAK9B;EAAe,CAAA;CAlBtC,CAAA,GAqBEyB,EAAA,KAAA/B,GAAA+B,EAAA,MAAAK,EAAAf,cAAAU,EAAA,MAAAK,EAAAnC,UAAA8B,EAAA,MAAAK,EAAAjB,SAAAY,EAAA,MAAAK,EAAArB,MAAAgB,EAAA,MAAAK,EAAAlB,QAAAa,EAAA,MAAAK,EAAAnB,QAAAc,EAAA,MAAAK,EAAA9B,gBAAAyB,EAAA,MAAAK,EAAAhB,mBAAAW,EAAA,MAAAK,EAAAV,YAAAK,EAAA,MAAA5B,GAAA4B,EAAA,MAAA7B,GAAA6B,EAAA,MAAAM,KAAAA,IAAAN,EAAA,KArBNM;AAqBM,GASJE,KAAmBT,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACvB,EAAAf,WAAAC,cAA2BY,GAAMG;CAAA,AAAAF,EAAA,OAAAS,OAAAC,IAAA,2BAAA,KAIZR,IAAA;EAAAS,MAAQ;EAAKC,IAAM;CAAU,GAACZ,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAI;CAAA,AAAAJ,EAAA,OAAAd,IAOoBkB,IAAAJ,EAAA,MAAnEI,IAAA,kBAACqgB,GAAD;EAAsB,OAAA;EAAWvhB,KAAAA;EAAiB,UAAA;CAAc,CAAA,GAAGc,EAAA,KAAAd,GAAAc,EAAA,KAAAI;CAAA,IAAAE;CAAA,AAAAN,EAAA,OAAAb,IACAmB,IAAAN,EAAA,MAAnEM,IAAA,kBAACmgB,GAAD;EAAsB,OAAA;EAAWthB,KAAAA;EAAiB,UAAA;CAAc,CAAA,GAAGa,EAAA,KAAAb,GAAAa,EAAA,KAAAM;CAAA,IAAAO;CAC9D,OAD8Db,EAAA,OAAAI,KAAAJ,EAAA,OAAAM,KATrEO,IAAA,kBAAC+f,GAAD;EACmB,iBAAA1gB;EACb,KAAA;EACF,GAAA;EACQ,WAAA;EACE,aAAA;EACT,IAAA;EANL,UAAA,CAQEE,GACAE,CATG;KAUEN,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,GAAAN,EAAA,KAAAa,KAAAA,IAAAb,EAAA,IAVPa;AAUO,GAULK,KAAiBnB,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GACrB,EAAAc,UAAAC,QAAAC,gBAAiClB,GAAMG;CAAA,AAAAF,EAAA,OAAAe,IAa5Bb,IAAAF,EAAA,MATPE,IAAA,kBAAC4gB,GAAD;EACK,IAAA;EACA,IAAA;EACO,WAAA;EACJ,OAAA;EACO,cAAA;EACD,aAAA;EAEX/f,UAAAA;CARE,CAAA,GASEf,EAAA,KAAAe,GAAAf,EAAA,KAAAE;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAiB,KAAAjB,EAAA,OAAAe,KAAAf,EAAA,OAAAgB,KACPZ,IAAA,kBAACggB,GAAD;EAAa,SAAA;EAAkB,YAAA;EAAc,MAAA;EAAU,GAAA;EACpDpf,UAAAA,IACC,kBAACigB,GAAD;GAAYjgB;GAAU,KAAA,GAAGD,EAAK;GAAoB,MAAA;GAAa,MAAA;GAAiB,WAAA;EAAS,CAAA,IAEzF,kBAAC+f,GAAD;GAAY,OAAA;GAAqB,WAAA;GAC9B7f,UAAAA;EADE,CAAA;CAJL,CAAA,GAQEjB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAe,GAAAf,EAAA,KAAAgB,GAAAhB,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAM;CACF,OADEN,EAAA,OAAAE,KAAAF,EAAA,OAAAI,KAnBRE,IAAA,kBAAC8f,GAAD;EAAY,QAAA;EAAwB,aAAA;EAA6B,cAAA;EAAc,UAAA;EAAY,IAAA;EAAiB,MAAA;EAA5G,UAAA,CACElgB,GAUAE,CAXE;KAoBEJ,EAAA,KAAAE,GAAAF,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,KAAAA,IAAAN,EAAA,IApBNM;AAoBM,GAUJc,KAAuBrB,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC3B,EAAA/B,aAAAK,sBAAqCwB,GAAMG;CAAA,AAAAF,EAAA,OAAA9B,KAAA8B,EAAA,OAAAzB,KAKpC2B,IAAA3B,IACC,kBAAC2iB,GAAD;EAAa,MAAA;EAAa,SAAA;EAAsB,cAAA,wBAAwBhjB;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,kBAACggB,GAAD;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EAAmB,IAAA;EAC/D,UAAA,kBAAC1e,GAAD;GAAkB,OAAA;GAA6C,UAAA;GAC5DxB,UAAAA;EADQ,CAAA;CADT,CAAA,GAQEF,EAAA,KAAAE,GAAAF,EAAA,KAAAI,IARNA;AAQM,GAQJkB,KAAwBvB,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC5B,EAAAb,eAAoBW,GACpBwB,IAAcnC,IAAA,8BAAA,8BAAqEc;CAK3E,OAL2EF,EAAA,OAAAuB,IAK3ErB,IAAAF,EAAA,MAFNE,IAAA,kBAACkgB,GAAD;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EAAmB,IAAA;EAC/D,UAAA,kBAAC1e,GAAD;GAAmBH;GAAgB,UAAA;EAAI,CAAA;CADrC,CAAA,GAEEvB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAE,IAFNA;AAEM,GC/MGmC,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,kBAACgf,GAAD;EAAa,MAAA;EAAa,SAAA;EAAmB/e,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,kBAAC0d,GAAD;EAAQ,IAAA;EAAO,GAAA;EAAe,WAAA;EAAwB,aAAA;EACpD,UAAA,kBAAChd,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,kBAACkf,GAAD;EACI,GAAA;EACC,IAAA;EACO,WAAA;EACE,aAAA;EACV,GAAA;EACE,KAAA;EACC,MAAA;EACK,aAAA;EACC,cAAA;EAEVhf,UAAAA,EAAsBK,IAAKC,CAE3B;CAbG,CAAA,GAcEV,EAAA,KAAAE,KAAAA,IAAAF,EAAA,IAdRE;AAcQ;AAfwB,SAAAQ,EAAAC,GAAA;CAAA,OAa5B,kBAAC2e,GAAD;EAAsB,GAAA;EAAS,GAAA;EAAoB,cAAA;CAAI,GAAxC3e,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,GACjBsd,EAAgB;CAClB,IAGEhe,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,MAAkBC,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,kBAACka,GAAD;GACQhc;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,kBAAC2b,GAAD;GAAyBrc;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,kBAACic,GAAD,CAAmB,CAAA,GAAGpc,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,kBAACka,GAAD;EACQhc;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,MAA6BC,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,KAA4BP,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,GAA0B;EACnDV;EACAD;EACAa;EACAC;EACAC;EACAC;EACAC;EACAC;CACF,CAAC;CAcD,OAZAvC,QAAgB;EACd8C,GAAkBK,MAAYX,EAAyB;GAAEF,eAAea;GAASZ;GAAUL;EAAe,CAAC,CAAC;CAC9G,GAAG,CAACK,GAAUL,CAAc,CAAC,GAE7BlC,QAAgB;EACd,AAAKyB,KAAeyB,KAAsBH,MAI1C+Z,EAAc;CAChB,CAAC,GAEM;EACLla;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,kBAACmZ,GAAD;EAAsBtc;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,kBAACqX,IAAD;EACQ1a;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,kBAACoV,GAAD;EACc,eAAA;EACL,QAAA;EACM,aAAA5V;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,KAAiBrB,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,IAAa+Z,EAAbld,IAAcmd,IAA4BC,GAA7B,EAAmB,MAAA,GAAE,CAA6B,GAAInb,EAAA,MAAAjC,GAAAiC,EAAA,MAAAkB;CAAA,IAAAC;CAAA,AAAAnB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAkB,KAAAlB,EAAA,QAAAgB,KAVtEG,IAAA,kBAACia,GAAD;EACc,cAAApa;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,WAAA0C,EAAA,QAAAhB,KAIRmD,IAAAtE,EAAIR,WAAY,YACf,kBAAC4Z,GAAD;EAAS,IAAA;EAAiB,WAAA;EAA1B,UAAA;GACE,kBAACA,GAAD;IAAS,IAAA;IAAa,OAAA;IAA0B,gBAAA;IAAkB,IAAA;IAC/DpZ,UAAAA,EAAIP;GADF,CAAA;GAGL,kBAACiZ,GAAD;IAAQ,IAAA;IAAe,SAAA;IAAyB,YAAA;IAAuB,eAAA;IAAY,IAAA;IACjF,UAAA,kBAAC4E,GAAD,EAAoB,MAAA,GAAE,CAAA;GADpB,CAAA;GAGHtd,EAAIN;EAPF;CASHM,CAAAA,IAAAA,EAAIR,WAAY,YAClB,kBAAC4Z,GAAD;EAAS,IAAA;EAAa,OAAA;EAA0B,gBAAA;EAAyB,WAAA;EACtEjY,UAAAA;CADE,CAAA,IAIL,kBAACiY,GAAD;EAAS,IAAA;EAAiB,WAAA;EACvBjY,UAAAA;CADE,CAAA,GAGNgB,EAAA,MAAAnC,EAAAR,QAAA2C,EAAA,MAAAnC,EAAAN,SAAAyC,EAAA,MAAAnC,EAAAP,SAAA0C,EAAA,MAAAhB,GAAAgB,EAAA,MAAAmC,KAAAA,IAAAnC,EAAA;CAAA,IAAAoC;CAAA,AAAApC,EAAA,QAAAhB,KAAAgB,EAAA,QAAAmC,KAnBHC,IAAA,kBAACmU,GAAD;EAAW,MAAA;EAAY,UAAA;EAAsB,cAAA;EAAsB,YAAA;EAAgBvX,OAAAA;EAChFmD,UAAAA;CADC,CAAA,GAoBEnC,EAAA,MAAAhB,GAAAgB,EAAA,MAAAmC,GAAAnC,EAAA,MAAAoC,KAAAA,IAAApC,EAAA;CAGK,IAAAqC,KAAAf,IAAA,MAAA,KACMgB,KAAAhB,IAAA,SAAA,QAA0BiB;CAAA,AAAAvC,EAAA,QAAAa,OAAAC,IAAA,2BAAA,KAEpCyB,IAAA,EAAA,6FAC0F;EAAAC,SAClF;EAACC,eACK;CACjB,EACF,GAACzC,EAAA,MAAAuC,KAAAA,IAAAvC,EAAA;CAEiB,IAAA0C,KAAApB,IAAA,WAAA,kBAEFqB,KAAArB,IAAA,WAAA,kBAAsCsB;CAAA,AAAA5C,EAAA,QAAA+B,IAMjDa,IAAA5C,EAAA,OAHQ4C,KAAAC,MAAA;EAEFd,AADLE,EAAKC,gBAAiB,GACjBH,EAAa;CAAC,GACpB/B,EAAA,MAAA+B,GAAA/B,EAAA,MAAA4C;CAAA,IAAAE;CAAA,AAAA9C,EAAA,QAAAsB,IAGmDwB,IAAA9C,EAAA,OAAnD8C,IAAWmY,EAAX3Z,IAAYya,IAAsBC,GAAvB,EAAa,MAAA,GAAE,CAAqB,GAAIhc,EAAA,MAAAsB,GAAAtB,EAAA,MAAA8C;CAAA,IAAAC;CAAA,AAAA/C,EAAA,QAAA2C,MAAA3C,EAAA,QAAA4C,KAAA5C,EAAA,QAAA8C,KAVtDC,IAAA,kBAACqY,GAAD;EACc,cAAAzY;EACJ,SAAA;EACH,MAAA;EACI,SAAAC;EAIG,YAAA;EAEXE,UAAAA;CAVQ,CAAA,GAWE9C,EAAA,MAAA2C,IAAA3C,EAAA,MAAA4C,GAAA5C,EAAA,MAAA8C,GAAA9C,EAAA,MAAA+C,KAAAA,IAAA/C,EAAA;CAAA,IAAAgD;CAAA,AAAAhD,EAAA,QAAA0C,MAAA1C,EAAA,QAAA+C,KAZfC,IAAA,kBAACM,GAAD;EAAkB,SAAAZ;EAChBK,UAAAA;CADM,CAAA,GAaE/C,EAAA,MAAA0C,IAAA1C,EAAA,MAAA+C,GAAA/C,EAAA,MAAAgD,KAAAA,IAAAhD,EAAA;CAAA,IAAAiD;CAAA,AAAAjD,EAAA,QAAAqC,MAAArC,EAAA,QAAAsC,MAAAtC,EAAA,QAAAgD,KAxBZC,IAAA,kBAACsT,GAAD;EACW,SAAAlU;EACM,eAAAC;EACJ,YAAA;EACN,KAAAC;EAOLS,UAAAA;CAXE,CAAA,GAyBEhD,EAAA,MAAAqC,IAAArC,EAAA,MAAAsC,IAAAtC,EAAA,MAAAgD,GAAAhD,EAAA,MAAAiD,KAAAA,IAAAjD,EAAA;CAAA,IAAAkD;CAAA,AAAAlD,EAAA,QAAAoC,KAAApC,EAAA,QAAAiD,KAhDRC,IAAA,kBAAC6T,GAAD;EAAsB,iBAAA;EAAyC,YAAA;EAAwB,gBAAA;EAAY,KAAA;EAAY,MAAA;EAA/G,UAAA,CACE3U,GAsBAa,CAvBG;KAiDEjD,EAAA,MAAAoC,GAAApC,EAAA,MAAAiD,GAAAjD,EAAA,MAAAkD,KAAAA,IAAAlD,EAAA;CAAA,IAAAmD;CAAA,AAAAnD,EAAA,QAAAtC,KAAAsC,EAAA,QAAArC,KAAAqC,EAAA,QAAAqB,KAEN8B,IAAA9B,IACC,kBAACkV,GAAD;EAAiB,YAAA;EACf,UAAA,kBAAC/B,GAAD;GAAoB,SAAA;GAAmB9W;GAAsBC;EAAS,CAAA;CADpE,CAAA,IADL,MAIOqC,EAAA,MAAAtC,GAAAsC,EAAA,MAAArC,GAAAqC,EAAA,MAAAqB,GAAArB,EAAA,MAAAmD,KAAAA,IAAAnD,EAAA;CAAA,IAAAoD;CACH,OADGpD,EAAA,QAAAmB,KAAAnB,EAAA,QAAAkD,KAAAlD,EAAA,QAAAmD,KAAAnD,EAAA,QAAAS,KAAAT,EAAA,QAAAU,KAAAV,EAAA,QAAAY,KAzFVwC,IAAA,kBAAC2T,GAAD;EACc,eAAA;EACI,iBAAA;EACb,IAAA;EACA,IAAA;EACQ,YAAA;EACI,gBAAA;EACD,cAAAtW;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;GAaA+B;GAmDCC;EArFE;KA0FEnD,EAAA,MAAAmB,GAAAnB,EAAA,MAAAkD,GAAAlD,EAAA,MAAAmD,GAAAnD,EAAA,MAAAS,GAAAT,EAAA,MAAAU,GAAAV,EAAA,MAAAY,GAAAZ,EAAA,MAAAoD,KAAAA,IAAApD,EAAA,KA1FPoD;AA0FO,GClVEM,UAAuB;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAAAC;CAK1B,OAL0BF,EAAA,OAAAG,OAAAC,IAAA,2BAAA,KAClCF,IAAA,kBAACiU,GAAD;EAAS,GAAA;EAAY,MAAA;EAAQ,KAAA;EAAO,IAAA;EAClC,UAAA,kBAAC3T,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,MAAeC,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,GAAYC,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,GCtFxDsC,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,IAAYzD,EAAuB,IAAI,GACvC2D,IAA4B3D,EAAwC,IAAI,GAKxE4D,IAAiB5D,EAAoD,IAAI,GACzE8D,IAA0B9D,EAAO,EAAK,GACtC+D,IAAuB/D,EAAsB,IAAI,GACjD,CAAC6C,GAAgBmB,KAAqB/D,QAA4BiC,GAA2BvB,CAAK,CAAC,GACnG,CAACsD,GAAqBC,KAA0BjE,wBAA4B,IAAImC,IAAI,CAAC,GACrF,EAAE+B,wBAAqBC,oCAAiC3D,GAAsB;EAClFE;EACAC;EACAiC;EACAzB;EACAqC;EACAG;EACAE;CACF,CAAC,GAEKO,IAAczE,EAAe;EACjC0E,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,GAEzBtE,QAAsB;EACpB,AAAKa,KAELoD,GAAmBsB,MAASpC,GAAqCvC,GAAO2E,GAAM1E,CAAgB,CAAC;CACjG,GAAG,CAACD,GAAOC,CAAgB,CAAC,GAE5Bb,QAAsB;EACpB,IAAKqB,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,GAE5BtB,QAAgB;EACd,IAAM0F,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,kBAACyM,GAAD,CAAqB,CAAA;CAEpD,IAAMhJ,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,kBAACoE,GAAD;EAAO,GAAE;EAAO,MAAK;EAAI,KAAI;EAAI,IAAG;EAClC,UAAA,kBAACvB,GAAD;GAAK,UAAS;GAAW,MAAK;GAAI,MAAK;GAAI,IAAG;GAC5C,UAAA,kBAAClC,GAAD;IACE,UAAS;IACT,OAAM;IACN,aAAajD;IACb,eAAe,EAAEuC,OAAO,EAAEC,gBAAgB,OAAO,EAAE;IACnD,cAAc,EAAEC,GAAG,KAAK;IAExB,UAAA,kBAAC0C,GAAD;KAAK,UAAS;KAAW,OAAM;KAAO,OAAO,EAAEzC,QAAQ9B,EAAY+B,aAAa,EAAE;KAC/EN,UAAAA,EAAapD,KAAK2D,MAAgB;MACjC,IAAMxE,IAAOlB,EAAM0F,EAAY/D,QACzBxB,IAAOc,EAAYC,CAAI;MAE7B,OACE,kBAAC+G,GAAD;OAEE,cAAYvC,EAAY/D;OACxB,KAAK+B,EAAYkC;OACjB,UAAS;OACT,MAAK;OACL,OAAM;OACN,IAAG;OACH,OAAO,EAAEC,KAAK,GAAGH,EAAYI,MAAK,IAAK;OAEvC,UAAA,kBAACsF,IAAD;QAEE,MAAMlK;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"}
@@ -0,0 +1,124 @@
1
+ import { t as e } from "./rolldown-runtime-Dy4uBu1J.js";
2
+ import { Box as t } from "@chakra-ui/react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ import { useRef as r } from "react";
5
+ import { DiffModeEnum as i, DiffView as a } from "@git-diff-view/react";
6
+ import "@git-diff-view/react/styles/diff-view.css";
7
+ import { generateDiffFile as o } from "@git-diff-view/file";
8
+ //#region src/components/diff-viewer/diff-view-adapter.ts
9
+ var s = "before.txt", c = "after.txt", l = 100, u = {
10
+ ts: "typescript",
11
+ tsx: "typescript",
12
+ js: "javascript",
13
+ jsx: "javascript",
14
+ json: "json",
15
+ md: "markdown",
16
+ py: "python",
17
+ go: "go",
18
+ rs: "rust",
19
+ css: "css",
20
+ html: "html",
21
+ sh: "shell",
22
+ yml: "yaml",
23
+ yaml: "yaml"
24
+ }, d = (e) => (e.split(/[\\/]/).pop() ?? e).split(".").pop()?.toLowerCase(), f = ({ language: e, oldPath: t, newPath: n }) => {
25
+ if (e) return e;
26
+ let r = d(n ?? t ?? "");
27
+ return r ? u[r] ?? "plaintext" : "plaintext";
28
+ }, p = /* @__PURE__ */ new Map(), m = ({ original: e, modified: t, language: n, oldPath: r, newPath: i }) => [
29
+ e,
30
+ t,
31
+ n ?? "",
32
+ r ?? "",
33
+ i ?? ""
34
+ ].join("\0"), h = (e) => {
35
+ let t = e.join("\n").split("\n"), n = 0, r = 0, i = 0, a = !1, o = 0, s = 0, c = () => {
36
+ n += o + s, r += Math.max(o, s), o = 0, s = 0;
37
+ };
38
+ for (let e of t) e.startsWith("@@") ? (c(), i += 1, a = !0) : a && (e.startsWith("+") ? o += 1 : e.startsWith("-") ? s += 1 : e.startsWith(" ") && (c(), n += 1, r += 1));
39
+ return c(), {
40
+ unifiedContentRows: n,
41
+ splitContentRows: r,
42
+ hunkRows: i
43
+ };
44
+ }, g = ({ original: e, modified: t, language: n, oldPath: r, newPath: i }) => {
45
+ let a = r ?? i ?? s, l = i ?? r ?? c, u = f({
46
+ language: n,
47
+ oldPath: r,
48
+ newPath: i
49
+ }), d = o(a, e, l, t, u, u, { context: 3 });
50
+ return {
51
+ oldFile: {
52
+ fileName: a,
53
+ fileLang: u,
54
+ content: e
55
+ },
56
+ newFile: {
57
+ fileName: l,
58
+ fileLang: u,
59
+ content: t
60
+ },
61
+ hunks: d._diffList,
62
+ ...h(d._diffList)
63
+ };
64
+ }, _ = (e) => {
65
+ let t = m(e), n = p.get(t);
66
+ if (n) return n;
67
+ let r = g(e);
68
+ if (p.size >= l) {
69
+ let e = p.keys().next().value;
70
+ e !== void 0 && p.delete(e);
71
+ }
72
+ return p.set(t, r), r;
73
+ }, v = /* @__PURE__ */ e({
74
+ DiffEditor: () => x,
75
+ resolveDiffEditorDataState: () => b
76
+ }), y = (e, t) => e.original === t.original && e.modified === t.modified && e.language === t.language && e.oldPath === t.oldPath && e.newPath === t.newPath, b = (e, t, n) => e && y(e.input, t) ? e : {
77
+ input: t,
78
+ data: n()
79
+ };
80
+ function x(e) {
81
+ let { original: o, modified: s, language: c, oldPath: l, newPath: u, sideBySide: d = !1, disableScroll: f = !0, data: p } = e, m = r(null), h = {
82
+ original: o,
83
+ modified: s,
84
+ language: c,
85
+ oldPath: l,
86
+ newPath: u
87
+ };
88
+ m.current = b(m.current, h, () => p ?? _({
89
+ original: o,
90
+ modified: s,
91
+ language: c,
92
+ oldPath: l,
93
+ newPath: u
94
+ }));
95
+ let g = d ? i.Split : i.Unified;
96
+ return /* @__PURE__ */ n(t, {
97
+ height: "100%",
98
+ width: "100%",
99
+ position: "relative",
100
+ zIndex: "0",
101
+ overflow: f ? "hidden" : "auto",
102
+ bg: "bg",
103
+ css: {
104
+ "& .gdv-root, & .gdv-view, & .gdv-file, & .gdv-content, & .gdv-hunk, & .gdv-line": { background: "var(--chakra-colors-bg)" },
105
+ "& .gdv-root": {
106
+ border: "none",
107
+ borderRadius: "0"
108
+ },
109
+ "& .gdv-line-number": { fontSize: "11px" }
110
+ },
111
+ children: /* @__PURE__ */ n(a, {
112
+ data: m.current.data,
113
+ diffViewMode: g,
114
+ diffViewTheme: "dark",
115
+ diffViewHighlight: !0,
116
+ diffViewWrap: !1,
117
+ diffViewFontSize: 11
118
+ })
119
+ });
120
+ }
121
+ //#endregion
122
+ export { v as n, _ as r, x as t };
123
+
124
+ //# sourceMappingURL=diff-editor-CGpeyoCE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-editor-CGpeyoCE.js","names":["generateDiffFile","DiffViewProps","FALLBACK_OLD_PATH","FALLBACK_NEW_PATH","MAX_CACHE_ENTRIES","ResolveDiffLanguageInput","language","oldPath","newPath","BuildDiffViewDataInput","original","modified","DiffViewData","NonNullable","BuiltDiffViewData","unifiedContentRows","splitContentRows","hunkRows","extToLanguage","Record","ts","tsx","js","jsx","json","md","py","go","rs","css","html","sh","yml","yaml","getExtension","path","fileName","split","pop","ext","toLowerCase","resolveDiffLanguage","extension","cache","Map","getCacheKey","join","countRenderedRows","hunks","lines","inHunk","blockAdditions","blockDeletions","flushBlock","Math","max","line","startsWith","computeDiffViewData","oldFileName","newFileName","fileLanguage","diffFile","context","oldFile","fileLang","content","newFile","_diffList","buildDiffViewData","input","key","cached","get","data","size","oldest","keys","next","value","undefined","delete","set","DiffModeEnum","DiffView","Box","useRef","buildDiffViewData","DiffViewData","DiffEditorInput","original","modified","language","oldPath","newPath","DiffEditorProps","sideBySide","disableScroll","data","DiffEditorDataState","input","areDiffEditorInputsEqual","current","next","resolveDiffEditorDataState","createData","DiffEditor","props","dataStateRef","mode","Split","Unified","background","border","borderRadius","fontSize","__exportAll","FALLBACK_OLD_PATH","FALLBACK_NEW_PATH","MAX_CACHE_ENTRIES","extToLanguage","getExtension","path","resolveDiffLanguage","language","extension","newPath","oldPath","cache","getCacheKey","original","modified","countRenderedRows","lines","hunks","unifiedContentRows","splitContentRows","hunkRows","inHunk","blockAdditions","blockDeletions","flushBlock","line","computeDiffViewData","oldFileName","newFileName","fileLanguage","diffFile","generateDiffFile","buildDiffViewData","key","input","cached","data","oldest","diff_editor_exports","DiffEditor","resolveDiffEditorDataState","areDiffEditorInputsEqual","current","next","createData","props","dataStateRef","useRef","mode","sideBySide","DiffModeEnum","Box","disableScroll","DiffView"],"sources":["../src/components/diff-viewer/diff-view-adapter.ts","../src/components/diff-viewer/diff-editor.tsx"],"sourcesContent":["import { generateDiffFile } from \"@git-diff-view/file\";\nimport type { DiffViewProps } from \"@git-diff-view/react\";\n\nconst FALLBACK_OLD_PATH = \"before.txt\";\nconst FALLBACK_NEW_PATH = \"after.txt\";\nconst MAX_CACHE_ENTRIES = 100;\n\ninterface ResolveDiffLanguageInput {\n language?: string;\n oldPath?: string;\n newPath?: string;\n}\n\ninterface BuildDiffViewDataInput extends ResolveDiffLanguageInput {\n original: string;\n modified: string;\n}\n\nexport type DiffViewData = NonNullable<DiffViewProps<unknown>[\"data\"]>;\n\n/**\n * Diff view data enriched with the row counts the renderer will actually paint. The renderer\n * collapses unchanged context, so only lines inside the hunks are rendered — these counts come\n * from the hunk patch, not the full file length.\n */\nexport interface BuiltDiffViewData extends DiffViewData {\n /** Content rows painted in unified layout (one per added/removed/context line). */\n unifiedContentRows: number;\n /** Content rows painted in split layout (paired add/remove lines share a row). */\n splitContentRows: number;\n /** Hunk header rows — one per `@@` section, taller than content rows. */\n hunkRows: number;\n}\n\nconst extToLanguage: Record<string, string> = {\n ts: \"typescript\",\n tsx: \"typescript\",\n js: \"javascript\",\n jsx: \"javascript\",\n json: \"json\",\n md: \"markdown\",\n py: \"python\",\n go: \"go\",\n rs: \"rust\",\n css: \"css\",\n html: \"html\",\n sh: \"shell\",\n yml: \"yaml\",\n yaml: \"yaml\",\n};\n\nconst getExtension = (path: string) => {\n const fileName = path.split(/[\\\\/]/).pop() ?? path;\n const ext = fileName.split(\".\").pop();\n\n return ext?.toLowerCase();\n};\n\nexport const resolveDiffLanguage = ({ language, oldPath, newPath }: ResolveDiffLanguageInput) => {\n if (language) {\n return language;\n }\n\n const extension = getExtension(newPath ?? oldPath ?? \"\");\n\n if (!extension) {\n return \"plaintext\";\n }\n\n return extToLanguage[extension] ?? \"plaintext\";\n};\n\n// Building a diff file parses both file contents and walks every rendered line. The drawer's\n// virtualizer asks for heights far more often than the diff content changes, so memoize by\n// content signature and share one instance with the rendered editor.\nconst cache = new Map<string, BuiltDiffViewData>();\n\nconst getCacheKey = ({ original, modified, language, oldPath, newPath }: BuildDiffViewDataInput) =>\n [original, modified, language ?? \"\", oldPath ?? \"\", newPath ?? \"\"].join(\"\\0\");\n\n// The hunk patch lists exactly the rows the renderer paints (it collapses everything else).\n// Walk it once: `@@` starts a hunk header row, ` ` is a context row, and a run of `-`/`+`\n// is one change block — unified stacks every line, split pairs them so the block is as tall\n// as its longer side.\nconst countRenderedRows = (hunks: string[]) => {\n const lines = hunks.join(\"\\n\").split(\"\\n\");\n let unifiedContentRows = 0;\n let splitContentRows = 0;\n let hunkRows = 0;\n let inHunk = false;\n let blockAdditions = 0;\n let blockDeletions = 0;\n\n const flushBlock = () => {\n unifiedContentRows += blockAdditions + blockDeletions;\n splitContentRows += Math.max(blockAdditions, blockDeletions);\n blockAdditions = 0;\n blockDeletions = 0;\n };\n\n for (const line of lines) {\n if (line.startsWith(\"@@\")) {\n flushBlock();\n hunkRows += 1;\n inHunk = true;\n } else if (!inHunk) {\n // Patch header (Index:, ===, ---, +++) before the first hunk — not rendered.\n } else if (line.startsWith(\"+\")) {\n blockAdditions += 1;\n } else if (line.startsWith(\"-\")) {\n blockDeletions += 1;\n } else if (line.startsWith(\" \")) {\n flushBlock();\n unifiedContentRows += 1;\n splitContentRows += 1;\n }\n }\n flushBlock();\n\n return { unifiedContentRows, splitContentRows, hunkRows };\n};\n\nconst computeDiffViewData = ({ original, modified, language, oldPath, newPath }: BuildDiffViewDataInput) => {\n const oldFileName = oldPath ?? newPath ?? FALLBACK_OLD_PATH;\n const newFileName = newPath ?? oldPath ?? FALLBACK_NEW_PATH;\n const fileLanguage = resolveDiffLanguage({ language, oldPath, newPath });\n\n // No uuid: @git-diff-view keys its internal File cache by uuid when one is given, so a\n // shared constant would make every diff reuse the first file's content. Omitting it keys\n // the cache by raw content, which is correct.\n const diffFile = generateDiffFile(oldFileName, original, newFileName, modified, fileLanguage, fileLanguage, {\n context: 3,\n });\n\n return {\n oldFile: {\n fileName: oldFileName,\n fileLang: fileLanguage,\n content: original,\n },\n newFile: {\n fileName: newFileName,\n fileLang: fileLanguage,\n content: modified,\n },\n hunks: diffFile._diffList,\n ...countRenderedRows(diffFile._diffList),\n } satisfies BuiltDiffViewData;\n};\n\nexport const buildDiffViewData = (input: BuildDiffViewDataInput): BuiltDiffViewData => {\n const key = getCacheKey(input);\n const cached = cache.get(key);\n if (cached) return cached;\n\n const data = computeDiffViewData(input);\n\n if (cache.size >= MAX_CACHE_ENTRIES) {\n const oldest = cache.keys().next().value;\n if (oldest !== undefined) cache.delete(oldest);\n }\n cache.set(key, data);\n\n return data;\n};\n","import { DiffModeEnum, DiffView } from \"@git-diff-view/react\";\nimport \"@git-diff-view/react/styles/diff-view.css\";\nimport { Box } from \"@chakra-ui/react\";\nimport { useRef } from \"react\";\nimport { buildDiffViewData, type DiffViewData } from \"./diff-view-adapter\";\n\nexport interface DiffEditorInput {\n original: string;\n modified: string;\n language?: string;\n oldPath?: string;\n newPath?: string;\n}\n\ninterface DiffEditorProps extends DiffEditorInput {\n sideBySide?: boolean;\n disableScroll?: boolean;\n data?: DiffViewData;\n}\n\nexport interface DiffEditorDataState {\n input: DiffEditorInput;\n data: DiffViewData;\n}\n\nconst areDiffEditorInputsEqual = (current: DiffEditorInput, next: DiffEditorInput) =>\n current.original === next.original &&\n current.modified === next.modified &&\n current.language === next.language &&\n current.oldPath === next.oldPath &&\n current.newPath === next.newPath;\n\nexport const resolveDiffEditorDataState = (\n current: DiffEditorDataState | null,\n input: DiffEditorInput,\n createData: () => DiffViewData,\n) => {\n if (current && areDiffEditorInputsEqual(current.input, input)) {\n return current;\n }\n\n return {\n input,\n data: createData(),\n };\n};\n\nexport function DiffEditor(props: DiffEditorProps) {\n const { original, modified, language, oldPath, newPath, sideBySide = false, disableScroll = true, data } = props;\n const dataStateRef = useRef<DiffEditorDataState | null>(null);\n const input = { original, modified, language, oldPath, newPath };\n\n dataStateRef.current = resolveDiffEditorDataState(\n dataStateRef.current,\n input,\n () =>\n data ??\n buildDiffViewData({\n original,\n modified,\n language,\n oldPath,\n newPath,\n }),\n );\n\n const mode = sideBySide ? DiffModeEnum.Split : DiffModeEnum.Unified;\n\n return (\n <Box\n height=\"100%\"\n width=\"100%\"\n position=\"relative\"\n zIndex=\"0\"\n overflow={disableScroll ? \"hidden\" : \"auto\"}\n bg=\"bg\"\n css={{\n \"& .gdv-root, & .gdv-view, & .gdv-file, & .gdv-content, & .gdv-hunk, & .gdv-line\": {\n background: \"var(--chakra-colors-bg)\",\n },\n \"& .gdv-root\": {\n border: \"none\",\n borderRadius: \"0\",\n },\n \"& .gdv-line-number\": {\n fontSize: \"11px\",\n },\n }}\n >\n <DiffView\n data={dataStateRef.current.data}\n diffViewMode={mode}\n diffViewTheme=\"dark\"\n diffViewHighlight={true}\n // No wrap: keeps every line one fixed-height row so the virtualizer's height estimate\n // stays exact, and avoids wrapped lines being misread. Long lines scroll horizontally\n // inside DiffView's own overflow-x container.\n diffViewWrap={false}\n diffViewFontSize={11}\n />\n </Box>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ //#region ../pstdio-file-types/src/index.ts
2
+ var e = {
3
+ avif: "image/avif",
4
+ bmp: "image/bmp",
5
+ gif: "image/gif",
6
+ heic: "image/heic",
7
+ ico: "image/x-icon",
8
+ jpeg: "image/jpeg",
9
+ jpg: "image/jpeg",
10
+ png: "image/png",
11
+ tif: "image/tiff",
12
+ tiff: "image/tiff",
13
+ webp: "image/webp"
14
+ }, t = Object.keys(e), n = (e) => {
15
+ let t = (e.split(/[\\/]/).pop() ?? e).split(".").pop();
16
+ return t ? t.toLowerCase() : "";
17
+ }, r = (t) => e[n(t)] ?? null, i = (e) => r(e) !== null, a = 1e3, o = /* @__PURE__ */ new Set([
18
+ "bun.lock",
19
+ "bun.lockb",
20
+ "package-lock.json",
21
+ "pnpm-lock.yaml",
22
+ "yarn.lock"
23
+ ]), s = /* @__PURE__ */ new Set([
24
+ ...t,
25
+ "pdf",
26
+ "zip",
27
+ "tar",
28
+ "gz",
29
+ "tgz",
30
+ "rar",
31
+ "7z",
32
+ "exe",
33
+ "dll",
34
+ "so",
35
+ "dylib",
36
+ "wasm",
37
+ "class",
38
+ "jar",
39
+ "mp3",
40
+ "mp4",
41
+ "mov",
42
+ "ogg",
43
+ "wav",
44
+ "webm",
45
+ "flac",
46
+ "ttf",
47
+ "otf",
48
+ "woff",
49
+ "woff2",
50
+ "eot"
51
+ ]), c = (e) => (e.additions ?? 0) + (e.deletions ?? 0), l = (e) => c(e) > a, u = (e) => {
52
+ let t = e.split(/[\\/]/).pop() ?? e;
53
+ return o.has(t) || t.endsWith(".min.js") || t.endsWith(".generated.ts");
54
+ }, d = (e) => {
55
+ let t = n(e);
56
+ return t.length > 0 && s.has(t);
57
+ }, f = i;
58
+ //#endregion
59
+ export { f as a, u as i, c as n, l as o, d as r, a as t };
60
+
61
+ //# sourceMappingURL=diff-size-Dydn_Uw5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-size-Dydn_Uw5.js","names":["imagePreviewMimeTypes","avif","bmp","gif","heic","ico","jpeg","jpg","png","tif","tiff","webp","const","imagePreviewExtensions","Object","keys","getFileExtension","filePath","fileName","split","pop","extension","toLowerCase","getImagePreviewMimeType","isImagePreviewPath","getFileExtension","imagePreviewExtensions","isImagePreviewPath","LARGE_DIFF_LINE_THRESHOLD","generatedDiffFileNames","Set","binaryDiffExtensions","getDiffLineCount","input","additions","deletions","oldContent","newContent","isLargeDiffContent","isGeneratedDiffPath","path","fileName","split","pop","has","endsWith","isBinaryDiffPath","ext","length","isImageDiffPath","imagePreviewMimeTypes","imagePreviewExtensions","getFileExtension","extension","filePath","getImagePreviewMimeType","isImagePreviewPath","LARGE_DIFF_LINE_THRESHOLD","generatedDiffFileNames","binaryDiffExtensions","getDiffLineCount","input","isLargeDiffContent","isGeneratedDiffPath","fileName","path","isBinaryDiffPath","ext","isImageDiffPath"],"sources":["../../pstdio-file-types/src/index.ts","../src/components/diff-viewer/diff-size.ts"],"sourcesContent":["export const imagePreviewMimeTypes = {\n avif: \"image/avif\",\n bmp: \"image/bmp\",\n gif: \"image/gif\",\n heic: \"image/heic\",\n ico: \"image/x-icon\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n png: \"image/png\",\n tif: \"image/tiff\",\n tiff: \"image/tiff\",\n webp: \"image/webp\",\n} as const;\n\nexport const imagePreviewExtensions = Object.keys(imagePreviewMimeTypes);\n\nexport const getFileExtension = (filePath: string) => {\n const fileName = filePath.split(/[\\\\/]/).pop() ?? filePath;\n const extension = fileName.split(\".\").pop();\n return extension ? extension.toLowerCase() : \"\";\n};\n\nexport const getImagePreviewMimeType = (filePath: string) => {\n const extension = getFileExtension(filePath);\n return imagePreviewMimeTypes[extension as keyof typeof imagePreviewMimeTypes] ?? null;\n};\n\nexport const isImagePreviewPath = (filePath: string) => getImagePreviewMimeType(filePath) !== null;\n","import { getFileExtension, imagePreviewExtensions, isImagePreviewPath } from \"pstdio-file-types\";\n\nexport const LARGE_DIFF_LINE_THRESHOLD = 1000;\n\nconst generatedDiffFileNames = new Set([\"bun.lock\", \"bun.lockb\", \"package-lock.json\", \"pnpm-lock.yaml\", \"yarn.lock\"]);\n\n// Extensions whose byte content cannot be meaningfully shown as a unified diff.\n// SVG is intentionally excluded — it is text-based XML and benefits from a line diff.\nconst binaryDiffExtensions = new Set([\n ...imagePreviewExtensions,\n \"pdf\",\n \"zip\",\n \"tar\",\n \"gz\",\n \"tgz\",\n \"rar\",\n \"7z\",\n \"exe\",\n \"dll\",\n \"so\",\n \"dylib\",\n \"wasm\",\n \"class\",\n \"jar\",\n \"mp3\",\n \"mp4\",\n \"mov\",\n \"ogg\",\n \"wav\",\n \"webm\",\n \"flac\",\n \"ttf\",\n \"otf\",\n \"woff\",\n \"woff2\",\n \"eot\",\n]);\n\nexport const getDiffLineCount = (input: {\n additions?: number;\n deletions?: number;\n oldContent?: string;\n newContent?: string;\n}) => {\n return (input.additions ?? 0) + (input.deletions ?? 0);\n};\n\nexport const isLargeDiffContent = (input: {\n additions?: number;\n deletions?: number;\n oldContent?: string;\n newContent?: string;\n}) => {\n return getDiffLineCount(input) > LARGE_DIFF_LINE_THRESHOLD;\n};\n\nexport const isGeneratedDiffPath = (path: string) => {\n const fileName = path.split(/[\\\\/]/).pop() ?? path;\n\n return generatedDiffFileNames.has(fileName) || fileName.endsWith(\".min.js\") || fileName.endsWith(\".generated.ts\");\n};\n\nexport const isBinaryDiffPath = (path: string) => {\n const ext = getFileExtension(path);\n return ext.length > 0 && binaryDiffExtensions.has(ext);\n};\n\nexport const isImageDiffPath = isImagePreviewPath;\n"],"mappings":";AAAA,IAAaA,IAAwB;CACnCC,MAAM;CACNC,KAAK;CACLC,KAAK;CACLC,MAAM;CACNC,KAAK;CACLC,MAAM;CACNC,KAAK;CACLC,KAAK;CACLC,KAAK;CACLC,MAAM;CACNC,MAAM;AACR,GAEaE,IAAyBC,OAAOC,KAAKf,CAAqB,GAE1DgB,KAAoBC,MAAqB;CAEpD,IAAMI,KADWJ,EAASE,MAAM,OAAO,CAAC,CAACC,IAAI,KAAKH,EAAAA,CACvBE,MAAM,GAAG,CAAC,CAACC,IAAI;CAC1C,OAAOC,IAAYA,EAAUC,YAAY,IAAI;AAC/C,GAEaC,KAA2BN,MAE/BjB,EADWgB,EAAiBC,CACNI,MAAoD,MAGtEG,KAAsBP,MAAqBM,EAAwBN,CAAQ,MAAM,MCzBjFW,IAA4B,KAEnCC,oBAAyB,IAAIC,IAAI;CAAC;CAAY;CAAa;CAAqB;CAAkB;AAAW,CAAC,GAI9GC,oBAAuB,IAAID,IAAI;CACnC,GAAGJ;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAK,CACN,GAEYM,KAAoBC,OAMvBA,EAAMC,aAAa,MAAMD,EAAME,aAAa,IAGzCG,KAAsBL,MAM1BD,EAAiBC,CAAK,IAAIL,GAGtBW,KAAuBC,MAAiB;CACnD,IAAMC,IAAWD,EAAKE,MAAM,OAAO,CAAC,CAACC,IAAI,KAAKH;CAE9C,OAAOX,EAAuBe,IAAIH,CAAQ,KAAKA,EAASI,SAAS,SAAS,KAAKJ,EAASI,SAAS,eAAe;AAClH,GAEaC,KAAoBN,MAAiB;CAChD,IAAMO,IAAMtB,EAAiBe,CAAI;CACjC,OAAOO,EAAIC,SAAS,KAAKjB,EAAqBa,IAAIG,CAAG;AACvD,GAEaE,IAAkBtB"}