@vibefield/rosetta-room 0.0.0-stage → 0.1.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/README.md +247 -2
- package/dist/HistoryRoom.d.ts +98 -0
- package/dist/HistoryRoom.js +440 -0
- package/dist/TranscriptReader.d.ts +22 -0
- package/dist/TranscriptReader.js +72 -0
- package/dist/components/ColdStart.d.ts +4 -0
- package/dist/components/ColdStart.js +5 -0
- package/dist/components/FilterChips.d.ts +4 -0
- package/dist/components/FilterChips.js +5 -0
- package/dist/components/HostAct.d.ts +9 -0
- package/dist/components/HostAct.js +16 -0
- package/dist/components/HostMenu.d.ts +41 -0
- package/dist/components/HostMenu.js +216 -0
- package/dist/components/IngestStatus.d.ts +4 -0
- package/dist/components/IngestStatus.js +20 -0
- package/dist/components/ListActivityNotice.d.ts +5 -0
- package/dist/components/ListActivityNotice.js +4 -0
- package/dist/components/ListSections.d.ts +20 -0
- package/dist/components/ListSections.js +39 -0
- package/dist/components/RenameHeading.d.ts +9 -0
- package/dist/components/RenameHeading.js +75 -0
- package/dist/components/SearchStrip.d.ts +5 -0
- package/dist/components/SearchStrip.js +8 -0
- package/dist/components/SummaryMetrics.d.ts +13 -0
- package/dist/components/SummaryMetrics.js +9 -0
- package/dist/components/SummaryPanels.d.ts +35 -0
- package/dist/components/SummaryPanels.js +117 -0
- package/dist/components/Transcript.d.ts +46 -0
- package/dist/components/Transcript.js +358 -0
- package/dist/components/charts/ActivityChartDetail.d.ts +13 -0
- package/dist/components/charts/ActivityChartDetail.js +78 -0
- package/dist/components/charts/CalendarHeatmap.d.ts +16 -0
- package/dist/components/charts/CalendarHeatmap.js +55 -0
- package/dist/components/charts/DayActivityChart.d.ts +8 -0
- package/dist/components/charts/DayActivityChart.js +71 -0
- package/dist/components/charts/ModelsChartDetail.d.ts +7 -0
- package/dist/components/charts/ModelsChartDetail.js +19 -0
- package/dist/components/charts/ProjectChartDialog.d.ts +19 -0
- package/dist/components/charts/ProjectChartDialog.js +39 -0
- package/dist/components/charts/Streamgraph.d.ts +16 -0
- package/dist/components/charts/Streamgraph.js +94 -0
- package/dist/components/charts/Treemap.d.ts +26 -0
- package/dist/components/charts/Treemap.js +81 -0
- package/dist/components/charts/index.d.ts +9 -0
- package/dist/components/charts/index.js +4 -0
- package/dist/components/charts/streamgraph-layout.d.ts +23 -0
- package/dist/components/charts/streamgraph-layout.js +114 -0
- package/dist/components/charts/treemap-layout.d.ts +32 -0
- package/dist/components/charts/treemap-layout.js +140 -0
- package/dist/components/charts/types.d.ts +65 -0
- package/dist/components/charts/types.js +8 -0
- package/dist/components/file-viewer/FileViewerBrowsers.d.ts +10 -0
- package/dist/components/file-viewer/FileViewerBrowsers.js +65 -0
- package/dist/components/file-viewer/FileViewerDialog.d.ts +33 -0
- package/dist/components/file-viewer/FileViewerDialog.js +82 -0
- package/dist/components/file-viewer/FileViewerHeader.d.ts +26 -0
- package/dist/components/file-viewer/FileViewerHeader.js +17 -0
- package/dist/components/file-viewer/ImageGalleryDialog.d.ts +14 -0
- package/dist/components/file-viewer/ImageGalleryDialog.js +98 -0
- package/dist/components/file-viewer/diff/index.d.ts +2 -0
- package/dist/components/file-viewer/diff/index.js +2 -0
- package/dist/components/file-viewer/diff/parse.d.ts +2 -0
- package/dist/components/file-viewer/diff/parse.js +164 -0
- package/dist/components/file-viewer/diff/types.d.ts +44 -0
- package/dist/components/file-viewer/diff/types.js +7 -0
- package/dist/components/file-viewer/gallery-source.d.ts +11 -0
- package/dist/components/file-viewer/gallery-source.js +75 -0
- package/dist/components/file-viewer/image-resource.d.ts +19 -0
- package/dist/components/file-viewer/image-resource.js +60 -0
- package/dist/components/file-viewer/index.d.ts +5 -0
- package/dist/components/file-viewer/index.js +8 -0
- package/dist/components/file-viewer/markdown/blocks.d.ts +2 -0
- package/dist/components/file-viewer/markdown/blocks.js +277 -0
- package/dist/components/file-viewer/markdown/index.d.ts +4 -0
- package/dist/components/file-viewer/markdown/index.js +35 -0
- package/dist/components/file-viewer/markdown/inline.d.ts +10 -0
- package/dist/components/file-viewer/markdown/inline.js +178 -0
- package/dist/components/file-viewer/markdown/render.d.ts +9 -0
- package/dist/components/file-viewer/markdown/render.js +78 -0
- package/dist/components/file-viewer/markdown/types.d.ts +57 -0
- package/dist/components/file-viewer/markdown/types.js +11 -0
- package/dist/components/file-viewer/minimap/CodeMinimap.d.ts +10 -0
- package/dist/components/file-viewer/minimap/CodeMinimap.js +296 -0
- package/dist/components/file-viewer/minimap/layout.d.ts +60 -0
- package/dist/components/file-viewer/minimap/layout.js +117 -0
- package/dist/components/file-viewer/minimap/palette.d.ts +2 -0
- package/dist/components/file-viewer/minimap/palette.js +73 -0
- package/dist/components/file-viewer/minimap/raster.d.ts +19 -0
- package/dist/components/file-viewer/minimap/raster.js +122 -0
- package/dist/components/file-viewer/registry.d.ts +25 -0
- package/dist/components/file-viewer/registry.js +182 -0
- package/dist/components/file-viewer/syntax/grammars.d.ts +16 -0
- package/dist/components/file-viewer/syntax/grammars.js +221 -0
- package/dist/components/file-viewer/syntax/index.d.ts +8 -0
- package/dist/components/file-viewer/syntax/index.js +9 -0
- package/dist/components/file-viewer/syntax/languages.d.ts +14 -0
- package/dist/components/file-viewer/syntax/languages.js +115 -0
- package/dist/components/file-viewer/syntax/tokenize-config.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-config.js +132 -0
- package/dist/components/file-viewer/syntax/tokenize-css.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-css.js +169 -0
- package/dist/components/file-viewer/syntax/tokenize-markup.d.ts +2 -0
- package/dist/components/file-viewer/syntax/tokenize-markup.js +124 -0
- package/dist/components/file-viewer/syntax/tokenize.d.ts +9 -0
- package/dist/components/file-viewer/syntax/tokenize.js +289 -0
- package/dist/components/file-viewer/syntax/types.d.ts +74 -0
- package/dist/components/file-viewer/syntax/types.js +13 -0
- package/dist/components/file-viewer/types.d.ts +111 -0
- package/dist/components/file-viewer/types.js +8 -0
- package/dist/components/file-viewer/use-file-content.d.ts +26 -0
- package/dist/components/file-viewer/use-file-content.js +144 -0
- package/dist/components/file-viewer/views/BinaryView.d.ts +2 -0
- package/dist/components/file-viewer/views/BinaryView.js +34 -0
- package/dist/components/file-viewer/views/CodeView.d.ts +2 -0
- package/dist/components/file-viewer/views/CodeView.js +46 -0
- package/dist/components/file-viewer/views/DiffBody.d.ts +7 -0
- package/dist/components/file-viewer/views/DiffBody.js +77 -0
- package/dist/components/file-viewer/views/DiffView.d.ts +2 -0
- package/dist/components/file-viewer/views/DiffView.js +11 -0
- package/dist/components/file-viewer/views/ImageView.d.ts +9 -0
- package/dist/components/file-viewer/views/ImageView.js +28 -0
- package/dist/components/file-viewer/views/MarkdownView.d.ts +9 -0
- package/dist/components/file-viewer/views/MarkdownView.js +20 -0
- package/dist/components/file-viewer/views/SvgView.d.ts +9 -0
- package/dist/components/file-viewer/views/SvgView.js +10 -0
- package/dist/components/git/ChangeTree.d.ts +20 -0
- package/dist/components/git/ChangeTree.js +35 -0
- package/dist/components/git/CommitViewer.d.ts +12 -0
- package/dist/components/git/CommitViewer.js +85 -0
- package/dist/components/git/GitChanges.d.ts +17 -0
- package/dist/components/git/GitChanges.js +70 -0
- package/dist/components/git/GitHistory.d.ts +9 -0
- package/dist/components/git/GitHistory.js +58 -0
- package/dist/components/git/co-author.d.ts +14 -0
- package/dist/components/git/co-author.js +55 -0
- package/dist/components/git/git-file-source.d.ts +18 -0
- package/dist/components/git/git-file-source.js +53 -0
- package/dist/components/git/git-host.d.ts +24 -0
- package/dist/components/git/git-host.js +130 -0
- package/dist/components/git/index.d.ts +10 -0
- package/dist/components/git/index.js +12 -0
- package/dist/components/git/path-tree.d.ts +23 -0
- package/dist/components/git/path-tree.js +73 -0
- package/dist/components/git/session-files.d.ts +9 -0
- package/dist/components/git/session-files.js +50 -0
- package/dist/components/git/types.d.ts +92 -0
- package/dist/components/git/types.js +9 -0
- package/dist/components/projects/ProjectActivitySparkline.d.ts +6 -0
- package/dist/components/projects/ProjectActivitySparkline.js +12 -0
- package/dist/components/projects/ProjectList.d.ts +25 -0
- package/dist/components/projects/ProjectList.js +43 -0
- package/dist/components/projects/ProjectListItem.d.ts +19 -0
- package/dist/components/projects/ProjectListItem.js +78 -0
- package/dist/components/projects/ProjectsColumn.d.ts +19 -0
- package/dist/components/projects/ProjectsColumn.js +36 -0
- package/dist/components/projects/index.d.ts +8 -0
- package/dist/components/projects/index.js +4 -0
- package/dist/components/search/MatchStepper.d.ts +9 -0
- package/dist/components/search/MatchStepper.js +14 -0
- package/dist/components/search/SearchLauncher.d.ts +12 -0
- package/dist/components/search/SearchLauncher.js +13 -0
- package/dist/components/search/SearchSheet.d.ts +29 -0
- package/dist/components/search/SearchSheet.js +230 -0
- package/dist/components/search/index.d.ts +8 -0
- package/dist/components/search/index.js +4 -0
- package/dist/components/search/shortcut.d.ts +25 -0
- package/dist/components/search/shortcut.js +32 -0
- package/dist/components/sessions/SessionList.d.ts +24 -0
- package/dist/components/sessions/SessionList.js +76 -0
- package/dist/components/sessions/SessionListItem.d.ts +13 -0
- package/dist/components/sessions/SessionListItem.js +58 -0
- package/dist/components/sessions/SessionsColumn.d.ts +26 -0
- package/dist/components/sessions/SessionsColumn.js +32 -0
- package/dist/components/sessions/index.d.ts +9 -0
- package/dist/components/sessions/index.js +4 -0
- package/dist/components/sessions/session-display.d.ts +8 -0
- package/dist/components/sessions/session-display.js +18 -0
- package/dist/components/sessions/types.d.ts +7 -0
- package/dist/components/sessions/types.js +1 -0
- package/dist/components/transcript/Activity.d.ts +45 -0
- package/dist/components/transcript/Activity.js +75 -0
- package/dist/components/transcript/Anchor.d.ts +8 -0
- package/dist/components/transcript/Anchor.js +23 -0
- package/dist/components/transcript/Attachments.d.ts +21 -0
- package/dist/components/transcript/Attachments.js +138 -0
- package/dist/components/transcript/AuthoredMessage.d.ts +19 -0
- package/dist/components/transcript/AuthoredMessage.js +17 -0
- package/dist/components/transcript/Compaction.d.ts +9 -0
- package/dist/components/transcript/Compaction.js +50 -0
- package/dist/components/transcript/DayPill.d.ts +38 -0
- package/dist/components/transcript/DayPill.js +68 -0
- package/dist/components/transcript/Document.d.ts +32 -0
- package/dist/components/transcript/Document.js +503 -0
- package/dist/components/transcript/Favicon.d.ts +32 -0
- package/dist/components/transcript/Favicon.js +71 -0
- package/dist/components/transcript/HeadOfDocument.d.ts +19 -0
- package/dist/components/transcript/HeadOfDocument.js +44 -0
- package/dist/components/transcript/Ledger.d.ts +53 -0
- package/dist/components/transcript/Ledger.js +182 -0
- package/dist/components/transcript/LineDetail.d.ts +24 -0
- package/dist/components/transcript/LineDetail.js +81 -0
- package/dist/components/transcript/Marker.d.ts +33 -0
- package/dist/components/transcript/Marker.js +21 -0
- package/dist/components/transcript/MessagePreview.d.ts +12 -0
- package/dist/components/transcript/MessagePreview.js +58 -0
- package/dist/components/transcript/Prompt.d.ts +20 -0
- package/dist/components/transcript/Prompt.js +55 -0
- package/dist/components/transcript/Prose.d.ts +19 -0
- package/dist/components/transcript/Prose.js +109 -0
- package/dist/components/transcript/ReceiptPill.d.ts +10 -0
- package/dist/components/transcript/ReceiptPill.js +10 -0
- package/dist/components/transcript/ResponseHead.d.ts +9 -0
- package/dist/components/transcript/ResponseHead.js +36 -0
- package/dist/components/transcript/Subthread.d.ts +19 -0
- package/dist/components/transcript/Subthread.js +96 -0
- package/dist/components/transcript/Team.d.ts +53 -0
- package/dist/components/transcript/Team.js +185 -0
- package/dist/components/transcript/Thinking.d.ts +24 -0
- package/dist/components/transcript/Thinking.js +50 -0
- package/dist/components/transcript/TimelineMeta.d.ts +9 -0
- package/dist/components/transcript/TimelineMeta.js +161 -0
- package/dist/components/transcript/TranscriptLoading.d.ts +10 -0
- package/dist/components/transcript/TranscriptLoading.js +10 -0
- package/dist/components/transcript/WebDetail.d.ts +8 -0
- package/dist/components/transcript/WebDetail.js +29 -0
- package/dist/components/transcript/Workflow.d.ts +12 -0
- package/dist/components/transcript/Workflow.js +208 -0
- package/dist/components/transcript/activity-plan.d.ts +84 -0
- package/dist/components/transcript/activity-plan.js +209 -0
- package/dist/components/transcript/attachment-file-source.d.ts +23 -0
- package/dist/components/transcript/attachment-file-source.js +103 -0
- package/dist/components/transcript/attachment-gallery.d.ts +12 -0
- package/dist/components/transcript/attachment-gallery.js +33 -0
- package/dist/components/transcript/detail-parts.d.ts +50 -0
- package/dist/components/transcript/detail-parts.js +295 -0
- package/dist/components/transcript/disclosure-state.d.ts +6 -0
- package/dist/components/transcript/disclosure-state.js +32 -0
- package/dist/components/transcript/disclosure-store.d.ts +8 -0
- package/dist/components/transcript/disclosure-store.js +31 -0
- package/dist/components/transcript/document-model.d.ts +15 -0
- package/dist/components/transcript/document-model.js +104 -0
- package/dist/components/transcript/document-plan.d.ts +28 -0
- package/dist/components/transcript/document-plan.js +145 -0
- package/dist/components/transcript/fold-preference.d.ts +17 -0
- package/dist/components/transcript/fold-preference.js +63 -0
- package/dist/components/transcript/glyphs.d.ts +15 -0
- package/dist/components/transcript/glyphs.js +47 -0
- package/dist/components/transcript/index.d.ts +23 -0
- package/dist/components/transcript/index.js +22 -0
- package/dist/components/transcript/message-file-source.d.ts +15 -0
- package/dist/components/transcript/message-file-source.js +31 -0
- package/dist/components/transcript/message-preview.d.ts +9 -0
- package/dist/components/transcript/message-preview.js +46 -0
- package/dist/components/transcript/read-file-source.d.ts +7 -0
- package/dist/components/transcript/read-file-source.js +34 -0
- package/dist/components/transcript/reader-context.d.ts +13 -0
- package/dist/components/transcript/reader-context.js +55 -0
- package/dist/components/transcript/reading-identity.d.ts +2 -0
- package/dist/components/transcript/reading-identity.js +52 -0
- package/dist/components/transcript/scroll-to-row.d.ts +2 -0
- package/dist/components/transcript/scroll-to-row.js +13 -0
- package/dist/components/transcript/thread-index.d.ts +14 -0
- package/dist/components/transcript/thread-index.js +40 -0
- package/dist/components/transcript/thread-navigation.d.ts +5 -0
- package/dist/components/transcript/thread-navigation.js +3 -0
- package/dist/components/transcript/timeline-meta-file-source.d.ts +6 -0
- package/dist/components/transcript/timeline-meta-file-source.js +55 -0
- package/dist/components/transcript/timeline-meta-state.d.ts +12 -0
- package/dist/components/transcript/timeline-meta-state.js +24 -0
- package/dist/components/ui/ColumnHeading.d.ts +27 -0
- package/dist/components/ui/ColumnHeading.js +7 -0
- package/dist/components/ui/ConfirmDialog.d.ts +14 -0
- package/dist/components/ui/ConfirmDialog.js +22 -0
- package/dist/components/ui/DialogShell.d.ts +18 -0
- package/dist/components/ui/DialogShell.js +40 -0
- package/dist/components/ui/EmptyState.d.ts +10 -0
- package/dist/components/ui/EmptyState.js +6 -0
- package/dist/components/ui/ListSummaryHeader.d.ts +9 -0
- package/dist/components/ui/ListSummaryHeader.js +6 -0
- package/dist/components/ui/ListToolbar.d.ts +6 -0
- package/dist/components/ui/ListToolbar.js +5 -0
- package/dist/components/ui/ResultGroupHeader.d.ts +9 -0
- package/dist/components/ui/ResultGroupHeader.js +5 -0
- package/dist/components/ui/SegmentedControl.d.ts +16 -0
- package/dist/components/ui/SegmentedControl.js +9 -0
- package/dist/components/ui/SummaryMetric.d.ts +13 -0
- package/dist/components/ui/SummaryMetric.js +10 -0
- package/dist/components/ui/Veil.d.ts +7 -0
- package/dist/components/ui/Veil.js +5 -0
- package/dist/components/ui/index.d.ts +20 -0
- package/dist/components/ui/index.js +10 -0
- package/dist/components/worktree/WorktreeColumn.d.ts +22 -0
- package/dist/components/worktree/WorktreeColumn.js +170 -0
- package/dist/components/worktree/WorktreeFileTree.d.ts +19 -0
- package/dist/components/worktree/WorktreeFileTree.js +60 -0
- package/dist/components/worktree/WorktreeHeader.d.ts +32 -0
- package/dist/components/worktree/WorktreeHeader.js +81 -0
- package/dist/components/worktree/WorktreeList.d.ts +8 -0
- package/dist/components/worktree/WorktreeList.js +12 -0
- package/dist/components/worktree/index.d.ts +12 -0
- package/dist/components/worktree/index.js +7 -0
- package/dist/components/worktree/types.d.ts +17 -0
- package/dist/components/worktree/types.js +3 -0
- package/dist/components/worktree/use-worktree-guest.d.ts +21 -0
- package/dist/components/worktree/use-worktree-guest.js +92 -0
- package/dist/components/worktree/worktree-file-commands.d.ts +19 -0
- package/dist/components/worktree/worktree-file-commands.js +112 -0
- package/dist/components/worktree/worktree-file-source.d.ts +15 -0
- package/dist/components/worktree/worktree-file-source.js +75 -0
- package/dist/components/worktree/worktree-host.d.ts +31 -0
- package/dist/components/worktree/worktree-host.js +242 -0
- package/dist/fixtures/index.d.ts +24 -0
- package/dist/fixtures/index.js +292 -0
- package/dist/host-inputs.d.ts +231 -0
- package/dist/host-inputs.js +35 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +14 -0
- package/dist/lib/activity-details.d.ts +23 -0
- package/dist/lib/activity-details.js +78 -0
- package/dist/lib/activity-order.d.ts +32 -0
- package/dist/lib/activity-order.js +86 -0
- package/dist/lib/agent-paths.d.ts +6 -0
- package/dist/lib/agent-paths.js +19 -0
- package/dist/lib/agents.d.ts +15 -0
- package/dist/lib/agents.js +60 -0
- package/dist/lib/catalog-status.d.ts +3 -0
- package/dist/lib/catalog-status.js +10 -0
- package/dist/lib/chart-data.d.ts +14 -0
- package/dist/lib/chart-data.js +151 -0
- package/dist/lib/day-activity.d.ts +21 -0
- package/dist/lib/day-activity.js +56 -0
- package/dist/lib/format.d.ts +24 -0
- package/dist/lib/format.js +116 -0
- package/dist/lib/hooks.d.ts +118 -0
- package/dist/lib/hooks.js +608 -0
- package/dist/lib/icons.d.ts +21 -0
- package/dist/lib/icons.js +49 -0
- package/dist/lib/image-media.d.ts +6 -0
- package/dist/lib/image-media.js +30 -0
- package/dist/lib/ingest-activity.d.ts +50 -0
- package/dist/lib/ingest-activity.js +151 -0
- package/dist/lib/ingest.d.ts +25 -0
- package/dist/lib/ingest.js +70 -0
- package/dist/lib/model-labels.d.ts +5 -0
- package/dist/lib/model-labels.js +28 -0
- package/dist/lib/model.d.ts +73 -0
- package/dist/lib/model.js +141 -0
- package/dist/lib/motion.d.ts +13 -0
- package/dist/lib/motion.js +80 -0
- package/dist/lib/room-storage.d.ts +13 -0
- package/dist/lib/room-storage.js +40 -0
- package/dist/lib/search-results.d.ts +27 -0
- package/dist/lib/search-results.js +83 -0
- package/dist/lib/search-sheet.d.ts +119 -0
- package/dist/lib/search-sheet.js +282 -0
- package/dist/lib/sections.d.ts +19 -0
- package/dist/lib/sections.js +36 -0
- package/dist/lib/session-activity.d.ts +5 -0
- package/dist/lib/session-activity.js +15 -0
- package/dist/lib/session-leases.d.ts +15 -0
- package/dist/lib/session-leases.js +61 -0
- package/dist/lib/spend.d.ts +42 -0
- package/dist/lib/spend.js +112 -0
- package/dist/lib/tint.d.ts +9 -0
- package/dist/lib/tint.js +53 -0
- package/dist/lib/transcript/collaboration.d.ts +97 -0
- package/dist/lib/transcript/collaboration.js +423 -0
- package/dist/lib/transcript/families.d.ts +212 -0
- package/dist/lib/transcript/families.js +906 -0
- package/dist/lib/transcript/favicons.d.ts +54 -0
- package/dist/lib/transcript/favicons.js +183 -0
- package/dist/lib/transcript/head-of-document.d.ts +27 -0
- package/dist/lib/transcript/head-of-document.js +274 -0
- package/dist/lib/transcript/head-state.d.ts +182 -0
- package/dist/lib/transcript/head-state.js +305 -0
- package/dist/lib/transcript/history-window.d.ts +13 -0
- package/dist/lib/transcript/history-window.js +52 -0
- package/dist/lib/transcript/images.d.ts +8 -0
- package/dist/lib/transcript/images.js +60 -0
- package/dist/lib/transcript/index.d.ts +15 -0
- package/dist/lib/transcript/index.js +8 -0
- package/dist/lib/transcript/ledger.d.ts +143 -0
- package/dist/lib/transcript/ledger.js +513 -0
- package/dist/lib/transcript/protocol.d.ts +23 -0
- package/dist/lib/transcript/protocol.js +1 -0
- package/dist/lib/transcript/sittings.d.ts +75 -0
- package/dist/lib/transcript/sittings.js +147 -0
- package/dist/lib/transcript/tail-scroll.d.ts +36 -0
- package/dist/lib/transcript/tail-scroll.js +167 -0
- package/dist/lib/transcript/tail-state.d.ts +17 -0
- package/dist/lib/transcript/tail-state.js +30 -0
- package/dist/lib/transcript/turns.d.ts +192 -0
- package/dist/lib/transcript/turns.js +576 -0
- package/dist/lib/transcript/use-transcript-opening.d.ts +12 -0
- package/dist/lib/transcript/use-transcript-opening.js +31 -0
- package/dist/lib/transcript/use-transcript-tail.d.ts +25 -0
- package/dist/lib/transcript/use-transcript-tail.js +158 -0
- package/dist/lib/transcript/vocabulary.d.ts +119 -0
- package/dist/lib/transcript/vocabulary.js +293 -0
- package/dist/lib/transcript/web-address.d.ts +6 -0
- package/dist/lib/transcript/web-address.js +18 -0
- package/dist/lib/transcript/workflow.d.ts +31 -0
- package/dist/lib/transcript/workflow.js +133 -0
- package/dist/lib/use-activity-order.d.ts +2 -0
- package/dist/lib/use-activity-order.js +23 -0
- package/dist/lib/use-day-usage.d.ts +8 -0
- package/dist/lib/use-day-usage.js +31 -0
- package/dist/lib/use-deferred-list-order.d.ts +26 -0
- package/dist/lib/use-deferred-list-order.js +142 -0
- package/dist/lib/use-ingest-activity.d.ts +2 -0
- package/dist/lib/use-ingest-activity.js +49 -0
- package/dist/lib/use-list-motion.d.ts +4 -0
- package/dist/lib/use-list-motion.js +67 -0
- package/dist/ports.d.ts +222 -0
- package/dist/ports.js +3 -0
- package/dist/room-context.d.ts +60 -0
- package/dist/room-context.js +87 -0
- package/dist/styles/activity-chart.css +127 -0
- package/dist/styles/attachments.css +29 -0
- package/dist/styles/favicon.css +73 -0
- package/dist/styles/history-room.css +18 -0
- package/dist/styles/host-inputs.css +250 -0
- package/dist/styles/image-gallery.css +30 -0
- package/dist/styles/ingest.css +51 -0
- package/dist/styles/message-preview.css +34 -0
- package/dist/styles/models-chart.css +66 -0
- package/dist/styles/project-chart.css +19 -0
- package/dist/styles/reader.css +33 -0
- package/dist/styles/room.css +1411 -0
- package/dist/styles/search.css +252 -0
- package/dist/styles/transcript-activity.css +70 -0
- package/dist/styles/transcript-head.css +220 -0
- package/dist/styles/transcript-loading.css +57 -0
- package/dist/styles/transcript.css +1226 -0
- package/package.json +61 -4
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// Parsing one file's unified diff, as `git diff` writes it.
|
|
2
|
+
//
|
|
3
|
+
// One file per call. git will happily emit many in one run; the column asks
|
|
4
|
+
// per file, because the viewer shows one file and a parser that returns a
|
|
5
|
+
// list would only be unpacked at every call site.
|
|
6
|
+
/** `@@ -12,7 +12,9 @@ fn walk()` — counts are optional and default to 1. */
|
|
7
|
+
const HUNK = /^@@+ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@+(.*)$/;
|
|
8
|
+
/** Codex `apply_patch` also persists location-free `@@` hunks. */
|
|
9
|
+
const UNPOSITIONED_HUNK = /^@@(?:\s+(.*))?$/;
|
|
10
|
+
const EMPTY = {
|
|
11
|
+
oldPath: null,
|
|
12
|
+
newPath: null,
|
|
13
|
+
hunks: [],
|
|
14
|
+
absence: "unchanged",
|
|
15
|
+
renamedFrom: null,
|
|
16
|
+
added: 0,
|
|
17
|
+
deleted: 0,
|
|
18
|
+
};
|
|
19
|
+
/** `a/src/main.rs` → `src/main.rs`; `/dev/null` → null. */
|
|
20
|
+
function pathOf(raw) {
|
|
21
|
+
const trimmed = raw.trim();
|
|
22
|
+
if (trimmed === "/dev/null" || trimmed === "")
|
|
23
|
+
return null;
|
|
24
|
+
// git quotes a path containing anything unusual, and escapes it C-style.
|
|
25
|
+
const unquoted = trimmed.startsWith('"') && trimmed.endsWith('"')
|
|
26
|
+
? trimmed.slice(1, -1).replace(/\\(.)/g, "$1")
|
|
27
|
+
: trimmed;
|
|
28
|
+
return unquoted.replace(/^[ab]\//, "");
|
|
29
|
+
}
|
|
30
|
+
/** The header's path, with the timestamp `--- a/x.ts\t2026-08-30` can carry. */
|
|
31
|
+
function headerPath(line, marker) {
|
|
32
|
+
return pathOf(line.slice(marker.length).split("\t")[0]);
|
|
33
|
+
}
|
|
34
|
+
export function parseDiff(text) {
|
|
35
|
+
if (text.trim() === "")
|
|
36
|
+
return EMPTY;
|
|
37
|
+
const lines = text.split("\n");
|
|
38
|
+
const hunks = [];
|
|
39
|
+
let oldPath = null;
|
|
40
|
+
let newPath = null;
|
|
41
|
+
let renamedFrom = null;
|
|
42
|
+
let absence = null;
|
|
43
|
+
let added = 0;
|
|
44
|
+
let deleted = 0;
|
|
45
|
+
// `---` and `+++` are authoritative — `/dev/null` on one of them is how an
|
|
46
|
+
// add or a delete is spelled. `diff --git a/x b/y` is only a FALLBACK, for
|
|
47
|
+
// a pure rename or mode change where those two lines do not appear; it must
|
|
48
|
+
// never overwrite a `/dev/null` with a path, which is what an
|
|
49
|
+
// already-assigned `??=` quietly did.
|
|
50
|
+
let sawOldMarker = false;
|
|
51
|
+
let sawNewMarker = false;
|
|
52
|
+
let statedOld = null;
|
|
53
|
+
let statedNew = null;
|
|
54
|
+
let current = null;
|
|
55
|
+
let oldNumber = 0;
|
|
56
|
+
let newNumber = 0;
|
|
57
|
+
const close = (header, oldStart, newStart) => {
|
|
58
|
+
if (current !== null && current.length > 0) {
|
|
59
|
+
hunks.push({ header, oldStart, newStart, lines: current });
|
|
60
|
+
}
|
|
61
|
+
current = null;
|
|
62
|
+
};
|
|
63
|
+
let header = "";
|
|
64
|
+
let oldStart = 0;
|
|
65
|
+
let newStart = 0;
|
|
66
|
+
for (const line of lines) {
|
|
67
|
+
const hunk = HUNK.exec(line);
|
|
68
|
+
if (hunk !== null) {
|
|
69
|
+
close(header, oldStart, newStart);
|
|
70
|
+
header = hunk[5].trim();
|
|
71
|
+
oldStart = Number.parseInt(hunk[1], 10);
|
|
72
|
+
newStart = Number.parseInt(hunk[3], 10);
|
|
73
|
+
oldNumber = oldStart;
|
|
74
|
+
newNumber = newStart;
|
|
75
|
+
current = [];
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const unpositioned = UNPOSITIONED_HUNK.exec(line);
|
|
79
|
+
if (unpositioned !== null) {
|
|
80
|
+
close(header, oldStart, newStart);
|
|
81
|
+
header = (unpositioned[1] ?? "").trim();
|
|
82
|
+
oldStart = null;
|
|
83
|
+
newStart = null;
|
|
84
|
+
oldNumber = null;
|
|
85
|
+
newNumber = null;
|
|
86
|
+
current = [];
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (current === null) {
|
|
90
|
+
// Still in the file header: the preamble git writes before the hunks.
|
|
91
|
+
if (line.startsWith("--- ") && !sawOldMarker) {
|
|
92
|
+
sawOldMarker = true;
|
|
93
|
+
oldPath = headerPath(line, "--- ");
|
|
94
|
+
}
|
|
95
|
+
else if (line.startsWith("+++ ") && !sawNewMarker) {
|
|
96
|
+
sawNewMarker = true;
|
|
97
|
+
newPath = headerPath(line, "+++ ");
|
|
98
|
+
}
|
|
99
|
+
else if (line.startsWith("rename from "))
|
|
100
|
+
renamedFrom = pathOf(line.slice(12));
|
|
101
|
+
else if (line.startsWith("Binary files") || line.startsWith("GIT binary patch")) {
|
|
102
|
+
absence = "binary";
|
|
103
|
+
}
|
|
104
|
+
else if (line.startsWith("diff --git ")) {
|
|
105
|
+
// `diff --git a/x b/y`, which is the only place a path appears when
|
|
106
|
+
// the change is a pure rename or a mode change — there are no `---`
|
|
107
|
+
// and `+++` lines in that case.
|
|
108
|
+
const both = line.slice(11);
|
|
109
|
+
const half = Math.floor(both.length / 2);
|
|
110
|
+
const split = both.lastIndexOf(" b/", half + 2);
|
|
111
|
+
if (split !== -1) {
|
|
112
|
+
statedOld = pathOf(both.slice(0, split));
|
|
113
|
+
statedNew = pathOf(both.slice(split + 1));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else if (line.startsWith("old mode ") || line.startsWith("new mode ")) {
|
|
117
|
+
absence ??= "mode-only";
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
// Inside a hunk. An empty line is a context line whose leading space git
|
|
122
|
+
// dropped — real diffs in the wild carry them, and treating one as the
|
|
123
|
+
// end of the hunk truncates the file at its first blank line.
|
|
124
|
+
const marker = line === "" ? " " : line[0];
|
|
125
|
+
const body = line === "" ? "" : line.slice(1);
|
|
126
|
+
if (marker === "+") {
|
|
127
|
+
current.push({ kind: "add", text: body, oldNumber: null, newNumber });
|
|
128
|
+
if (newNumber !== null)
|
|
129
|
+
newNumber += 1;
|
|
130
|
+
added += 1;
|
|
131
|
+
}
|
|
132
|
+
else if (marker === "-") {
|
|
133
|
+
current.push({ kind: "del", text: body, oldNumber, newNumber: null });
|
|
134
|
+
if (oldNumber !== null)
|
|
135
|
+
oldNumber += 1;
|
|
136
|
+
deleted += 1;
|
|
137
|
+
}
|
|
138
|
+
else if (marker === " ") {
|
|
139
|
+
current.push({ kind: "context", text: body, oldNumber, newNumber });
|
|
140
|
+
if (oldNumber !== null)
|
|
141
|
+
oldNumber += 1;
|
|
142
|
+
if (newNumber !== null)
|
|
143
|
+
newNumber += 1;
|
|
144
|
+
}
|
|
145
|
+
else if (marker === "\\") {
|
|
146
|
+
current.push({ kind: "note", text: body.trim(), oldNumber: null, newNumber: null });
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Anything else ends the hunk: the next file's header, or trailing
|
|
150
|
+
// output the caller did not strip.
|
|
151
|
+
close(header, oldStart, newStart);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
close(header, oldStart, newStart);
|
|
155
|
+
return {
|
|
156
|
+
oldPath: sawOldMarker ? oldPath : statedOld,
|
|
157
|
+
newPath: sawNewMarker ? newPath : statedNew,
|
|
158
|
+
hunks,
|
|
159
|
+
absence: hunks.length > 0 ? null : (absence ?? "unchanged"),
|
|
160
|
+
renamedFrom,
|
|
161
|
+
added,
|
|
162
|
+
deleted,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type DiffLineKind =
|
|
2
|
+
/** Unchanged, shown on both sides. */
|
|
3
|
+
"context" | "add" | "del"
|
|
4
|
+
/** `` — git's own note about the line above. */
|
|
5
|
+
| "note";
|
|
6
|
+
export interface DiffLine {
|
|
7
|
+
readonly kind: DiffLineKind;
|
|
8
|
+
readonly text: string;
|
|
9
|
+
/** Line number on the left, or null for an added line. */
|
|
10
|
+
readonly oldNumber: number | null;
|
|
11
|
+
/** Line number on the right, or null for a removed line. */
|
|
12
|
+
readonly newNumber: number | null;
|
|
13
|
+
}
|
|
14
|
+
export interface DiffHunk {
|
|
15
|
+
/** The `@@ … @@` line, whose trailing text git fills with the enclosing
|
|
16
|
+
* function or section — worth showing, and not ours to invent. */
|
|
17
|
+
readonly header: string;
|
|
18
|
+
/** Null when the source persisted a hunk but omitted its coordinates, as
|
|
19
|
+
* Codex's `apply_patch` dialect may do with a bare `@@`. */
|
|
20
|
+
readonly oldStart: number | null;
|
|
21
|
+
readonly newStart: number | null;
|
|
22
|
+
readonly lines: readonly DiffLine[];
|
|
23
|
+
}
|
|
24
|
+
/** Why a diff has no hunks, when it has none. */
|
|
25
|
+
export type DiffAbsence =
|
|
26
|
+
/** The two sides are identical. */
|
|
27
|
+
"unchanged"
|
|
28
|
+
/** git declined to diff it: `Binary files … differ`. */
|
|
29
|
+
| "binary"
|
|
30
|
+
/** The file's mode changed and its content did not. */
|
|
31
|
+
| "mode-only";
|
|
32
|
+
export interface ParsedDiff {
|
|
33
|
+
/** Path on the left, or null when the file is being added. */
|
|
34
|
+
readonly oldPath: string | null;
|
|
35
|
+
/** Path on the right, or null when the file is being deleted. */
|
|
36
|
+
readonly newPath: string | null;
|
|
37
|
+
readonly hunks: readonly DiffHunk[];
|
|
38
|
+
/** Set when `hunks` is empty and that is a fact rather than an error. */
|
|
39
|
+
readonly absence: DiffAbsence | null;
|
|
40
|
+
/** `old → new` when git detected a rename. */
|
|
41
|
+
readonly renamedFrom: string | null;
|
|
42
|
+
readonly added: number;
|
|
43
|
+
readonly deleted: number;
|
|
44
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// A unified diff, parsed.
|
|
2
|
+
//
|
|
3
|
+
// The viewer displays diffs; it does not compute them. git already knows
|
|
4
|
+
// which lines changed — including the rename and binary cases that a naive
|
|
5
|
+
// line differ gets wrong — so the room reads git's answer rather than
|
|
6
|
+
// deriving a second one that can disagree with it.
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FileHandle, FileSource } from "./types.js";
|
|
2
|
+
/** Share thumbnail/main-image reads for one open gallery. Released on close;
|
|
3
|
+
* the byte cache is bounded even when a row contains many large images. */
|
|
4
|
+
export declare function createGallerySource(source: FileSource, limit?: number): {
|
|
5
|
+
source: {
|
|
6
|
+
read: (handle: FileHandle, signal: AbortSignal) => Promise<Uint8Array>;
|
|
7
|
+
image: ((handle: FileHandle) => import("./types.js").ImageResource | null) | undefined;
|
|
8
|
+
};
|
|
9
|
+
invalidate: (key: string) => void;
|
|
10
|
+
dispose: () => void;
|
|
11
|
+
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** Share thumbnail/main-image reads for one open gallery. Released on close;
|
|
2
|
+
* the byte cache is bounded even when a row contains many large images. */
|
|
3
|
+
export function createGallerySource(source, limit = 64 * 1024 * 1024) {
|
|
4
|
+
const cache = new Map();
|
|
5
|
+
let size = 0;
|
|
6
|
+
const pending = new Map();
|
|
7
|
+
const forget = (key) => {
|
|
8
|
+
size -= cache.get(key)?.byteLength ?? 0;
|
|
9
|
+
cache.delete(key);
|
|
10
|
+
};
|
|
11
|
+
const read = (handle, signal) => {
|
|
12
|
+
const cancelled = () => new DOMException("Image read cancelled", "AbortError");
|
|
13
|
+
if (signal.aborted)
|
|
14
|
+
return Promise.reject(cancelled());
|
|
15
|
+
const cached = cache.get(handle.key);
|
|
16
|
+
if (cached) {
|
|
17
|
+
cache.delete(handle.key);
|
|
18
|
+
cache.set(handle.key, cached);
|
|
19
|
+
return Promise.resolve(cached);
|
|
20
|
+
}
|
|
21
|
+
let request = pending.get(handle.key);
|
|
22
|
+
if (!request) {
|
|
23
|
+
const controller = new AbortController();
|
|
24
|
+
const created = { controller, readers: 0, done: false, promise: Promise.resolve(new Uint8Array()) };
|
|
25
|
+
created.promise = Promise.resolve().then(() => source.read(handle, controller.signal)).then(bytes => {
|
|
26
|
+
if (!controller.signal.aborted && bytes.byteLength <= limit) {
|
|
27
|
+
forget(handle.key);
|
|
28
|
+
while (size + bytes.byteLength > limit && cache.size)
|
|
29
|
+
forget(cache.keys().next().value);
|
|
30
|
+
cache.set(handle.key, bytes);
|
|
31
|
+
size += bytes.byteLength;
|
|
32
|
+
}
|
|
33
|
+
return bytes;
|
|
34
|
+
}).finally(() => {
|
|
35
|
+
created.done = true;
|
|
36
|
+
if (pending.get(handle.key) === created)
|
|
37
|
+
pending.delete(handle.key);
|
|
38
|
+
});
|
|
39
|
+
request = created;
|
|
40
|
+
pending.set(handle.key, created);
|
|
41
|
+
}
|
|
42
|
+
const active = request;
|
|
43
|
+
active.readers += 1;
|
|
44
|
+
return new Promise((resolve, reject) => {
|
|
45
|
+
let finished = false;
|
|
46
|
+
const finish = (result) => {
|
|
47
|
+
if (finished)
|
|
48
|
+
return;
|
|
49
|
+
finished = true;
|
|
50
|
+
signal.removeEventListener("abort", abort);
|
|
51
|
+
active.readers -= 1;
|
|
52
|
+
if (active.readers === 0 && !active.done) {
|
|
53
|
+
active.controller.abort();
|
|
54
|
+
if (pending.get(handle.key) === active)
|
|
55
|
+
pending.delete(handle.key);
|
|
56
|
+
}
|
|
57
|
+
result();
|
|
58
|
+
};
|
|
59
|
+
const abort = () => finish(() => reject(cancelled()));
|
|
60
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
61
|
+
active.promise.then(bytes => finish(() => resolve(bytes)), error => finish(() => reject(error)));
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
source: { read, image: source.image?.bind(source) },
|
|
66
|
+
invalidate: (key) => forget(key),
|
|
67
|
+
dispose: () => {
|
|
68
|
+
for (const request of pending.values())
|
|
69
|
+
request.controller.abort();
|
|
70
|
+
pending.clear();
|
|
71
|
+
cache.clear();
|
|
72
|
+
size = 0;
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RefObject } from "react";
|
|
2
|
+
import type { ImageRendition, ImageResource } from "./types.js";
|
|
3
|
+
/** A retry's address. A daemon URL gets a cache-busting parameter; an object
|
|
4
|
+
* or data URL cannot carry one, so it is used as it is (its source was asked
|
|
5
|
+
* again for the retry). */
|
|
6
|
+
export declare function imageRequestUrl(url: string, attempt?: number): string;
|
|
7
|
+
export interface ResolvedImageUrl {
|
|
8
|
+
/** The address to load, or null while pending or when there is none. */
|
|
9
|
+
readonly url: string | null;
|
|
10
|
+
/** The source is still fetching this rendition. */
|
|
11
|
+
readonly pending: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** One rendition's address, asked of its source once per image, rendition and
|
|
14
|
+
* attempt. A source that answers at once answers in this render, exactly as a
|
|
15
|
+
* plain string did; one that must fetch first answers when it has the bytes. */
|
|
16
|
+
export declare function useImageUrl(resource: ImageResource | null | undefined, rendition: ImageRendition, attempt?: number): ResolvedImageUrl;
|
|
17
|
+
/** Stop retaining image elements outside the reading window, including after
|
|
18
|
+
* a horizontal rail was scrolled through. Browser caching owns reusable bytes. */
|
|
19
|
+
export declare function useImageVisibility(ref: RefObject<HTMLElement | null>, rail?: boolean): boolean;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
|
+
/** A retry's address. A daemon URL gets a cache-busting parameter; an object
|
|
3
|
+
* or data URL cannot carry one, so it is used as it is (its source was asked
|
|
4
|
+
* again for the retry). */
|
|
5
|
+
export function imageRequestUrl(url, attempt = 0) {
|
|
6
|
+
if (attempt === 0)
|
|
7
|
+
return url;
|
|
8
|
+
const value = new URL(url, window.location.href);
|
|
9
|
+
if (value.protocol !== "http:" && value.protocol !== "https:")
|
|
10
|
+
return url;
|
|
11
|
+
value.searchParams.set("retry", String(attempt));
|
|
12
|
+
return value.toString();
|
|
13
|
+
}
|
|
14
|
+
const NONE = { url: null, pending: false };
|
|
15
|
+
/** One rendition's address, asked of its source once per image, rendition and
|
|
16
|
+
* attempt. A source that answers at once answers in this render, exactly as a
|
|
17
|
+
* plain string did; one that must fetch first answers when it has the bytes. */
|
|
18
|
+
export function useImageUrl(resource, rendition, attempt = 0) {
|
|
19
|
+
const key = resource ? `${resource.key}\u0000${rendition}\u0000${attempt}` : null;
|
|
20
|
+
// Keyed by identity, not by the resource object: a parent may rebuild the
|
|
21
|
+
// resource every render, and a fetching source must not be asked each time.
|
|
22
|
+
const answer = useMemo(() => (resource ? resource.url(rendition) : null), [key]);
|
|
23
|
+
const [settled, setSettled] = useState(null);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (key === null || answer === null || typeof answer === "string")
|
|
26
|
+
return;
|
|
27
|
+
let live = true;
|
|
28
|
+
Promise.resolve(answer).then((url) => {
|
|
29
|
+
if (live)
|
|
30
|
+
setSettled({ key, url });
|
|
31
|
+
}, () => {
|
|
32
|
+
if (live)
|
|
33
|
+
setSettled({ key, url: null });
|
|
34
|
+
});
|
|
35
|
+
return () => {
|
|
36
|
+
live = false;
|
|
37
|
+
};
|
|
38
|
+
}, [key, answer]);
|
|
39
|
+
if (key === null || answer === null)
|
|
40
|
+
return NONE;
|
|
41
|
+
if (typeof answer === "string")
|
|
42
|
+
return { url: imageRequestUrl(answer, attempt), pending: false };
|
|
43
|
+
return settled?.key === key ? { url: settled.url, pending: false } : { url: null, pending: true };
|
|
44
|
+
}
|
|
45
|
+
/** Stop retaining image elements outside the reading window, including after
|
|
46
|
+
* a horizontal rail was scrolled through. Browser caching owns reusable bytes. */
|
|
47
|
+
export function useImageVisibility(ref, rail = false) {
|
|
48
|
+
const [visible, setVisible] = useState(false);
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
const node = ref.current;
|
|
51
|
+
if (!node)
|
|
52
|
+
return;
|
|
53
|
+
const observer = new IntersectionObserver(entries => {
|
|
54
|
+
setVisible(entries.some(entry => entry.isIntersecting));
|
|
55
|
+
}, { root: rail ? node.closest(".ah-image-gallery__rail") : null, rootMargin: rail ? "80px" : "240px" });
|
|
56
|
+
observer.observe(node);
|
|
57
|
+
return () => observer.disconnect();
|
|
58
|
+
}, [ref, rail]);
|
|
59
|
+
return visible;
|
|
60
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { FileViewerDialog } from "./FileViewerDialog.js";
|
|
2
|
+
export type { FileViewerDialogProps } from "./FileViewerDialog.js";
|
|
3
|
+
export { diffKind, resolveKind } from "./registry.js";
|
|
4
|
+
export { DiffBody } from "./views/DiffBody.js";
|
|
5
|
+
export type { FileHandle, FileKind, FileSource, OpenFile, ViewBodyProps, ViewerActionId, ViewerDefinition, ViewMode, } from "./types.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// The file viewer: a popup that shows one file, with a view per kind of file.
|
|
2
|
+
//
|
|
3
|
+
// It depends on nothing above it. Give it a name, a size and a `FileSource`,
|
|
4
|
+
// and it reads and draws the file — which is why the worktree column owns the
|
|
5
|
+
// engine and this owns none of it.
|
|
6
|
+
export { FileViewerDialog } from "./FileViewerDialog.js";
|
|
7
|
+
export { diffKind, resolveKind } from "./registry.js";
|
|
8
|
+
export { DiffBody } from "./views/DiffBody.js";
|