@volter/editor-core 0.5.57
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/BUNDLED_NOTICES +1527 -0
- package/LICENSE +686 -0
- package/LICENSE-APACHE +202 -0
- package/NOTICE +18 -0
- package/README.md +24 -0
- package/dist/build/chunk-JS4D4XZ3.js +175 -0
- package/dist/build/chunk-JS4D4XZ3.js.map +7 -0
- package/dist/build/vite-plugin-product-contributions.js +100 -0
- package/dist/build/vite-plugin-product-contributions.js.map +7 -0
- package/dist/build/vite-plugin-shared-react.js +25 -0
- package/dist/build/vite-plugin-shared-react.js.map +7 -0
- package/dist/build/vite-plugin-shared-three.js +86 -0
- package/dist/build/vite-plugin-shared-three.js.map +7 -0
- package/dist/server/chunk-KMJC7AGO.js +98 -0
- package/dist/server/chunk-KMJC7AGO.js.map +7 -0
- package/dist/server/chunk-PSILUMGS.js +46 -0
- package/dist/server/chunk-PSILUMGS.js.map +7 -0
- package/dist/server/frame-proxy.js +255 -0
- package/dist/server/frame-proxy.js.map +7 -0
- package/dist/server/open-browser.js +53 -0
- package/dist/server/open-browser.js.map +7 -0
- package/dist/server/process-shutdown.js +127 -0
- package/dist/server/process-shutdown.js.map +7 -0
- package/dist/server/session-registry.js +141 -0
- package/dist/server/session-registry.js.map +7 -0
- package/dist/server/spawn-opener.js +11 -0
- package/dist/server/spawn-opener.js.map +7 -0
- package/dist/server/worktree-identity.js +11 -0
- package/dist/server/worktree-identity.js.map +7 -0
- package/dist-server/packaged.mjs +88816 -0
- package/package.json +118 -0
- package/scripts/build-plugins.mjs +14 -0
- package/scripts/build-server.mjs +26 -0
- package/scripts/build-session.mjs +9 -0
- package/server/account-credentials.ts +60 -0
- package/server/account-service.ts +1434 -0
- package/server/adapter-region-includes.ts +47 -0
- package/server/asset-catalog-v2.ts +175 -0
- package/server/asset-history-snapshots.ts +196 -0
- package/server/asset-ledger-store.ts +195 -0
- package/server/asset-library-routes.ts +1595 -0
- package/server/blender-wasm-artifact.ts +430 -0
- package/server/boot-timings.ts +106 -0
- package/server/canonical-path.ts +50 -0
- package/server/checkout-workspace-preflight.ts +349 -0
- package/server/cloud-asset-catalog.ts +158 -0
- package/server/coding-inference-launch.ts +237 -0
- package/server/collaboration-account-client.ts +202 -0
- package/server/collaboration-attribution.ts +122 -0
- package/server/collaboration-session.ts +934 -0
- package/server/comfyui-bridge.ts +248 -0
- package/server/console-ledger.ts +499 -0
- package/server/creation-site-transform.ts +304 -0
- package/server/creation-site-write.ts +648 -0
- package/server/data-file-serialize.ts +158 -0
- package/server/editor-brand-html.ts +72 -0
- package/server/editor-control-socket.ts +366 -0
- package/server/editor-server-options.ts +190 -0
- package/server/editor-server.ts +1483 -0
- package/server/editor-sse.ts +352 -0
- package/server/engine-provenance.ts +169 -0
- package/server/engine-source-restart.ts +117 -0
- package/server/frame-bridge.ts +115 -0
- package/server/frame-proxy.ts +490 -0
- package/server/frame-workbench.ts +259 -0
- package/server/frontend-handoff.ts +229 -0
- package/server/game-globals-shadow.ts +113 -0
- package/server/gameplay-session-retention.ts +149 -0
- package/server/gameplay-sessions.ts +123 -0
- package/server/generation-jobs.ts +201 -0
- package/server/generation-reconciler.ts +137 -0
- package/server/generative-execution-context.ts +59 -0
- package/server/git-workflow.ts +612 -0
- package/server/harness-chat-caller.ts +36 -0
- package/server/harness-chat-service.ts +1681 -0
- package/server/idle-shutdown.ts +170 -0
- package/server/js-profiling-policy.ts +52 -0
- package/server/launcher-settings.ts +84 -0
- package/server/local-asset-catalog.ts +410 -0
- package/server/managed-account-defaults.ts +22 -0
- package/server/mock-control-plane.ts +540 -0
- package/server/model-import-conversion.ts +345 -0
- package/server/native-credential-store.ts +162 -0
- package/server/open-browser.ts +118 -0
- package/server/packaged.ts +1192 -0
- package/server/play-stall.ts +126 -0
- package/server/process-shutdown.ts +218 -0
- package/server/product-presets.ts +55 -0
- package/server/project-build-artifact.ts +95 -0
- package/server/project-components.ts +100 -0
- package/server/project-dependency-invalidation.ts +114 -0
- package/server/project-file-scan.ts +235 -0
- package/server/project-hmr-files.ts +215 -0
- package/server/project-install-roots.ts +210 -0
- package/server/project-kinds.ts +71 -0
- package/server/project-mcp-servers.ts +82 -0
- package/server/project-module-freshness.ts +109 -0
- package/server/project-module-instance.ts +375 -0
- package/server/project-optimize-deps-entries.ts +827 -0
- package/server/project-output-writer.ts +679 -0
- package/server/project-package-origin.ts +63 -0
- package/server/project-root-surface.ts +831 -0
- package/server/project-scratch-path.ts +47 -0
- package/server/project-script-hmr.ts +619 -0
- package/server/project-serving-plugins.ts +236 -0
- package/server/project-tools.ts +653 -0
- package/server/project-validation.ts +250 -0
- package/server/project-verbs.ts +127 -0
- package/server/project-view.ts +52 -0
- package/server/project-watch.ts +1134 -0
- package/server/project-work-coordinator.ts +288 -0
- package/server/provider-credentials.ts +331 -0
- package/server/recent-projects-store.ts +98 -0
- package/server/redact-secrets.ts +71 -0
- package/server/repository-presence.ts +267 -0
- package/server/routes/account.ts +357 -0
- package/server/routes/agents.ts +60 -0
- package/server/routes/assets.ts +154 -0
- package/server/routes/build.ts +13 -0
- package/server/routes/collaboration.ts +595 -0
- package/server/routes/configurations.ts +419 -0
- package/server/routes/context.ts +264 -0
- package/server/routes/control-plane.ts +1811 -0
- package/server/routes/logs.ts +272 -0
- package/server/routes/project-identity.ts +302 -0
- package/server/routes/project-open.ts +429 -0
- package/server/routes/project-source.ts +686 -0
- package/server/routes/project-state.ts +383 -0
- package/server/routes/relay.ts +1029 -0
- package/server/routes/route-helpers.ts +29 -0
- package/server/routes/served-modules.ts +138 -0
- package/server/routes/session-tabs.ts +196 -0
- package/server/routes/settings.ts +121 -0
- package/server/routes/share-control.ts +486 -0
- package/server/routes/themes.ts +116 -0
- package/server/routes/tools.ts +230 -0
- package/server/routes/worktrees.ts +595 -0
- package/server/scoped-game-css.ts +461 -0
- package/server/server-utils.ts +1194 -0
- package/server/session-product.ts +112 -0
- package/server/session-registry.ts +230 -0
- package/server/share-claims.ts +138 -0
- package/server/share-host.ts +526 -0
- package/server/share-session-gateway.ts +1362 -0
- package/server/share-tunnel.ts +123 -0
- package/server/spawn-opener.ts +74 -0
- package/server/support/play/log-format.ts +76 -0
- package/server/support/play/session-record.ts +199 -0
- package/server/support/project/build-discipline.ts +718 -0
- package/server/support/project/inspection-node.ts +119 -0
- package/server/support/project/log-naming.ts +54 -0
- package/server/support/project/provenance.ts +290 -0
- package/server/support/project/run-name.ts +18 -0
- package/server/support/project/session-journal.ts +830 -0
- package/server/support/project/shared.ts +327 -0
- package/server/tab-bootstrap.ts +62 -0
- package/server/tab-heartbeat.ts +477 -0
- package/server/tab-lifecycle.ts +550 -0
- package/server/tab-presence.ts +1508 -0
- package/server/team-agent-mirror.ts +95 -0
- package/server/twin-auth.ts +138 -0
- package/server/vendored-lock-recorder.ts +968 -0
- package/server/worktree-identity.ts +121 -0
- package/server/worktree-management.ts +398 -0
- package/server/worktree-retention.d.mts +13 -0
- package/server/worktree-retention.mjs +205 -0
- package/src/EditorContext.tsx +169 -0
- package/src/account.ts +333 -0
- package/src/action-registry.ts +532 -0
- package/src/active-product.ts +74 -0
- package/src/active-project.ts +155 -0
- package/src/adapter-editor-config.ts +25 -0
- package/src/adapter-observation.ts +49 -0
- package/src/animation/stage-transport.ts +379 -0
- package/src/animation/three-clips-subject.ts +172 -0
- package/src/api/asset-library-wire.ts +45 -0
- package/src/api/assets.ts +365 -0
- package/src/api/base.ts +10 -0
- package/src/api/build.ts +99 -0
- package/src/api/git-wire.ts +56 -0
- package/src/api/logs.ts +92 -0
- package/src/api/project-identity.ts +74 -0
- package/src/api/project-open.ts +355 -0
- package/src/api/project-source.ts +162 -0
- package/src/api/project-state.ts +107 -0
- package/src/api/relay.ts +268 -0
- package/src/api/settings.ts +36 -0
- package/src/api/themes.ts +45 -0
- package/src/api/worktrees.ts +257 -0
- package/src/asset-compare-core.ts +171 -0
- package/src/asset-compare.ts +294 -0
- package/src/asset-editor-context.tsx +100 -0
- package/src/asset-events.ts +97 -0
- package/src/asset-inspector-actions.ts +87 -0
- package/src/asset-preview-framing.ts +357 -0
- package/src/asset-preview.ts +2802 -0
- package/src/asset-selection-viewer-registry.ts +113 -0
- package/src/asset-selection.ts +133 -0
- package/src/asset-workflow/asset-capabilities.ts +344 -0
- package/src/asset-workflow/asset-import-jobs.ts +106 -0
- package/src/asset-workflow/asset-ledger-backend.ts +126 -0
- package/src/asset-workflow/asset-ledger.ts +156 -0
- package/src/asset-workflow/asset-materialization-report.ts +140 -0
- package/src/asset-workflow/asset-pack-manifest.ts +320 -0
- package/src/asset-workflow/asset-types.ts +142 -0
- package/src/asset-workflow/asset-workflow-quality.ts +61 -0
- package/src/asset-workflow/audio-preview-player.ts +193 -0
- package/src/asset-workflow/audio-waveform.ts +22 -0
- package/src/asset-workflow/cloud-asset-client.ts +263 -0
- package/src/asset-workflow/folder-preview.ts +345 -0
- package/src/asset-workflow/hosted-asset-materialization.ts +236 -0
- package/src/asset-workflow/image-view-scale.ts +32 -0
- package/src/asset-workflow/import-contract.ts +124 -0
- package/src/asset-workflow/ledger-write-lock.ts +244 -0
- package/src/asset-workflow/model-inspection.ts +818 -0
- package/src/asset-workflow/pixi-spritesheet.ts +197 -0
- package/src/asset-workflow/preview-resource-lifetime.ts +44 -0
- package/src/asset-workflow/project-asset-commands.ts +23 -0
- package/src/asset-workflow/project-asset-health.ts +139 -0
- package/src/asset-workflow/project-asset-operations.ts +154 -0
- package/src/asset-workflow/project-asset-roots.ts +68 -0
- package/src/asset-workflow/project-content.ts +288 -0
- package/src/asset-workflow/project-source-index.ts +550 -0
- package/src/asset-workflow/thumbnail-system.ts +256 -0
- package/src/authoring/active-adapter.ts +199 -0
- package/src/authoring/active-systems.ts +422 -0
- package/src/authoring/adapter-key.ts +18 -0
- package/src/authoring/authoring-asset-url.ts +27 -0
- package/src/authoring/bootstrap-state.ts +49 -0
- package/src/authoring/boundary-authoring-adapter.ts +184 -0
- package/src/authoring/breakpoint-state.ts +43 -0
- package/src/authoring/canvas-scene-guides.ts +76 -0
- package/src/authoring/component-instance-root.ts +171 -0
- package/src/authoring/composite-authoring-adapter.ts +2110 -0
- package/src/authoring/consumer-actions.ts +520 -0
- package/src/authoring/css-numeric-style.ts +97 -0
- package/src/authoring/design-time-layers.ts +849 -0
- package/src/authoring/design-time-mount-registry.ts +235 -0
- package/src/authoring/design-time-settle.ts +343 -0
- package/src/authoring/edit-mode-authoring.ts +619 -0
- package/src/authoring/eyedropper-session.ts +60 -0
- package/src/authoring/instance-source-menu-register.ts +13 -0
- package/src/authoring/instance-source-menu.ts +135 -0
- package/src/authoring/layered-pick.ts +183 -0
- package/src/authoring/live-gesture-lock.ts +50 -0
- package/src/authoring/live-object-transform.ts +62 -0
- package/src/authoring/mount-failure-report.ts +154 -0
- package/src/authoring/mounted-root-subjects.ts +144 -0
- package/src/authoring/no-authoring-adapter.ts +55 -0
- package/src/authoring/null-inspection-subjects.tsx +75 -0
- package/src/authoring/object3d-document-persistence.ts +106 -0
- package/src/authoring/object3d-document-session-registry.ts +120 -0
- package/src/authoring/object3d-document-session.ts +1326 -0
- package/src/authoring/object3d-gesture-controller.ts +113 -0
- package/src/authoring/panel-authoring.ts +121 -0
- package/src/authoring/prefab-instance-inspector-section.tsx +237 -0
- package/src/authoring/prefab-instance-section-model.ts +55 -0
- package/src/authoring/project-authoring-session.ts +105 -0
- package/src/authoring/provenance.ts +99 -0
- package/src/authoring/quarks-particle-systems.ts +19 -0
- package/src/authoring/react-canvas-navigation.ts +255 -0
- package/src/authoring/react-design-canvas-style.ts +20 -0
- package/src/authoring/react-story-board.ts +937 -0
- package/src/authoring/selection-scope.ts +195 -0
- package/src/authoring/shell-document-ops.ts +169 -0
- package/src/authoring/shell-object3d-document-write-policy.ts +108 -0
- package/src/authoring/shell-viewport-policy.ts +48 -0
- package/src/authoring/source-object3d-authoring-adapter.ts +526 -0
- package/src/authoring/stories-scope.ts +35 -0
- package/src/authoring/story-board-chrome-fit.ts +107 -0
- package/src/authoring/story-board-presentation.ts +111 -0
- package/src/authoring/three-projection-core.ts +226 -0
- package/src/authoring/viewport-pick-context.ts +40 -0
- package/src/authoring/viewport-raycast.ts +240 -0
- package/src/authoring/viewport-tool-context.ts +73 -0
- package/src/authoring/world-canvas-viewport-state.ts +35 -0
- package/src/authoring/world-hidden-viewport.ts +152 -0
- package/src/authoring/world-pan-state.ts +198 -0
- package/src/authoring/world-session-state.ts +101 -0
- package/src/authoring/write-pipe.ts +173 -0
- package/src/availability-tick.ts +66 -0
- package/src/bitmap-label.ts +120 -0
- package/src/blender-tab-metrics.ts +161 -0
- package/src/board-open-actions.ts +20 -0
- package/src/boot-routing.ts +391 -0
- package/src/build-identity.ts +15 -0
- package/src/bytes-codec.ts +62 -0
- package/src/camera-authoring.ts +175 -0
- package/src/cancellation-reason.ts +58 -0
- package/src/canvas-preview-frames.ts +482 -0
- package/src/capture-camera-pose.ts +77 -0
- package/src/chrome-registry.ts +159 -0
- package/src/chrome-slot-registry.ts +91 -0
- package/src/collaboration-client.ts +264 -0
- package/src/collaboration-presence.ts +41 -0
- package/src/command-dispatch.ts +19 -0
- package/src/command-listener.ts +2743 -0
- package/src/command-registry.ts +70 -0
- package/src/component-board-registry.ts +205 -0
- package/src/component-states-registry.ts +200 -0
- package/src/components/AgentPresentationNotice.tsx +75 -0
- package/src/components/AlignToolbar.tsx +204 -0
- package/src/components/AppRoot.tsx +394 -0
- package/src/components/ApplicationMenus.tsx +415 -0
- package/src/components/AssetBrowser.tsx +2843 -0
- package/src/components/AssetEditorShell.tsx +216 -0
- package/src/components/AssetInspectorToolSection.tsx +124 -0
- package/src/components/BoardRulers.tsx +354 -0
- package/src/components/CameraInfo.tsx +81 -0
- package/src/components/CanvasSceneViewport.tsx +556 -0
- package/src/components/CapabilityCoverageSection.tsx +185 -0
- package/src/components/CenterDocuments.tsx +22 -0
- package/src/components/ChromeSlot.tsx +20 -0
- package/src/components/CodeView.tsx +470 -0
- package/src/components/CollaborationHeaderControl.css +74 -0
- package/src/components/CompactInspectorCard.tsx +190 -0
- package/src/components/CompactInspectorShell.tsx +39 -0
- package/src/components/ConsolePanel.css +55 -0
- package/src/components/ConsolePanel.tsx +270 -0
- package/src/components/DefaultEditorLayout.tsx +106 -0
- package/src/components/DocumentHeaderStrip.tsx +96 -0
- package/src/components/DocumentShelfRail.tsx +45 -0
- package/src/components/DocumentThumbnail.tsx +345 -0
- package/src/components/EditorLeaseGuard.tsx +372 -0
- package/src/components/ErrorBanner.tsx +123 -0
- package/src/components/FolderPreviewTile.tsx +159 -0
- package/src/components/GameHierarchy.tsx +3842 -0
- package/src/components/GameplaySessionTimeline.tsx +295 -0
- package/src/components/InspectionProjection.tsx +968 -0
- package/src/components/Inspector.tsx +233 -0
- package/src/components/InspectorCanvasPreview.tsx +35 -0
- package/src/components/InspectorFieldsSection.tsx +290 -0
- package/src/components/InspectorObjectPreview.tsx +57 -0
- package/src/components/InspectorStoriesSection.tsx +92 -0
- package/src/components/InspectorToolSection.tsx +96 -0
- package/src/components/InspectorTransformSection.tsx +245 -0
- package/src/components/LightExplorerPanel.tsx +433 -0
- package/src/components/MediaProperties.tsx +145 -0
- package/src/components/NonThreeAuthoringBootstrap.tsx +19 -0
- package/src/components/Object3DDocumentToolbar.css +100 -0
- package/src/components/Object3DDocumentToolbar.tsx +454 -0
- package/src/components/Object3DDocumentViewport.tsx +58 -0
- package/src/components/ProjectHeader.css +617 -0
- package/src/components/ProjectHeader.tsx +328 -0
- package/src/components/ProjectLayout.tsx +249 -0
- package/src/components/ReactCanvasControls.tsx +284 -0
- package/src/components/RootSelectionOverlay.tsx +3162 -0
- package/src/components/RootTextEditor.tsx +79 -0
- package/src/components/SaveStatus.tsx +70 -0
- package/src/components/StageHost.tsx +1954 -0
- package/src/components/StageOverlays.tsx +21 -0
- package/src/components/StartupErrorScreen.tsx +76 -0
- package/src/components/StartupLoadingScreen.tsx +65 -0
- package/src/components/StatsOverlay.tsx +78 -0
- package/src/components/SurfaceStateOverlay.tsx +24 -0
- package/src/components/ToolContributionSurfaces.tsx +65 -0
- package/src/components/ToolHost.tsx +370 -0
- package/src/components/ToolObject3DPreview.tsx +39 -0
- package/src/components/Toolbar.tsx +595 -0
- package/src/components/TransientHint.tsx +44 -0
- package/src/components/TransportStrip.tsx +174 -0
- package/src/components/VersionControlSection.tsx +470 -0
- package/src/components/VgaiLogo.css +83 -0
- package/src/components/VgaiLogo.tsx +35 -0
- package/src/components/ViewportControlsHint.tsx +60 -0
- package/src/components/ViewportFurniture.tsx +401 -0
- package/src/components/ViewportOverlay.tsx +145 -0
- package/src/components/ViewportOverlaysMenu.tsx +153 -0
- package/src/components/ViewportShadingMenu.tsx +300 -0
- package/src/components/ViewportViewMenu.tsx +101 -0
- package/src/components/WorkspaceDocumentSurface.tsx +204 -0
- package/src/components/WorkspaceUtilitySurface.tsx +22 -0
- package/src/components/WorktreeSwitcher.css +239 -0
- package/src/components/WorktreeSwitcher.tsx +890 -0
- package/src/components/account-documents.tsx +1162 -0
- package/src/components/asset-documents.tsx +812 -0
- package/src/components/asset-editor-persistence.ts +216 -0
- package/src/components/asset-selection-section.tsx +535 -0
- package/src/components/asset-thumbnails.tsx +312 -0
- package/src/components/asset-viewers/AudioViewer.tsx +201 -0
- package/src/components/asset-viewers/EntityModelDocument.tsx +122 -0
- package/src/components/asset-viewers/EnvironmentAssetDocument.tsx +440 -0
- package/src/components/asset-viewers/GenericJsonViewer.tsx +102 -0
- package/src/components/asset-viewers/ImageViewer.tsx +300 -0
- package/src/components/asset-viewers/JsonAssetDocument.tsx +93 -0
- package/src/components/asset-viewers/LiveModuleDocument.tsx +417 -0
- package/src/components/asset-viewers/LutAssetDocument.tsx +444 -0
- package/src/components/asset-viewers/ModelAssetDocument.tsx +105 -0
- package/src/components/asset-viewers/Object3DPreview.tsx +359 -0
- package/src/components/asset-viewers/OnlineAssetDetail.tsx +421 -0
- package/src/components/asset-viewers/PasteboardModuleDocument.tsx +67 -0
- package/src/components/asset-viewers/QuarksAssetDocument.tsx +526 -0
- package/src/components/asset-viewers/ShaderAssetDocument.tsx +743 -0
- package/src/components/asset-viewers/SourceAssetViewer.tsx +281 -0
- package/src/components/asset-viewers/SpritesheetSpriteView.tsx +102 -0
- package/src/components/asset-viewers/VideoViewer.tsx +101 -0
- package/src/components/asset-viewers/shader-source.ts +144 -0
- package/src/components/asset-workflow.css +731 -0
- package/src/components/board-guides.ts +150 -0
- package/src/components/compact-inspector.css +539 -0
- package/src/components/core-utilities.tsx +90 -0
- package/src/components/editor-notifications.css +40 -0
- package/src/components/engine-workspace.css +274 -0
- package/src/components/inspector-preview-section.tsx +238 -0
- package/src/components/inspector-property-grouping.ts +64 -0
- package/src/components/inspector-revert-label.ts +20 -0
- package/src/components/inspector-selection.ts +42 -0
- package/src/components/inspector-stories-gating.ts +171 -0
- package/src/components/inspector-transform-subject.ts +11 -0
- package/src/components/inspector-transform.ts +75 -0
- package/src/components/kind-documents.tsx +500 -0
- package/src/components/palette-action-publisher.tsx +140 -0
- package/src/components/primitives/DraftColorInput.tsx +74 -0
- package/src/components/product-shell.css +1829 -0
- package/src/components/project-tool-documents.tsx +410 -0
- package/src/components/scene-documents.tsx +223 -0
- package/src/components/stage-keyboard.tsx +37 -0
- package/src/components/stage-overlay-set.tsx +107 -0
- package/src/components/stage-presence-markers.ts +478 -0
- package/src/components/standard-viewport-dressing.ts +417 -0
- package/src/components/status-contributions.tsx +403 -0
- package/src/components/tool-documents.tsx +309 -0
- package/src/components/tool-schema-form.tsx +262 -0
- package/src/components/use-after-paint.ts +41 -0
- package/src/components/use-project-image-assets.ts +86 -0
- package/src/components/viewport-header-controls.css +90 -0
- package/src/components/viewport-surface-status.tsx +55 -0
- package/src/components/workspace-history.ts +32 -0
- package/src/components/workspace-static-panel-registry.tsx +152 -0
- package/src/components/workspace-surfaces.css +621 -0
- package/src/components/world-documents.tsx +586 -0
- package/src/components/world-overlay-gestures.ts +1694 -0
- package/src/composite-screenshot.ts +1641 -0
- package/src/console-sync.ts +131 -0
- package/src/constraint-helper.ts +338 -0
- package/src/content-entry-source-registry.ts +184 -0
- package/src/coverage/authoring-seam-evidence.ts +300 -0
- package/src/coverage/canvas-reveal.ts +192 -0
- package/src/coverage/design-time-surfaces.ts +101 -0
- package/src/coverage/live-seam-evidence.ts +11 -0
- package/src/coverage/ontology-invariants.ts +466 -0
- package/src/coverage/session-vitals.ts +501 -0
- package/src/coverage/system-seam-evidence.ts +72 -0
- package/src/crash-null-boundary.ts +36 -0
- package/src/creation-site-edit.ts +1479 -0
- package/src/creation-site-registry.ts +160 -0
- package/src/delegate-harness-registry.ts +143 -0
- package/src/document-context-registry.ts +177 -0
- package/src/document-open-registry.ts +200 -0
- package/src/document-preview-source.ts +20 -0
- package/src/document-renderer-session.ts +138 -0
- package/src/editor-api.ts +46 -0
- package/src/editor-chrome-capture.ts +139 -0
- package/src/editor-commands.ts +164 -0
- package/src/editor-console.ts +563 -0
- package/src/editor-current-view.ts +82 -0
- package/src/editor-document-probe.ts +881 -0
- package/src/editor-git-client.ts +115 -0
- package/src/editor-host-door.ts +462 -0
- package/src/editor-hotkeys.ts +842 -0
- package/src/editor-lease-view.ts +39 -0
- package/src/editor-lease.ts +415 -0
- package/src/editor-mode.ts +19 -0
- package/src/editor-notifications.ts +140 -0
- package/src/editor-presence.ts +563 -0
- package/src/editor-presentation-activity.ts +50 -0
- package/src/editor-presentation-notice.ts +42 -0
- package/src/editor-runtime.tsx +145 -0
- package/src/editor-server-response.ts +86 -0
- package/src/editor-session-attribution.ts +75 -0
- package/src/editor-session-mode.ts +54 -0
- package/src/editor-shell-store.ts +1304 -0
- package/src/editor-state-facets.ts +74 -0
- package/src/editor-styles.css +33 -0
- package/src/editor-view-presentation.ts +810 -0
- package/src/editor-viewport.ts +5302 -0
- package/src/entity-lod.ts +31 -0
- package/src/entity-object.ts +91 -0
- package/src/files/file-provider.ts +62 -0
- package/src/files/project-files.ts +264 -0
- package/src/finders/index.ts +136 -0
- package/src/finders/scenes-from-entrypoint-selection.ts +387 -0
- package/src/frame/bridge.tsx +1408 -0
- package/src/frame/product.ts +77 -0
- package/src/gameplay-dom-recording.ts +319 -0
- package/src/gameplay-export-state.ts +14 -0
- package/src/gameplay-replay.ts +417 -0
- package/src/gameplay-session-time.ts +9 -0
- package/src/gameplay-sessions.ts +204 -0
- package/src/harness-chat-types.ts +253 -0
- package/src/hierarchy-component-marks.ts +298 -0
- package/src/hierarchy-drop.ts +91 -0
- package/src/hierarchy-expansion-state.ts +80 -0
- package/src/hierarchy-header-slot.ts +52 -0
- package/src/hierarchy-internals.ts +197 -0
- package/src/hierarchy-kind-icon.ts +217 -0
- package/src/hierarchy-mark-reader.ts +73 -0
- package/src/hierarchy-menu-registry.ts +67 -0
- package/src/hierarchy-node-rows.ts +307 -0
- package/src/hierarchy-panel-view.ts +280 -0
- package/src/hierarchy-projection.ts +76 -0
- package/src/hierarchy-row-cache.ts +243 -0
- package/src/hierarchy-row-model.ts +308 -0
- package/src/hierarchy-rows.ts +11 -0
- package/src/hierarchy-walk.ts +86 -0
- package/src/history/editor-session.ts +25 -0
- package/src/history/history-commands.ts +147 -0
- package/src/history/history-delegate.ts +163 -0
- package/src/history/history-limit-notices.ts +43 -0
- package/src/history/history-service.ts +1173 -0
- package/src/history/persistence-coordinator.ts +35 -0
- package/src/history/project-file-history.ts +386 -0
- package/src/history/project-root-history-backends.ts +139 -0
- package/src/history/resource-registry.ts +209 -0
- package/src/history/snapshot-store.ts +103 -0
- package/src/history/source-history-backend.ts +546 -0
- package/src/history/types.ts +124 -0
- package/src/hmr-registration-group.ts +67 -0
- package/src/hmr-stable-react-context.ts +23 -0
- package/src/hotkeys.ts +188 -0
- package/src/inference-diagnostics.ts +69 -0
- package/src/initial-project.ts +80 -0
- package/src/inspection/active-subject.ts +578 -0
- package/src/inspection/active-surface.ts +142 -0
- package/src/inspection/compose.ts +1064 -0
- package/src/inspection/display.ts +170 -0
- package/src/inspection/document-subject.ts +109 -0
- package/src/inspection/game-subject.ts +85 -0
- package/src/inspection/model.ts +542 -0
- package/src/inspection/null-subject.ts +115 -0
- package/src/inspection/serialize.ts +357 -0
- package/src/inspection/use-active-inspection.ts +180 -0
- package/src/inspector-presentation.ts +201 -0
- package/src/inspector-section-registry.ts +221 -0
- package/src/instance-source-actions.ts +163 -0
- package/src/instanced-presentation.ts +164 -0
- package/src/js-heap.ts +71 -0
- package/src/key-actions.ts +91 -0
- package/src/keymap-presets.ts +401 -0
- package/src/layout-policy.ts +31 -0
- package/src/learn-links.ts +73 -0
- package/src/light-explorer-model.ts +134 -0
- package/src/live-canvas-frame.ts +55 -0
- package/src/live-document.ts +279 -0
- package/src/live-module-source.ts +230 -0
- package/src/live-session-registry.ts +220 -0
- package/src/live-transition.ts +633 -0
- package/src/manifest-project.ts +107 -0
- package/src/model-thumbnail.ts +523 -0
- package/src/native-selection-style.ts +202 -0
- package/src/object3d-document-write-policy.ts +137 -0
- package/src/packaged-runtime.ts +108 -0
- package/src/palettes/maya.palette.json +57 -0
- package/src/palettes/substance.palette.json +57 -0
- package/src/pasteboard-module.ts +81 -0
- package/src/performance-profiler.ts +367 -0
- package/src/performance-sources.ts +69 -0
- package/src/play-boot-phase.ts +145 -0
- package/src/presentation-surface.ts +248 -0
- package/src/project-adapter.ts +1143 -0
- package/src/project-asset-refresh.ts +26 -0
- package/src/project-declaration-refresh.ts +31 -0
- package/src/project-local-state.ts +118 -0
- package/src/project-manager.ts +243 -0
- package/src/project-module-changes.ts +163 -0
- package/src/project-module-split.ts +266 -0
- package/src/project-provenance.ts +115 -0
- package/src/project-ready.ts +42 -0
- package/src/project-session-reset.ts +67 -0
- package/src/project-shape.ts +68 -0
- package/src/project-tool-discovery.ts +66 -0
- package/src/project-tools.ts +107 -0
- package/src/project-work-types.ts +149 -0
- package/src/projection/three.ts +898 -0
- package/src/projection/types.ts +44 -0
- package/src/readiness.ts +113 -0
- package/src/reflection-probe-helper.ts +142 -0
- package/src/reported-play-state.ts +90 -0
- package/src/resolve-relative-specifier.ts +33 -0
- package/src/scene-document-plan.ts +315 -0
- package/src/scene-framing.ts +315 -0
- package/src/scene-live-open.ts +210 -0
- package/src/scene-view-fog.ts +89 -0
- package/src/scoped-game-css.ts +152 -0
- package/src/session-orphan-record.ts +193 -0
- package/src/session-tombstone.ts +126 -0
- package/src/settings/settings-provider.ts +82 -0
- package/src/settings-store.ts +345 -0
- package/src/shared-view-restore.ts +42 -0
- package/src/shell-store-door.ts +45 -0
- package/src/source-conflict.ts +122 -0
- package/src/spatial-handle-visuals.ts +332 -0
- package/src/stage-context.ts +341 -0
- package/src/stage-store-registry.ts +63 -0
- package/src/stale-chunk-recovery.ts +34 -0
- package/src/state-report-deferral.ts +73 -0
- package/src/storage/host-files-storage.ts +97 -0
- package/src/storage/http-storage.ts +174 -0
- package/src/storage/index.ts +75 -0
- package/src/storage/mem-storage.ts +149 -0
- package/src/storage/path-lock.ts +44 -0
- package/src/storage/paths.ts +26 -0
- package/src/storage/types.ts +116 -0
- package/src/stories/StoryComponentThumbnail.tsx +184 -0
- package/src/stories/StoryPreviewMount.tsx +306 -0
- package/src/stories/component-content-source.tsx +106 -0
- package/src/stories/component-states-source.ts +78 -0
- package/src/stories/compose-project-stories.ts +255 -0
- package/src/stories/pixi-story-model.ts +30 -0
- package/src/stories/prefabs-finder.ts +54 -0
- package/src/stories/prefabs-from-stories.ts +182 -0
- package/src/stories/project-story-discovery.ts +78 -0
- package/src/stories/project-story-regions.ts +24 -0
- package/src/stories/story-actions.ts +54 -0
- package/src/stories/story-capture-command.ts +124 -0
- package/src/stories/story-capture.ts +584 -0
- package/src/stories/story-declared-medium.ts +126 -0
- package/src/stories/story-discovery.ts +176 -0
- package/src/stories/story-document-openers.ts +36 -0
- package/src/stories/story-dom-runtime.ts +78 -0
- package/src/stories/story-grouping.ts +111 -0
- package/src/stories/story-lane.ts +88 -0
- package/src/stories/story-mount-turn.ts +27 -0
- package/src/stories/story-opener.ts +260 -0
- package/src/stories/story-pixi-preview.ts +408 -0
- package/src/stories/story-presentation.ts +215 -0
- package/src/stories/story-registry.ts +517 -0
- package/src/stories/story-three-preview.ts +807 -0
- package/src/stories/three-story-model.ts +96 -0
- package/src/story-three-preview-runtime.ts +56 -0
- package/src/surface-keyboard.ts +112 -0
- package/src/surface-state.ts +124 -0
- package/src/tab-bootstrap.js +628 -0
- package/src/tab-census.ts +198 -0
- package/src/tab-lifecycle-client.ts +196 -0
- package/src/theme-library.ts +844 -0
- package/src/theme-preference.ts +378 -0
- package/src/theme.css +3437 -0
- package/src/three-viewport/bone-selection-highlight.ts +119 -0
- package/src/three-viewport/camera-fit.ts +41 -0
- package/src/three-viewport/interactive-renderer.ts +132 -0
- package/src/three-viewport/selection-brackets.ts +310 -0
- package/src/three-viewport/selection-outline.ts +183 -0
- package/src/three-viewport/skeleton-helper.ts +61 -0
- package/src/three-viewport/source-color.ts +167 -0
- package/src/three-viewport/studio-environment.ts +96 -0
- package/src/three-viewport-presentation.ts +23 -0
- package/src/tool-contribution-play.ts +74 -0
- package/src/tool-loader.ts +1798 -0
- package/src/transform-mode-request.ts +57 -0
- package/src/transient-hint.ts +78 -0
- package/src/trigger-volume-helper.ts +116 -0
- package/src/ui-source/adapter-region-includes.ts +241 -0
- package/src/ui-source/ensure-import.ts +132 -0
- package/src/ui-source/file-region-resolver.ts +302 -0
- package/src/ui-source/inspect.ts +775 -0
- package/src/ui-source/oid-transform.ts +1845 -0
- package/src/ui-source/plan-csf-story.ts +196 -0
- package/src/ui-source/plan-extract-component.ts +421 -0
- package/src/ui-source/plan-fork-component.ts +621 -0
- package/src/ui-source/plan-named-style.ts +95 -0
- package/src/ui-source/plan-source-edit.ts +353 -0
- package/src/ui-source/r3f-contract-resolver.ts +327 -0
- package/src/ui-source/r3f-diagnostic-index.ts +165 -0
- package/src/ui-source/r3f-environment-binding.ts +133 -0
- package/src/ui-source/r3f-joint-binding.ts +251 -0
- package/src/ui-source/r3f-lod-binding.ts +91 -0
- package/src/ui-source/r3f-particle-binding.ts +235 -0
- package/src/ui-source/r3f-physics-binding.ts +483 -0
- package/src/ui-source/r3f-project-contracts.ts +444 -0
- package/src/ui-source/relative-import-specifier.ts +34 -0
- package/src/ui-source/reparent-guard.ts +544 -0
- package/src/ui-source/source-edit-request.ts +97 -0
- package/src/ui-source/source-write-backend.ts +618 -0
- package/src/ui-source/syntactic-prop-specs.ts +296 -0
- package/src/ui-source/tier-source-write-backend.ts +279 -0
- package/src/ui-source/ts-ast.ts +171 -0
- package/src/ui-source/utility-class-support.ts +169 -0
- package/src/ui-source/write-component-default.ts +133 -0
- package/src/ui-source/writer.ts +1989 -0
- package/src/viewport-activation-timings.ts +840 -0
- package/src/viewport-authoring-policy.ts +186 -0
- package/src/viewport-controls-hint.ts +57 -0
- package/src/viewport-door.ts +237 -0
- package/src/viewport-shading-boundary.ts +12 -0
- package/src/vite-error-surface.ts +141 -0
- package/src/wait-until.ts +37 -0
- package/src/workspace-areas.ts +156 -0
- package/src/workspace-aux-commands.ts +11 -0
- package/src/workspace-available-documents.ts +127 -0
- package/src/workspace-core-utilities.ts +31 -0
- package/src/workspace-document-ids.ts +59 -0
- package/src/workspace-document-registry.ts +612 -0
- package/src/workspace-document-restore.ts +145 -0
- package/src/workspace-host-commands.ts +141 -0
- package/src/workspace-persistence-gate.ts +40 -0
- package/src/workspace-play-utilities.ts +44 -0
- package/src/workspace-presets.ts +425 -0
- package/src/workspace-regions.ts +294 -0
- package/src/workspace-state-persistence.ts +536 -0
- package/src/workspace-static-panels.ts +73 -0
- package/src/workspace-status-registry.ts +121 -0
- package/src/workspace-style.ts +239 -0
- package/src/workspace-utility-commands.ts +74 -0
- package/src/workspace-utility-registry.ts +263 -0
- package/src/workspace-viewport-rect.ts +97 -0
- package/src/world-adoption.ts +115 -0
- package/src/world-document-routing.ts +104 -0
- package/vite-plugin-creation-site-write.ts +184 -0
- package/vite-plugin-creation-site.ts +80 -0
- package/vite-plugin-game-static.ts +303 -0
- package/vite-plugin-module-doorways.ts +336 -0
- package/vite-plugin-product-contributions.ts +197 -0
- package/vite-plugin-project-game-static.ts +125 -0
- package/vite-plugin-project-jsx-js.ts +65 -0
- package/vite-plugin-project-root-absolute-assets.ts +359 -0
- package/vite-plugin-shared-react.ts +420 -0
- package/vite-plugin-shared-three.ts +203 -0
- package/vite-plugin-ui-oid.ts +2106 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ACTIVE WORKSPACE'S EDITOR AREAS — the live store the dock reads, and the
|
|
3
|
+
* one place an area document is opened and closed.
|
|
4
|
+
*
|
|
5
|
+
* **A Blender editor AREA is an editor group; the drawer holds utilities**
|
|
6
|
+
* (orchestrator ruling 2026-09-19; WORK.md §Inspection parity I5). Blender's UV
|
|
7
|
+
* Editing is a side-by-side split of the centre, Shading and Animation a
|
|
8
|
+
* top/bottom split, and both the dock and the Code-OSS frame have exactly that
|
|
9
|
+
* shape in editor groups. So a workspace's second editor is a
|
|
10
|
+
* `workspace.document` contribution opened into a second group — never a
|
|
11
|
+
* drawer utility — and this module is the seam: `workspace-presets.ts`
|
|
12
|
+
* publishes the active workspace's `areas` here on every switch, and this
|
|
13
|
+
* module opens what that list names and closes what it no longer does.
|
|
14
|
+
*
|
|
15
|
+
* WHY THE OPEN LIVES HERE AND NOT IN THE DOCK. The dock is a RECONCILER: it
|
|
16
|
+
* draws whatever the document registry holds, and `reconcileWorkspace` runs on
|
|
17
|
+
* every mutation, so opening a document from inside it is a write during a
|
|
18
|
+
* read. The registry is the truth; the frame places it (`vgaiDocuments.ts`'s
|
|
19
|
+
* `reconcileAreaDocumentPanels`), and under the frame the layout host places
|
|
20
|
+
* the same registry entry in a VS Code editor group instead. One list, two
|
|
21
|
+
* hosts — the shape every U8 seam takes.
|
|
22
|
+
*
|
|
23
|
+
* WHY IT IS A MODULE AND NOT A REACT EFFECT. A workspace switch arrives from
|
|
24
|
+
* four places (the menu, a registered action, `editor.workspace(id)`, the
|
|
25
|
+
* per-project restore at boot) and three of them have no component mounted to
|
|
26
|
+
* run an effect. `setWorkspaceAreas` is called by the same function that
|
|
27
|
+
* publishes the regions, so the two halves of "apply this workspace" cannot
|
|
28
|
+
* drift apart.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
import type { WorkspaceAreaContribution } from '@volter/editor-sdk/layout-arrangements';
|
|
32
|
+
import { openToolDocument, toolDocumentId } from './components/tool-documents';
|
|
33
|
+
import { subscribeToolContributions } from './tool-loader';
|
|
34
|
+
import { closeWorkspaceDocument, openWorkspaceDocuments } from './workspace-document-registry';
|
|
35
|
+
|
|
36
|
+
let _areas: readonly WorkspaceAreaContribution[] = [];
|
|
37
|
+
let _version = 0;
|
|
38
|
+
const _listeners = new Set<() => void>();
|
|
39
|
+
|
|
40
|
+
/** The active workspace's areas, in declaration order. */
|
|
41
|
+
export function activeWorkspaceAreas(): readonly WorkspaceAreaContribution[] {
|
|
42
|
+
return _areas;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Monotonic counter behind {@link subscribeWorkspaceAreas}. */
|
|
46
|
+
export function workspaceAreasVersion(): number {
|
|
47
|
+
return _version;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function subscribeWorkspaceAreas(listener: () => void): () => void {
|
|
51
|
+
_listeners.add(listener);
|
|
52
|
+
return () => _listeners.delete(listener);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** The area one open document fills, or `null` — the dock's lookup. */
|
|
56
|
+
export function workspaceAreaFor(documentId: string): WorkspaceAreaContribution | null {
|
|
57
|
+
return _areas.find((area) => toolDocumentId(area.document) === documentId) ?? null;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* THE WHOLE OPEN PASS LEAVES THE MODULE EVALUATION, and this is the second and
|
|
62
|
+
* correct form of a fix the first attempt got half right.
|
|
63
|
+
*
|
|
64
|
+
* MEASURED TWICE, live, on a fresh `--template models` scaffold:
|
|
65
|
+
* 1. `subscribeToolContributions(...)` at this file's top level →
|
|
66
|
+
* "editor app failed to start: ReferenceError: Cannot access 'listeners'
|
|
67
|
+
* before initialization at subscribeToolContributions
|
|
68
|
+
* (tool-loader.ts:372) at workspace-areas.ts:41", x3. The WHOLE editor
|
|
69
|
+
* down, not a degraded panel.
|
|
70
|
+
* 2. The same subscription moved to the first `setWorkspaceAreas` call →
|
|
71
|
+
* the SAME error, one frame deeper: `... at ensureSubscribedToContributions
|
|
72
|
+
* ... at setWorkspaceAreas ... at publishWorkspaceRegions
|
|
73
|
+
* (workspace-presets.ts:119) at workspace-presets.ts:164`.
|
|
74
|
+
*
|
|
75
|
+
* The second reading is the one that names the real shape:
|
|
76
|
+
* `workspace-presets.ts` calls `publishWorkspaceRegions()` AT MODULE SCOPE
|
|
77
|
+
* (line 389 in source), so "the first publish" IS during module evaluation —
|
|
78
|
+
* deferring to it deferred nothing. And this module is in one import cycle
|
|
79
|
+
* with `tool-loader` (`workspace-areas` -> `components/tool-documents` ->
|
|
80
|
+
* `tool-loader`), so every binding over there is still in its temporal dead
|
|
81
|
+
* zone at that moment. `subscribeToolContributions` was merely the first of
|
|
82
|
+
* this module's reaches into it; `openToolDocument` is the other, and it
|
|
83
|
+
* would have thrown next.
|
|
84
|
+
*
|
|
85
|
+
* So the pass is queued as a MICROTASK. ES module evaluation is synchronous
|
|
86
|
+
* end to end, so a microtask queued during it runs after the last module has
|
|
87
|
+
* finished — every binding initialized, no ordering to reason about. The
|
|
88
|
+
* publish itself stays synchronous: `_areas`, the version and the listeners
|
|
89
|
+
* are this module's own state and nothing else's, and the dock must see the
|
|
90
|
+
* new list on the same tick the workspace changed.
|
|
91
|
+
*/
|
|
92
|
+
let subscribed = false;
|
|
93
|
+
let pendingPass = false;
|
|
94
|
+
|
|
95
|
+
function runOpenPass(): void {
|
|
96
|
+
pendingPass = false;
|
|
97
|
+
if (!subscribed) {
|
|
98
|
+
subscribed = true;
|
|
99
|
+
// THE CONTRIBUTIONS ARRIVE AFTER THE WORKSPACE, EVERY TIME. A project's
|
|
100
|
+
// packages import asynchronously, so the workspace restored at boot
|
|
101
|
+
// publishes its `areas` while `blender-uv-editor.document` is still
|
|
102
|
+
// loading and `openToolDocument` truthfully opens nothing. Contributions
|
|
103
|
+
// changing is the other half of the same event — including a SAVE, which
|
|
104
|
+
// re-evaluates the module and must re-open the document against the fresh
|
|
105
|
+
// component.
|
|
106
|
+
subscribeToolContributions(scheduleOpenPass);
|
|
107
|
+
}
|
|
108
|
+
const areas = _areas;
|
|
109
|
+
const wanted = new Set(areas.map((area) => toolDocumentId(area.document)));
|
|
110
|
+
// CLOSING IS BY AREA, NOT BY ID SET DIFFERENCE. A document that is open and
|
|
111
|
+
// carries an `area` but is not in the new list is this module's to close,
|
|
112
|
+
// and nothing else in the editor opens one — so the sweep reads the registry
|
|
113
|
+
// rather than remembering what it opened, which is what survives a reload
|
|
114
|
+
// that rebuilt the registry underneath.
|
|
115
|
+
for (const open of openWorkspaceDocuments()) {
|
|
116
|
+
if (!open.descriptor.area) continue;
|
|
117
|
+
if (wanted.has(open.descriptor.id)) continue;
|
|
118
|
+
closeWorkspaceDocument(open.descriptor.id);
|
|
119
|
+
}
|
|
120
|
+
for (const area of areas) {
|
|
121
|
+
// `openToolDocument` is self-verifying: a contribution that has not loaded
|
|
122
|
+
// yet opens nothing and answers false, and the subscription above runs
|
|
123
|
+
// this pass again when it arrives. No queue, no retry timer.
|
|
124
|
+
openToolDocument(null, area.document, { activate: false }, area.id);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function scheduleOpenPass(): void {
|
|
129
|
+
if (pendingPass) return;
|
|
130
|
+
pendingPass = true;
|
|
131
|
+
queueMicrotask(runOpenPass);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function areasKey(areas: readonly WorkspaceAreaContribution[]): string {
|
|
135
|
+
return areas.map((area) => `${area.id}|${area.document}|${area.place}|${area.ratio}`).join(' ');
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Publish the active workspace's areas (`workspace-presets.ts`), opening the
|
|
140
|
+
* documents it names and closing the ones the previous workspace had.
|
|
141
|
+
*/
|
|
142
|
+
export function setWorkspaceAreas(areas: readonly WorkspaceAreaContribution[]): void {
|
|
143
|
+
const changed = areasKey(areas) !== areasKey(_areas);
|
|
144
|
+
_areas = areas;
|
|
145
|
+
scheduleOpenPass();
|
|
146
|
+
if (!changed) return;
|
|
147
|
+
_version += 1;
|
|
148
|
+
for (const listener of _listeners) listener();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/** Re-run the open pass without changing the list — the door for "the
|
|
152
|
+
* contributions finished loading", which is when a workspace applied at boot
|
|
153
|
+
* can finally find the document it named. */
|
|
154
|
+
export function reopenWorkspaceAreas(): void {
|
|
155
|
+
scheduleOpenPass();
|
|
156
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { showWorkspaceAuxiliary } from './workspace-host-commands';
|
|
2
|
+
|
|
3
|
+
export function openUndoHistory(): void {
|
|
4
|
+
showWorkspaceAuxiliary('undo-history');
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function installAuxiliaryEvents(): () => void {
|
|
8
|
+
const onShowHistory = () => openUndoHistory();
|
|
9
|
+
window.addEventListener('editor:show-history-tab', onShowHistory);
|
|
10
|
+
return () => window.removeEventListener('editor:show-history-tab', onShowHistory);
|
|
11
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** Discoverable documents are independent of open tabs. Closing a tab keeps its
|
|
2
|
+
* project-owned descriptor available to Content and to session restoration. */
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
closeWorkspaceDocument,
|
|
6
|
+
openWorkspaceDocument,
|
|
7
|
+
WORKSPACE_DOCUMENT_KINDS,
|
|
8
|
+
type WorkspaceDocumentDescriptor,
|
|
9
|
+
} from './workspace-document-registry';
|
|
10
|
+
import { registerWorkspaceDocumentRestorer } from './workspace-document-restore';
|
|
11
|
+
|
|
12
|
+
export interface AvailableWorkspaceDocument {
|
|
13
|
+
readonly descriptor: WorkspaceDocumentDescriptor;
|
|
14
|
+
readonly category: string;
|
|
15
|
+
/** Set only when this is the root's own document, never an isolated scene. */
|
|
16
|
+
readonly rootId?: string | undefined;
|
|
17
|
+
readonly default: boolean;
|
|
18
|
+
}
|
|
19
|
+
let documents: readonly AvailableWorkspaceDocument[] = [];
|
|
20
|
+
const listeners = new Set<() => void>();
|
|
21
|
+
const pending = new Map<string, boolean>();
|
|
22
|
+
let sessionStarted = false;
|
|
23
|
+
let hasDocumentsRestoring = false;
|
|
24
|
+
let defaultOpened = false;
|
|
25
|
+
export function requestAvailableWorkspaceDocument(id: string, active = true): void {
|
|
26
|
+
pending.set(id, active);
|
|
27
|
+
restoreAvailableDocuments();
|
|
28
|
+
}
|
|
29
|
+
const notify = () => {
|
|
30
|
+
for (const listener of listeners) listener();
|
|
31
|
+
};
|
|
32
|
+
export const availableWorkspaceDocuments = () => documents;
|
|
33
|
+
export function subscribeAvailableWorkspaceDocuments(listener: () => void): () => void {
|
|
34
|
+
listeners.add(listener);
|
|
35
|
+
return () => {
|
|
36
|
+
listeners.delete(listener);
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function openAvailableWorkspaceDocument(id: string, activate = true): boolean {
|
|
41
|
+
const entry = documents.find((item) => item.descriptor.id === id);
|
|
42
|
+
if (!entry) return false;
|
|
43
|
+
openWorkspaceDocument(
|
|
44
|
+
{ ...entry.descriptor, closeable: true, persist: () => ({ availableDocumentId: id }) },
|
|
45
|
+
{ activate },
|
|
46
|
+
);
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function restoreAvailableDocuments(): void {
|
|
51
|
+
for (const [id, active] of pending) {
|
|
52
|
+
if (openAvailableWorkspaceDocument(id, active)) pending.delete(id);
|
|
53
|
+
}
|
|
54
|
+
if (sessionStarted && !hasDocumentsRestoring && !defaultOpened) {
|
|
55
|
+
const entry = documents.find((item) => item.default);
|
|
56
|
+
if (entry) {
|
|
57
|
+
defaultOpened = true;
|
|
58
|
+
openAvailableWorkspaceDocument(entry.descriptor.id);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function registerAvailableWorkspaceDocument(
|
|
64
|
+
descriptor: WorkspaceDocumentDescriptor,
|
|
65
|
+
options: { category: string; default?: boolean; rootId?: string | undefined },
|
|
66
|
+
): string {
|
|
67
|
+
const previous = documents.find((item) => item.descriptor.id === descriptor.id);
|
|
68
|
+
if (
|
|
69
|
+
previous?.descriptor.Content === descriptor.Content &&
|
|
70
|
+
previous?.descriptor.title === descriptor.title &&
|
|
71
|
+
previous.descriptor.provenance?.sourcePath === descriptor.provenance?.sourcePath &&
|
|
72
|
+
previous.descriptor.provenance?.rootId === descriptor.provenance?.rootId &&
|
|
73
|
+
previous.descriptor.Toolbar === descriptor.Toolbar &&
|
|
74
|
+
previous.descriptor.Shelf === descriptor.Shelf &&
|
|
75
|
+
previous.descriptor.preview === descriptor.preview &&
|
|
76
|
+
previous.default === (options.default ?? false) &&
|
|
77
|
+
previous.category === options.category &&
|
|
78
|
+
previous.rootId === options.rootId
|
|
79
|
+
)
|
|
80
|
+
return descriptor.id;
|
|
81
|
+
const entry = {
|
|
82
|
+
descriptor,
|
|
83
|
+
category: options.category,
|
|
84
|
+
default: options.default ?? false,
|
|
85
|
+
rootId: options.rootId,
|
|
86
|
+
};
|
|
87
|
+
documents = previous
|
|
88
|
+
? documents.map((item) => (item.descriptor.id === descriptor.id ? entry : item))
|
|
89
|
+
: [...documents, entry];
|
|
90
|
+
notify();
|
|
91
|
+
restoreAvailableDocuments();
|
|
92
|
+
return descriptor.id;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function unregisterAvailableWorkspaceDocument(id: string): void {
|
|
96
|
+
if (!documents.some((item) => item.descriptor.id === id)) return;
|
|
97
|
+
documents = documents.filter((item) => item.descriptor.id !== id);
|
|
98
|
+
closeWorkspaceDocument(id, { discardDirty: true });
|
|
99
|
+
notify();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
for (const kind of WORKSPACE_DOCUMENT_KINDS) {
|
|
103
|
+
registerWorkspaceDocumentRestorer({
|
|
104
|
+
kind,
|
|
105
|
+
owner: 'workspace-available-documents',
|
|
106
|
+
restore: ({ state, active }) => {
|
|
107
|
+
const id = (state as { availableDocumentId?: unknown } | null)?.availableDocumentId;
|
|
108
|
+
if (typeof id !== 'string') return false;
|
|
109
|
+
pending.set(id, active);
|
|
110
|
+
restoreAvailableDocuments();
|
|
111
|
+
return true;
|
|
112
|
+
},
|
|
113
|
+
beginRestore: ({ hasDocumentsToRestore }) => {
|
|
114
|
+
sessionStarted = true;
|
|
115
|
+
hasDocumentsRestoring = hasDocumentsToRestore;
|
|
116
|
+
restoreAvailableDocuments();
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
export function resetAvailableWorkspaceDocuments(): void {
|
|
121
|
+
documents = [];
|
|
122
|
+
pending.clear();
|
|
123
|
+
sessionStarted = false;
|
|
124
|
+
hasDocumentsRestoring = false;
|
|
125
|
+
defaultOpened = false;
|
|
126
|
+
notify();
|
|
127
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** The identity inventory of the HOST's own utility tabs — the ones
|
|
2
|
+
* `components/core-utilities.tsx` registers. */
|
|
3
|
+
export const CORE_WORKSPACE_UTILITIES = {
|
|
4
|
+
console: { id: 'console', title: 'Console' },
|
|
5
|
+
lightExplorer: { id: 'light-explorer', title: 'Light Explorer' },
|
|
6
|
+
} as const;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Utility tabs a PACKAGE registers, whose ids the host still declares.
|
|
10
|
+
*
|
|
11
|
+
* A tab id keys persisted dock state and is part of the shareable view address
|
|
12
|
+
* space (`EDITOR_VIEW_BUILT_IN_UTILITY_IDS` in `@volter/editor-sdk`, which this
|
|
13
|
+
* list must equal), so the address is the host's even when the surface is not:
|
|
14
|
+
* the package imports its row from here rather than spelling the id twice.
|
|
15
|
+
* `@vgai/game` registers all four — the story trio through
|
|
16
|
+
* `story-documents.service.ts`, Generations through `generation.service.ts`.
|
|
17
|
+
* Build Output is NOT here: it is a `workspace.utility` CONTRIBUTION, so the
|
|
18
|
+
* loader namespaces its id as `tool:build-output.utility` and no host
|
|
19
|
+
* declaration exists.
|
|
20
|
+
*/
|
|
21
|
+
export const CONTRIBUTED_WORKSPACE_UTILITIES = {
|
|
22
|
+
storyActions: { id: 'story-actions', title: 'Actions' },
|
|
23
|
+
storyInteractions: { id: 'story-interactions', title: 'Interactions' },
|
|
24
|
+
storyAccessibility: { id: 'story-accessibility', title: 'Accessibility' },
|
|
25
|
+
generations: { id: 'generations', title: 'Generations' },
|
|
26
|
+
} as const;
|
|
27
|
+
|
|
28
|
+
export const BUILT_IN_WORKSPACE_UTILITIES = [
|
|
29
|
+
...Object.values(CORE_WORKSPACE_UTILITIES),
|
|
30
|
+
...Object.values(CONTRIBUTED_WORKSPACE_UTILITIES),
|
|
31
|
+
] as const;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Stable ids for the editor-owned PINNED center documents. Kept outside their
|
|
2
|
+
* React implementations so root-document routing and the center tab-strip
|
|
3
|
+
* order contract can name them without
|
|
4
|
+
* importing the stage host or the three board. */
|
|
5
|
+
export const GAME_DOCUMENT_ID = 'workspace:game';
|
|
6
|
+
export const SCENE_DOCUMENT_ID = 'workspace:scene';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* THE canvas root's Scene document.
|
|
10
|
+
*
|
|
11
|
+
* A three project's `Scene` is the one stage host showing the world root — the editor's own WebGL
|
|
12
|
+
* viewport, which a canvas world has no use for (it draws through its own Pixi
|
|
13
|
+
* renderer). So a canvas project's scene is a document of its own, presenting
|
|
14
|
+
* the native display tree through an independent world-space editor camera.
|
|
15
|
+
* It takes the same `Scene` TITLE and the same slot in the pinned strip,
|
|
16
|
+
* because to the author it is the same thing: the game's world composition.
|
|
17
|
+
*
|
|
18
|
+
* Separate ID rather than a second Content behind {@link SCENE_DOCUMENT_ID}
|
|
19
|
+
* because `CenterDocuments.syncCenterDocuments` owns that id's whole lifetime
|
|
20
|
+
* and CLOSES it on every store notify for a project with no three root — two
|
|
21
|
+
* owners for one id is a fight, not a design.
|
|
22
|
+
*/
|
|
23
|
+
export const CANVAS_SCENE_DOCUMENT_ID = 'workspace:canvas-scene';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* THE project's 3D board — the three-side design document. The board is a
|
|
27
|
+
* project-wide singleton: one generated view of one registry, under a stable
|
|
28
|
+
* project-level id, so a persisted layout never strands the panel when a root
|
|
29
|
+
* or file is renamed.
|
|
30
|
+
*/
|
|
31
|
+
export const THREE_COMPONENTS_DOCUMENT_ID = 'workspace:3d-components';
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* THE project's 2D board — the canvas-side design document, and the exact
|
|
35
|
+
* counterpart of {@link THREE_COMPONENTS_DOCUMENT_ID} on the Pixi surface.
|
|
36
|
+
*/
|
|
37
|
+
export const CANVAS_COMPONENTS_DOCUMENT_ID = 'workspace:2d-components';
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* THE project's UI board — one document per PROJECT, not one per root, and the
|
|
41
|
+
* exact counterpart of {@link THREE_COMPONENTS_DOCUMENT_ID} on the dom side.
|
|
42
|
+
*/
|
|
43
|
+
export const UI_COMPONENTS_DOCUMENT_ID = 'workspace:ui-components';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The pinned documents whose registration is ASYNC — a project's own
|
|
47
|
+
* authoring bootstrap opens them, after the workspace restore has already
|
|
48
|
+
* asked for the stored active tab. Restoring one as the active document
|
|
49
|
+
* therefore REMEMBERS the request until that stable descriptor opens
|
|
50
|
+
* (`restorePinnedWorkspaceDocumentActivation`), which arbitrary ids may not
|
|
51
|
+
* do: a persisted tool/asset id that never reopens would otherwise become
|
|
52
|
+
* latent state that steals activation from a standing tab much later.
|
|
53
|
+
*/
|
|
54
|
+
export const PINNED_ASYNC_DOCUMENT_IDS: ReadonlySet<string> = new Set([
|
|
55
|
+
CANVAS_SCENE_DOCUMENT_ID,
|
|
56
|
+
CANVAS_COMPONENTS_DOCUMENT_ID,
|
|
57
|
+
THREE_COMPONENTS_DOCUMENT_ID,
|
|
58
|
+
UI_COMPONENTS_DOCUMENT_ID,
|
|
59
|
+
]);
|