@workbench-kit/react 0.0.2-prototype.0.2.5 → 0.0.2-prototype.0.2.6
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/package.json +10 -10
- package/src/brand/TilepaperAppIcon.tsx +181 -181
- package/src/brand/index.ts +2 -2
- package/src/brand/tilepaper-app-icon-geometry.ts +201 -201
- package/src/icons/WorkbenchIcon.tsx +57 -57
- package/src/icons/WorkbenchIconContext.tsx +25 -25
- package/src/icons/file-icon.ts +154 -154
- package/src/icons/index.ts +17 -17
- package/src/icons/resolveWorkbenchIcon.ts +48 -48
- package/src/icons/types.ts +28 -28
- package/src/index.ts +735 -735
- package/src/jdw/JdwPreview.tsx +195 -195
- package/src/jdw/JdwPreviewViewport.tsx +190 -190
- package/src/jdw/JsonCodeEditorPane.tsx +424 -424
- package/src/jdw/builtins/renderBuiltinWidgetLeaf.tsx +130 -130
- package/src/jdw/createBuiltinJdwRegistry.ts +436 -436
- package/src/jdw/cssRenderBackend.tsx +223 -223
- package/src/jdw/document.ts +35 -35
- package/src/jdw/fixtures/jdw-fixtures.ts +52 -52
- package/src/jdw/fixtures/jdw-sample-screens.ts +524 -524
- package/src/jdw/index.ts +50 -50
- package/src/jdw/jdw-preview-viewport.css +41 -41
- package/src/jdw/parse.ts +1 -1
- package/src/jdw/renderJdw.tsx +73 -73
- package/src/json-config/JsonConfigWorkbench.tsx +313 -313
- package/src/json-config/index.ts +6 -6
- package/src/json-config/json-config-editor-state.ts +42 -42
- package/src/layout/ViewEmptyState.tsx +14 -14
- package/src/layout/WorkbenchCanvas.tsx +956 -956
- package/src/layout/WorkbenchFullscreen.tsx +368 -368
- package/src/layout/WorkbenchLayout.tsx +8 -8
- package/src/layout/WorkbenchLayoutBase.tsx +335 -335
- package/src/layout/WorkbenchMediaPreviewViewport.tsx +122 -122
- package/src/layout/WorkbenchPropertyOverrideLabel.tsx +90 -90
- package/src/layout/WorkbenchPropertyPanel.tsx +633 -633
- package/src/layout/WorkbenchPropertySearch.tsx +51 -51
- package/src/layout/WorkbenchTree.tsx +350 -350
- package/src/layout/canvas/canvas-drag-ghost.css +21 -21
- package/src/layout/canvas/canvas-drag-preview-frame.css +15 -15
- package/src/layout/canvas/canvas-drop-indicator.css +16 -16
- package/src/layout/canvas/canvas-frame-handle.css +37 -37
- package/src/layout/canvas/canvas-frame-surface.css +24 -24
- package/src/layout/canvas/canvas-guide-block.css +17 -17
- package/src/layout/canvas/canvas-guide-layer.css +6 -6
- package/src/layout/canvas/canvas-guide-line.css +22 -22
- package/src/layout/canvas/canvas-item-badge.css +23 -23
- package/src/layout/canvas/canvas-item-frame.css +54 -54
- package/src/layout/canvas/canvas-pane-surface.css +9 -9
- package/src/layout/canvas/canvas-placeholder.css +21 -21
- package/src/layout/canvas/canvas-resize-frame.css +9 -9
- package/src/layout/canvas/canvas-resize-handle.css +74 -74
- package/src/layout/canvas/canvas-resize-preview.css +11 -11
- package/src/layout/canvas/canvas-selection-marquee.css +14 -14
- package/src/layout/canvas/canvas-viewport.css +18 -18
- package/src/layout/canvas/index.css +19 -19
- package/src/layout/canvas/preview-canvas.css +144 -144
- package/src/layout/editor/editor-body.css +9 -9
- package/src/layout/editor/editor-bottom-panel.css +44 -44
- package/src/layout/editor/editor-frame.css +14 -14
- package/src/layout/editor/editor-viewport.css +7 -7
- package/src/layout/editor/floating-menu.css +91 -91
- package/src/layout/editor/index.css +10 -10
- package/src/layout/editor/parse-error.css +9 -9
- package/src/layout/editor/problem-item.css +52 -52
- package/src/layout/editor/problem-list.css +7 -7
- package/src/layout/editor/render-surface.css +13 -13
- package/src/layout/fillScrollContract.ts +49 -49
- package/src/layout/fullscreen/fullscreen-backdrop.css +31 -31
- package/src/layout/fullscreen/fullscreen-button.css +44 -44
- package/src/layout/fullscreen/fullscreen-carousel.css +20 -20
- package/src/layout/fullscreen/fullscreen-content.css +8 -8
- package/src/layout/fullscreen/fullscreen-empty.css +16 -16
- package/src/layout/fullscreen/fullscreen-header.css +77 -77
- package/src/layout/fullscreen/fullscreen-hero.css +41 -41
- package/src/layout/fullscreen/fullscreen-nav-button.css +29 -29
- package/src/layout/fullscreen/fullscreen-option.css +83 -83
- package/src/layout/fullscreen/fullscreen-pill-row.css +6 -6
- package/src/layout/fullscreen/fullscreen-pill.css +10 -10
- package/src/layout/fullscreen/fullscreen-root.css +11 -11
- package/src/layout/fullscreen/index.css +13 -13
- package/src/layout/index.ts +156 -156
- package/src/layout/layout-base/banner.css +32 -32
- package/src/layout/layout-base/center.css +7 -7
- package/src/layout/layout-base/column.css +7 -7
- package/src/layout/layout-base/divider.css +5 -5
- package/src/layout/layout-base/empty.css +12 -12
- package/src/layout/layout-base/fill-scroll.css +36 -36
- package/src/layout/layout-base/fill.css +18 -18
- package/src/layout/layout-base/index.css +13 -13
- package/src/layout/layout-base/pane.css +6 -6
- package/src/layout/layout-base/panel-scroll.css +5 -5
- package/src/layout/layout-base/panel-surface.css +14 -14
- package/src/layout/layout-base/root.css +9 -9
- package/src/layout/layout-base/section-title.css +8 -8
- package/src/layout/layout.css +10 -10
- package/src/layout/layoutHelpers.ts +27 -27
- package/src/layout/media/index.css +2 -2
- package/src/layout/media/media-preview-viewport.css +69 -69
- package/src/layout/panel/Panel.tsx +161 -161
- package/src/layout/panel/TemplateGallery.tsx +90 -90
- package/src/layout/panel/WorkbenchAuthoringShell.tsx +57 -57
- package/src/layout/panel/WorkbenchLabeledPane.tsx +81 -81
- package/src/layout/panel/WorkbenchSidebarStack.tsx +15 -15
- package/src/layout/panel/filter-bar.css +59 -59
- package/src/layout/panel/index.css +7 -7
- package/src/layout/panel/index.ts +70 -70
- package/src/layout/panel/preview-pane.css +63 -63
- package/src/layout/panel/template-gallery.css +131 -131
- package/src/layout/panel/workbench-authoring-shell.css +48 -48
- package/src/layout/panel/workbench-labeled-pane.css +69 -69
- package/src/layout/panel/workbench-sidebar-stack.css +18 -18
- package/src/layout/property/color-input.css +8 -8
- package/src/layout/property/color-row.css +6 -6
- package/src/layout/property/index.css +15 -15
- package/src/layout/property/property-card.css +8 -8
- package/src/layout/property/property-grid.css +24 -24
- package/src/layout/property/property-hint.css +4 -4
- package/src/layout/property/property-inline.css +10 -10
- package/src/layout/property/property-key-value.css +29 -29
- package/src/layout/property/property-override-label.css +34 -34
- package/src/layout/property/property-panel.css +20 -20
- package/src/layout/property/property-row.css +17 -17
- package/src/layout/property/property-search.css +43 -43
- package/src/layout/property/property-section.css +97 -97
- package/src/layout/property/property-stack.css +11 -11
- package/src/layout/property/property-toggle.css +14 -14
- package/src/layout/propertyFieldFilter.ts +84 -84
- package/src/layout/sidebar/SideBarViewFrame.tsx +235 -235
- package/src/layout/sidebar/SideBarViewTabStrip.tsx +60 -60
- package/src/layout/sidebar/SideBarViewTitleMenu.tsx +75 -75
- package/src/layout/sidebar/SidebarActionIconBar.tsx +242 -242
- package/src/layout/sidebar/SidebarSectionNestingContext.tsx +21 -21
- package/src/layout/sidebar/SidebarSlotChrome.tsx +32 -32
- package/src/layout/sidebar/SidebarToolbar.tsx +10 -10
- package/src/layout/sidebar/WorkbenchActionSidebar.tsx +73 -73
- package/src/layout/sidebar/WorkbenchSidebarActions.tsx +328 -328
- package/src/layout/sidebar/WorkbenchSidebarSectionStack.tsx +165 -165
- package/src/layout/sidebar/index.css +5 -5
- package/src/layout/sidebar/index.ts +55 -55
- package/src/layout/sidebar/sidebar-chrome.css +95 -95
- package/src/layout/sidebar/sidebar-section-stack.css +25 -25
- package/src/layout/sidebar/sidebar-section.css +124 -124
- package/src/layout/sidebar/sidebar-view.css +290 -290
- package/src/layout/tree/drag-preview.css +25 -25
- package/src/layout/tree/index.css +10 -10
- package/src/layout/tree/template-glyph.css +96 -96
- package/src/layout/tree/tree-action.css +20 -20
- package/src/layout/tree/tree-drag-overlay.css +13 -13
- package/src/layout/tree/tree-drop-line.css +17 -17
- package/src/layout/tree/tree-drop-zone.css +13 -13
- package/src/layout/tree/tree-expander.css +23 -23
- package/src/layout/tree/tree-item.css +93 -93
- package/src/layout/tree/tree.css +49 -49
- package/src/layout/usePreviewViewport.ts +428 -428
- package/src/modal/ConfirmDialog.tsx +61 -61
- package/src/modal/Modal.tsx +213 -213
- package/src/modal/ModalResizeHandles.tsx +40 -40
- package/src/modal/ModalTitlebar.tsx +86 -86
- package/src/modal/modal.css +291 -291
- package/src/modal/modalContainer.ts +36 -36
- package/src/modal/modalPosition.ts +36 -36
- package/src/modal/modalSize.ts +84 -84
- package/src/modal/modalTypes.ts +13 -13
- package/src/modal/useModalContainerViewport.ts +41 -41
- package/src/modal/useModalDrag.ts +118 -118
- package/src/modal/useModalResize.ts +122 -122
- package/src/modal/useModalWindowFrame.ts +122 -122
- package/src/overlay/ContextMenu.tsx +124 -124
- package/src/overlay/clampFixedOverlayPosition.ts +22 -22
- package/src/overlay/context-menu.css +127 -127
- package/src/overlay/index.ts +31 -31
- package/src/overlay/measureAnchoredOverlayPanel.ts +107 -107
- package/src/overlay/overlay.css +2 -2
- package/src/overlay/pointerPassthroughRegion.ts +83 -83
- package/src/overlay/useAnchoredOverlayPanel.ts +222 -222
- package/src/overlay/useClampedFixedOverlayPosition.ts +27 -27
- package/src/overlay/useContextMenuState.ts +59 -59
- package/src/overlay/useFixedOverlayDismiss.ts +49 -49
- package/src/overlay/usePointerPassthroughRegion.ts +87 -87
- package/src/primitives/absolute-box/AbsoluteBox.tsx +46 -46
- package/src/primitives/absolute-box/index.ts +1 -1
- package/src/primitives/badge/Badge.tsx +14 -14
- package/src/primitives/badge/badge.css +20 -20
- package/src/primitives/badge/index.ts +1 -1
- package/src/primitives/button/Button.tsx +45 -45
- package/src/primitives/button/button.css +76 -76
- package/src/primitives/button/index.ts +1 -1
- package/src/primitives/catalog-browse-card/CatalogBrowseCard.tsx +121 -121
- package/src/primitives/catalog-browse-card/catalog-browse-card.css +175 -175
- package/src/primitives/catalog-browse-card/index.ts +1 -1
- package/src/primitives/catalog-browse-pane/CatalogBrowseFacetChips.tsx +59 -59
- package/src/primitives/catalog-browse-pane/CatalogBrowsePane.tsx +360 -360
- package/src/primitives/catalog-browse-pane/catalog-browse-facet-chips.css +8 -8
- package/src/primitives/catalog-browse-pane/catalog-browse-pane.css +84 -84
- package/src/primitives/catalog-browse-pane/filterCatalogBrowseItems.ts +27 -27
- package/src/primitives/catalog-browse-pane/index.ts +3 -3
- package/src/primitives/catalog-filter-overlay/CatalogFilterOverlay.tsx +73 -73
- package/src/primitives/catalog-filter-overlay/catalog-filter-overlay.css +65 -65
- package/src/primitives/catalog-filter-overlay/index.ts +1 -1
- package/src/primitives/checkbox/Checkbox.tsx +40 -40
- package/src/primitives/checkbox/checkbox.css +81 -81
- package/src/primitives/checkbox/index.ts +1 -1
- package/src/primitives/chip/Chip.tsx +43 -43
- package/src/primitives/chip/chip.css +110 -110
- package/src/primitives/chip/index.ts +2 -2
- package/src/primitives/clearable-text-input/ClearableTextInput.tsx +78 -78
- package/src/primitives/clearable-text-input/clearable-text-input.css +15 -15
- package/src/primitives/clearable-text-input/index.ts +1 -1
- package/src/primitives/codicon/Codicon.tsx +20 -20
- package/src/primitives/codicon/index.ts +1 -1
- package/src/primitives/empty-state/EmptyState.tsx +33 -33
- package/src/primitives/empty-state/empty-state.css +20 -20
- package/src/primitives/empty-state/index.ts +1 -1
- package/src/primitives/external-link-button/ExternalLinkButton.tsx +56 -56
- package/src/primitives/external-link-button/index.ts +1 -1
- package/src/primitives/field/Field.tsx +39 -39
- package/src/primitives/field/field.css +51 -51
- package/src/primitives/field/index.ts +1 -1
- package/src/primitives/file-icon/FileIcon.tsx +21 -21
- package/src/primitives/file-icon/index.ts +1 -1
- package/src/primitives/icon-button/IconButton.tsx +37 -37
- package/src/primitives/icon-button/icon-button.css +46 -46
- package/src/primitives/icon-button/index.ts +1 -1
- package/src/primitives/index.ts +265 -265
- package/src/primitives/library-detail-layout/LibraryDetailLayout.tsx +135 -135
- package/src/primitives/library-detail-layout/index.ts +1 -1
- package/src/primitives/library-detail-layout/library-detail-layout.css +169 -169
- package/src/primitives/library-facet-filter-panel/LibraryFacetFilterPanel.tsx +454 -454
- package/src/primitives/library-facet-filter-panel/index.ts +1 -1
- package/src/primitives/library-facet-filter-panel/library-facet-filter-panel.css +205 -205
- package/src/primitives/library-facet-filter-strip/LibraryFacetFilterStrip.tsx +527 -527
- package/src/primitives/library-facet-filter-strip/index.ts +1 -1
- package/src/primitives/library-facet-filter-strip/library-facet-filter-strip.css +31 -31
- package/src/primitives/list/List.tsx +120 -120
- package/src/primitives/list/index.ts +1 -1
- package/src/primitives/list/list-empty-state.css +10 -10
- package/src/primitives/list/list-item.css +93 -93
- package/src/primitives/list/list.css +6 -6
- package/src/primitives/number-input/NumberInput.tsx +235 -235
- package/src/primitives/number-input/index.ts +1 -1
- package/src/primitives/number-input/number-input.css +105 -105
- package/src/primitives/panel-loading/PanelLoading.tsx +29 -29
- package/src/primitives/panel-loading/index.ts +1 -1
- package/src/primitives/panel-loading/panel-loading.css +16 -16
- package/src/primitives/panel-surface/panel-surface.css +77 -77
- package/src/primitives/primitives.css +36 -36
- package/src/primitives/record-media-hero/RecordMediaHero.tsx +81 -81
- package/src/primitives/record-media-hero/index.ts +1 -1
- package/src/primitives/record-media-hero/record-media-hero.css +84 -84
- package/src/primitives/scroll-area/ScrollArea.tsx +200 -200
- package/src/primitives/scroll-area/index.ts +1 -1
- package/src/primitives/scroll-area/scroll-area-overlay.css +69 -69
- package/src/primitives/scroll-area-infinite-load/ScrollAreaInfiniteSentinel.tsx +22 -22
- package/src/primitives/scroll-area-infinite-load/index.ts +2 -2
- package/src/primitives/scroll-area-infinite-load/scroll-area-infinite-sentinel.css +6 -6
- package/src/primitives/scroll-area-infinite-load/useScrollAreaInfiniteLoad.ts +84 -84
- package/src/primitives/searchable-multi-select/SearchableMultiSelect.tsx +378 -378
- package/src/primitives/searchable-multi-select/index.ts +9 -9
- package/src/primitives/searchable-multi-select/overlay.ts +125 -125
- package/src/primitives/searchable-multi-select/searchable-multi-select.css +129 -129
- package/src/primitives/select/Select.tsx +284 -284
- package/src/primitives/select/index.ts +2 -2
- package/src/primitives/select/options.ts +38 -38
- package/src/primitives/select/overlay.ts +82 -82
- package/src/primitives/select/select.app.css +12 -12
- package/src/primitives/select/select.css +177 -177
- package/src/primitives/select/types.ts +18 -18
- package/src/primitives/styles.css +6 -6
- package/src/primitives/tabbed-panels/TabbedPanels.tsx +68 -68
- package/src/primitives/tabbed-panels/index.ts +2 -2
- package/src/primitives/tabbed-panels/tabbed-panels.css +58 -58
- package/src/primitives/text-area/TextArea.tsx +37 -37
- package/src/primitives/text-area/index.ts +1 -1
- package/src/primitives/text-input/TextInput.tsx +34 -34
- package/src/primitives/text-input/index.ts +1 -1
- package/src/primitives/text-input/input.css +54 -54
- package/src/primitives/toolbar/Toolbar.tsx +8 -8
- package/src/primitives/toolbar/index.ts +1 -1
- package/src/primitives/visually-hidden/visually-hidden.css +11 -11
- package/src/primitives/workbench-editor/WorkbenchEditor.tsx +432 -432
- package/src/primitives/workbench-editor/button-group.css +10 -10
- package/src/primitives/workbench-editor/editor-tabs.css +201 -201
- package/src/primitives/workbench-editor/index.ts +1 -1
- package/src/primitives/workbench-editor/resizable-panels.css +53 -53
- package/src/primitives/workbench-editor/segmented-control.css +98 -98
- package/src/primitives/workbench-media-slot/WorkbenchMediaPlaceholder.tsx +25 -25
- package/src/primitives/workbench-media-slot/WorkbenchMediaSlot.tsx +60 -60
- package/src/primitives/workbench-media-slot/index.ts +2 -2
- package/src/primitives/workbench-media-slot/media-slot.css +72 -72
- package/src/primitives/workbench-thumbnail/WorkbenchThumbnail.tsx +38 -38
- package/src/primitives/workbench-thumbnail/index.ts +1 -1
- package/src/primitives/workbench-thumbnail/thumbnail.css +69 -69
- package/src/scrollbars.css +144 -144
- package/src/styles.css +17 -17
- package/src/test-utils/workbenchMonacoMock.tsx +37 -37
- package/src/utils/codicon.ts +17 -17
- package/src/utils/dragMime.ts +89 -89
- package/src/utils/useWorkbenchMediaImage.ts +37 -37
- package/src/widget-asset/WidgetAssetEditor.tsx +142 -142
- package/src/widget-asset/WidgetAssetMetadataForm.tsx +82 -82
- package/src/widget-asset/WidgetAssetModeControls.tsx +42 -42
- package/src/widget-asset/WidgetAssetSourceEditor.tsx +50 -50
- package/src/widget-asset/WidgetAssetWorkbench.tsx +111 -111
- package/src/widget-asset/index.ts +17 -17
- package/src/widget-asset/widget-asset-document.ts +37 -37
- package/src/widget-asset/widget-asset-mode.ts +3 -3
- package/src/widget-studio/builtin-widget-asset-catalog.ts +12 -12
- package/src/widget-studio/create-widget-studio-workspace-editor.tsx +78 -78
- package/src/widget-studio/index.ts +10 -10
- package/src/widget-studio/resolve-widget-studio-asset-catalog.ts +43 -43
- package/src/widget-tree/WidgetAssetPalette.tsx +105 -105
- package/src/widget-tree/WidgetInspectorPanel.tsx +316 -316
- package/src/widget-tree/WidgetSourceEditor.tsx +143 -143
- package/src/widget-tree/WidgetTreeCanvasPreview.tsx +875 -875
- package/src/widget-tree/WidgetTreeLab.tsx +600 -600
- package/src/widget-tree/WidgetTreeModeControls.tsx +73 -73
- package/src/widget-tree/WidgetTreeSidePanel.tsx +39 -39
- package/src/widget-tree/WidgetTreeView.tsx +797 -797
- package/src/widget-tree/WidgetTreeWorkbench.tsx +155 -155
- package/src/widget-tree/WidgetTreeWorkspaceShell.tsx +172 -172
- package/src/widget-tree/demo-registry.ts +32 -32
- package/src/widget-tree/demo-widget-assets.ts +4 -4
- package/src/widget-tree/index.ts +45 -45
- package/src/widget-tree/widget-placement-asset-dnd.ts +35 -35
- package/src/widget-tree/widget-tree-document.ts +14 -14
- package/src/widget-tree/widget-tree-editor-state.ts +40 -40
- package/src/widget-tree/widget-tree-layout.ts +76 -76
- package/src/widget-tree/widget-tree-mode.ts +7 -7
- package/src/widget-tree/widget-tree-play-helpers.ts +85 -85
- package/src/workbench/ActivityBar.tsx +159 -159
- package/src/workbench/ArtifactShell.tsx +397 -397
- package/src/workbench/CommandGroupShell.tsx +131 -131
- package/src/workbench/CommandList.tsx +167 -167
- package/src/workbench/CommandPalette.tsx +417 -417
- package/src/workbench/ConfirmationFlow.tsx +243 -243
- package/src/workbench/MarkdownPreview.tsx +147 -147
- package/src/workbench/ShortcutCommandBridge.tsx +365 -365
- package/src/workbench/SplitView.tsx +485 -485
- package/src/workbench/StatusBar.tsx +180 -180
- package/src/workbench/StructuredArtifactEditor.tsx +205 -205
- package/src/workbench/Timeline.tsx +297 -297
- package/src/workbench/WorkbenchCanvasShell.defaults.ts +106 -106
- package/src/workbench/WorkbenchCanvasShell.model.ts +46 -46
- package/src/workbench/WorkbenchCanvasShell.tsx +827 -827
- package/src/workbench/WorkbenchDesktopTitleBar.tsx +126 -126
- package/src/workbench/WorkbenchEditorTabs.tsx +52 -52
- package/src/workbench/WorkbenchModalPortal.tsx +52 -52
- package/src/workbench/WorkbenchPlatformContext.tsx +31 -31
- package/src/workbench/WorkbenchShell.tsx +192 -192
- package/src/workbench/WorkbenchShellTitleBarLayoutControls.tsx +80 -80
- package/src/workbench/WorkbenchStandaloneShell.tsx +604 -604
- package/src/workbench/WorkbenchThemeProvider.tsx +142 -142
- package/src/workbench/WorkbenchViewEditor.tsx +75 -75
- package/src/workbench/WorkbenchViewSidebar.tsx +85 -85
- package/src/workbench/WorkbenchWindowChromeControls.tsx +290 -290
- package/src/workbench/activityBarOrder.ts +98 -98
- package/src/workbench/appearanceLabels.ts +28 -28
- package/src/workbench/auth/WorkbenchAuthGate.tsx +61 -61
- package/src/workbench/auth/WorkbenchLoginView.tsx +633 -633
- package/src/workbench/auth/auth-flows.css +440 -440
- package/src/workbench/auth/auth.css +3 -3
- package/src/workbench/auth/index.ts +19 -19
- package/src/workbench/auth/profile-modals.css +115 -115
- package/src/workbench/bootstrap/WorkbenchBootstrapGate.tsx +45 -45
- package/src/workbench/bootstrap/WorkbenchBootstrapView.tsx +100 -100
- package/src/workbench/bootstrap/index.ts +12 -12
- package/src/workbench/bootstrap/useWorkbenchBootstrap.ts +130 -130
- package/src/workbench/chat/ChatCommandProposalCard.tsx +115 -115
- package/src/workbench/chat/ChatComposer.tsx +163 -163
- package/src/workbench/chat/ChatConversationBar.tsx +134 -134
- package/src/workbench/chat/ChatHistoryMenu.tsx +171 -171
- package/src/workbench/chat/ChatHistoryMenuRow.tsx +74 -74
- package/src/workbench/chat/ChatMessageCollapsible.tsx +115 -115
- package/src/workbench/chat/ChatMessageItem.tsx +318 -318
- package/src/workbench/chat/ChatMessageList.tsx +134 -134
- package/src/workbench/chat/ChatPanel.tsx +168 -168
- package/src/workbench/chat/ChatPhasedRunProgress.tsx +202 -202
- package/src/workbench/chat/ChatRenameDialog.tsx +77 -77
- package/src/workbench/chat/chat-conversation.css +273 -273
- package/src/workbench/chat/chat-ui.css +1124 -1124
- package/src/workbench/chat/chat.css +3 -3
- package/src/workbench/chat/chatConversation.ts +46 -46
- package/src/workbench/chat/chatHistoryRowMenuItems.ts +29 -29
- package/src/workbench/chat/chatMessageMeta.tsx +252 -252
- package/src/workbench/chat/chatScroll.ts +22 -22
- package/src/workbench/chat/index.ts +64 -64
- package/src/workbench/chat/slashCommand.ts +26 -26
- package/src/workbench/chat/types.ts +45 -45
- package/src/workbench/chat/useCancelRuntimeOnUnmount.ts +60 -60
- package/src/workbench/chat/useChatPrependPagination.ts +233 -233
- package/src/workbench/chat/useChatRuntimeState.ts +64 -64
- package/src/workbench/chat/useSlashCommandSuggest.ts +154 -154
- package/src/workbench/chrome/index.css +6 -6
- package/src/workbench/chrome/workbench-desktop-titlebar.css +60 -60
- package/src/workbench/chrome/workbench-host.css +85 -85
- package/src/workbench/chrome/workbench-layout-regions.css +42 -42
- package/src/workbench/chrome/workbench-platform-chrome.css +142 -142
- package/src/workbench/chrome/workbench-shell-titlebar.css +124 -124
- package/src/workbench/command-execution-policy.ts +61 -61
- package/src/workbench/command-model.ts +275 -275
- package/src/workbench/command-palette/command-palette.css +156 -156
- package/src/workbench/commands.ts +576 -576
- package/src/workbench/editor-tabs/index.ts +22 -22
- package/src/workbench/editor-tabs-dnd.ts +162 -162
- package/src/workbench/editorTabContextMenu.ts +111 -111
- package/src/workbench/hardReset.ts +64 -64
- package/src/workbench/index.ts +675 -675
- package/src/workbench/jdw/jdw-editors.css +4 -4
- package/src/workbench/jdw/jdw.css +2 -2
- package/src/workbench/keyboard.ts +53 -53
- package/src/workbench/management/AccountManagementPanel.tsx +82 -82
- package/src/workbench/management/CommandInspectorPanel.tsx +127 -127
- package/src/workbench/management/CommandManagementPanel.tsx +129 -129
- package/src/workbench/management/CommandManagementSidebar.tsx +318 -318
- package/src/workbench/management/ExtensionManagementPanel.tsx +498 -498
- package/src/workbench/management/ExtensionManagementSidebar.tsx +492 -492
- package/src/workbench/management/IntegrationCommandActions.tsx +78 -78
- package/src/workbench/management/IntegrationSettingsSurface.tsx +290 -290
- package/src/workbench/management/IntegrationsShell.tsx +53 -53
- package/src/workbench/management/KeybindingCaptureField.tsx +142 -142
- package/src/workbench/management/KeybindingManagementPanel.tsx +120 -120
- package/src/workbench/management/LibraryCatalogPickerDialog.tsx +208 -208
- package/src/workbench/management/LibraryFacetFilterDialog.tsx +62 -62
- package/src/workbench/management/ManagementCard.tsx +89 -89
- package/src/workbench/management/ManagementFilterChips.tsx +41 -41
- package/src/workbench/management/ManagementGroup.tsx +56 -56
- package/src/workbench/management/ManagementPanelControls.tsx +43 -43
- package/src/workbench/management/ManagementPanelFrame.tsx +109 -109
- package/src/workbench/management/WorkbenchDialogFrame.tsx +148 -148
- package/src/workbench/management/WorkbenchNotice.tsx +211 -211
- package/src/workbench/management/build-command-management-groups.ts +157 -157
- package/src/workbench/management/command-inspector-uri.ts +26 -26
- package/src/workbench/management/extension-category-display.ts +42 -42
- package/src/workbench/management/format-command-run-state.ts +19 -19
- package/src/workbench/management/index.ts +130 -130
- package/src/workbench/management/integration-command-action.ts +25 -25
- package/src/workbench/management/library-catalog-picker-dialog.css +56 -56
- package/src/workbench/management/library-facet-filter-dialog.css +8 -8
- package/src/workbench/management/management-panel.css +444 -444
- package/src/workbench/management/management.css +4 -4
- package/src/workbench/management/types.ts +126 -126
- package/src/workbench/markdownRemarkPlugins.ts +4 -4
- package/src/workbench/schema/index.ts +47 -47
- package/src/workbench/schema/workbenchDocument.ts +31 -31
- package/src/workbench/schema/workbenchDocumentActions.ts +6 -6
- package/src/workbench/schema/workbenchDocumentAdapter.ts +9 -9
- package/src/workbench/schema/workbenchDocumentPatch.ts +13 -13
- package/src/workbench/schema/workbenchDocumentRenderer.tsx +702 -702
- package/src/workbench/settings/NavigationPanel.tsx +86 -86
- package/src/workbench/settings/SchemaForm.tsx +433 -433
- package/src/workbench/settings/SectionTabPanel.tsx +172 -172
- package/src/workbench/settings/SectionedPanel.tsx +169 -169
- package/src/workbench/settings/StructuredDataForm.tsx +619 -619
- package/src/workbench/settings/StructuredDataSchemaPanel.tsx +811 -811
- package/src/workbench/settings/StructuredDataSchemaPanelEmbed.tsx +21 -21
- package/src/workbench/settings/StructuredDataSchemaPanelFrame.tsx +76 -76
- package/src/workbench/settings/StructuredDataTableView.tsx +127 -127
- package/src/workbench/settings/WorkbenchPanelRegion.tsx +46 -46
- package/src/workbench/settings/WorkbenchSettingsModal.tsx +251 -251
- package/src/workbench/settings/WorkbenchSettingsNav.tsx +57 -57
- package/src/workbench/settings/WorkbenchSettingsSection.tsx +30 -30
- package/src/workbench/settings/extensionSettingsForm.ts +34 -34
- package/src/workbench/settings/index.ts +177 -177
- package/src/workbench/settings/navigation-panel.css +59 -59
- package/src/workbench/settings/panel-region.css +22 -22
- package/src/workbench/settings/schema-form.css +36 -36
- package/src/workbench/settings/schemaFormSettingSpec.ts +177 -177
- package/src/workbench/settings/schemaFormSettingsCategory.tsx +21 -21
- package/src/workbench/settings/section-tab-panel.css +157 -157
- package/src/workbench/settings/sectionScrollSpyDom.ts +139 -139
- package/src/workbench/settings/sectioned-panel.css +162 -162
- package/src/workbench/settings/sectionedPanelScrollSpy.ts +273 -273
- package/src/workbench/settings/settings-responsive.css +58 -58
- package/src/workbench/settings/settings.css +11 -11
- package/src/workbench/settings/settingsCommit.tsx +55 -55
- package/src/workbench/settings/structured-data-form.css +114 -114
- package/src/workbench/settings/structured-data-schema-panel.css +344 -344
- package/src/workbench/settings/structured-data-table-view.css +85 -85
- package/src/workbench/settings/structuredDataFormModel.ts +140 -140
- package/src/workbench/settings/structuredDataSchema.ts +339 -339
- package/src/workbench/settings/structuredDataSchemaDate.ts +197 -197
- package/src/workbench/settings/structuredDataSchemaField.ts +105 -105
- package/src/workbench/settings/structuredDataSchemaSection.ts +74 -74
- package/src/workbench/settings/structuredDataSchemaTable.ts +120 -120
- package/src/workbench/settings/structuredDataSchemaTypes.ts +308 -308
- package/src/workbench/settings/structuredDataSchemaValidation.ts +166 -166
- package/src/workbench/settings/types.ts +16 -16
- package/src/workbench/settings/useSectionScrollSpy.ts +420 -420
- package/src/workbench/settings/workbench-settings-modal.css +273 -273
- package/src/workbench/shell/activity-bar.css +245 -245
- package/src/workbench/shell/confirmation-flow.css +87 -87
- package/src/workbench/shell/index.css +5 -5
- package/src/workbench/shell/split-view.css +188 -188
- package/src/workbench/shell/status-bar.css +141 -141
- package/src/workbench/shell.ts +146 -146
- package/src/workbench/shellPresets.ts +36 -36
- package/src/workbench/shellState.ts +196 -196
- package/src/workbench/shellViewModel.ts +160 -160
- package/src/workbench/sidebarViewPlacementDnd.ts +61 -61
- package/src/workbench/standalone.ts +101 -101
- package/src/workbench/status.ts +133 -133
- package/src/workbench/theme.ts +50 -50
- package/src/workbench/themePresets.ts +191 -191
- package/src/workbench/useDeferredWorkbenchMount.ts +71 -71
- package/src/workbench/useEditorTabsStripDnd.ts +262 -262
- package/src/workbench/useWorkbenchAppearanceDocumentSync.tsx +17 -17
- package/src/workbench/useWorkbenchEditorTabContextMenu.tsx +66 -66
- package/src/workbench/useWorkbenchSidebarActionBarDnd.ts +227 -227
- package/src/workbench/useWorkbenchSidebarLayout.tsx +232 -232
- package/src/workbench/useWorkbenchSidebarViewPlacementDropZone.ts +194 -194
- package/src/workbench/useWorkbenchStandaloneShellStateSync.tsx +112 -112
- package/src/workbench/views/action-list.css +144 -144
- package/src/workbench/views/artifact-preview.css +184 -184
- package/src/workbench/views/command-inspector.css +98 -98
- package/src/workbench/views/command-list.css +356 -356
- package/src/workbench/views/commands-sidebar.css +51 -51
- package/src/workbench/views/extensions-sidebar.css +175 -175
- package/src/workbench/views/multi-provider-explorer.css +182 -182
- package/src/workbench/views/search.css +10 -10
- package/src/workbench/views/timeline.css +239 -239
- package/src/workbench/views/view-hosts.css +37 -37
- package/src/workbench/views/view-sidebar.css +21 -21
- package/src/workbench/views/views.css +12 -12
- package/src/workbench/widgets/widget-tree.css +598 -598
- package/src/workbench/widgets/widgets.css +2 -2
- package/src/workbench/workbench-chrome.css +4 -4
- package/src/workbench/workbenchContextMenu.ts +18 -18
- package/src/workbench/workbenchModalViewState.ts +52 -52
- package/src/workbench/workbenchOverlaysContext.tsx +21 -21
- package/src/workbench/workbenchPlatformChrome.ts +40 -40
- package/src/workbench/workbenchSidebarLayoutContext.ts +46 -46
- package/src/workbench/workbenchStandaloneShellReactContext.tsx +80 -80
- package/src/workbench/workbenchViewRouteState.ts +151 -151
- package/src/workbench/workspace/WorkspaceDraftsContext.tsx +99 -99
- package/src/workbench/workspace/WorkspaceEditor.tsx +165 -165
- package/src/workbench/workspace/WorkspaceEditorPanel.tsx +393 -393
- package/src/workbench/workspace/WorkspaceExplorer.tsx +630 -630
- package/src/workbench/workspace/WorkspaceExplorerPanel.tsx +73 -73
- package/src/workbench/workspace/WorkspaceFileIcon.tsx +23 -23
- package/src/workbench/workspace/WorkspaceHighlightedText.tsx +22 -22
- package/src/workbench/workspace/WorkspacePathLabel.tsx +42 -42
- package/src/workbench/workspace/WorkspaceSearchPanel.tsx +116 -116
- package/src/workbench/workspace/WorkspaceSearchResults.tsx +51 -51
- package/src/workbench/workspace/build-workspace-explorer-nodes.ts +44 -44
- package/src/workbench/workspace/createVirtualWorkspaceExplorerPort.ts +141 -141
- package/src/workbench/workspace/explorer-tree-style.ts +18 -18
- package/src/workbench/workspace/index.ts +169 -169
- package/src/workbench/workspace/json-config-workbench.css +57 -57
- package/src/workbench/workspace/mimeType.ts +45 -45
- package/src/workbench/workspace/monaco-panel.css +71 -71
- package/src/workbench/workspace/path.ts +12 -12
- package/src/workbench/workspace/search.ts +6 -6
- package/src/workbench/workspace/tree.ts +1 -1
- package/src/workbench/workspace/types.ts +10 -10
- package/src/workbench/workspace/useVirtualWorkspace.ts +111 -111
- package/src/workbench/workspace/useWorkspaceExplorerController.ts +490 -490
- package/src/workbench/workspace/workspace-editor.css +235 -235
- package/src/workbench/workspace/workspace-explorer-panel.css +33 -33
- package/src/workbench/workspace/workspace.css +5 -5
- package/src/workbench/workspace/workspaceExplorerController.ts +193 -193
- package/src/workbench/workspace/workspaceJsonDiagnostics.ts +83 -83
- package/src/workbench-menu-surfaces.css +57 -57
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
WorkbenchViewActivityBarItem,
|
|
4
|
-
WorkbenchViewActivityBarModel,
|
|
5
|
-
WorkbenchViewEditorTabItem,
|
|
6
|
-
} from '@workbench-kit/platform';
|
|
7
|
-
|
|
8
|
-
import type { EditorTab } from '../primitives/workbench-editor';
|
|
9
|
-
import type { ActivityBarItem } from './ActivityBar';
|
|
10
|
-
import type { WorkbenchShellProps } from './WorkbenchShell';
|
|
11
|
-
import type { WorkbenchViewSidebarItem, WorkbenchViewSidebarProps } from './WorkbenchViewSidebar';
|
|
12
|
-
|
|
13
|
-
export type WorkbenchShellActivityBarViewModelProps = Omit<
|
|
14
|
-
WorkbenchShellProps['activityBar'],
|
|
15
|
-
'items' | 'secondaryItems'
|
|
16
|
-
>;
|
|
17
|
-
|
|
18
|
-
export type WorkbenchViewSidebarViewModelProps<TViewId extends string, TIcon = unknown> = Omit<
|
|
19
|
-
WorkbenchViewSidebarProps<TViewId, TIcon>,
|
|
20
|
-
'items'
|
|
21
|
-
>;
|
|
22
|
-
|
|
23
|
-
export interface CreateWorkbenchShellActivityBarFromViewModelInput<
|
|
24
|
-
TViewId extends string,
|
|
25
|
-
TIcon = unknown,
|
|
26
|
-
> {
|
|
27
|
-
readonly activeId?: TViewId | undefined;
|
|
28
|
-
readonly activityBarProps?: WorkbenchShellActivityBarViewModelProps | undefined;
|
|
29
|
-
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
30
|
-
readonly onSelect?:
|
|
31
|
-
((viewId: TViewId, item: WorkbenchViewActivityBarItem<TViewId, TIcon>) => void) | undefined;
|
|
32
|
-
readonly renderIcon: (
|
|
33
|
-
icon: TIcon,
|
|
34
|
-
item: WorkbenchViewActivityBarItem<TViewId, TIcon>,
|
|
35
|
-
) => ReactNode;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export interface CreateWorkbenchEditorTabsFromViewModelInput<
|
|
39
|
-
TViewId extends string,
|
|
40
|
-
TIcon extends EditorTab['icon'] = EditorTab['icon'],
|
|
41
|
-
> {
|
|
42
|
-
readonly items: ReadonlyArray<WorkbenchViewEditorTabItem<TViewId, TIcon>>;
|
|
43
|
-
readonly resolveTitle?:
|
|
44
|
-
((item: WorkbenchViewEditorTabItem<TViewId, TIcon>) => string | undefined) | undefined;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface CreateWorkbenchViewSidebarItemsFromViewModelInput<
|
|
48
|
-
TViewId extends string,
|
|
49
|
-
TIcon = unknown,
|
|
50
|
-
> {
|
|
51
|
-
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface CreateWorkbenchViewSidebarFromViewModelInput<
|
|
55
|
-
TViewId extends string,
|
|
56
|
-
TIcon = unknown,
|
|
57
|
-
> extends WorkbenchViewSidebarViewModelProps<TViewId, TIcon> {
|
|
58
|
-
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export function createWorkbenchShellActivityBarFromViewModel<
|
|
62
|
-
TViewId extends string,
|
|
63
|
-
TIcon = unknown,
|
|
64
|
-
>({
|
|
65
|
-
activeId,
|
|
66
|
-
activityBarProps,
|
|
67
|
-
model,
|
|
68
|
-
onSelect,
|
|
69
|
-
renderIcon,
|
|
70
|
-
}: CreateWorkbenchShellActivityBarFromViewModelInput<
|
|
71
|
-
TViewId,
|
|
72
|
-
TIcon
|
|
73
|
-
>): WorkbenchShellProps['activityBar'] {
|
|
74
|
-
const sourceItemsById = new Map<string, WorkbenchViewActivityBarItem<TViewId, TIcon>>();
|
|
75
|
-
const { onItemActivate, ...restActivityBarProps } = activityBarProps ?? {};
|
|
76
|
-
|
|
77
|
-
const toActivityBarItem = (
|
|
78
|
-
item: WorkbenchViewActivityBarItem<TViewId, TIcon>,
|
|
79
|
-
): ActivityBarItem => {
|
|
80
|
-
sourceItemsById.set(item.id, item);
|
|
81
|
-
|
|
82
|
-
return {
|
|
83
|
-
active: item.id === activeId,
|
|
84
|
-
icon: renderIcon(item.icon, item),
|
|
85
|
-
id: item.id,
|
|
86
|
-
label: item.label,
|
|
87
|
-
title: item.label,
|
|
88
|
-
};
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
const items = model.items.map(toActivityBarItem);
|
|
92
|
-
const secondaryItems = model.footerItems.map(toActivityBarItem);
|
|
93
|
-
const activityBar: WorkbenchShellProps['activityBar'] = {
|
|
94
|
-
...restActivityBarProps,
|
|
95
|
-
items,
|
|
96
|
-
secondaryItems,
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
if (onItemActivate !== undefined || onSelect !== undefined) {
|
|
100
|
-
activityBar.onItemActivate = (item) => {
|
|
101
|
-
onItemActivate?.(item);
|
|
102
|
-
|
|
103
|
-
const sourceItem = sourceItemsById.get(item.id);
|
|
104
|
-
if (sourceItem !== undefined) {
|
|
105
|
-
onSelect?.(sourceItem.id, sourceItem);
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return activityBar;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export function createWorkbenchEditorTabsFromViewModel<
|
|
114
|
-
TViewId extends string,
|
|
115
|
-
TIcon extends EditorTab['icon'] = EditorTab['icon'],
|
|
116
|
-
>({
|
|
117
|
-
items,
|
|
118
|
-
resolveTitle,
|
|
119
|
-
}: CreateWorkbenchEditorTabsFromViewModelInput<TViewId, TIcon>): ReadonlyArray<EditorTab> {
|
|
120
|
-
return items.map((item): EditorTab => {
|
|
121
|
-
const title = resolveTitle?.(item) ?? item.label;
|
|
122
|
-
|
|
123
|
-
return {
|
|
124
|
-
closable: item.closable,
|
|
125
|
-
dirty: item.dirty,
|
|
126
|
-
icon: item.icon,
|
|
127
|
-
id: item.id,
|
|
128
|
-
label: item.label,
|
|
129
|
-
title,
|
|
130
|
-
};
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
export function createWorkbenchViewSidebarItemsFromViewModel<
|
|
135
|
-
TViewId extends string,
|
|
136
|
-
TIcon = unknown,
|
|
137
|
-
>({
|
|
138
|
-
model,
|
|
139
|
-
}: CreateWorkbenchViewSidebarItemsFromViewModelInput<TViewId, TIcon>): ReadonlyArray<
|
|
140
|
-
WorkbenchViewSidebarItem<TViewId, TIcon>
|
|
141
|
-
> {
|
|
142
|
-
return [...model.items, ...model.footerItems].map((item) => ({
|
|
143
|
-
icon: item.icon,
|
|
144
|
-
id: item.id,
|
|
145
|
-
label: item.label,
|
|
146
|
-
}));
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export function createWorkbenchViewSidebarFromViewModel<TViewId extends string, TIcon = unknown>({
|
|
150
|
-
model,
|
|
151
|
-
...sidebarProps
|
|
152
|
-
}: CreateWorkbenchViewSidebarFromViewModelInput<TViewId, TIcon>): WorkbenchViewSidebarProps<
|
|
153
|
-
TViewId,
|
|
154
|
-
TIcon
|
|
155
|
-
> {
|
|
156
|
-
return {
|
|
157
|
-
...sidebarProps,
|
|
158
|
-
items: createWorkbenchViewSidebarItemsFromViewModel({ model }),
|
|
159
|
-
};
|
|
160
|
-
}
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
WorkbenchViewActivityBarItem,
|
|
4
|
+
WorkbenchViewActivityBarModel,
|
|
5
|
+
WorkbenchViewEditorTabItem,
|
|
6
|
+
} from '@workbench-kit/platform';
|
|
7
|
+
|
|
8
|
+
import type { EditorTab } from '../primitives/workbench-editor';
|
|
9
|
+
import type { ActivityBarItem } from './ActivityBar';
|
|
10
|
+
import type { WorkbenchShellProps } from './WorkbenchShell';
|
|
11
|
+
import type { WorkbenchViewSidebarItem, WorkbenchViewSidebarProps } from './WorkbenchViewSidebar';
|
|
12
|
+
|
|
13
|
+
export type WorkbenchShellActivityBarViewModelProps = Omit<
|
|
14
|
+
WorkbenchShellProps['activityBar'],
|
|
15
|
+
'items' | 'secondaryItems'
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
export type WorkbenchViewSidebarViewModelProps<TViewId extends string, TIcon = unknown> = Omit<
|
|
19
|
+
WorkbenchViewSidebarProps<TViewId, TIcon>,
|
|
20
|
+
'items'
|
|
21
|
+
>;
|
|
22
|
+
|
|
23
|
+
export interface CreateWorkbenchShellActivityBarFromViewModelInput<
|
|
24
|
+
TViewId extends string,
|
|
25
|
+
TIcon = unknown,
|
|
26
|
+
> {
|
|
27
|
+
readonly activeId?: TViewId | undefined;
|
|
28
|
+
readonly activityBarProps?: WorkbenchShellActivityBarViewModelProps | undefined;
|
|
29
|
+
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
30
|
+
readonly onSelect?:
|
|
31
|
+
((viewId: TViewId, item: WorkbenchViewActivityBarItem<TViewId, TIcon>) => void) | undefined;
|
|
32
|
+
readonly renderIcon: (
|
|
33
|
+
icon: TIcon,
|
|
34
|
+
item: WorkbenchViewActivityBarItem<TViewId, TIcon>,
|
|
35
|
+
) => ReactNode;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface CreateWorkbenchEditorTabsFromViewModelInput<
|
|
39
|
+
TViewId extends string,
|
|
40
|
+
TIcon extends EditorTab['icon'] = EditorTab['icon'],
|
|
41
|
+
> {
|
|
42
|
+
readonly items: ReadonlyArray<WorkbenchViewEditorTabItem<TViewId, TIcon>>;
|
|
43
|
+
readonly resolveTitle?:
|
|
44
|
+
((item: WorkbenchViewEditorTabItem<TViewId, TIcon>) => string | undefined) | undefined;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface CreateWorkbenchViewSidebarItemsFromViewModelInput<
|
|
48
|
+
TViewId extends string,
|
|
49
|
+
TIcon = unknown,
|
|
50
|
+
> {
|
|
51
|
+
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface CreateWorkbenchViewSidebarFromViewModelInput<
|
|
55
|
+
TViewId extends string,
|
|
56
|
+
TIcon = unknown,
|
|
57
|
+
> extends WorkbenchViewSidebarViewModelProps<TViewId, TIcon> {
|
|
58
|
+
readonly model: WorkbenchViewActivityBarModel<TViewId, TIcon>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function createWorkbenchShellActivityBarFromViewModel<
|
|
62
|
+
TViewId extends string,
|
|
63
|
+
TIcon = unknown,
|
|
64
|
+
>({
|
|
65
|
+
activeId,
|
|
66
|
+
activityBarProps,
|
|
67
|
+
model,
|
|
68
|
+
onSelect,
|
|
69
|
+
renderIcon,
|
|
70
|
+
}: CreateWorkbenchShellActivityBarFromViewModelInput<
|
|
71
|
+
TViewId,
|
|
72
|
+
TIcon
|
|
73
|
+
>): WorkbenchShellProps['activityBar'] {
|
|
74
|
+
const sourceItemsById = new Map<string, WorkbenchViewActivityBarItem<TViewId, TIcon>>();
|
|
75
|
+
const { onItemActivate, ...restActivityBarProps } = activityBarProps ?? {};
|
|
76
|
+
|
|
77
|
+
const toActivityBarItem = (
|
|
78
|
+
item: WorkbenchViewActivityBarItem<TViewId, TIcon>,
|
|
79
|
+
): ActivityBarItem => {
|
|
80
|
+
sourceItemsById.set(item.id, item);
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
active: item.id === activeId,
|
|
84
|
+
icon: renderIcon(item.icon, item),
|
|
85
|
+
id: item.id,
|
|
86
|
+
label: item.label,
|
|
87
|
+
title: item.label,
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const items = model.items.map(toActivityBarItem);
|
|
92
|
+
const secondaryItems = model.footerItems.map(toActivityBarItem);
|
|
93
|
+
const activityBar: WorkbenchShellProps['activityBar'] = {
|
|
94
|
+
...restActivityBarProps,
|
|
95
|
+
items,
|
|
96
|
+
secondaryItems,
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
if (onItemActivate !== undefined || onSelect !== undefined) {
|
|
100
|
+
activityBar.onItemActivate = (item) => {
|
|
101
|
+
onItemActivate?.(item);
|
|
102
|
+
|
|
103
|
+
const sourceItem = sourceItemsById.get(item.id);
|
|
104
|
+
if (sourceItem !== undefined) {
|
|
105
|
+
onSelect?.(sourceItem.id, sourceItem);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return activityBar;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function createWorkbenchEditorTabsFromViewModel<
|
|
114
|
+
TViewId extends string,
|
|
115
|
+
TIcon extends EditorTab['icon'] = EditorTab['icon'],
|
|
116
|
+
>({
|
|
117
|
+
items,
|
|
118
|
+
resolveTitle,
|
|
119
|
+
}: CreateWorkbenchEditorTabsFromViewModelInput<TViewId, TIcon>): ReadonlyArray<EditorTab> {
|
|
120
|
+
return items.map((item): EditorTab => {
|
|
121
|
+
const title = resolveTitle?.(item) ?? item.label;
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
closable: item.closable,
|
|
125
|
+
dirty: item.dirty,
|
|
126
|
+
icon: item.icon,
|
|
127
|
+
id: item.id,
|
|
128
|
+
label: item.label,
|
|
129
|
+
title,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export function createWorkbenchViewSidebarItemsFromViewModel<
|
|
135
|
+
TViewId extends string,
|
|
136
|
+
TIcon = unknown,
|
|
137
|
+
>({
|
|
138
|
+
model,
|
|
139
|
+
}: CreateWorkbenchViewSidebarItemsFromViewModelInput<TViewId, TIcon>): ReadonlyArray<
|
|
140
|
+
WorkbenchViewSidebarItem<TViewId, TIcon>
|
|
141
|
+
> {
|
|
142
|
+
return [...model.items, ...model.footerItems].map((item) => ({
|
|
143
|
+
icon: item.icon,
|
|
144
|
+
id: item.id,
|
|
145
|
+
label: item.label,
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function createWorkbenchViewSidebarFromViewModel<TViewId extends string, TIcon = unknown>({
|
|
150
|
+
model,
|
|
151
|
+
...sidebarProps
|
|
152
|
+
}: CreateWorkbenchViewSidebarFromViewModelInput<TViewId, TIcon>): WorkbenchViewSidebarProps<
|
|
153
|
+
TViewId,
|
|
154
|
+
TIcon
|
|
155
|
+
> {
|
|
156
|
+
return {
|
|
157
|
+
...sidebarProps,
|
|
158
|
+
items: createWorkbenchViewSidebarItemsFromViewModel({ model }),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
/** Shared drag payload for moving a view container between sidebar slots (activity bar or action bar). */
|
|
2
|
-
export const WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE =
|
|
3
|
-
'application/x-workbench-activity-bar-item';
|
|
4
|
-
|
|
5
|
-
const WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX = 'workbench-sidebar-view:';
|
|
6
|
-
|
|
7
|
-
let activeSidebarViewPlacementDragViewId: string | null = null;
|
|
8
|
-
|
|
9
|
-
const dragSessionEndListeners = new Set<() => void>();
|
|
10
|
-
|
|
11
|
-
function notifyWorkbenchSidebarViewPlacementDragSessionEnd(): void {
|
|
12
|
-
for (const listener of dragSessionEndListeners) {
|
|
13
|
-
listener();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export function subscribeWorkbenchSidebarViewPlacementDragSessionEnd(
|
|
18
|
-
listener: () => void,
|
|
19
|
-
): () => void {
|
|
20
|
-
dragSessionEndListeners.add(listener);
|
|
21
|
-
return () => {
|
|
22
|
-
dragSessionEndListeners.delete(listener);
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function resetWorkbenchSidebarViewPlacementDragSession(): void {
|
|
27
|
-
activeSidebarViewPlacementDragViewId = null;
|
|
28
|
-
notifyWorkbenchSidebarViewPlacementDragSessionEnd();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export function hasWorkbenchSidebarViewPlacementDrag(dataTransfer: DataTransfer): boolean {
|
|
32
|
-
if (activeSidebarViewPlacementDragViewId !== null) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return [...dataTransfer.types].includes(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function writeWorkbenchSidebarViewPlacementDrag(
|
|
40
|
-
dataTransfer: DataTransfer,
|
|
41
|
-
viewId: string,
|
|
42
|
-
): void {
|
|
43
|
-
activeSidebarViewPlacementDragViewId = viewId;
|
|
44
|
-
dataTransfer.effectAllowed = 'move';
|
|
45
|
-
dataTransfer.setData(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE, viewId);
|
|
46
|
-
dataTransfer.setData('text/plain', `${WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX}${viewId}`);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function readWorkbenchSidebarViewPlacementDrag(dataTransfer: DataTransfer): string {
|
|
50
|
-
const payload = dataTransfer.getData(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE);
|
|
51
|
-
if (payload.length > 0) {
|
|
52
|
-
return payload;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const plainTextPayload = dataTransfer.getData('text/plain');
|
|
56
|
-
if (plainTextPayload.startsWith(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX)) {
|
|
57
|
-
return plainTextPayload.slice(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX.length);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return activeSidebarViewPlacementDragViewId ?? '';
|
|
61
|
-
}
|
|
1
|
+
/** Shared drag payload for moving a view container between sidebar slots (activity bar or action bar). */
|
|
2
|
+
export const WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE =
|
|
3
|
+
'application/x-workbench-activity-bar-item';
|
|
4
|
+
|
|
5
|
+
const WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX = 'workbench-sidebar-view:';
|
|
6
|
+
|
|
7
|
+
let activeSidebarViewPlacementDragViewId: string | null = null;
|
|
8
|
+
|
|
9
|
+
const dragSessionEndListeners = new Set<() => void>();
|
|
10
|
+
|
|
11
|
+
function notifyWorkbenchSidebarViewPlacementDragSessionEnd(): void {
|
|
12
|
+
for (const listener of dragSessionEndListeners) {
|
|
13
|
+
listener();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function subscribeWorkbenchSidebarViewPlacementDragSessionEnd(
|
|
18
|
+
listener: () => void,
|
|
19
|
+
): () => void {
|
|
20
|
+
dragSessionEndListeners.add(listener);
|
|
21
|
+
return () => {
|
|
22
|
+
dragSessionEndListeners.delete(listener);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function resetWorkbenchSidebarViewPlacementDragSession(): void {
|
|
27
|
+
activeSidebarViewPlacementDragViewId = null;
|
|
28
|
+
notifyWorkbenchSidebarViewPlacementDragSessionEnd();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function hasWorkbenchSidebarViewPlacementDrag(dataTransfer: DataTransfer): boolean {
|
|
32
|
+
if (activeSidebarViewPlacementDragViewId !== null) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return [...dataTransfer.types].includes(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function writeWorkbenchSidebarViewPlacementDrag(
|
|
40
|
+
dataTransfer: DataTransfer,
|
|
41
|
+
viewId: string,
|
|
42
|
+
): void {
|
|
43
|
+
activeSidebarViewPlacementDragViewId = viewId;
|
|
44
|
+
dataTransfer.effectAllowed = 'move';
|
|
45
|
+
dataTransfer.setData(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE, viewId);
|
|
46
|
+
dataTransfer.setData('text/plain', `${WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX}${viewId}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function readWorkbenchSidebarViewPlacementDrag(dataTransfer: DataTransfer): string {
|
|
50
|
+
const payload = dataTransfer.getData(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_DRAG_DATA_TYPE);
|
|
51
|
+
if (payload.length > 0) {
|
|
52
|
+
return payload;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const plainTextPayload = dataTransfer.getData('text/plain');
|
|
56
|
+
if (plainTextPayload.startsWith(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX)) {
|
|
57
|
+
return plainTextPayload.slice(WORKBENCH_SIDEBAR_VIEW_PLACEMENT_TEXT_PREFIX.length);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return activeSidebarViewPlacementDragViewId ?? '';
|
|
61
|
+
}
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
import type { CommandRegistry } from '@workbench-kit/platform';
|
|
2
|
-
import type {
|
|
3
|
-
SaveResult,
|
|
4
|
-
WorkspacePatchApplyResult,
|
|
5
|
-
WorkspacePatchEvent,
|
|
6
|
-
} from '@workbench-kit/contracts';
|
|
7
|
-
import type { ReactNode } from 'react';
|
|
8
|
-
import type { StatusBarSectionModel } from './StatusBar';
|
|
9
|
-
import type { WorkbenchShellCommandContext } from './commands';
|
|
10
|
-
import type { WorkspaceFile } from './workspace';
|
|
11
|
-
|
|
12
|
-
export type WorkbenchTheme = 'light' | 'dark' | (string & {});
|
|
13
|
-
|
|
14
|
-
export interface WorkbenchActivityDescriptor<TActivityId extends string = string> {
|
|
15
|
-
id: TActivityId;
|
|
16
|
-
label: string;
|
|
17
|
-
icon?: string;
|
|
18
|
-
iconNode?: ReactNode;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface WorkbenchActivityChangeEvent<TActivityId extends string = string> {
|
|
22
|
-
nextActivityId: TActivityId;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface WorkbenchWorkspaceController {
|
|
26
|
-
openFile: (path: string) => void | Promise<void>;
|
|
27
|
-
saveFile: (path: string, content: string, previousUpdatedAt?: string) => Promise<SaveResult>;
|
|
28
|
-
deleteFiles: (paths: string[]) => void | Promise<void>;
|
|
29
|
-
moveFiles?: (paths: string[], targetParentPath: string | undefined) => void | Promise<void>;
|
|
30
|
-
rename?: (path: string, nextName: string) => void | Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface WorkbenchHostCallbackBoundary {
|
|
34
|
-
onSave?: (path: string, content: string, previousUpdatedAt?: string) => Promise<SaveResult>;
|
|
35
|
-
onDelete?: (paths: readonly string[]) => void | Promise<void>;
|
|
36
|
-
onChatSubmit?: (message: string, context?: Record<string, unknown>) => void | Promise<void>;
|
|
37
|
-
onPatch?: (patch: WorkspacePatchEvent) => Promise<WorkspacePatchApplyResult> | void;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export interface WorkbenchChatController {
|
|
41
|
-
onChatSubmit: (message: string, context?: Record<string, unknown>) => void | Promise<void>;
|
|
42
|
-
onCancelChat: () => void;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export interface WorkbenchPatchController {
|
|
46
|
-
onPatchApply: (patch: WorkspacePatchEvent) => Promise<WorkspacePatchApplyResult> | void;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export interface WorkbenchSaveController {
|
|
50
|
-
onSaveResult?: (result: SaveResult) => void | Promise<void>;
|
|
51
|
-
onCommitPatchResult?: (
|
|
52
|
-
patch: WorkspacePatchEvent,
|
|
53
|
-
result: WorkspacePatchApplyResult,
|
|
54
|
-
source: 'chat' | 'command',
|
|
55
|
-
) => void | Promise<void>;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface WorkbenchStatusController {
|
|
59
|
-
onStatusMessage?: (message: string) => void;
|
|
60
|
-
onError?: (error: Error) => void;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export interface WorkbenchShellContract<TActivityId extends string = string> {
|
|
64
|
-
activities: WorkbenchActivityDescriptor<TActivityId>[];
|
|
65
|
-
commandRegistry: CommandRegistry<WorkbenchShellCommandContext<TActivityId>>;
|
|
66
|
-
initialActivityId?: TActivityId;
|
|
67
|
-
initialTheme?: WorkbenchTheme;
|
|
68
|
-
statusSections: StatusBarSectionModel[];
|
|
69
|
-
statusCompact?: boolean;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export interface WorkbenchStandaloneEntryState<TActivityId extends string = string> {
|
|
73
|
-
activeActivityId: TActivityId;
|
|
74
|
-
isPrimarySidebarVisible: boolean;
|
|
75
|
-
primarySidebarSizePx: number;
|
|
76
|
-
primarySidebarMinPx?: number;
|
|
77
|
-
primarySidebarMaxPx?: number;
|
|
78
|
-
theme: WorkbenchTheme;
|
|
79
|
-
isSettingsOpen?: boolean;
|
|
80
|
-
settingsCategoryId?: string;
|
|
81
|
-
settingsScopeId?: string;
|
|
82
|
-
settingsSearchValue?: string;
|
|
83
|
-
selectedFilePath?: string;
|
|
84
|
-
openFilePaths?: readonly string[];
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export interface WorkbenchStandaloneBootstrap<TActivityId extends string = string> {
|
|
88
|
-
contract: WorkbenchShellContract<TActivityId>;
|
|
89
|
-
initialFiles?: readonly WorkspaceFile[];
|
|
90
|
-
workspace?: WorkbenchWorkspaceController;
|
|
91
|
-
chat?: WorkbenchChatController;
|
|
92
|
-
patch?: WorkbenchPatchController;
|
|
93
|
-
save?: WorkbenchSaveController;
|
|
94
|
-
status?: WorkbenchStatusController;
|
|
95
|
-
initialState?: Partial<WorkbenchStandaloneEntryState<TActivityId>>;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export type WorkbenchStandaloneBootstrapEvent<TActivityId extends string = string> =
|
|
99
|
-
| { type: 'activity-change'; payload: WorkbenchActivityChangeEvent<TActivityId> }
|
|
100
|
-
| { type: 'status-message'; message: string }
|
|
101
|
-
| { type: 'error'; error: Error };
|
|
1
|
+
import type { CommandRegistry } from '@workbench-kit/platform';
|
|
2
|
+
import type {
|
|
3
|
+
SaveResult,
|
|
4
|
+
WorkspacePatchApplyResult,
|
|
5
|
+
WorkspacePatchEvent,
|
|
6
|
+
} from '@workbench-kit/contracts';
|
|
7
|
+
import type { ReactNode } from 'react';
|
|
8
|
+
import type { StatusBarSectionModel } from './StatusBar';
|
|
9
|
+
import type { WorkbenchShellCommandContext } from './commands';
|
|
10
|
+
import type { WorkspaceFile } from './workspace';
|
|
11
|
+
|
|
12
|
+
export type WorkbenchTheme = 'light' | 'dark' | (string & {});
|
|
13
|
+
|
|
14
|
+
export interface WorkbenchActivityDescriptor<TActivityId extends string = string> {
|
|
15
|
+
id: TActivityId;
|
|
16
|
+
label: string;
|
|
17
|
+
icon?: string;
|
|
18
|
+
iconNode?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface WorkbenchActivityChangeEvent<TActivityId extends string = string> {
|
|
22
|
+
nextActivityId: TActivityId;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface WorkbenchWorkspaceController {
|
|
26
|
+
openFile: (path: string) => void | Promise<void>;
|
|
27
|
+
saveFile: (path: string, content: string, previousUpdatedAt?: string) => Promise<SaveResult>;
|
|
28
|
+
deleteFiles: (paths: string[]) => void | Promise<void>;
|
|
29
|
+
moveFiles?: (paths: string[], targetParentPath: string | undefined) => void | Promise<void>;
|
|
30
|
+
rename?: (path: string, nextName: string) => void | Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface WorkbenchHostCallbackBoundary {
|
|
34
|
+
onSave?: (path: string, content: string, previousUpdatedAt?: string) => Promise<SaveResult>;
|
|
35
|
+
onDelete?: (paths: readonly string[]) => void | Promise<void>;
|
|
36
|
+
onChatSubmit?: (message: string, context?: Record<string, unknown>) => void | Promise<void>;
|
|
37
|
+
onPatch?: (patch: WorkspacePatchEvent) => Promise<WorkspacePatchApplyResult> | void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface WorkbenchChatController {
|
|
41
|
+
onChatSubmit: (message: string, context?: Record<string, unknown>) => void | Promise<void>;
|
|
42
|
+
onCancelChat: () => void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface WorkbenchPatchController {
|
|
46
|
+
onPatchApply: (patch: WorkspacePatchEvent) => Promise<WorkspacePatchApplyResult> | void;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface WorkbenchSaveController {
|
|
50
|
+
onSaveResult?: (result: SaveResult) => void | Promise<void>;
|
|
51
|
+
onCommitPatchResult?: (
|
|
52
|
+
patch: WorkspacePatchEvent,
|
|
53
|
+
result: WorkspacePatchApplyResult,
|
|
54
|
+
source: 'chat' | 'command',
|
|
55
|
+
) => void | Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface WorkbenchStatusController {
|
|
59
|
+
onStatusMessage?: (message: string) => void;
|
|
60
|
+
onError?: (error: Error) => void;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface WorkbenchShellContract<TActivityId extends string = string> {
|
|
64
|
+
activities: WorkbenchActivityDescriptor<TActivityId>[];
|
|
65
|
+
commandRegistry: CommandRegistry<WorkbenchShellCommandContext<TActivityId>>;
|
|
66
|
+
initialActivityId?: TActivityId;
|
|
67
|
+
initialTheme?: WorkbenchTheme;
|
|
68
|
+
statusSections: StatusBarSectionModel[];
|
|
69
|
+
statusCompact?: boolean;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface WorkbenchStandaloneEntryState<TActivityId extends string = string> {
|
|
73
|
+
activeActivityId: TActivityId;
|
|
74
|
+
isPrimarySidebarVisible: boolean;
|
|
75
|
+
primarySidebarSizePx: number;
|
|
76
|
+
primarySidebarMinPx?: number;
|
|
77
|
+
primarySidebarMaxPx?: number;
|
|
78
|
+
theme: WorkbenchTheme;
|
|
79
|
+
isSettingsOpen?: boolean;
|
|
80
|
+
settingsCategoryId?: string;
|
|
81
|
+
settingsScopeId?: string;
|
|
82
|
+
settingsSearchValue?: string;
|
|
83
|
+
selectedFilePath?: string;
|
|
84
|
+
openFilePaths?: readonly string[];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface WorkbenchStandaloneBootstrap<TActivityId extends string = string> {
|
|
88
|
+
contract: WorkbenchShellContract<TActivityId>;
|
|
89
|
+
initialFiles?: readonly WorkspaceFile[];
|
|
90
|
+
workspace?: WorkbenchWorkspaceController;
|
|
91
|
+
chat?: WorkbenchChatController;
|
|
92
|
+
patch?: WorkbenchPatchController;
|
|
93
|
+
save?: WorkbenchSaveController;
|
|
94
|
+
status?: WorkbenchStatusController;
|
|
95
|
+
initialState?: Partial<WorkbenchStandaloneEntryState<TActivityId>>;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export type WorkbenchStandaloneBootstrapEvent<TActivityId extends string = string> =
|
|
99
|
+
| { type: 'activity-change'; payload: WorkbenchActivityChangeEvent<TActivityId> }
|
|
100
|
+
| { type: 'status-message'; message: string }
|
|
101
|
+
| { type: 'error'; error: Error };
|