@pstdio/ui 0.26.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.
- package/dist/EquationComponent-DDd5UoIP.js +65 -0
- package/dist/EquationComponent-DDd5UoIP.js.map +1 -0
- package/dist/MermaidComponent-DGDnQ6pb.js +90 -0
- package/dist/MermaidComponent-DGDnQ6pb.js.map +1 -0
- package/dist/browser-storage-C_ipoNwP.js +37 -0
- package/dist/browser-storage-C_ipoNwP.js.map +1 -0
- package/dist/chat-ui.d.ts +688 -2
- package/dist/chat-ui.js +3271 -2848
- package/dist/chat-ui.js.map +1 -1
- package/dist/data-table-stats-row-DNJG8tLZ.js +415 -0
- package/dist/data-table-stats-row-DNJG8tLZ.js.map +1 -0
- package/dist/data-table.d.ts +143 -2
- package/dist/data-table.js +1216 -1188
- package/dist/data-table.js.map +1 -1
- package/dist/diff-bubble-DZsarmSG.js +61 -0
- package/dist/diff-bubble-DZsarmSG.js.map +1 -0
- package/dist/diff-drawer-45rpk3aq.js +776 -0
- package/dist/diff-drawer-45rpk3aq.js.map +1 -0
- package/dist/diff-editor-CGpeyoCE.js +124 -0
- package/dist/diff-editor-CGpeyoCE.js.map +1 -0
- package/dist/diff-size-Dydn_Uw5.js +61 -0
- package/dist/diff-size-Dydn_Uw5.js.map +1 -0
- package/dist/diff-viewer-hGkaF_zW.js +558 -0
- package/dist/diff-viewer-hGkaF_zW.js.map +1 -0
- package/dist/diff.d.ts +128 -2
- package/dist/diff.js +163 -1302
- package/dist/diff.js.map +1 -1
- package/dist/empty-state-3mVV_pV-.js +38 -0
- package/dist/empty-state-3mVV_pV-.js.map +1 -0
- package/dist/file-change-badge-0QFNv82B.js +64 -0
- package/dist/file-change-badge-0QFNv82B.js.map +1 -0
- package/dist/index-BfFLdci8.d.ts +189 -0
- package/dist/index-Dd6e8lU_.d.ts +61 -0
- package/dist/index-DlmvvQ6x.d.ts +143 -0
- package/dist/index.d.ts +1508 -40
- package/dist/index.js +3167 -2707
- package/dist/index.js.map +1 -1
- package/dist/kanban-renderer.d.ts +337 -2
- package/dist/kanban-renderer.js +1413 -1085
- package/dist/kanban-renderer.js.map +1 -1
- package/dist/list-row-De9R2zKU.js +1008 -0
- package/dist/list-row-De9R2zKU.js.map +1 -0
- package/dist/mermaid-renderer-DImi0fDp.js +553 -0
- package/dist/mermaid-renderer-DImi0fDp.js.map +1 -0
- package/dist/mermaid.d.ts +12 -2
- package/dist/mermaid.js +2 -5
- package/dist/monaco-browser-CLRPSE4-.js +14 -0
- package/dist/monaco-browser-CLRPSE4-.js.map +1 -0
- package/dist/param-editor-IJzw1cA2.js +225 -0
- package/dist/param-editor-IJzw1cA2.js.map +1 -0
- package/dist/param-editor-field-DscIjv8s.js +2368 -0
- package/dist/param-editor-field-DscIjv8s.js.map +1 -0
- package/dist/param-editor.d.ts +407 -2
- package/dist/param-editor.js +3 -47
- package/dist/prism-pSHJejZx.js +646 -0
- package/dist/prism-pSHJejZx.js.map +1 -0
- package/dist/radio-CiFrDN6O.js +54 -0
- package/dist/radio-CiFrDN6O.js.map +1 -0
- package/dist/resource-badge-95WPVlZf.d.ts +76 -0
- package/dist/rich-text-DtQpHBlX.js +7018 -0
- package/dist/rich-text-DtQpHBlX.js.map +1 -0
- package/dist/rich-text.d.ts +3 -2
- package/dist/rich-text.js +2 -429
- package/dist/rolldown-runtime-Dy4uBu1J.js +11 -0
- package/dist/scroll-area-Cr1lNXAr.js +100 -0
- package/dist/scroll-area-Cr1lNXAr.js.map +1 -0
- package/dist/slider-hwHYe98I.js +423 -0
- package/dist/slider-hwHYe98I.js.map +1 -0
- package/dist/style.css +2 -1
- package/dist/terminal.d.ts +203 -2
- package/dist/terminal.js +324 -360
- package/dist/terminal.js.map +1 -1
- package/dist/theme-kSkOHzbV.js +2852 -0
- package/dist/theme-kSkOHzbV.js.map +1 -0
- package/dist/theme-preference-pzfuK5cH.js +101 -0
- package/dist/theme-preference-pzfuK5cH.js.map +1 -0
- package/dist/theme.d.ts +3 -2
- package/dist/theme.js +2 -15
- package/dist/tree-list-BUfDQz3v.js +1449 -0
- package/dist/tree-list-BUfDQz3v.js.map +1 -0
- package/dist/types-yjKBk07w.d.ts +161 -0
- package/dist/workspace-badge-9g78pXHS.js +245 -0
- package/dist/workspace-badge-9g78pXHS.js.map +1 -0
- package/dist/workspace-badge-CkJ_jTQw.d.ts +75 -0
- package/dist-monaco/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/dist-monaco/assets/css.worker-DFdt6_zu.js +89 -0
- package/dist-monaco/assets/editor.worker-O-CH8JUO.js +26 -0
- package/dist-monaco/assets/html.worker-JUzsMP-j.js +502 -0
- package/dist-monaco/assets/json.worker-B4dEhy0e.js +58 -0
- package/dist-monaco/assets/ts.worker-CmEKzkmF.js +67734 -0
- package/dist-monaco/monaco.css +1 -0
- package/dist-monaco/monaco.js +1201 -0
- package/package.json +26 -13
- package/dist/EquationComponent-DeDYHvqY.js +0 -62
- package/dist/EquationComponent-DeDYHvqY.js.map +0 -1
- package/dist/MermaidComponent-X__B6qib.js +0 -60
- package/dist/MermaidComponent-X__B6qib.js.map +0 -1
- package/dist/activity-timeline-BynMjXSB.js +0 -283
- package/dist/activity-timeline-BynMjXSB.js.map +0 -1
- package/dist/alert-ubcrW24X.js +0 -33
- package/dist/alert-ubcrW24X.js.map +0 -1
- package/dist/browser-storage-BinyFNJX.js +0 -40
- package/dist/browser-storage-BinyFNJX.js.map +0 -1
- package/dist/components/activity/activity-avatar.d.ts +0 -9
- package/dist/components/activity/activity-comment.d.ts +0 -27
- package/dist/components/activity/activity-composer.d.ts +0 -18
- package/dist/components/activity/activity-event.d.ts +0 -12
- package/dist/components/activity/activity-root.d.ts +0 -15
- package/dist/components/activity/activity-timeline.d.ts +0 -6
- package/dist/components/activity/activity.types.d.ts +0 -5
- package/dist/components/activity/index.d.ts +0 -25
- package/dist/components/chat-ui/components/ai-conversation.d.ts +0 -603
- package/dist/components/chat-ui/components/ai-message.d.ts +0 -91
- package/dist/components/chat-ui/components/ai-response.d.ts +0 -5
- package/dist/components/chat-ui/components/approval-prompt.d.ts +0 -8
- package/dist/components/chat-ui/components/attachment-list.d.ts +0 -23
- package/dist/components/chat-ui/components/auto-scroll.d.ts +0 -37
- package/dist/components/chat-ui/components/chat-history-story.d.ts +0 -14
- package/dist/components/chat-ui/components/chat-input-actions.d.ts +0 -13
- package/dist/components/chat-ui/components/chat-input-attachments.d.ts +0 -12
- package/dist/components/chat-ui/components/chat-input-history.d.ts +0 -6
- package/dist/components/chat-ui/components/chat-input-question-prompt.d.ts +0 -36
- package/dist/components/chat-ui/components/chat-input.d.ts +0 -33
- package/dist/components/chat-ui/components/chat-message-animation.d.ts +0 -22
- package/dist/components/chat-ui/components/chat-message-list-items.d.ts +0 -17
- package/dist/components/chat-ui/components/chat-message-list.d.ts +0 -12
- package/dist/components/chat-ui/components/chat-panel-composer.d.ts +0 -49
- package/dist/components/chat-ui/components/chat-panel-sticky-user-message.d.ts +0 -13
- package/dist/components/chat-ui/components/chat-panel.d.ts +0 -45
- package/dist/components/chat-ui/components/chat-skeleton.d.ts +0 -1
- package/dist/components/chat-ui/components/composer-constants.d.ts +0 -1
- package/dist/components/chat-ui/components/conversation-browse.d.ts +0 -22
- package/dist/components/chat-ui/components/message-action-panel.d.ts +0 -10
- package/dist/components/chat-ui/components/message-parts-renderer.d.ts +0 -13
- package/dist/components/chat-ui/components/message-types.d.ts +0 -116
- package/dist/components/chat-ui/components/model-swap-separator.d.ts +0 -5
- package/dist/components/chat-ui/components/queued-follow-up-list-state.d.ts +0 -4
- package/dist/components/chat-ui/components/queued-follow-up-list.d.ts +0 -11
- package/dist/components/chat-ui/components/send-button.d.ts +0 -7
- package/dist/components/chat-ui/components/timeline-title.d.ts +0 -6
- package/dist/components/chat-ui/components/timeline-tool-blocks.d.ts +0 -14
- package/dist/components/chat-ui/components/timeline.d.ts +0 -113
- package/dist/components/chat-ui/components/tool-invocation-timeline.d.ts +0 -8
- package/dist/components/chat-ui/components/use-chat-input-history.d.ts +0 -16
- package/dist/components/chat-ui/components/working-indicator.d.ts +0 -9
- package/dist/components/chat-ui/components/workspace-hub.d.ts +0 -19
- package/dist/components/chat-ui/index.d.ts +0 -19
- package/dist/components/chat-ui/mocks/library/index.d.ts +0 -10
- package/dist/components/chat-ui/performance/chat-mount-metrics.d.ts +0 -37
- package/dist/components/chat-ui/performance/chat-panel.perf.d.ts +0 -18
- package/dist/components/chat-ui/performance/chat-performance-fixtures.d.ts +0 -28
- package/dist/components/chat-ui/performance/chat-performance-panel.d.ts +0 -23
- package/dist/components/chat-ui/performance/chat-performance-story-utils.d.ts +0 -30
- package/dist/components/chat-ui/tool-rendering/apply-patch-renderer.d.ts +0 -2
- package/dist/components/chat-ui/tool-rendering/build-timeline.d.ts +0 -13
- package/dist/components/chat-ui/tool-rendering/default-renderers.d.ts +0 -13
- package/dist/components/chat-ui/tool-rendering/edit-renderer.d.ts +0 -2
- package/dist/components/chat-ui/tool-rendering/index.d.ts +0 -3
- package/dist/components/chat-ui/tool-rendering/question-prompt.d.ts +0 -9
- package/dist/components/chat-ui/tool-rendering/question-renderer.d.ts +0 -10
- package/dist/components/chat-ui/tool-rendering/shared.d.ts +0 -53
- package/dist/components/chat-ui/tool-rendering/standard-renderers.d.ts +0 -7
- package/dist/components/chat-ui/tool-rendering/todowrite-renderer.d.ts +0 -10
- package/dist/components/chat-ui/tool-rendering/types.d.ts +0 -12
- package/dist/components/chat-ui/utils/diff.d.ts +0 -21
- package/dist/components/chat-ui/utils/editor-state.d.ts +0 -1
- package/dist/components/chat-ui/utils/get-icon.d.ts +0 -36
- package/dist/components/chat-ui/utils/tool-name.d.ts +0 -2
- package/dist/components/command-palette/index.d.ts +0 -4
- package/dist/components/command-palette/palette-filter.d.ts +0 -23
- package/dist/components/command-palette/palette-list.d.ts +0 -11
- package/dist/components/command-palette/palette-shortcut.d.ts +0 -12
- package/dist/components/command-palette/palette.d.ts +0 -48
- package/dist/components/data-table/build-columns.d.ts +0 -16
- package/dist/components/data-table/categorical-color-cell.d.ts +0 -8
- package/dist/components/data-table/color-cell-style.d.ts +0 -13
- package/dist/components/data-table/color-scale-cell.d.ts +0 -7
- package/dist/components/data-table/data-table-column-menu.d.ts +0 -17
- package/dist/components/data-table/data-table-header.d.ts +0 -12
- package/dist/components/data-table/data-table-row-display.d.ts +0 -11
- package/dist/components/data-table/data-table-skeleton.d.ts +0 -13
- package/dist/components/data-table/data-table-stat-chart.d.ts +0 -21
- package/dist/components/data-table/data-table-state.d.ts +0 -27
- package/dist/components/data-table/data-table-stats-row.d.ts +0 -11
- package/dist/components/data-table/data-table-stats.d.ts +0 -19
- package/dist/components/data-table/data-table-table-parts.d.ts +0 -22
- package/dist/components/data-table/data-table.d.ts +0 -2
- package/dist/components/data-table/data-table.story-descriptions.d.ts +0 -6
- package/dist/components/data-table/data-table.story-fixtures.d.ts +0 -6
- package/dist/components/data-table/edit-mode-data-table-body.d.ts +0 -30
- package/dist/components/data-table/edit-mode-data-table-cell.d.ts +0 -16
- package/dist/components/data-table/edit-mode-data-table-editors.d.ts +0 -19
- package/dist/components/data-table/edit-mode-data-table-header.d.ts +0 -24
- package/dist/components/data-table/edit-mode-data-table-selection.d.ts +0 -12
- package/dist/components/data-table/edit-mode-data-table.d.ts +0 -2
- package/dist/components/data-table/edit-mode-story.d.ts +0 -5
- package/dist/components/data-table/friendly-json-display.d.ts +0 -31
- package/dist/components/data-table/helpers.d.ts +0 -10
- package/dist/components/data-table/index.d.ts +0 -7
- package/dist/components/data-table/json-cell.d.ts +0 -6
- package/dist/components/data-table/pagination-footer.d.ts +0 -11
- package/dist/components/data-table/selection-toolbar.d.ts +0 -11
- package/dist/components/data-table/types.d.ts +0 -117
- package/dist/components/diff-viewer/build-changed-files-tree.d.ts +0 -4
- package/dist/components/diff-viewer/code-editor.d.ts +0 -45
- package/dist/components/diff-viewer/diff-bubble.d.ts +0 -14
- package/dist/components/diff-viewer/diff-card-body.d.ts +0 -60
- package/dist/components/diff-viewer/diff-card-content.d.ts +0 -23
- package/dist/components/diff-viewer/diff-card-load-state.d.ts +0 -9
- package/dist/components/diff-viewer/diff-card.d.ts +0 -46
- package/dist/components/diff-viewer/diff-drawer-empty-state.d.ts +0 -1
- package/dist/components/diff-viewer/diff-drawer-height.d.ts +0 -10
- package/dist/components/diff-viewer/diff-drawer-scroll.d.ts +0 -28
- package/dist/components/diff-viewer/diff-drawer.d.ts +0 -29
- package/dist/components/diff-viewer/diff-editor.d.ts +0 -20
- package/dist/components/diff-viewer/diff-size.d.ts +0 -16
- package/dist/components/diff-viewer/diff-view-adapter.d.ts +0 -27
- package/dist/components/diff-viewer/diff-viewer-options-menu.d.ts +0 -16
- package/dist/components/diff-viewer/diff-viewer.d.ts +0 -14
- package/dist/components/diff-viewer/diff-viewer.store.d.ts +0 -21
- package/dist/components/diff-viewer/file-change-badge.d.ts +0 -3
- package/dist/components/diff-viewer/file-list-panel.d.ts +0 -18
- package/dist/components/diff-viewer/index.d.ts +0 -9
- package/dist/components/diff-viewer/monaco-browser.d.ts +0 -1
- package/dist/components/diff-viewer/types.d.ts +0 -13
- package/dist/components/diff-viewer/use-selected-diff-scroll.d.ts +0 -23
- package/dist/components/file-browser/column-file-browser.d.ts +0 -20
- package/dist/components/internal/performance-panel.d.ts +0 -40
- package/dist/components/internal/style-guide.d.ts +0 -14
- package/dist/components/internal/token-editor-controls.d.ts +0 -8
- package/dist/components/internal/token-editor-data.d.ts +0 -40
- package/dist/components/internal/token-editor-state.d.ts +0 -22
- package/dist/components/kanban-renderer/collection-badge.d.ts +0 -7
- package/dist/components/kanban-renderer/display-menu.d.ts +0 -16
- package/dist/components/kanban-renderer/filter-menu.d.ts +0 -12
- package/dist/components/kanban-renderer/index.d.ts +0 -19
- package/dist/components/kanban-renderer/kanban-renderer-attribute-badge.d.ts +0 -7
- package/dist/components/kanban-renderer/kanban-renderer-badge-helpers.d.ts +0 -46
- package/dist/components/kanban-renderer/kanban-renderer-board-column-header.d.ts +0 -8
- package/dist/components/kanban-renderer/kanban-renderer-board-group-section.d.ts +0 -17
- package/dist/components/kanban-renderer/kanban-renderer-board-move.d.ts +0 -21
- package/dist/components/kanban-renderer/kanban-renderer-board.d.ts +0 -49
- package/dist/components/kanban-renderer/kanban-renderer-card.d.ts +0 -17
- package/dist/components/kanban-renderer/kanban-renderer-content.d.ts +0 -27
- package/dist/components/kanban-renderer/kanban-renderer-create-dialog.d.ts +0 -12
- package/dist/components/kanban-renderer/kanban-renderer-create-field.d.ts +0 -10
- package/dist/components/kanban-renderer/kanban-renderer-enum-helpers.d.ts +0 -10
- package/dist/components/kanban-renderer/kanban-renderer-grouping.d.ts +0 -23
- package/dist/components/kanban-renderer/kanban-renderer-helpers.d.ts +0 -58
- package/dist/components/kanban-renderer/kanban-renderer-list-items.d.ts +0 -25
- package/dist/components/kanban-renderer/kanban-renderer-list.d.ts +0 -43
- package/dist/components/kanban-renderer/kanban-renderer-story-fixtures.d.ts +0 -14
- package/dist/components/kanban-renderer/kanban-renderer-toolbar.d.ts +0 -15
- package/dist/components/kanban-renderer/kanban-renderer-view-bar.d.ts +0 -14
- package/dist/components/kanban-renderer/kanban-renderer-views.d.ts +0 -12
- package/dist/components/kanban-renderer/kanban-renderer.d.ts +0 -43
- package/dist/components/kanban-renderer/types.d.ts +0 -159
- package/dist/components/kanban-renderer/use-kanban-renderer-store.d.ts +0 -78
- package/dist/components/kanban-renderer/use-resolved-attributes.d.ts +0 -14
- package/dist/components/layout/header.d.ts +0 -7
- package/dist/components/layout/horizontal-menu-stack.d.ts +0 -6
- package/dist/components/layout/index.d.ts +0 -8
- package/dist/components/layout/item-section.d.ts +0 -11
- package/dist/components/layout/panel-header.constants.d.ts +0 -3
- package/dist/components/layout/resizable-split-layout.d.ts +0 -22
- package/dist/components/layout/resizable-split-layout.geometry.d.ts +0 -56
- package/dist/components/layout/resizable-split-layout.handle.d.ts +0 -25
- package/dist/components/layout/resizable-split-layout.panels.d.ts +0 -29
- package/dist/components/layout/resizable-split-layout.root-size.d.ts +0 -3
- package/dist/components/list-row/list-row-actions.d.ts +0 -11
- package/dist/components/list-row/list-row-chrome.d.ts +0 -11
- package/dist/components/list-row/list-row-content.d.ts +0 -17
- package/dist/components/list-row/list-row-menu.d.ts +0 -12
- package/dist/components/list-row/list-row-root-props.d.ts +0 -34
- package/dist/components/list-row/list-row.d.ts +0 -2
- package/dist/components/list-row/list-row.types.d.ts +0 -109
- package/dist/components/list-row/searchable-action-menu.d.ts +0 -6
- package/dist/components/mermaid-renderer/download-png.d.ts +0 -7
- package/dist/components/mermaid-renderer/index.d.ts +0 -2
- package/dist/components/mermaid-renderer/mermaid-error-state.d.ts +0 -6
- package/dist/components/mermaid-renderer/mermaid-fixtures.d.ts +0 -9
- package/dist/components/mermaid-renderer/mermaid-fullscreen.d.ts +0 -10
- package/dist/components/mermaid-renderer/mermaid-renderer.d.ts +0 -8
- package/dist/components/mermaid-renderer/mermaid-svg-view.d.ts +0 -12
- package/dist/components/mermaid-renderer/mermaid-toolbar.d.ts +0 -12
- package/dist/components/mermaid-renderer/mermaid-zoom.d.ts +0 -6
- package/dist/components/mermaid-renderer/svg-data-url.d.ts +0 -6
- package/dist/components/mermaid-renderer/use-mermaid-render.d.ts +0 -5
- package/dist/components/notification-center/index.d.ts +0 -2
- package/dist/components/notification-center/notification-center.d.ts +0 -2
- package/dist/components/notification-center/notification-center.types.d.ts +0 -37
- package/dist/components/overlays/attached-menu.d.ts +0 -6
- package/dist/components/overlays/attached-panel.d.ts +0 -9
- package/dist/components/overlays/attachment-chip.d.ts +0 -13
- package/dist/components/overlays/bubble-button.d.ts +0 -10
- package/dist/components/overlays/bubble-panel.d.ts +0 -18
- package/dist/components/overlays/delete-confirmation-modal.d.ts +0 -13
- package/dist/components/overlays/dialog-accept-shortcut.d.ts +0 -12
- package/dist/components/overlays/index.d.ts +0 -17
- package/dist/components/overlays/repo-picker-dialog.d.ts +0 -25
- package/dist/components/overlays/resource-context-menu.d.ts +0 -35
- package/dist/components/overlays/search-modal-content.d.ts +0 -20
- package/dist/components/overlays/searchable-menu-input.d.ts +0 -9
- package/dist/components/overlays/searchable-menu.d.ts +0 -65
- package/dist/components/param-editor/index.d.ts +0 -31
- package/dist/components/param-editor/inputs/action-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/anchor-grid-input.d.ts +0 -12
- package/dist/components/param-editor/inputs/anchor-grid.d.ts +0 -4
- package/dist/components/param-editor/inputs/boolean-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/color-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/date-input.d.ts +0 -16
- package/dist/components/param-editor/inputs/file-upload-input.d.ts +0 -15
- package/dist/components/param-editor/inputs/file-upload-value.d.ts +0 -7
- package/dist/components/param-editor/inputs/horizontal-text-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/markdown-input.d.ts +0 -13
- package/dist/components/param-editor/inputs/number-input.d.ts +0 -18
- package/dist/components/param-editor/inputs/numeric-value.d.ts +0 -6
- package/dist/components/param-editor/inputs/range-input.d.ts +0 -18
- package/dist/components/param-editor/inputs/range-value.d.ts +0 -5
- package/dist/components/param-editor/inputs/resource-input-chips.d.ts +0 -15
- package/dist/components/param-editor/inputs/resource-input.d.ts +0 -20
- package/dist/components/param-editor/inputs/segmented-input.d.ts +0 -15
- package/dist/components/param-editor/inputs/selection-input.d.ts +0 -27
- package/dist/components/param-editor/inputs/selection-menu.d.ts +0 -39
- package/dist/components/param-editor/inputs/slider-marks.d.ts +0 -5
- package/dist/components/param-editor/inputs/text-input.d.ts +0 -14
- package/dist/components/param-editor/inputs/vector-input.d.ts +0 -17
- package/dist/components/param-editor/inputs/vector-value.d.ts +0 -7
- package/dist/components/param-editor/param-editor-advanced-field.d.ts +0 -14
- package/dist/components/param-editor/param-editor-control-fixtures.d.ts +0 -24
- package/dist/components/param-editor/param-editor-control-item.d.ts +0 -15
- package/dist/components/param-editor/param-editor-control-list.d.ts +0 -5
- package/dist/components/param-editor/param-editor-field-label.d.ts +0 -1
- package/dist/components/param-editor/param-editor-field.d.ts +0 -13
- package/dist/components/param-editor/param-editor-horizontal.d.ts +0 -11
- package/dist/components/param-editor/param-editor-inline-group.d.ts +0 -5
- package/dist/components/param-editor/param-editor-label.d.ts +0 -7
- package/dist/components/param-editor/param-editor-presentation.d.ts +0 -3
- package/dist/components/param-editor/param-editor-read-only-field.d.ts +0 -9
- package/dist/components/param-editor/param-editor-read-only-value.d.ts +0 -8
- package/dist/components/param-editor/param-editor-row.d.ts +0 -17
- package/dist/components/param-editor/param-editor-section.d.ts +0 -17
- package/dist/components/param-editor/param-editor.d.ts +0 -12
- package/dist/components/param-editor/param-editor.types.d.ts +0 -31
- package/dist/components/param-editor/resolve-param-value.d.ts +0 -2
- package/dist/components/primitives/alert.d.ts +0 -9
- package/dist/components/primitives/breadcrumb.d.ts +0 -20
- package/dist/components/primitives/checkbox.d.ts +0 -8
- package/dist/components/primitives/chip.d.ts +0 -4
- package/dist/components/primitives/content-placeholder.d.ts +0 -6
- package/dist/components/primitives/empty-state.d.ts +0 -12
- package/dist/components/primitives/error-boundary.d.ts +0 -26
- package/dist/components/primitives/glyph-icon.d.ts +0 -16
- package/dist/components/primitives/icon-color-picker.d.ts +0 -15
- package/dist/components/primitives/icon-options.d.ts +0 -301
- package/dist/components/primitives/index.d.ts +0 -39
- package/dist/components/primitives/info-card.d.ts +0 -12
- package/dist/components/primitives/integration-card.d.ts +0 -12
- package/dist/components/primitives/number-input.d.ts +0 -6
- package/dist/components/primitives/radio.d.ts +0 -8
- package/dist/components/primitives/resource-badge.d.ts +0 -64
- package/dist/components/primitives/scroll-area.d.ts +0 -17
- package/dist/components/primitives/segmented-control.d.ts +0 -20
- package/dist/components/primitives/session-indicator.d.ts +0 -15
- package/dist/components/primitives/simple-card.d.ts +0 -5
- package/dist/components/primitives/slider.d.ts +0 -5
- package/dist/components/primitives/switch.d.ts +0 -15
- package/dist/components/primitives/tag-swatch.d.ts +0 -10
- package/dist/components/primitives/toaster.d.ts +0 -3
- package/dist/components/primitives/tooltip.d.ts +0 -11
- package/dist/components/primitives/workspace-badge.d.ts +0 -23
- package/dist/components/rich-text/collaborative-markdown-editor/awareness-cursors.d.ts +0 -5
- package/dist/components/rich-text/collaborative-markdown-editor/collaborative-markdown-editor.d.ts +0 -9
- package/dist/components/rich-text/index.d.ts +0 -19
- package/dist/components/rich-text/lazy-markdown-editor.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/markdown-editor-scrolling.play.d.ts +0 -4
- package/dist/components/rich-text/markdown-editor/markdown-editor.d.ts +0 -17
- package/dist/components/rich-text/markdown-editor/markdown-table.story-fixture.d.ts +0 -3
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSectionNavigationPlugin.d.ts +0 -8
- package/dist/components/rich-text/markdown-editor/plugins/MarkdownSlashCommandPlugin.d.ts +0 -1
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
- package/dist/components/rich-text/markdown-editor/plugins/markdown-history-plugin.d.ts +0 -1
- package/dist/components/rich-text/markdown-editor/plugins/markdown-section-navigation.d.ts +0 -20
- package/dist/components/rich-text/prompt-input/commands.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/events.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/CommentPlugin.d.ts +0 -1
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentCommands.d.ts +0 -3
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/hooks/useCommentSchema.d.ts +0 -1
- package/dist/components/rich-text/prompt-input/plugins/CommentPlugin/nodes/CommentNode/CommentNode.d.ts +0 -16
- package/dist/components/rich-text/prompt-input/plugins/ImperativeAPIPlugin.d.ts +0 -7
- package/dist/components/rich-text/prompt-input/plugins/KeyboardShortcutPlugin.d.ts +0 -6
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuOption.d.ts +0 -12
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/ReferenceMenuPlugin.d.ts +0 -11
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenu.d.ts +0 -9
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/components/ReferenceMenu/ReferenceMenuItem.d.ts +0 -12
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/constants.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/hooks/useContextLookup.d.ts +0 -14
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/checkForTriggers.d.ts +0 -9
- package/dist/components/rich-text/prompt-input/plugins/ReferenceMenuPlugin/utils/getSortedMenuOptions.d.ts +0 -2
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/ReferencePlugin.d.ts +0 -7
- package/dist/components/rich-text/prompt-input/plugins/ReferencePlugin/nodes/ReferenceNode/ReferenceNode.d.ts +0 -25
- package/dist/components/rich-text/prompt-input/plugins/keyboard-shortcuts.d.ts +0 -11
- package/dist/components/rich-text/prompt-input/prompt-input.d.ts +0 -27
- package/dist/components/rich-text/prompt-input/theme/prompt-input-theme.d.ts +0 -3
- package/dist/components/rich-text/prompt-input/utils.d.ts +0 -22
- package/dist/components/rich-text/resource-activity-feed/resource-activity-feed.d.ts +0 -58
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkNode.d.ts +0 -21
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/ReferenceLinkTransformer.d.ts +0 -2
- package/dist/components/rich-text/rich-message/plugins/ReferenceLinkPlugin/index.d.ts +0 -2
- package/dist/components/rich-text/rich-message/rich-message.d.ts +0 -10
- package/dist/components/rich-text/shared/components/content-editable.d.ts +0 -9
- package/dist/components/rich-text/shared/components/default-rich-text-components.d.ts +0 -3
- package/dist/components/rich-text/shared/editor-config.d.ts +0 -5
- package/dist/components/rich-text/shared/lexical-code.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-ast.d.ts +0 -7
- package/dist/components/rich-text/shared/markdown-codec.d.ts +0 -3
- package/dist/components/rich-text/shared/markdown-export.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-import.d.ts +0 -2
- package/dist/components/rich-text/shared/markdown-inline.d.ts +0 -5
- package/dist/components/rich-text/shared/markdown-source-document.d.ts +0 -7
- package/dist/components/rich-text/shared/markdown-source-links.d.ts +0 -11
- package/dist/components/rich-text/shared/markdown-source-map.d.ts +0 -10
- package/dist/components/rich-text/shared/markdown-table.d.ts +0 -41
- package/dist/components/rich-text/shared/markdown-url-context.d.ts +0 -9
- package/dist/components/rich-text/shared/markdown-url.d.ts +0 -3
- package/dist/components/rich-text/shared/nodes/DataTableNode.d.ts +0 -24
- package/dist/components/rich-text/shared/nodes/MarkdownImageNode.d.ts +0 -35
- package/dist/components/rich-text/shared/nodes/MarkdownLinkNode.d.ts +0 -18
- package/dist/components/rich-text/shared/nodes/RawHtmlNode.d.ts +0 -31
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockActionsPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeBlockPlugin.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/CodePlugin/CodeHighlightingPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationComponent.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationNode.d.ts +0 -26
- package/dist/components/rich-text/shared/plugins/EquationPlugin/EquationPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/EquationPlugin/KatexRenderer.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/FloatingTextFormatToolbarPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/floating-toolbar-buttons.d.ts +0 -18
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/index.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/resolve-block-type.d.ts +0 -17
- package/dist/components/rich-text/shared/plugins/FloatingTextFormatToolbarPlugin/should-show-floating-toolbar.d.ts +0 -12
- package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/HorizontalRuleNode.d.ts +0 -13
- package/dist/components/rich-text/shared/plugins/HorizontalRulePlugin/horizontalRule.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkEditorPlugin.d.ts +0 -4
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/LinkPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/commands.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/index.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/link-editor-content.d.ts +0 -18
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/getSelectedNode.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/link-edit-state.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/selection-link-url.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/setFloatingElemPos.d.ts +0 -1
- package/dist/components/rich-text/shared/plugins/LinkEditorPlugin/utils/url.d.ts +0 -2
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidComponent.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/MermaidPlugin/MermaidNode.d.ts +0 -23
- package/dist/components/rich-text/shared/plugins/StateUpdatePlugin.d.ts +0 -6
- package/dist/components/rich-text/shared/plugins/ToggleEditablePlugin.d.ts +0 -3
- package/dist/components/rich-text/shared/plugins/TreeViewPlugin/TreeViewPlugin.d.ts +0 -1
- package/dist/components/rich-text/shared/prism-global.d.ts +0 -2
- package/dist/components/rich-text/shared/transformers/markdown-transformers-test-utils.d.ts +0 -3
- package/dist/components/rich-text/shared/transformers/markdown-transformers.d.ts +0 -16
- package/dist/components/rich-text/shared/types/rich-text-components.d.ts +0 -15
- package/dist/components/rich-text/theme/rich-text-theme.d.ts +0 -3
- package/dist/components/rich-text/types.d.ts +0 -8
- package/dist/components/rich-text/utils/inferResourceType.d.ts +0 -1
- package/dist/components/rich-text/utils/markdown.d.ts +0 -5
- package/dist/components/rich-text/utils/mediaType.d.ts +0 -1
- package/dist/components/sidenav/sidenav-footer.d.ts +0 -6
- package/dist/components/sidenav/sidenav-header.d.ts +0 -6
- package/dist/components/sidenav/sidenav.d.ts +0 -2
- package/dist/components/sidenav/sidenav.store.d.ts +0 -49
- package/dist/components/sidenav/sidenav.types.d.ts +0 -31
- package/dist/components/tab-strip/tab-visibility-filter.d.ts +0 -22
- package/dist/components/tab-strip/tab-visibility.store.d.ts +0 -41
- package/dist/components/tab-strip/window-tabs.d.ts +0 -15
- package/dist/components/tab-strip/window-title-bar.d.ts +0 -6
- package/dist/components/tag-editor/index.d.ts +0 -8
- package/dist/components/tag-editor/tag-editor-heading.d.ts +0 -11
- package/dist/components/tag-editor/tag-editor-row.d.ts +0 -20
- package/dist/components/tag-editor/tag-editor-save-bar.d.ts +0 -13
- package/dist/components/tag-editor/tag-editor.d.ts +0 -2
- package/dist/components/tag-editor/tag-editor.types.d.ts +0 -57
- package/dist/components/tag-editor/tag-settings-panel.d.ts +0 -30
- package/dist/components/terminal/bind-session.d.ts +0 -33
- package/dist/components/terminal/index.d.ts +0 -6
- package/dist/components/terminal/scripted-bridge.d.ts +0 -35
- package/dist/components/terminal/terminal-contract.d.ts +0 -22
- package/dist/components/terminal/terminal-theme.d.ts +0 -12
- package/dist/components/terminal/terminal.d.ts +0 -56
- package/dist/components/terminal/types.d.ts +0 -35
- package/dist/components/terminal/use-terminal-session.d.ts +0 -21
- package/dist/components/tree-list/tree-list-background.d.ts +0 -8
- package/dist/components/tree-list/tree-list-drag-provider.d.ts +0 -13
- package/dist/components/tree-list/tree-list-drag.d.ts +0 -7
- package/dist/components/tree-list/tree-list-inline-creation-story.d.ts +0 -3
- package/dist/components/tree-list/tree-list-inline-input.d.ts +0 -9
- package/dist/components/tree-list/tree-list-model.d.ts +0 -58
- package/dist/components/tree-list/tree-list-move-surface.d.ts +0 -7
- package/dist/components/tree-list/tree-list-node-row.d.ts +0 -21
- package/dist/components/tree-list/tree-list-order-filter.d.ts +0 -2
- package/dist/components/tree-list/tree-list-order.store.d.ts +0 -45
- package/dist/components/tree-list/tree-list-reorder.d.ts +0 -24
- package/dist/components/tree-list/tree-list-section-header.d.ts +0 -14
- package/dist/components/tree-list/tree-list-sortable.d.ts +0 -24
- package/dist/components/tree-list/tree-list-visibility-filter.d.ts +0 -24
- package/dist/components/tree-list/tree-list-visibility.store.d.ts +0 -45
- package/dist/components/tree-list/tree-list.d.ts +0 -41
- package/dist/components/tree-list/tree-list.types.d.ts +0 -63
- package/dist/components/tree-list/use-tree-list-keyboard-navigation.d.ts +0 -15
- package/dist/diff-bubble-DvUPRnfB.js +0 -183
- package/dist/diff-bubble-DvUPRnfB.js.map +0 -1
- package/dist/edit-mode-data-table-Nfmfi7bz.js +0 -847
- package/dist/edit-mode-data-table-Nfmfi7bz.js.map +0 -1
- package/dist/empty-state-Bo4HVrgr.js +0 -34
- package/dist/empty-state-Bo4HVrgr.js.map +0 -1
- package/dist/foundations/gallery/gallery-frame.d.ts +0 -21
- package/dist/foundations/gallery/sections/badges-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/buttons-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/composite-chat-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/composites-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/feedback-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/input-authoring-card.d.ts +0 -1
- package/dist/foundations/gallery/sections/inputs-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/layout-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/navigation-identity-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/overlays-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/panels-section.d.ts +0 -1
- package/dist/foundations/gallery/sections/param-editor-composite-card.d.ts +0 -1
- package/dist/foundations/gallery/sections/settings-composite-cards.d.ts +0 -1
- package/dist/kanban-renderer-toolbar-Buek4icz.js +0 -1375
- package/dist/kanban-renderer-toolbar-Buek4icz.js.map +0 -1
- package/dist/lazy-markdown-editor-PzIBc9-l.js +0 -42
- package/dist/lazy-markdown-editor-PzIBc9-l.js.map +0 -1
- package/dist/list-row-DHzRa9-O.js +0 -815
- package/dist/list-row-DHzRa9-O.js.map +0 -1
- package/dist/markdown-BCfPxNpb.js +0 -1663
- package/dist/markdown-BCfPxNpb.js.map +0 -1
- package/dist/markdown-editor-CsJ4KNGu.js +0 -1034
- package/dist/markdown-editor-CsJ4KNGu.js.map +0 -1
- package/dist/mermaid-renderer-D0YP0FmJ.js +0 -425
- package/dist/mermaid-renderer-D0YP0FmJ.js.map +0 -1
- package/dist/mermaid.js.map +0 -1
- package/dist/monaco-browser-l82HnffN.js +0 -22
- package/dist/monaco-browser-l82HnffN.js.map +0 -1
- package/dist/param-editor-CFM2Nf3l.js +0 -161
- package/dist/param-editor-CFM2Nf3l.js.map +0 -1
- package/dist/param-editor-field-Bj-AGUY6.js +0 -1728
- package/dist/param-editor-field-Bj-AGUY6.js.map +0 -1
- package/dist/param-editor.js.map +0 -1
- package/dist/prism-n5gcERyD.js +0 -202
- package/dist/prism-n5gcERyD.js.map +0 -1
- package/dist/radio-BfjibByI.js +0 -51
- package/dist/radio-BfjibByI.js.map +0 -1
- package/dist/rich-message-q6Y6QJOq.js +0 -633
- package/dist/rich-message-q6Y6QJOq.js.map +0 -1
- package/dist/rich-text.js.map +0 -1
- package/dist/scroll-area-BMbg1WcD.js +0 -91
- package/dist/scroll-area-BMbg1WcD.js.map +0 -1
- package/dist/slider-DBHjdxsU.js +0 -1092
- package/dist/slider-DBHjdxsU.js.map +0 -1
- package/dist/test-utils/local-storage.d.ts +0 -1
- package/dist/theme/custom/index.d.ts +0 -2
- package/dist/theme/custom/vscode-theme.d.ts +0 -32
- package/dist/theme/global.d.ts +0 -62
- package/dist/theme/index.d.ts +0 -3
- package/dist/theme/primitives/colors.d.ts +0 -1081
- package/dist/theme/primitives/fonts.d.ts +0 -84
- package/dist/theme/primitives/sizes.d.ts +0 -207
- package/dist/theme/recipes/activity-comment.d.ts +0 -36
- package/dist/theme/recipes/alert.d.ts +0 -1
- package/dist/theme/recipes/badge.d.ts +0 -58
- package/dist/theme/recipes/button.d.ts +0 -188
- package/dist/theme/recipes/color-picker.d.ts +0 -18
- package/dist/theme/recipes/dialog.d.ts +0 -1
- package/dist/theme/recipes/divider.d.ts +0 -1
- package/dist/theme/recipes/drawer.d.ts +0 -1
- package/dist/theme/recipes/editable.d.ts +0 -46
- package/dist/theme/recipes/form.d.ts +0 -1
- package/dist/theme/recipes/input.d.ts +0 -94
- package/dist/theme/recipes/kbd.d.ts +0 -41
- package/dist/theme/recipes/menu.d.ts +0 -1
- package/dist/theme/recipes/number-input.d.ts +0 -98
- package/dist/theme/recipes/popover.d.ts +0 -16
- package/dist/theme/recipes/progress-circle.d.ts +0 -28
- package/dist/theme/recipes/resizable-split-layout.d.ts +0 -106
- package/dist/theme/recipes/segmented-control.d.ts +0 -22
- package/dist/theme/recipes/skeleton.d.ts +0 -1
- package/dist/theme/recipes/switch.d.ts +0 -18
- package/dist/theme/recipes/tabs.d.ts +0 -80
- package/dist/theme/recipes/textarea.d.ts +0 -62
- package/dist/theme/recipes/timeline.d.ts +0 -83
- package/dist/theme/recipes/tooltip.d.ts +0 -1
- package/dist/theme/recipes/window-title-bar.d.ts +0 -19
- package/dist/theme/shadowless-default-config.d.ts +0 -2
- package/dist/theme/theme.d.ts +0 -2
- package/dist/theme/tokens/borders.d.ts +0 -17
- package/dist/theme/tokens/colors-background.d.ts +0 -260
- package/dist/theme/tokens/colors-visualization.d.ts +0 -162
- package/dist/theme/tokens/colors.d.ts +0 -878
- package/dist/theme/tokens/layer-styles.d.ts +0 -1
- package/dist/theme/tokens/text.d.ts +0 -1
- package/dist/theme-AzJH4Om3.js +0 -3999
- package/dist/theme-AzJH4Om3.js.map +0 -1
- package/dist/theme-preference-DxGW1qg-.js +0 -114
- package/dist/theme-preference-DxGW1qg-.js.map +0 -1
- package/dist/theme.js.map +0 -1
- package/dist/tree-list-CPjbGTvs.js +0 -1348
- package/dist/tree-list-CPjbGTvs.js.map +0 -1
- package/dist/utils/apply-file-icon-theme-preference.d.ts +0 -35
- package/dist/utils/apply-theme-preference.d.ts +0 -22
- package/dist/utils/browser-storage.d.ts +0 -7
- package/dist/utils/file-icon-theme-preference.d.ts +0 -15
- package/dist/utils/get-file-type-icon.d.ts +0 -2
- package/dist/utils/prism.d.ts +0 -1
- package/dist/utils/resolve-file-icon-element.d.ts +0 -8
- package/dist/utils/theme-preference.d.ts +0 -20
- package/dist/workspace-badge-CuOcmnZc.js +0 -175
- package/dist/workspace-badge-CuOcmnZc.js.map +0 -1
package/dist/diff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sources":["../src/components/diff-viewer/code-editor.tsx","../../pstdio-file-types/src/index.ts","../src/components/diff-viewer/diff-size.ts","../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","../src/components/diff-viewer/build-changed-files-tree.ts","../src/components/diff-viewer/diff-viewer.store.ts","../src/components/diff-viewer/diff-viewer-options-menu.tsx","../src/components/diff-viewer/file-change-badge.tsx","../src/components/diff-viewer/file-list-panel.tsx","../src/components/diff-viewer/diff-viewer.tsx"],"sourcesContent":["import { DiffEditor, Editor } from \"@monaco-editor/react\";\nimport type * as Monaco from \"monaco-editor\";\nimport { lazy, Suspense, useEffect, useId, useRef } from \"react\";\nimport type { MonacoThemeData } from \"../../theme\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nexport const createCodeEditorPreloader = (initialize: () => Promise<unknown>) => {\n let initialization: Promise<unknown> | undefined;\n\n return () => {\n initialization ??= initialize();\n return initialization;\n };\n};\n\nexport const preloadCodeEditor = createCodeEditorPreloader(() =>\n import(\"./monaco-browser\").then((module) => module.initializeMonaco()),\n);\n\nconst MonacoEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: Editor };\n});\n\nconst MonacoDiffEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: DiffEditor };\n});\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n} satisfies MonacoThemeData;\n\nconst isMonacoTheme = (value: unknown): value is MonacoThemeData =>\n typeof value === \"object\" && value !== null && \"base\" in value && \"colors\" in value;\n\ntype MonacoApi = {\n editor: {\n defineTheme: (name: string, data: MonacoThemeData) => void;\n setTheme: (name: string) => void;\n };\n};\n\nconst EDITOR_THEME_NAME = \"ps-theme\";\n\nconst useEditorTheme = () => {\n const { themePreference, themePreferences } = useThemePreference();\n const preference = themePreferences.find((theme) => theme.id === themePreference);\n return isMonacoTheme(preference?.monacoTheme) ? preference.monacoTheme : customTheme;\n};\n\nconst useApplyEditorTheme = (editorTheme: MonacoThemeData) => {\n const monacoRef = useRef<MonacoApi | null>(null);\n\n useEffect(() => {\n const monaco = monacoRef.current;\n if (!monaco) return;\n\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n }, [editorTheme]);\n\n return (monaco: MonacoApi) => {\n monacoRef.current = monaco;\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n };\n};\n\nexport const configureCodeEditor = (\n editor: {\n addCommand: (key: number, handler: () => Promise<void>) => unknown;\n getAction: (id: string) => Pick<Monaco.editor.IEditorAction, \"run\"> | null;\n },\n monaco: { KeyMod: Pick<typeof Monaco.KeyMod, \"CtrlCmd\">; KeyCode: Pick<typeof Monaco.KeyCode, \"KeyS\"> },\n) => {\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n};\n\ninterface CodeEditorProps {\n language: string;\n /** File name, including its extension, used to parse the editor model. */\n fileName?: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const {\n defaultCode,\n code,\n showLineNumbers,\n isEditable,\n language = \"javascript\",\n fileName,\n onChange,\n disableScroll,\n } = props;\n const editorId = useId();\n // Preserve the extension for JSX parsing while keeping each editor's model independent.\n const modelPath = fileName\n ? `inmemory://editor/${encodeURIComponent(editorId)}/${encodeURIComponent(fileName)}`\n : undefined;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n fixedOverflowWidgets: true,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n path={modelPath}\n defaultValue={defaultCode}\n value={code}\n theme={EDITOR_THEME_NAME}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(editor, monaco) => {\n applyEditorTheme(monaco);\n configureCodeEditor(editor, monaco);\n }}\n />\n </Suspense>\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoDiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={EDITOR_THEME_NAME}\n options={options}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(_, monaco) => {\n applyEditorTheme(monaco);\n }}\n />\n </Suspense>\n );\n};\n","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","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\ninterface 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","import type { ChangedFilesViewMode, ChangedFileTreeNode } from \"./types\";\n\nconst normalizeChangedFilePath = (path: string) =>\n path\n .split(\"/\")\n .map((segment) => segment.trim())\n .filter(Boolean)\n .join(\"/\");\n\nconst sortNodes = (nodes: ChangedFileTreeNode[]) => {\n nodes.sort((left, right) => {\n if (left.type !== right.type) return left.type === \"folder\" ? -1 : 1;\n return left.name.localeCompare(right.name);\n });\n\n nodes.forEach((node) => {\n if (node.children) sortNodes(node.children);\n });\n\n return nodes;\n};\n\nconst dedupePaths = (paths: string[]) => Array.from(new Set(paths.map(normalizeChangedFilePath).filter(Boolean)));\n\nconst buildFlatTree = (paths: string[]) =>\n dedupePaths(paths)\n .map((path) => ({ id: `file:${path}`, name: path, type: \"file\" }) satisfies ChangedFileTreeNode)\n .sort((left, right) => left.name.localeCompare(right.name));\n\nexport const buildChangedFilesTree = (paths: string[], mode: ChangedFilesViewMode): ChangedFileTreeNode[] => {\n if (mode === \"flat\") return buildFlatTree(paths);\n\n const treeById = new Map<string, ChangedFileTreeNode>();\n const rootNodes: ChangedFileTreeNode[] = [];\n\n dedupePaths(paths).forEach((path) => {\n const segments = path.split(\"/\");\n let parentPath = \"\";\n let parentNode: ChangedFileTreeNode | null = null;\n\n segments.forEach((segment, index) => {\n const currentPath = parentPath ? `${parentPath}/${segment}` : segment;\n const isFile = index === segments.length - 1;\n const nodeId = `${isFile ? \"file\" : \"folder\"}:${currentPath}`;\n const existingNode = treeById.get(nodeId);\n\n if (existingNode) {\n parentNode = existingNode;\n parentPath = currentPath;\n return;\n }\n\n const nextNode: ChangedFileTreeNode = {\n id: nodeId,\n name: segment,\n type: isFile ? \"file\" : \"folder\",\n ...(isFile ? {} : { children: [] }),\n };\n\n treeById.set(nodeId, nextNode);\n\n if (!parentNode) rootNodes.push(nextNode);\n else parentNode.children?.push(nextNode);\n\n parentNode = nextNode;\n parentPath = currentPath;\n });\n });\n\n return sortNodes(rootNodes);\n};\n\nexport const collectExpandedFolderIds = (nodes: ChangedFileTreeNode[]) => {\n const folderIds: string[] = [];\n\n const visit = (items: ChangedFileTreeNode[]) => {\n items.forEach((item) => {\n if (item.type !== \"folder\") return;\n folderIds.push(item.id);\n visit(item.children ?? []);\n });\n };\n\n visit(nodes);\n return folderIds;\n};\n\nconst collectNestedFileOrder = (nodes: ChangedFileTreeNode[]) => {\n const orderedPaths: string[] = [];\n\n const visit = (treeNodes: ChangedFileTreeNode[]) => {\n treeNodes.forEach((node) => {\n if (node.type === \"file\") {\n orderedPaths.push(node.id.replace(/^file:/, \"\"));\n return;\n }\n\n visit(node.children ?? []);\n });\n };\n\n visit(nodes);\n return orderedPaths;\n};\n\nexport const sortPathsByViewMode = (paths: string[], mode: ChangedFilesViewMode) => {\n if (mode === \"flat\") return [...paths].sort((left, right) => left.localeCompare(right));\n return collectNestedFileOrder(buildChangedFilesTree(paths, \"nested\"));\n};\n","import { create } from \"zustand\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerState {\n isTreePanelOpen: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n searchQuery: string;\n selectedPath: string | null;\n expandedFolderIds: Set<string>;\n setTreePanelOpen: (open: boolean) => void;\n toggleTreePanel: () => void;\n setViewMode: (viewMode: ChangedFilesViewMode) => void;\n setDiffViewMode: (diffViewMode: DiffViewMode) => void;\n setSearchQuery: (searchQuery: string) => void;\n setSelectedPath: (selectedPath: string | null) => void;\n setExpandedFolderIds: (folderIds: string[]) => void;\n toggleFolder: (folderId: string) => void;\n expandAll: (folderIds: string[]) => void;\n collapseAll: () => void;\n}\n\nexport const useDiffViewerStore = create<DiffViewerState>((set) => ({\n isTreePanelOpen: true,\n viewMode: \"nested\",\n diffViewMode: \"unified\",\n searchQuery: \"\",\n selectedPath: null,\n expandedFolderIds: new Set(),\n setTreePanelOpen: (isTreePanelOpen) => set({ isTreePanelOpen }),\n toggleTreePanel: () => set((state) => ({ isTreePanelOpen: !state.isTreePanelOpen })),\n setViewMode: (viewMode) => set({ viewMode }),\n setDiffViewMode: (diffViewMode) => set({ diffViewMode }),\n setSearchQuery: (searchQuery) => set({ searchQuery }),\n setSelectedPath: (selectedPath) => set({ selectedPath }),\n setExpandedFolderIds: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n toggleFolder: (folderId) =>\n set((state) => {\n const expandedFolderIds = new Set(state.expandedFolderIds);\n if (expandedFolderIds.has(folderId)) expandedFolderIds.delete(folderId);\n else expandedFolderIds.add(folderId);\n return { expandedFolderIds };\n }),\n expandAll: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n collapseAll: () => set({ expandedFolderIds: new Set() }),\n}));\n","import { Box, IconButton, Menu } from \"@chakra-ui/react\";\nimport {\n Check,\n ChevronsDownUp,\n ChevronsUpDown,\n List,\n ListTree,\n PanelLeftClose,\n PanelLeftOpen,\n Rows2,\n Settings2,\n SquareSplitHorizontal,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { ListRow } from \"../list-row/list-row\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerOptionsMenuProps {\n isTreePanelOpen: boolean;\n hasFilePaths: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n isExpandAllDisabled: boolean;\n isCollapseAllDisabled: boolean;\n onToggleTreePanel: () => void;\n onViewModeChange: (viewMode: ChangedFilesViewMode) => void;\n onDiffViewModeChange: (diffViewMode: DiffViewMode) => void;\n onExpandAll: () => void;\n onCollapseAll: () => void;\n}\n\ninterface DiffViewerMenuItemProps {\n id: string;\n label: string;\n icon: ReactNode;\n selected?: boolean;\n disabled?: boolean;\n onActivate: () => void;\n}\n\nconst SelectionIndicator = (props: { selected: boolean }) => (\n <Box w=\"14px\" flexShrink={0} display=\"flex\" justifyContent=\"center\">\n {props.selected ? <Check size={14} /> : null}\n </Box>\n);\n\nconst DiffViewerMenuItem = (props: DiffViewerMenuItemProps) => {\n const { id, label, icon, selected, disabled, onActivate } = props;\n\n return (\n <Menu.Item value={id} disabled={disabled} asChild>\n <ListRow\n asChild\n role={selected === undefined ? undefined : \"menuitemradio\"}\n aria-checked={selected}\n variant=\"full-width\"\n id={id}\n icon={icon}\n label={label}\n disabled={disabled}\n isSelected={selected}\n endContent={selected === undefined ? undefined : <SelectionIndicator selected={selected} />}\n onActivate={onActivate}\n />\n </Menu.Item>\n );\n};\n\nexport const DiffViewerOptionsMenu = (props: DiffViewerOptionsMenuProps) => {\n const {\n isTreePanelOpen,\n hasFilePaths,\n viewMode,\n diffViewMode,\n isExpandAllDisabled,\n isCollapseAllDisabled,\n onToggleTreePanel,\n onViewModeChange,\n onDiffViewModeChange,\n onExpandAll,\n onCollapseAll,\n } = props;\n\n return (\n <Menu.Root>\n <Menu.Trigger asChild>\n <IconButton aria-label=\"Diff view options\" variant=\"ghost\" size=\"sm\">\n <Settings2 size={14} />\n </IconButton>\n </Menu.Trigger>\n <Menu.Positioner>\n <Menu.Content minW=\"190px\" bg=\"bg\" p=\"0\" gap=\"0\">\n <DiffViewerMenuItem\n id=\"toggle-file-tree\"\n icon={isTreePanelOpen ? <PanelLeftClose size={14} /> : <PanelLeftOpen size={14} />}\n label={isTreePanelOpen ? \"Hide file tree\" : \"Show file tree\"}\n onActivate={onToggleTreePanel}\n />\n <Menu.Separator />\n {hasFilePaths ? (\n <>\n <DiffViewerMenuItem\n id=\"nested\"\n icon={<ListTree size={14} />}\n label=\"Nested\"\n selected={viewMode === \"nested\"}\n onActivate={() => onViewModeChange(\"nested\")}\n />\n <DiffViewerMenuItem\n id=\"flat\"\n icon={<List size={14} />}\n label=\"Flat\"\n selected={viewMode === \"flat\"}\n onActivate={() => onViewModeChange(\"flat\")}\n />\n <Menu.Separator />\n </>\n ) : null}\n <DiffViewerMenuItem\n id=\"unified\"\n icon={<Rows2 size={14} />}\n label=\"Unified\"\n selected={diffViewMode === \"unified\"}\n onActivate={() => onDiffViewModeChange(\"unified\")}\n />\n <DiffViewerMenuItem\n id=\"split\"\n icon={<SquareSplitHorizontal size={14} />}\n label=\"Split\"\n selected={diffViewMode === \"split\"}\n onActivate={() => onDiffViewModeChange(\"split\")}\n />\n <Menu.Separator />\n <DiffViewerMenuItem\n id=\"expand-all\"\n icon={<ChevronsUpDown size={14} />}\n label=\"Expand all\"\n disabled={isExpandAllDisabled}\n onActivate={onExpandAll}\n />\n <DiffViewerMenuItem\n id=\"collapse-all\"\n icon={<ChevronsDownUp size={14} />}\n label=\"Collapse all\"\n disabled={isCollapseAllDisabled}\n onActivate={onCollapseAll}\n />\n </Menu.Content>\n </Menu.Positioner>\n </Menu.Root>\n );\n};\n","import { Badge } from \"@chakra-ui/react\";\n\nconst changeLabels: Record<string, string> = {\n added: \"A\",\n copied: \"C\",\n deleted: \"D\",\n modified: \"M\",\n permissionChange: \"M\",\n renamed: \"R\",\n};\n\nconst changeColors: Record<string, string> = {\n added: \"green\",\n copied: \"purple\",\n deleted: \"red\",\n modified: \"blue\",\n permissionChange: \"yellow\",\n renamed: \"orange\",\n};\n\nconst changeSemanticStyles: Record<string, { color: string; backgroundColor: string }> = {\n added: { color: \"fg.success\", backgroundColor: \"bg.success\" },\n deleted: { color: \"fg.error\", backgroundColor: \"bg.error\" },\n};\n\nexport const FileChangeBadge = (props: { change: string }) => {\n const { change } = props;\n const colorProps = changeSemanticStyles[change] ?? { colorPalette: changeColors[change] ?? \"gray\" };\n\n return (\n <Badge size=\"xs\" variant=\"subtle\" flexShrink={0} {...colorProps}>\n {changeLabels[change] ?? change}\n </Badge>\n );\n};\n","import { Box, Icon, Input, InputGroup, Stack, Text } from \"@chakra-ui/react\";\nimport { FileText, Search } from \"lucide-react\";\nimport { useRef } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { ScrollArea } from \"@/components/primitives/scroll-area\";\nimport { TreeList } from \"../tree-list/tree-list\";\nimport type { TreeListNode } from \"../tree-list/tree-list.types\";\nimport { buildChangedFilesTree } from \"./build-changed-files-tree\";\nimport { FileChangeBadge } from \"./file-change-badge\";\nimport type { ChangedFilesViewMode, ChangedFileTreeNode, FileIconInfo } from \"./types\";\n\ninterface FileListPanelProps {\n paths: string[];\n selectedPath: string | null;\n viewMode: ChangedFilesViewMode;\n searchQuery: string;\n expandedFolderIds: Set<string>;\n onSelectPath: (path: string) => void;\n onSearchQueryChange: (value: string) => void;\n onToggleFolder: (id: string) => void;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n changeByPath?: Map<string, string>;\n}\n\nconst getFilePathParts = (filePath: string) => {\n const lastSlashIndex = filePath.lastIndexOf(\"/\");\n if (lastSlashIndex < 0) return { fileName: filePath, dirPath: \"\" };\n return { fileName: filePath.slice(lastSlashIndex + 1), dirPath: filePath.slice(0, lastSlashIndex) };\n};\n\nconst renderFileLabel = (node: ChangedFileTreeNode, viewMode: ChangedFilesViewMode, filePath: string) => {\n const { fileName, dirPath } = getFilePathParts(filePath);\n if (viewMode !== \"flat\" || !dirPath) return node.name;\n\n return (\n <Text textStyle=\"label/S/regular\" truncate>\n <Text as=\"span\" color=\"fg.default\">\n {fileName}\n </Text>{\" \"}\n <Text as=\"span\" color=\"fg.muted\">\n {dirPath}\n </Text>\n </Text>\n );\n};\n\nconst toTreeListNodes = (input: {\n nodes: ChangedFileTreeNode[];\n viewMode: ChangedFilesViewMode;\n onSelectPath: (path: string) => void;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n changeByPath?: Map<string, string>;\n}): TreeListNode[] => {\n const { nodes, viewMode, onSelectPath, resolveFileIcon, changeByPath } = input;\n\n return nodes.map((node) => {\n if (node.type === \"folder\") {\n return {\n id: node.id,\n label: node.name,\n isContainer: true,\n children: toTreeListNodes({\n nodes: node.children ?? [],\n viewMode,\n onSelectPath,\n resolveFileIcon,\n changeByPath,\n }),\n };\n }\n\n const filePath = node.id.replace(/^file:/, \"\");\n const fileIcon = resolveFileIcon?.(filePath) ?? { icon: <Icon as={FileText} boxSize=\"16px\" />, color: \"fg.subtle\" };\n const change = changeByPath?.get(filePath);\n return {\n id: node.id,\n label: renderFileLabel(node, viewMode, filePath),\n icon: fileIcon.icon,\n iconColor: fileIcon.color,\n endContent: change ? <FileChangeBadge change={change} /> : undefined,\n onActivate: () => onSelectPath(filePath),\n };\n });\n};\n\nexport const FileListPanel = (props: FileListPanelProps) => {\n const {\n paths,\n selectedPath,\n viewMode,\n searchQuery,\n expandedFolderIds,\n onSelectPath,\n onSearchQueryChange,\n onToggleFolder,\n resolveFileIcon,\n changeByPath,\n } = props;\n const scrollRef = useRef<HTMLDivElement>(null);\n const fileTree = buildChangedFilesTree(paths, viewMode);\n const treeNodes = toTreeListNodes({ nodes: fileTree, viewMode, onSelectPath, resolveFileIcon, changeByPath });\n const emptyTitle = searchQuery.trim() ? \"No matching files\" : \"No changed files\";\n\n return (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" w=\"full\" gap=\"0\" overflow=\"hidden\" bg=\"bg\">\n <Header flexShrink={0} borderBottomWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg\">\n <InputGroup startElement={<Search size={14} />}>\n <Input\n size=\"sm\"\n variant=\"borderless\"\n aria-label=\"Search files\"\n placeholder=\"Search files\"\n value={searchQuery}\n onChange={(event) => onSearchQueryChange(event.target.value)}\n />\n </InputGroup>\n </Header>\n <ScrollArea\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n bg=\"bg\"\n viewportRef={scrollRef}\n viewportProps={{ style: { overflowX: \"hidden\" } }}\n >\n {paths.length > 0 ? (\n <TreeList\n sections={[{ id: \"files\", nodes: treeNodes }]}\n expandedNodeIds={[...expandedFolderIds]}\n activeNodeId={selectedPath ? `file:${selectedPath}` : null}\n rowVariant=\"tree\"\n onToggleNode={onToggleFolder}\n virtualize\n scrollRef={scrollRef}\n />\n ) : (\n <Box px=\"xs\" py=\"xs\">\n <EmptyState title={emptyTitle} size=\"sm\" textAlign=\"left\" alignItems=\"flex-start\" />\n </Box>\n )}\n </ScrollArea>\n </Stack>\n );\n};\n","import { Box, Flex, HStack, Skeleton, Stack, Text } from \"@chakra-ui/react\";\nimport { useEffect, useState } from \"react\";\nimport { Header } from \"@/components/layout/header\";\nimport { ResizableSplitLayout } from \"@/components/layout/resizable-split-layout\";\nimport { EmptyState } from \"@/components/primitives/empty-state\";\nimport { buildChangedFilesTree, collectExpandedFolderIds, sortPathsByViewMode } from \"./build-changed-files-tree\";\nimport { DiffBubble } from \"./diff-bubble\";\nimport type { Diff } from \"./diff-card\";\nimport { DiffDrawer, type DiffDrawerExpansionState, type DiffExpansionCommand } from \"./diff-drawer\";\nimport { useDiffViewerStore } from \"./diff-viewer.store\";\nimport { DiffViewerOptionsMenu } from \"./diff-viewer-options-menu\";\nimport { FileListPanel } from \"./file-list-panel\";\nimport type { ChangedFilesViewMode, FileIconInfo } from \"./types\";\n\nexport interface DiffViewerProps {\n diffs: Diff[];\n changedFilePaths?: string[];\n defaultSelectedPath?: string | null;\n loading?: boolean;\n onLoadDiff?: (path: string) => Promise<void>;\n resolveFileIcon?: (path: string, options?: { isFolder?: boolean; isExpanded?: boolean }) => FileIconInfo | undefined;\n}\n\nconst getDiffPath = (diff: Diff) => diff.newPath ?? diff.oldPath ?? \"unknown\";\nconst buildChangeByPath = (diffs: Diff[]) => new Map(diffs.map((diff) => [getDiffPath(diff), diff.change]));\nconst sumDiffStats = (diffs: Diff[]) =>\n diffs.reduce(\n (total, diff) => ({\n additions: total.additions + (diff.additions ?? 0),\n deletions: total.deletions + (diff.deletions ?? 0),\n }),\n { additions: 0, deletions: 0 },\n );\n\nconst buildFilteredDiffs = (input: {\n diffs: Diff[];\n normalizedSearchQuery: string;\n viewMode: ChangedFilesViewMode;\n}) => {\n const { diffs, normalizedSearchQuery, viewMode } = input;\n const matchingDiffs = normalizedSearchQuery\n ? diffs.filter((diff) => getDiffPath(diff).toLowerCase().includes(normalizedSearchQuery))\n : diffs;\n const orderedPaths = sortPathsByViewMode(matchingDiffs.map(getDiffPath), viewMode);\n const orderByPath = new Map(orderedPaths.map((path, index) => [path, index]));\n\n return [...matchingDiffs].sort((left, right) => {\n const leftOrder = orderByPath.get(getDiffPath(left)) ?? Number.MAX_SAFE_INTEGER;\n const rightOrder = orderByPath.get(getDiffPath(right)) ?? Number.MAX_SAFE_INTEGER;\n return leftOrder - rightOrder;\n });\n};\n\nconst resolveSelectedPath = (preferredPaths: string[], fallbackPaths: string[]) =>\n preferredPaths[0] ?? fallbackPaths[0] ?? null;\n\nconst loadingDiffItems = [\"first\", \"second\", \"third\"] as const;\n\nconst DiffViewerLoading = () => (\n <Stack flex=\"1\" minH=\"0\" bg=\"bg\" p=\"xs\" gap=\"xs\" role=\"status\" aria-busy=\"true\" aria-label=\"Loading diff panel\">\n {loadingDiffItems.map((item) => (\n <Skeleton key={item} h=\"72px\" w=\"full\" flexShrink=\"0\" borderRadius=\"xs\" />\n ))}\n </Stack>\n);\n\nexport const DiffViewer = (props: DiffViewerProps) => {\n const { diffs, changedFilePaths, defaultSelectedPath = null, loading = false, onLoadDiff, resolveFileIcon } = props;\n const [diffExpansionCommand, setDiffExpansionCommand] = useState<DiffExpansionCommand | null>(null);\n const [diffExpansionState, setDiffExpansionState] = useState<DiffDrawerExpansionState>({\n allExpanded: false,\n allCollapsed: false,\n });\n const {\n isTreePanelOpen,\n viewMode,\n diffViewMode,\n searchQuery,\n selectedPath,\n expandedFolderIds,\n setTreePanelOpen,\n setViewMode,\n setDiffViewMode,\n setSearchQuery,\n setSelectedPath,\n setExpandedFolderIds,\n toggleFolder,\n expandAll,\n collapseAll,\n } = useDiffViewerStore();\n\n const diffPaths = diffs.map(getDiffPath);\n const filePaths = changedFilePaths ?? diffPaths;\n const normalizedSearchQuery = searchQuery.trim().toLowerCase();\n const filteredFilePaths = normalizedSearchQuery\n ? filePaths.filter((path) => path.toLowerCase().includes(normalizedSearchQuery))\n : filePaths;\n const filteredDiffs = buildFilteredDiffs({ diffs, normalizedSearchQuery, viewMode });\n const changeByPath = buildChangeByPath(diffs);\n const filteredDiffPaths = filteredDiffs.map(getDiffPath);\n const fileTree = buildChangedFilesTree(filteredFilePaths, viewMode);\n const folderIds = viewMode === \"nested\" ? collectExpandedFolderIds(fileTree) : [];\n const filteredFilePathKey = filteredFilePaths.join(\"\\0\");\n const filteredDiffPathKey = filteredDiffPaths.join(\"\\0\");\n const resolvedSelectedPath =\n selectedPath ?? defaultSelectedPath ?? resolveSelectedPath(filteredDiffPaths, filteredFilePaths);\n const hasDiffs = filteredDiffs.length > 0;\n const emptyDiffTitle = normalizedSearchQuery ? \"No matching changes\" : \"No changes\";\n const showDiffEmptyState = !loading && !hasDiffs;\n const totalDiff = sumDiffStats(filteredDiffs);\n const hasExpandableItems = folderIds.length > 0 || filteredDiffs.length > 0;\n const allFilesExpanded = folderIds.every((folderId) => expandedFolderIds.has(folderId));\n const allFilesCollapsed = folderIds.every((folderId) => !expandedFolderIds.has(folderId));\n const allDiffsExpanded = filteredDiffs.length === 0 || diffExpansionState.allExpanded;\n const allDiffsCollapsed = filteredDiffs.length === 0 || diffExpansionState.allCollapsed;\n const isExpandAllDisabled = !hasExpandableItems || (allFilesExpanded && allDiffsExpanded);\n const isCollapseAllDisabled = !hasExpandableItems || (allFilesCollapsed && allDiffsCollapsed);\n\n useEffect(() => {\n const filePaths = filteredFilePathKey ? filteredFilePathKey.split(\"\\0\") : [];\n const tree = buildChangedFilesTree(filePaths, viewMode);\n setExpandedFolderIds(viewMode === \"nested\" ? collectExpandedFolderIds(tree) : []);\n }, [filteredFilePathKey, setExpandedFolderIds, viewMode]);\n\n useEffect(() => {\n const diffPaths = filteredDiffPathKey ? filteredDiffPathKey.split(\"\\0\") : [];\n const filePaths = filteredFilePathKey ? filteredFilePathKey.split(\"\\0\") : [];\n if (resolvedSelectedPath && diffPaths.includes(resolvedSelectedPath)) return;\n setSelectedPath(resolveSelectedPath(diffPaths, filePaths));\n }, [filteredDiffPathKey, filteredFilePathKey, resolvedSelectedPath, setSelectedPath]);\n\n const expandAllFilesAndDiffs = () => {\n expandAll(folderIds);\n setDiffExpansionCommand((current) => ({ action: \"expand\", id: (current?.id ?? 0) + 1 }));\n };\n\n const collapseAllFilesAndDiffs = () => {\n collapseAll();\n setDiffExpansionCommand((current) => ({ action: \"collapse\", id: (current?.id ?? 0) + 1 }));\n };\n\n const selectChangedFilePath = (path: string) => {\n const currentIndex = resolvedSelectedPath ? filteredDiffPaths.indexOf(resolvedSelectedPath) : -1;\n const nextIndex = filteredDiffPaths.indexOf(path);\n const direction = currentIndex >= 0 && nextIndex >= 0 && nextIndex < currentIndex ? \"up\" : \"down\";\n\n setSelectedPath(path);\n setDiffExpansionCommand((current) => ({ action: \"expand-selected\", direction, id: (current?.id ?? 0) + 1, path }));\n };\n\n const diffPanel = (\n <Stack h=\"full\" minH=\"0\" minW=\"0\" flex=\"1\" bg=\"bg\" gap=\"0\">\n <Header variant=\"main\" borderBottomWidth=\"1px\" borderColor=\"border.subtle\" bg=\"bg\" justifyContent=\"space-between\">\n <HStack gap=\"xs\" minW=\"0\">\n <DiffViewerOptionsMenu\n isTreePanelOpen={isTreePanelOpen}\n hasFilePaths={filePaths.length > 0}\n viewMode={viewMode}\n diffViewMode={diffViewMode}\n isExpandAllDisabled={isExpandAllDisabled}\n isCollapseAllDisabled={isCollapseAllDisabled}\n onToggleTreePanel={() => setTreePanelOpen(!isTreePanelOpen)}\n onViewModeChange={setViewMode}\n onDiffViewModeChange={setDiffViewMode}\n onExpandAll={expandAllFilesAndDiffs}\n onCollapseAll={collapseAllFilesAndDiffs}\n />\n {showDiffEmptyState ? (\n <Text textStyle=\"label/S/regular\" color=\"fg.muted\" truncate>\n {emptyDiffTitle}\n </Text>\n ) : null}\n </HStack>\n <DiffBubble variant=\"ghost\" size=\"small\" additions={totalDiff.additions} deletions={totalDiff.deletions} />\n </Header>\n {loading ? (\n <DiffViewerLoading />\n ) : hasDiffs ? (\n <Box flex=\"1\" minH=\"0\">\n <DiffDrawer\n diffs={filteredDiffs}\n selectedDiffPath={resolvedSelectedPath}\n onLoadDiff={onLoadDiff}\n onSelectDiffPath={setSelectedPath}\n onExpansionStateChange={setDiffExpansionState}\n expansionCommand={diffExpansionCommand}\n diffViewMode={diffViewMode}\n />\n </Box>\n ) : (\n <Box flex=\"1\" minH=\"0\" px=\"md\" py=\"lg\" display=\"flex\" alignItems=\"center\" justifyContent=\"center\" bg=\"bg\">\n <EmptyState title={emptyDiffTitle} />\n </Box>\n )}\n </Stack>\n );\n\n return (\n <Flex flex=\"1\" minH=\"0\" minW=\"0\" bg=\"bg\" gap=\"0\" data-testid=\"diff-viewer\">\n <ResizableSplitLayout\n flex=\"1\"\n minH=\"0\"\n minW=\"0\"\n resizablePanel={\n <FileListPanel\n paths={filteredFilePaths}\n selectedPath={resolvedSelectedPath}\n viewMode={viewMode}\n searchQuery={searchQuery}\n expandedFolderIds={expandedFolderIds}\n onSelectPath={selectChangedFilePath}\n onSearchQueryChange={setSearchQuery}\n onToggleFolder={toggleFolder}\n resolveFileIcon={resolveFileIcon}\n changeByPath={changeByPath}\n />\n }\n contentPanel={diffPanel}\n collapsed={!isTreePanelOpen}\n defaultSizePx={288}\n minSizePx={224}\n contentMinSizePx={320}\n resizeLabel=\"Resize file list panel\"\n separator=\"line\"\n onCollapsedChange={(collapsed) => setTreePanelOpen(!collapsed)}\n />\n </Flex>\n );\n};\n"],"names":["createCodeEditorPreloader","initialize","initialization","preloadCodeEditor","then","module","initializeMonaco","MonacoEditor","lazy","default","Editor","MonacoDiffEditor","DiffEditor","customTheme","base","inherit","rules","colors","isMonacoTheme","value","EDITOR_THEME_NAME","useEditorTheme","$","_c","themePreference","themePreferences","useThemePreference","t0","t1","theme","id","preference","find","monacoTheme","useApplyEditorTheme","editorTheme","monacoRef","useRef","monaco","current","editor","defineTheme","setTheme","useEffect","t2","monaco_0","configureCodeEditor","addCommand","KeyMod","CtrlCmd","KeyCode","KeyS","getAction","run","CodeEditor","props","defaultCode","code","showLineNumbers","isEditable","language","fileName","onChange","disableScroll","undefined","editorId","useId","modelPath","encodeURIComponent","applyEditorTheme","Symbol","for","enabled","t3","t4","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","t5","tabSize","fixedOverflowWidgets","minimap","fontSize","readOnly","lineNumbers","options","t6","t7","t8","t9","jsx","Suspense","CodeDiffEditor","original","modified","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","_","imagePreviewMimeTypes","avif","bmp","gif","heic","ico","jpeg","jpg","png","tif","tiff","webp","imagePreviewExtensions","Object","keys","getFileExtension","filePath","extension","split","pop","toLowerCase","getImagePreviewMimeType","isImagePreviewPath","LARGE_DIFF_LINE_THRESHOLD","generatedDiffFileNames","Set","binaryDiffExtensions","getDiffLineCount","input","additions","deletions","isLargeDiffContent","isGeneratedDiffPath","path","has","endsWith","isBinaryDiffPath","ext","length","isImageDiffPath","createDiffCardBodyModel","diff","oldContent","newContent","isLargeDiff","hasOptedIntoLargeDiff","onShowFullDiff","diffViewMode","buildViewData","oldImageSrc","getImagePreviewSource","newImageSrc","kind","oldSrc","newSrc","isImage","renderedLineCount","diffViewData","buildDiffViewData","oldPath","newPath","sideBySide","content","startsWith","DiffCardBody","model","Box","ImageDiffPreview","BinaryDiffPlaceholder","LargeDiffPlaceholder","md","ImageDiffPanel","Grid","label","src","fallback","Text","Image","jsxs","Button","EmptyState","title","DeferredDiffLoad","actionLabel","isLoadingDiff","onAction","loadingDiffContentRows","LoadingDiffContent","Stack","map","_temp","row","Skeleton","buildDeferredDiffLoadState","isGeneratedDiff","loadError","canLoadDiff","onLoadDiff","DiffCardContent","isExpanded","isBinaryDiff","hasDiffContent","shouldAutoLoadDiff","shouldAutoLoadDiffContent","isSelected","requestedPath","resolveRequestedDiffPath","shouldShowDiffStats","resolveDiffFilePath","useDiffContentLoader","setLoadingDiff","useState","setRequestedPath","setLoadError","loadDiff","Boolean","DiffCard","onToggleExpanded","onSelect","blocksDiffContentLoad","borderColor","DiffCardHeader","t10","t11","t12","showStats","isCopied","setIsCopied","copyResetTimeoutRef","window","clearTimeout","navigator","clipboard","writeText","setTimeout","copyFilePath","bg","event","stopPropagation","ChevronDown","ChevronRight","IconButton","t13","change","t14","t15","t16","t17","opacity","pointerEvents","t18","t19","t20","event_0","t21","Check","Copy","t22","t23","Tooltip","t24","t25","t26","DiffBubble","t27","DiffDrawerEmptyState","ScrollArea","p","spaceY","CARD_HEADER_HEIGHT","CARD_BODY_LINE_HEIGHT","HUNK_ROW_HEIGHT","COLLAPSED_CARD_HEIGHT","DEFERRED_BODY_HEIGHT","IMAGE_BODY_HEIGHT","ITEM_GAP_HEIGHT","deferredCardHeight","estimateDiffCardHeight","isCollapsed","unifiedContentRows","splitContentRows","hunkRows","contentRows","bodyHeight","getDiffPath","PINNED_DIFF_LOOKBEHIND_COUNT","resolveSelectedScrollState","diffs","selectedDiffPath","collapsedPaths","expansionCommand","completedScrollCommandId","selectedScrollPath","selectedScrollSourceKey","selectedScrollCommandId","action","hasCompletedSelectedScroll","selectedScrollKey","selectedScrollExpansionState","selectedScrollIndex","findIndex","shouldPinSelectedScrollIndex","direction","includePinnedDiffIndexes","indexes","includes","pinnedStartIndex","Math","max","pinnedIndexes","Array","from","index","sort","a","b","SETTLE_FRAME_COUNT","MAX_ALIGNMENT_FRAMES","useSelectedDiffScroll","scrollRef","virtualizerRef","suppressScrollAdjustRef","setCompletedScrollCommandId","virtualizer","scrollElement","frameIds","cancelledByUserScroll","stopAligning","cancelSelectedScroll","alignmentFrames","alignSelectedDiff","scrollToIndex","align","push","requestAnimationFrame","addEventListener","passive","removeEventListener","frameId","cancelAnimationFrame","useLayoutEffect","INITIAL_EXPANDED_DIFF_COUNT","INITIAL_COLLAPSED_LINE_THRESHOLD","buildInitialCollapsedPaths","filter","lineCount","buildAllCollapsedPaths","toggleCollapsedPath","next","delete","add","resolveCollapsedPathsForSelectedDiff","some","resolveCollapsedPathsForNavigation","previousNavigatedPath","expanded","DiffDrawer","onSelectDiffPath","onExpansionStateChange","reportedExpansionStateRef","lastNavigatedPathRef","setCollapsedPaths","largeDiffOptInPaths","setLargeDiffOptInPaths","useVirtualizer","count","getScrollElement","estimateSize","getItemKey","overscan","rangeExtractor","range","defaultRangeExtractor","shouldAdjustScrollPositionOnItemSizeChange","_item","_delta","instance","isScrolling","prev","navigatedPath","expansionState","allExpanded","size","allCollapsed","every","reportedExpansionState","toggleExpanded","showFullDiff","virtualItems","getVirtualItems","style","overflowAnchor","height","getTotalSize","virtualItem","measureElement","top","start","key","normalizeChangedFilePath","segment","trim","join","sortNodes","nodes","left","right","type","name","localeCompare","forEach","node","children","dedupePaths","paths","buildFlatTree","buildChangedFilesTree","mode","treeById","Map","rootNodes","segments","parentPath","parentNode","currentPath","isFile","nodeId","existingNode","get","nextNode","set","collectExpandedFolderIds","folderIds","visit","items","item","collectNestedFileOrder","orderedPaths","treeNodes","replace","sortPathsByViewMode","useDiffViewerStore","create","isTreePanelOpen","viewMode","searchQuery","selectedPath","expandedFolderIds","setTreePanelOpen","toggleTreePanel","state","setViewMode","setDiffViewMode","setSearchQuery","setSelectedPath","setExpandedFolderIds","toggleFolder","folderId","expandAll","collapseAll","SelectionIndicator","selected","DiffViewerMenuItem","icon","disabled","onActivate","ListRow","DiffViewerOptionsMenu","hasFilePaths","isExpandAllDisabled","isCollapseAllDisabled","onToggleTreePanel","onViewModeChange","onDiffViewModeChange","onExpandAll","onCollapseAll","Menu","Settings2","PanelLeftClose","PanelLeftOpen","Fragment","ListTree","List","Rows2","SquareSplitHorizontal","ChevronsUpDown","ChevronsDownUp","changeLabels","added","copied","deleted","permissionChange","renamed","changeColors","changeSemanticStyles","color","backgroundColor","FileChangeBadge","colorPalette","colorProps","Badge","getFilePathParts","lastSlashIndex","lastIndexOf","dirPath","slice","renderFileLabel","toTreeListNodes","onSelectPath","resolveFileIcon","changeByPath","isContainer","fileIcon","Icon","FileText","iconColor","endContent","FileListPanel","onSearchQueryChange","onToggleFolder","fileTree","emptyTitle","Search","target","Header","InputGroup","Input","overflowX","TreeList","buildChangeByPath","sumDiffStats","reduce","total","buildFilteredDiffs","normalizedSearchQuery","matchingDiffs","orderByPath","leftOrder","Number","MAX_SAFE_INTEGER","rightOrder","resolveSelectedPath","preferredPaths","fallbackPaths","loadingDiffItems","DiffViewerLoading","DiffViewer","changedFilePaths","defaultSelectedPath","loading","diffExpansionCommand","setDiffExpansionCommand","diffExpansionState","setDiffExpansionState","allFilesExpanded","emptyDiffTitle","filePaths","filteredDiffPathKey","filteredDiffPaths","filteredDiffs","filteredFilePathKey","filteredFilePaths","hasDiffs","hasExpandableItems","resolvedSelectedPath","showDiffEmptyState","totalDiff","diffPaths","folderId_0","allFilesCollapsed","allDiffsExpanded","allDiffsCollapsed","filePaths_0","tree","diffPaths_0","filePaths_1","_temp2","expandAllFilesAndDiffs","_temp3","collapseAllFilesAndDiffs","path_0","currentIndex","indexOf","nextIndex","current_1","selectChangedFilePath","HStack","diffPanel","collapsed","Flex","ResizableSplitLayout","current_0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","names":["DiffEditor","Editor","Monaco","lazy","Suspense","useEffect","useId","useRef","MonacoThemeData","useThemePreference","createCodeEditorPreloader","initialize","Promise","initialization","preloadCodeEditor","then","module","initializeMonaco","MonacoEditor","default","MonacoDiffEditor","customTheme","base","const","inherit","rules","colors","isMonacoTheme","value","MonacoApi","editor","defineTheme","name","data","setTheme","EDITOR_THEME_NAME","useEditorTheme","$","_c","themePreference","themePreferences","t0","t1","theme","id","preference","find","monacoTheme","useApplyEditorTheme","editorTheme","monacoRef","monaco","current","t2","monaco_0","configureCodeEditor","addCommand","key","handler","getAction","Pick","IEditorAction","KeyMod","KeyCode","CtrlCmd","KeyS","run","CodeEditorProps","language","fileName","defaultCode","code","isEditable","showLineNumbers","onChange","disableScroll","CodeEditor","props","undefined","editorId","modelPath","encodeURIComponent","applyEditorTheme","Symbol","for","enabled","t3","t4","scrollbar","vertical","horizontal","useShadows","alwaysConsumeMouseWheel","scrollBeyondLastLine","mouseWheelScrollSensitivity","overviewRulerLanes","t5","tabSize","fixedOverflowWidgets","minimap","fontSize","readOnly","lineNumbers","options","t6","t7","t8","t9","CodeDiffEditorProps","original","modified","CodeDiffEditor","originalEditable","renderSideBySide","useInlineViewWhenSpaceIsTooSmall","_","_c","lazy","Suspense","DiffDrawerProps","DiffViewerProps","Drawer","then","module","default","DiffDrawer","Viewer","DiffViewer","props","$","_c","t0","_c","useThemePreference","isGeneratedDiffPath","LARGE_DIFF_LINE_THRESHOLD","useDiffViewerStore","FileChangeBadge","preloadCodeEditor","initialization","initialize","module","MonacoEditor","lazy","Editor","MonacoDiffEditor","DiffEditor","customTheme","isMonacoTheme","value","EDITOR_THEME_NAME","useEditorTheme","$","c","t0","themePreference","themePreferences","t1","theme","preference","useApplyEditorTheme","monacoRef","useRef","editorTheme","monaco","useEffect","t2","monaco_0","configureCodeEditor","editor","CodeEditor","props","language","editorId","useId","modelPath","fileName","applyEditorTheme","isEditable","t3","showLineNumbers","t4","disableScroll","t5","options","t6","onChange","t7","t8","t9","code","defaultCode","Suspense","CodeDiffEditor","modified","original","Drawer","Viewer","DiffDrawer","DiffViewer","DiffBubble","isBinaryDiffPath"],"sources":["../src/components/diff-viewer/code-editor.tsx","../src/components/diff-viewer/lazy-diff.tsx"],"sourcesContent":["import { DiffEditor, Editor } from \"@monaco-editor/react\";\nimport type * as Monaco from \"monaco-editor\";\nimport { lazy, Suspense, useEffect, useId, useRef } from \"react\";\nimport type { MonacoThemeData } from \"../../theme\";\nimport { useThemePreference } from \"../../utils/theme-preference\";\n\nexport const createCodeEditorPreloader = (initialize: () => Promise<unknown>) => {\n let initialization: Promise<unknown> | undefined;\n\n return () => {\n initialization ??= initialize();\n return initialization;\n };\n};\n\nexport const preloadCodeEditor = createCodeEditorPreloader(() =>\n import(\"./monaco-browser\").then((module) => module.initializeMonaco()),\n);\n\nconst MonacoEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: Editor };\n});\n\nconst MonacoDiffEditor = lazy(async () => {\n await preloadCodeEditor();\n return { default: DiffEditor };\n});\n\nexport const customTheme = {\n base: \"vs-dark\" as const,\n inherit: true,\n rules: [],\n colors: {\n \"editor.background\": \"#0a0d15\",\n \"editor.foreground\": \"#f5f5f5\",\n \"editor.lineHighlightBackground\": \"#22252C\",\n \"editorCursor.foreground\": \"#A7A7A7\",\n \"editorWhitespace.foreground\": \"#3B3B3B\",\n \"editorIndentGuide.background\": \"#404040\",\n \"editorIndentGuide.activeBackground\": \"#707070\",\n },\n} satisfies MonacoThemeData;\n\nconst isMonacoTheme = (value: unknown): value is MonacoThemeData =>\n typeof value === \"object\" && value !== null && \"base\" in value && \"colors\" in value;\n\ntype MonacoApi = {\n editor: {\n defineTheme: (name: string, data: MonacoThemeData) => void;\n setTheme: (name: string) => void;\n };\n};\n\nconst EDITOR_THEME_NAME = \"ps-theme\";\n\nconst useEditorTheme = () => {\n const { themePreference, themePreferences } = useThemePreference();\n const preference = themePreferences.find((theme) => theme.id === themePreference);\n return isMonacoTheme(preference?.monacoTheme) ? preference.monacoTheme : customTheme;\n};\n\nconst useApplyEditorTheme = (editorTheme: MonacoThemeData) => {\n const monacoRef = useRef<MonacoApi | null>(null);\n\n useEffect(() => {\n const monaco = monacoRef.current;\n if (!monaco) return;\n\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n }, [editorTheme]);\n\n return (monaco: MonacoApi) => {\n monacoRef.current = monaco;\n monaco.editor.defineTheme(EDITOR_THEME_NAME, editorTheme);\n monaco.editor.setTheme(EDITOR_THEME_NAME);\n };\n};\n\nexport const configureCodeEditor = (\n editor: {\n addCommand: (key: number, handler: () => Promise<void>) => unknown;\n getAction: (id: string) => Pick<Monaco.editor.IEditorAction, \"run\"> | null;\n },\n monaco: { KeyMod: Pick<typeof Monaco.KeyMod, \"CtrlCmd\">; KeyCode: Pick<typeof Monaco.KeyCode, \"KeyS\"> },\n) => {\n editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, async () => {\n await editor.getAction(\"editor.action.formatDocument\")?.run();\n });\n};\n\ninterface CodeEditorProps {\n language: string;\n /** File name, including its extension, used to parse the editor model. */\n fileName?: string;\n defaultCode?: string;\n code?: string;\n isEditable: boolean;\n showLineNumbers?: boolean;\n onChange?: (code: string) => void;\n disableScroll?: boolean;\n}\n\nexport const CodeEditor = (props: CodeEditorProps) => {\n const {\n defaultCode,\n code,\n showLineNumbers,\n isEditable,\n language = \"javascript\",\n fileName,\n onChange,\n disableScroll,\n } = props;\n const editorId = useId();\n // Preserve the extension for JSX parsing while keeping each editor's model independent.\n const modelPath = fileName\n ? `inmemory://editor/${encodeURIComponent(editorId)}/${encodeURIComponent(fileName)}`\n : undefined;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n fixedOverflowWidgets: true,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: !isEditable,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n path={modelPath}\n defaultValue={defaultCode}\n value={code}\n theme={EDITOR_THEME_NAME}\n options={options}\n onChange={(value) => {\n onChange?.(value || \"\");\n }}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(editor, monaco) => {\n applyEditorTheme(monaco);\n configureCodeEditor(editor, monaco);\n }}\n />\n </Suspense>\n );\n};\n\ninterface CodeDiffEditorProps {\n language: string;\n original: string;\n modified: string;\n showLineNumbers?: boolean;\n disableScroll?: boolean;\n}\n\nexport const CodeDiffEditor = (props: CodeDiffEditorProps) => {\n const { original, modified, showLineNumbers, language = \"javascript\", disableScroll } = props;\n const editorTheme = useEditorTheme();\n const applyEditorTheme = useApplyEditorTheme(editorTheme);\n\n const options = {\n tabSize: 2,\n minimap: {\n enabled: false,\n },\n fontSize: 12,\n readOnly: true,\n originalEditable: false,\n renderSideBySide: true,\n useInlineViewWhenSpaceIsTooSmall: true,\n lineNumbers: showLineNumbers ? \"on\" : \"off\",\n ...(disableScroll\n ? {\n scrollbar: {\n vertical: \"hidden\" as const,\n horizontal: \"hidden\" as const,\n useShadows: false,\n alwaysConsumeMouseWheel: false,\n },\n scrollBeyondLastLine: false,\n mouseWheelScrollSensitivity: 0,\n overviewRulerLanes: 0,\n }\n : {}),\n } as const;\n\n return (\n <Suspense fallback={null}>\n <MonacoDiffEditor\n width=\"100%\"\n height=\"100%\"\n language={language}\n original={original}\n modified={modified}\n theme={EDITOR_THEME_NAME}\n options={options}\n beforeMount={(monaco) => {\n applyEditorTheme(monaco);\n }}\n onMount={(_, monaco) => {\n applyEditorTheme(monaco);\n }}\n />\n </Suspense>\n );\n};\n","import { lazy, Suspense } from \"react\";\nimport type { DiffDrawerProps } from \"./diff-drawer\";\nimport type { DiffViewerProps } from \"./diff-viewer\";\n\nconst Drawer = lazy(() => import(\"./diff-drawer\").then((module) => ({ default: module.DiffDrawer })));\nconst Viewer = lazy(() => import(\"./diff-viewer\").then((module) => ({ default: module.DiffViewer })));\n\n// Diff parsing loads its syntax languages. Keep it out of the initial workbench module graph.\nexport const DiffDrawer = (props: DiffDrawerProps) => (\n <Suspense fallback={null}>\n <Drawer {...props} />\n </Suspense>\n);\n\nexport const DiffViewer = (props: DiffViewerProps) => (\n <Suspense fallback={null}>\n <Viewer {...props} />\n </Suspense>\n);\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { EmptyState as e, VStack as t } from "@chakra-ui/react";
|
|
2
|
+
import { c as n } from "react/compiler-runtime";
|
|
3
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
4
|
+
import * as a from "react";
|
|
5
|
+
//#region src/components/primitives/empty-state.tsx
|
|
6
|
+
var o = a.forwardRef(function(a, o) {
|
|
7
|
+
let s = n(19), c, l, u, d, f;
|
|
8
|
+
s[0] === a ? (c = s[1], l = s[2], u = s[3], d = s[4], f = s[5]) : ({title: f, description: l, icon: u, children: c, ...d} = a, s[0] = a, s[1] = c, s[2] = l, s[3] = u, s[4] = d, s[5] = f);
|
|
9
|
+
let p;
|
|
10
|
+
s[6] === u ? p = s[7] : (p = u && /* @__PURE__ */ r(e.Indicator, { children: u }), s[6] = u, s[7] = p);
|
|
11
|
+
let m;
|
|
12
|
+
s[8] !== l || s[9] !== f ? (m = l ? /* @__PURE__ */ i(t, {
|
|
13
|
+
textAlign: "center",
|
|
14
|
+
children: [/* @__PURE__ */ r(e.Title, {
|
|
15
|
+
fontWeight: "normal",
|
|
16
|
+
children: f
|
|
17
|
+
}), /* @__PURE__ */ r(e.Description, { children: l })]
|
|
18
|
+
}) : /* @__PURE__ */ r(e.Title, {
|
|
19
|
+
fontWeight: "normal",
|
|
20
|
+
children: f
|
|
21
|
+
}), s[8] = l, s[9] = f, s[10] = m) : m = s[10];
|
|
22
|
+
let h;
|
|
23
|
+
s[11] !== c || s[12] !== p || s[13] !== m ? (h = /* @__PURE__ */ i(e.Content, { children: [
|
|
24
|
+
p,
|
|
25
|
+
m,
|
|
26
|
+
c
|
|
27
|
+
] }), s[11] = c, s[12] = p, s[13] = m, s[14] = h) : h = s[14];
|
|
28
|
+
let g;
|
|
29
|
+
return s[15] !== o || s[16] !== d || s[17] !== h ? (g = /* @__PURE__ */ r(e.Root, {
|
|
30
|
+
ref: o,
|
|
31
|
+
...d,
|
|
32
|
+
children: h
|
|
33
|
+
}), s[15] = o, s[16] = d, s[17] = h, s[18] = g) : g = s[18], g;
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { o as t };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=empty-state-3mVV_pV-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-state-3mVV_pV-.js","names":["EmptyState","ChakraEmptyState","VStack","React","EmptyStateProps","RootProps","title","description","icon","ReactNode","forwardRef","HTMLDivElement","props","ref","$","_c","children","rest","t0","t1","t2","t3","EmptyState","_c","ChakraEmptyState","React","EmptyState$1","$","c","children","description","icon","rest","title","props","t0","EmptyState","t1","VStack","t2","t3","ref"],"sources":["../src/components/primitives/empty-state.tsx"],"sourcesContent":["import { EmptyState as ChakraEmptyState, VStack } from \"@chakra-ui/react\";\nimport * as React from \"react\";\n\n/** Centered empty-state message with optional icon, description, and follow-up actions. */\nexport interface EmptyStateProps extends ChakraEmptyState.RootProps {\n /** Primary empty-state message. */\n title: string;\n /** Supporting explanation shown below the title. */\n description?: string;\n /** Decorative or semantic icon shown above the message. */\n icon?: React.ReactNode;\n}\n\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(function EmptyState(props, ref) {\n const { title, description, icon, children, ...rest } = props;\n return (\n <ChakraEmptyState.Root ref={ref} {...rest}>\n <ChakraEmptyState.Content>\n {icon && <ChakraEmptyState.Indicator>{icon}</ChakraEmptyState.Indicator>}\n {description ? (\n <VStack textAlign=\"center\">\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n <ChakraEmptyState.Description>{description}</ChakraEmptyState.Description>\n </VStack>\n ) : (\n <ChakraEmptyState.Title fontWeight=\"normal\">{title}</ChakraEmptyState.Title>\n )}\n {children}\n </ChakraEmptyState.Content>\n </ChakraEmptyState.Root>\n );\n});\n"],"mappings":";;;;;AAaA,IAAaA,IAAaG,EAAMO,WAA4C,SAAAE,GAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC,GAAAT,GAAAC,GAAAS,GAAAX;CAAA,AAAAQ,EAAA,OAAAF,KACZI,IAAAF,EAAA,IAAAP,IAAAO,EAAA,IAAAN,IAAAM,EAAA,IAAAG,IAAAH,EAAA,IAAAR,IAAAQ,EAAA,OAA9D,iDAAA,GAAAG,KAAwDL,GAAME,EAAA,KAAAF,GAAAE,EAAA,KAAAE,GAAAF,EAAA,KAAAP,GAAAO,EAAA,KAAAN,GAAAM,EAAA,KAAAG,GAAAH,EAAA,KAAAR;CAAA,IAAAY;CAAA,AAAAJ,EAAA,OAAAN,IAIgBU,IAAAJ,EAAA,MAAvEI,IAAAV,KAAQ,kBAAAgB,EAAA,WAAA,EAAA,UAA6BhB,EAAK,CAAA,GAA6BM,EAAA,KAAAN,GAAAM,EAAA,KAAAI;CAAA,IAAAC;CAAA,AAAAL,EAAA,OAAAP,KAAAO,EAAA,OAAAR,KACvEa,IAAAZ,IACC,kBAAC+B,GAAD;EAAkB,WAAA;EAAlB,UAAA,CACE,kBAAAd,EAAA,OAAA;GAAmC,YAAA;GAAUlB,UAAAA;EAAM,CAAA,GACnD,kBAAAkB,EAAA,aAAA,EAAA,UAA+BjB,EAAY,CAAA,CAFtC;CAKP,CAAA,IAAA,kBAAAiB,EAAA,OAAA;EAAmC,YAAA;EAAUlB,UAAAA;CAAM,CAAA,GACpDQ,EAAA,KAAAP,GAAAO,EAAA,KAAAR,GAAAQ,EAAA,MAAAK,KAAAA,IAAAL,EAAA;CAAA,IAAAM;CAAA,AAAAN,EAAA,QAAAE,KAAAF,EAAA,QAAAI,KAAAJ,EAAA,QAAAK,KATHC,IAAA,kBAAAI,EAAA,SAAA,EAAA,UAAA;EACGN;EACAC;EAQAH;CACH,EAAA,CAAA,GAA2BF,EAAA,MAAAE,GAAAF,EAAA,MAAAI,GAAAJ,EAAA,MAAAK,GAAAL,EAAA,MAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;CACL,OADKP,EAAA,QAAAD,KAAAC,EAAA,QAAAG,KAAAH,EAAA,QAAAM,KAZ7BC,IAAA,kBAAAG,EAAA,MAAA;EAA4BX;EAAG,GAAMI;EACnCG,UAAAA;CAYF,CAAA,GAAwBN,EAAA,MAAAD,GAAAC,EAAA,MAAAG,GAAAH,EAAA,MAAAM,GAAAN,EAAA,MAAAO,KAAAA,IAAAP,EAAA,KAbxBO;AAawB,CAE3B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Badge as e } from "@chakra-ui/react";
|
|
2
|
+
import { c as t } from "react/compiler-runtime";
|
|
3
|
+
import { jsx as n } from "react/jsx-runtime";
|
|
4
|
+
import { create as r } from "zustand";
|
|
5
|
+
//#region src/components/diff-viewer/diff-viewer.store.ts
|
|
6
|
+
var i = r((e) => ({
|
|
7
|
+
isTreePanelOpen: !0,
|
|
8
|
+
viewMode: "nested",
|
|
9
|
+
diffViewMode: "unified",
|
|
10
|
+
searchQuery: "",
|
|
11
|
+
selectedPath: null,
|
|
12
|
+
expandedFolderIds: /* @__PURE__ */ new Set(),
|
|
13
|
+
setTreePanelOpen: (t) => e({ isTreePanelOpen: t }),
|
|
14
|
+
toggleTreePanel: () => e((e) => ({ isTreePanelOpen: !e.isTreePanelOpen })),
|
|
15
|
+
setViewMode: (t) => e({ viewMode: t }),
|
|
16
|
+
setDiffViewMode: (t) => e({ diffViewMode: t }),
|
|
17
|
+
setSearchQuery: (t) => e({ searchQuery: t }),
|
|
18
|
+
setSelectedPath: (t) => e({ selectedPath: t }),
|
|
19
|
+
setExpandedFolderIds: (t) => e({ expandedFolderIds: new Set(t) }),
|
|
20
|
+
toggleFolder: (t) => e((e) => {
|
|
21
|
+
let n = new Set(e.expandedFolderIds);
|
|
22
|
+
return n.has(t) ? n.delete(t) : n.add(t), { expandedFolderIds: n };
|
|
23
|
+
}),
|
|
24
|
+
expandAll: (t) => e({ expandedFolderIds: new Set(t) }),
|
|
25
|
+
collapseAll: () => e({ expandedFolderIds: /* @__PURE__ */ new Set() })
|
|
26
|
+
})), a = {
|
|
27
|
+
added: "A",
|
|
28
|
+
copied: "C",
|
|
29
|
+
deleted: "D",
|
|
30
|
+
modified: "M",
|
|
31
|
+
permissionChange: "M",
|
|
32
|
+
renamed: "R"
|
|
33
|
+
}, o = {
|
|
34
|
+
added: "green",
|
|
35
|
+
copied: "purple",
|
|
36
|
+
deleted: "red",
|
|
37
|
+
modified: "blue",
|
|
38
|
+
permissionChange: "yellow",
|
|
39
|
+
renamed: "orange"
|
|
40
|
+
}, s = {
|
|
41
|
+
added: {
|
|
42
|
+
color: "fg.success",
|
|
43
|
+
backgroundColor: "bg.success"
|
|
44
|
+
},
|
|
45
|
+
deleted: {
|
|
46
|
+
color: "fg.error",
|
|
47
|
+
backgroundColor: "bg.error"
|
|
48
|
+
}
|
|
49
|
+
}, c = (r) => {
|
|
50
|
+
let i = t(5), { change: c } = r, l;
|
|
51
|
+
i[0] === c ? l = i[1] : (l = s[c] ?? { colorPalette: o[c] ?? "gray" }, i[0] = c, i[1] = l);
|
|
52
|
+
let u = l, d = a[c] ?? c, f;
|
|
53
|
+
return i[2] !== u || i[3] !== d ? (f = /* @__PURE__ */ n(e, {
|
|
54
|
+
size: "xs",
|
|
55
|
+
variant: "subtle",
|
|
56
|
+
flexShrink: 0,
|
|
57
|
+
...u,
|
|
58
|
+
children: d
|
|
59
|
+
}), i[2] = u, i[3] = d, i[4] = f) : f = i[4], f;
|
|
60
|
+
};
|
|
61
|
+
//#endregion
|
|
62
|
+
export { i as n, c as t };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=file-change-badge-0QFNv82B.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-change-badge-0QFNv82B.js","names":["create","ChangedFilesViewMode","DiffViewMode","DiffViewerState","isTreePanelOpen","viewMode","diffViewMode","searchQuery","selectedPath","expandedFolderIds","Set","setTreePanelOpen","open","toggleTreePanel","setViewMode","setDiffViewMode","setSearchQuery","setSelectedPath","setExpandedFolderIds","folderIds","toggleFolder","folderId","expandAll","collapseAll","useDiffViewerStore","set","state","has","delete","add","Badge","changeLabels","Record","added","copied","deleted","modified","permissionChange","renamed","changeColors","changeSemanticStyles","color","backgroundColor","FileChangeBadge","props","$","_c","change","t0","colorPalette","colorProps","t1","t2","_c","useDiffViewerStore","create","set","state","folderIds","expandedFolderIds","folderId","changeLabels","changeColors","changeSemanticStyles","FileChangeBadge","$","c","props","t0","change","colorProps","t1","t2","Badge"],"sources":["../src/components/diff-viewer/diff-viewer.store.ts","../src/components/diff-viewer/file-change-badge.tsx"],"sourcesContent":["import { create } from \"zustand\";\nimport type { ChangedFilesViewMode, DiffViewMode } from \"./types\";\n\ninterface DiffViewerState {\n isTreePanelOpen: boolean;\n viewMode: ChangedFilesViewMode;\n diffViewMode: DiffViewMode;\n searchQuery: string;\n selectedPath: string | null;\n expandedFolderIds: Set<string>;\n setTreePanelOpen: (open: boolean) => void;\n toggleTreePanel: () => void;\n setViewMode: (viewMode: ChangedFilesViewMode) => void;\n setDiffViewMode: (diffViewMode: DiffViewMode) => void;\n setSearchQuery: (searchQuery: string) => void;\n setSelectedPath: (selectedPath: string | null) => void;\n setExpandedFolderIds: (folderIds: string[]) => void;\n toggleFolder: (folderId: string) => void;\n expandAll: (folderIds: string[]) => void;\n collapseAll: () => void;\n}\n\nexport const useDiffViewerStore = create<DiffViewerState>((set) => ({\n isTreePanelOpen: true,\n viewMode: \"nested\",\n diffViewMode: \"unified\",\n searchQuery: \"\",\n selectedPath: null,\n expandedFolderIds: new Set(),\n setTreePanelOpen: (isTreePanelOpen) => set({ isTreePanelOpen }),\n toggleTreePanel: () => set((state) => ({ isTreePanelOpen: !state.isTreePanelOpen })),\n setViewMode: (viewMode) => set({ viewMode }),\n setDiffViewMode: (diffViewMode) => set({ diffViewMode }),\n setSearchQuery: (searchQuery) => set({ searchQuery }),\n setSelectedPath: (selectedPath) => set({ selectedPath }),\n setExpandedFolderIds: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n toggleFolder: (folderId) =>\n set((state) => {\n const expandedFolderIds = new Set(state.expandedFolderIds);\n if (expandedFolderIds.has(folderId)) expandedFolderIds.delete(folderId);\n else expandedFolderIds.add(folderId);\n return { expandedFolderIds };\n }),\n expandAll: (folderIds) => set({ expandedFolderIds: new Set(folderIds) }),\n collapseAll: () => set({ expandedFolderIds: new Set() }),\n}));\n","import { Badge } from \"@chakra-ui/react\";\n\nconst changeLabels: Record<string, string> = {\n added: \"A\",\n copied: \"C\",\n deleted: \"D\",\n modified: \"M\",\n permissionChange: \"M\",\n renamed: \"R\",\n};\n\nconst changeColors: Record<string, string> = {\n added: \"green\",\n copied: \"purple\",\n deleted: \"red\",\n modified: \"blue\",\n permissionChange: \"yellow\",\n renamed: \"orange\",\n};\n\nconst changeSemanticStyles: Record<string, { color: string; backgroundColor: string }> = {\n added: { color: \"fg.success\", backgroundColor: \"bg.success\" },\n deleted: { color: \"fg.error\", backgroundColor: \"bg.error\" },\n};\n\nexport const FileChangeBadge = (props: { change: string }) => {\n const { change } = props;\n const colorProps = changeSemanticStyles[change] ?? { colorPalette: changeColors[change] ?? \"gray\" };\n\n return (\n <Badge size=\"xs\" variant=\"subtle\" flexShrink={0} {...colorProps}>\n {changeLabels[change] ?? change}\n </Badge>\n );\n};\n"],"mappings":";;;;;AAsBA,IAAawB,IAAqBxB,GAAyByB,OAAS;CAClErB,iBAAiB;CACjBC,UAAU;CACVC,cAAc;CACdC,aAAa;CACbC,cAAc;CACdC,mCAAmB,IAAIC,IAAI;CAC3BC,mBAAmBP,MAAoBqB,EAAI,EAAErB,mBAAgB,CAAC;CAC9DS,uBAAuBY,GAAKC,OAAW,EAAEtB,iBAAiB,CAACsB,EAAMtB,gBAAgB,EAAE;CACnFU,cAAcT,MAAaoB,EAAI,EAAEpB,YAAS,CAAC;CAC3CU,kBAAkBT,MAAiBmB,EAAI,EAAEnB,gBAAa,CAAC;CACvDU,iBAAiBT,MAAgBkB,EAAI,EAAElB,eAAY,CAAC;CACpDU,kBAAkBT,MAAiBiB,EAAI,EAAEjB,gBAAa,CAAC;CACvDU,uBAAuBC,MAAcM,EAAI,EAAEhB,mBAAmB,IAAIC,IAAIS,CAAS,EAAE,CAAC;CAClFC,eAAeC,MACbI,GAAKC,MAAU;EACb,IAAMjB,IAAoB,IAAIC,IAAIgB,EAAMjB,iBAAiB;EAGzD,OAFIA,EAAkBkB,IAAIN,CAAQ,IAAGZ,EAAkBmB,OAAOP,CAAQ,IACjEZ,EAAkBoB,IAAIR,CAAQ,GAC5B,EAAEZ,qBAAkB;CAC7B,CAAC;CACHa,YAAYH,MAAcM,EAAI,EAAEhB,mBAAmB,IAAIC,IAAIS,CAAS,EAAE,CAAC;CACvEI,mBAAmBE,EAAI,EAAEhB,mCAAmB,IAAIC,IAAI,EAAE,CAAC;AACzD,EAAE,GC3CIqB,IAAuC;CAC3CE,OAAO;CACPC,QAAQ;CACRC,SAAS;CACTC,UAAU;CACVC,kBAAkB;CAClBC,SAAS;AACX,GAEMC,IAAuC;CAC3CN,OAAO;CACPC,QAAQ;CACRC,SAAS;CACTC,UAAU;CACVC,kBAAkB;CAClBC,SAAS;AACX,GAEME,IAAmF;CACvFP,OAAO;EAAEQ,OAAO;EAAcC,iBAAiB;CAAa;CAC5DP,SAAS;EAAEM,OAAO;EAAYC,iBAAiB;CAAW;AAC5D,GAEaC,KAAkBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAC7B,EAAAC,cAAmBH,GAAMI;CAAA,AAAAH,EAAA,OAAAE,IAC0EC,IAAAH,EAAA,MAAhFG,IAAAR,EAAqBO,MAArB,EAAAE,cAAgDV,EAAaQ,MAAb,OAA+B,GAACF,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAAnG,IAAAE,IAAmBF,GAIdG,IAAApB,EAAagB,MAAbA,GAA8BK;CACzB,OADyBP,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KADjCC,IAAA,kBAACqB,GAAD;EAAY,MAAA;EAAa,SAAA;EAAqB,YAAA;EAAC,GAAMvB;EAClDC,UAAAA;CADG,CAAA,GAEEN,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IAFRO;AAEQ"}
|