@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,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE sentence the inspector's revert arrow says, as a pure function of the
|
|
3
|
+
* descriptor.
|
|
4
|
+
*
|
|
5
|
+
* Extracted rather than inlined in `Inspector.tsx` because the rule it encodes
|
|
6
|
+
* is a product contract worth a test — the arrow NAMES its destination when the
|
|
7
|
+
* adapter knows it (`Revert speed to 1.55`) and admits it doesn't when it
|
|
8
|
+
* doesn't (`Revert speed to default`) — while mounting the whole Inspector panel
|
|
9
|
+
* to assert a tooltip would be exactly the brittle DOM transcript the
|
|
10
|
+
* test-proportionality rule bans.
|
|
11
|
+
*
|
|
12
|
+
* One string serves both the accessible name and the tooltip: two phrasings of
|
|
13
|
+
* the same action is the "three paraphrases" failure this design explicitly
|
|
14
|
+
* legislates against (doctrine rule 2).
|
|
15
|
+
*/
|
|
16
|
+
export function revertActionLabel(property: { label: string; revertsTo?: string }): string {
|
|
17
|
+
return property.revertsTo === undefined
|
|
18
|
+
? `Revert ${property.label} to default`
|
|
19
|
+
: `Revert ${property.label} to ${property.revertsTo}`;
|
|
20
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { AuthoringAdapter } from '@volter/editor-project/adapter';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The inspection SUBJECT id — the selection resolution minus the adapter's
|
|
5
|
+
* own boot state, and the ONE resolution `Inspector.tsx`,
|
|
6
|
+
* `CompactInspectorCard.tsx` and the workspace host's availability gate all
|
|
7
|
+
* read; two of these disagreeing is exactly how the editor booted with an
|
|
8
|
+
* inspector the dock refused to mount (measured live, 2026-08-06).
|
|
9
|
+
*
|
|
10
|
+
* Explicit document contexts (model/source editors) remain sovereign, then
|
|
11
|
+
* the shared EditorShellStore is the most recent user selection, then the
|
|
12
|
+
* adapter's own selection — EXCEPT that an adapter which volunteers its
|
|
13
|
+
* single hierarchy ROOT before the user has selected anything (the R3F world
|
|
14
|
+
* binding does, so gizmo/hierarchy state has somewhere to live) is not
|
|
15
|
+
* naming a subject: the root IS the document, and the document's inspector
|
|
16
|
+
* representation is the surface's NO-SELECTION subject
|
|
17
|
+
* (`inspection/null-subject.ts` — the same reading the dom provider applies
|
|
18
|
+
* when it titles its empty state after its one root). A sovereign document
|
|
19
|
+
* selection of the root and any user selection remain real subjects.
|
|
20
|
+
*
|
|
21
|
+
* "MOST RECENT" IS THE LAST ENTRY, and this read the FIRST until 2026-09-18.
|
|
22
|
+
* The store's selection is an insertion-ordered `Set`, so `[0]` is the OLDEST
|
|
23
|
+
* id in a multi-selection while the store's own `selectedEntityId` — what the
|
|
24
|
+
* transform gizmo binds to — is `[...selection].at(-1)`. The two disagreed:
|
|
25
|
+
* click A, ctrl-click B, and the gizmo moved to B while the inspector kept
|
|
26
|
+
* showing A, with nothing on screen explaining either. One id now, which is
|
|
27
|
+
* also what lets the Outliner mark its active row (`GameHierarchy.tsx`'s
|
|
28
|
+
* `selectionAnchorId`). A single selection is a set of one and is unaffected.
|
|
29
|
+
*/
|
|
30
|
+
export function resolveInspectionSubjectId(
|
|
31
|
+
documentSelection: { readonly nodeId: string | null } | null,
|
|
32
|
+
storeSelection: ReadonlySet<string>,
|
|
33
|
+
adapter: AuthoringAdapter,
|
|
34
|
+
): string | null {
|
|
35
|
+
if (documentSelection) return documentSelection.nodeId;
|
|
36
|
+
const stored = [...storeSelection].at(-1);
|
|
37
|
+
if (stored) return stored;
|
|
38
|
+
const volunteered = adapter.selection?.get().at(-1) ?? null;
|
|
39
|
+
if (volunteered === null) return null;
|
|
40
|
+
const roots = adapter.hierarchy.roots();
|
|
41
|
+
return roots.length === 1 && roots[0]?.id === volunteered ? null : volunteered;
|
|
42
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the composed subject gets a STORIES section, and with what.
|
|
3
|
+
*
|
|
4
|
+
* This is an adapter-TOPOLOGY question — which child adapter owns this row —
|
|
5
|
+
* answered through the composite's public T0 queries, never by decoding an
|
|
6
|
+
* adapter-minted id. That is why it stays out of `inspection/compose.ts`: the
|
|
7
|
+
* composer takes the answer (`ComposeStoriesInput`) and composes it; working
|
|
8
|
+
* the answer out means knowing the shape of the live adapter tree.
|
|
9
|
+
*
|
|
10
|
+
* It lives in its own module because BOTH projections of the subject need the
|
|
11
|
+
* same answer: `components/Inspector.tsx` (the column and the card) and
|
|
12
|
+
* `inspection/active-subject.ts` (the serialized one, W4). Two copies of this
|
|
13
|
+
* gating would be two different Stories sections.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { AuthoringAdapter, EditorNode, StoriesProvider } from '@volter/editor-project/adapter';
|
|
17
|
+
import { CompositeAuthoringAdapter } from '../authoring/composite-authoring-adapter';
|
|
18
|
+
import { governingAdapterForNode } from '../authoring/provenance';
|
|
19
|
+
import { WORLD_SCOPE_NODE_ID } from '../authoring/stories-scope';
|
|
20
|
+
import { recordAuthoringConsumerUse } from '../coverage/authoring-seam-evidence';
|
|
21
|
+
import type { ComposeStoriesInput } from '../inspection/compose';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* D4 (B2) — the CHILD adapter owning `nodeId`'s synthetic world-group row
|
|
25
|
+
* (`world:<id>`, `CompositeAuthoringAdapter`'s own manufactured node), or
|
|
26
|
+
* `null` when `adapter` isn't a composite or `nodeId` isn't one of its group
|
|
27
|
+
* nodes. Mirrors `GameHierarchy.tsx`'s (unexported) `compositeGroupBadge` —
|
|
28
|
+
* same "ask the public T0 query (`childAdapters()`/`groupNodeId()`), never
|
|
29
|
+
* decode the reserved id yourself" discipline.
|
|
30
|
+
*
|
|
31
|
+
* Used ONLY to gate the Stories section: a world-group row whose owning child
|
|
32
|
+
* adapter itself advertises `stories` (a live react world) gets the section
|
|
33
|
+
* (dropdown or "no stories" disclosure); any other row (an ordinary entity,
|
|
34
|
+
* or a world-group row for a kind that never sets `stories` — three/pixi/an
|
|
35
|
+
* un-upgraded Boundary placeholder) gets none.
|
|
36
|
+
*/
|
|
37
|
+
export function worldGroupChildAdapter(
|
|
38
|
+
adapter: AuthoringAdapter,
|
|
39
|
+
nodeId: string,
|
|
40
|
+
): AuthoringAdapter | null {
|
|
41
|
+
if (!(adapter instanceof CompositeAuthoringAdapter)) return null;
|
|
42
|
+
for (const child of adapter.childAdapters()) {
|
|
43
|
+
if (adapter.groupNodeId(child.worldId) === nodeId) return child.adapter;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The composer's Stories input for this selection, or `null` when the
|
|
50
|
+
* selection has no stories concept at all.
|
|
51
|
+
*
|
|
52
|
+
* WITHIN a gated section the dropdown is fed by `storiesFor(id)` — NEVER by
|
|
53
|
+
* `adapter.stories` truthiness alone, since the composite's OWN `stories`
|
|
54
|
+
* pass-through is always present regardless of what (if anything) the routed
|
|
55
|
+
* child actually offers.
|
|
56
|
+
*
|
|
57
|
+
* Any node whose governing adapter publishes `stories` gets the section. This
|
|
58
|
+
* includes React world/component rows and source-backed Three component nodes;
|
|
59
|
+
* the shell does not infer a renderer from the node kind.
|
|
60
|
+
*/
|
|
61
|
+
/**
|
|
62
|
+
* The WORLD-LEVEL stories input with NOTHING selected, or `null` when the
|
|
63
|
+
* active adapter has no world-level stories to offer.
|
|
64
|
+
*
|
|
65
|
+
* A world-level provider (`storiesFor`/`active` ignore the node id — the react
|
|
66
|
+
* adapter's B2 scope, and every contract-scenes projection) answers for the
|
|
67
|
+
* whole world, so it is presentable on a world-scoped subject like the ingest
|
|
68
|
+
* coverage card. Gated on `storiesFor(WORLD_SCOPE_NODE_ID)` returning rows — never on
|
|
69
|
+
* `adapter.stories` truthiness (a composite's pass-through is always present)
|
|
70
|
+
* — so a per-node provider, which answers nothing for the empty id, shows
|
|
71
|
+
* nothing here.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveWorldStoriesInput(adapter: AuthoringAdapter): ComposeStoriesInput | null {
|
|
74
|
+
const provider = adapter.stories;
|
|
75
|
+
if (!provider) return null;
|
|
76
|
+
const stories = provider.storiesFor(WORLD_SCOPE_NODE_ID);
|
|
77
|
+
if (stories.length === 0) return null;
|
|
78
|
+
return {
|
|
79
|
+
stories,
|
|
80
|
+
activeStoryId: provider.active(WORLD_SCOPE_NODE_ID) ?? '',
|
|
81
|
+
onApplyStory: (storyId) =>
|
|
82
|
+
recordAuthoringConsumerUse({
|
|
83
|
+
adapter,
|
|
84
|
+
seam: 'editor.stories.apply',
|
|
85
|
+
stage: 'effect',
|
|
86
|
+
detail: `the Inspector applied world story ${storyId}`,
|
|
87
|
+
run: () => provider.apply(WORLD_SCOPE_NODE_ID, storyId),
|
|
88
|
+
}),
|
|
89
|
+
isolation: null,
|
|
90
|
+
...(provider.title === undefined ? {} : { title: provider.title }),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* The stories provider scoped to `nodeId` ITSELF, or `null` when the adapter
|
|
96
|
+
* governing that node publishes a WORLD-LEVEL provider (or none at all).
|
|
97
|
+
*
|
|
98
|
+
* The exact complement of {@link resolveWorldStoriesInput}, on the same
|
|
99
|
+
* {@link WORLD_SCOPE_NODE_ID} probe: a component-scoped provider (the binding
|
|
100
|
+
* `component-states-registry.ts` hands an adapter) has no component for the
|
|
101
|
+
* empty id and answers `[]`; contract scenes and the react adapter's B2 provider answer
|
|
102
|
+
* their whole list.
|
|
103
|
+
*
|
|
104
|
+
* The GOVERNING adapter is probed, never the active one: a composite's
|
|
105
|
+
* `stories` pass-through routes by node ownership, so it answers `[]` for the
|
|
106
|
+
* empty id whatever the owning child's scope is — probing the pass-through
|
|
107
|
+
* would read every ingested game's scenes as node-scoped.
|
|
108
|
+
*
|
|
109
|
+
* A node-scoped affordance must route through here rather than reading
|
|
110
|
+
* `adapter.stories` directly. On an ingest root that provider IS the game's own
|
|
111
|
+
* scenes, so `apply` navigates the WHOLE GAME — a per-node button wired to it
|
|
112
|
+
* is not the node's story, it is a screen change wearing the node's label.
|
|
113
|
+
*/
|
|
114
|
+
export function resolveNodeScopedStories(
|
|
115
|
+
adapter: AuthoringAdapter,
|
|
116
|
+
nodeId: string,
|
|
117
|
+
): StoriesProvider | null {
|
|
118
|
+
const provider = governingAdapterForNode(adapter, nodeId)?.stories;
|
|
119
|
+
if (!provider) return null;
|
|
120
|
+
return provider.storiesFor(WORLD_SCOPE_NODE_ID).length > 0 ? null : provider;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function resolveComposeStoriesInput(
|
|
124
|
+
adapter: AuthoringAdapter,
|
|
125
|
+
node: EditorNode | null,
|
|
126
|
+
nodeId: string | null,
|
|
127
|
+
): ComposeStoriesInput | null {
|
|
128
|
+
if (!nodeId) return null;
|
|
129
|
+
const isCatalogNode = node?.kind === 'component';
|
|
130
|
+
const storiesOwner = governingAdapterForNode(adapter, nodeId);
|
|
131
|
+
if (!storiesOwner?.stories) return null;
|
|
132
|
+
const isWorldGroup = worldGroupChildAdapter(adapter, nodeId) !== null;
|
|
133
|
+
// A world-level provider (ingest screens, a react world's CSF states)
|
|
134
|
+
// answers for the whole world. Putting it on an ordinary node makes
|
|
135
|
+
// `apply` navigate the game / swap the world while wearing the node's
|
|
136
|
+
// label. World-group and catalog rows are the only subjects that own
|
|
137
|
+
// that scope.
|
|
138
|
+
if (
|
|
139
|
+
!isWorldGroup &&
|
|
140
|
+
!isCatalogNode &&
|
|
141
|
+
storiesOwner.stories.storiesFor(WORLD_SCOPE_NODE_ID).length > 0
|
|
142
|
+
) {
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
const stories = adapter.stories?.storiesFor(nodeId) ?? [];
|
|
146
|
+
// `StoriesProvider.storiesFor` owns per-node applicability. Preserve the
|
|
147
|
+
// established world/catalog disclosure even when empty, but do not put an
|
|
148
|
+
// empty Stories section on every native child merely because its adapter
|
|
149
|
+
// can answer for component nodes elsewhere in the same world.
|
|
150
|
+
if (stories.length === 0 && !isWorldGroup && !isCatalogNode) return null;
|
|
151
|
+
return {
|
|
152
|
+
stories,
|
|
153
|
+
activeStoryId: adapter.stories?.active(nodeId) ?? '',
|
|
154
|
+
onApplyStory: (storyId) => {
|
|
155
|
+
const provider = adapter.stories;
|
|
156
|
+
if (!provider) return;
|
|
157
|
+
recordAuthoringConsumerUse({
|
|
158
|
+
adapter: storiesOwner,
|
|
159
|
+
seam: 'editor.stories.apply',
|
|
160
|
+
stage: 'effect',
|
|
161
|
+
detail: `the Inspector applied story ${storyId} to ${nodeId}`,
|
|
162
|
+
run: () => provider.apply(nodeId, storyId),
|
|
163
|
+
});
|
|
164
|
+
},
|
|
165
|
+
isolation: null,
|
|
166
|
+
// Asked of the OWNING adapter, not the composite: the composite routes by
|
|
167
|
+
// node and has no node-free answer, and the reason belongs to whichever
|
|
168
|
+
// provider would have produced the list.
|
|
169
|
+
unavailableReason: storiesOwner.stories.unavailable?.() ?? null,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AuthoringAdapter } from '@volter/editor-project/adapter';
|
|
2
|
+
|
|
3
|
+
/** Resolve whether a selected node owns a transform and which vocabulary to show. */
|
|
4
|
+
export function transformDimensionsFor(adapter: AuthoringAdapter, id: string): '2d' | '3d' | null {
|
|
5
|
+
if (!adapter.transforms) return null;
|
|
6
|
+
const declared = adapter.transforms.dimensions?.(id);
|
|
7
|
+
if (declared !== undefined) return declared;
|
|
8
|
+
return adapter.hierarchy.object3D === undefined || adapter.hierarchy.object3D(id) !== null
|
|
9
|
+
? '3d'
|
|
10
|
+
: null;
|
|
11
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { Transform } from '@volter/editor-project/adapter';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
|
|
4
|
+
export type TransformAxis = 0 | 1 | 2;
|
|
5
|
+
|
|
6
|
+
/** Present Three.js quaternion rotations as the degree-based XYZ fields editors expect. */
|
|
7
|
+
export function rotationDegrees(rotation: Transform['rotation']): [number, number, number] {
|
|
8
|
+
const quaternion = new THREE.Quaternion(...rotation);
|
|
9
|
+
if (quaternion.lengthSq() < Number.EPSILON) quaternion.identity();
|
|
10
|
+
else quaternion.normalize();
|
|
11
|
+
const euler = new THREE.Euler().setFromQuaternion(quaternion, 'XYZ');
|
|
12
|
+
return [
|
|
13
|
+
THREE.MathUtils.radToDeg(euler.x),
|
|
14
|
+
THREE.MathUtils.radToDeg(euler.y),
|
|
15
|
+
THREE.MathUtils.radToDeg(euler.z),
|
|
16
|
+
];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Replace one whole displayed CHANNEL — the wire's write, where
|
|
21
|
+
* {@link withRotationDegrees} is the rendered rows' per-axis one.
|
|
22
|
+
*
|
|
23
|
+
* `rotation` arrives in the units the section publishes and the rows display
|
|
24
|
+
* (Euler XYZ degrees), which is the only reason a caller can hand back a value
|
|
25
|
+
* it read from `data` and get the pose it read.
|
|
26
|
+
*/
|
|
27
|
+
export function withTransformChannel(
|
|
28
|
+
transform: Transform,
|
|
29
|
+
channel: 'position' | 'rotation' | 'scale',
|
|
30
|
+
value: readonly number[],
|
|
31
|
+
): Transform {
|
|
32
|
+
if (value.length !== 3 || value.some((n) => !Number.isFinite(n))) {
|
|
33
|
+
throw new Error(`transform.${channel} expects three finite numbers.`);
|
|
34
|
+
}
|
|
35
|
+
const next: Transform = {
|
|
36
|
+
position: [...transform.position] as [number, number, number],
|
|
37
|
+
rotation: [...transform.rotation] as [number, number, number, number],
|
|
38
|
+
scale: [...transform.scale] as [number, number, number],
|
|
39
|
+
};
|
|
40
|
+
if (channel === 'rotation') {
|
|
41
|
+
const q = new THREE.Quaternion().setFromEuler(
|
|
42
|
+
new THREE.Euler(
|
|
43
|
+
THREE.MathUtils.degToRad(value[0]!),
|
|
44
|
+
THREE.MathUtils.degToRad(value[1]!),
|
|
45
|
+
THREE.MathUtils.degToRad(value[2]!),
|
|
46
|
+
'XYZ',
|
|
47
|
+
),
|
|
48
|
+
);
|
|
49
|
+
return { ...next, rotation: [q.x, q.y, q.z, q.w] };
|
|
50
|
+
}
|
|
51
|
+
return { ...next, [channel]: [value[0]!, value[1]!, value[2]!] };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Replace one displayed Euler axis while preserving the other displayed axes. */
|
|
55
|
+
export function withRotationDegrees(
|
|
56
|
+
transform: Transform,
|
|
57
|
+
axis: TransformAxis,
|
|
58
|
+
degrees: number,
|
|
59
|
+
): Transform {
|
|
60
|
+
const displayed = rotationDegrees(transform.rotation);
|
|
61
|
+
displayed[axis] = degrees;
|
|
62
|
+
const quaternion = new THREE.Quaternion().setFromEuler(
|
|
63
|
+
new THREE.Euler(
|
|
64
|
+
THREE.MathUtils.degToRad(displayed[0]),
|
|
65
|
+
THREE.MathUtils.degToRad(displayed[1]),
|
|
66
|
+
THREE.MathUtils.degToRad(displayed[2]),
|
|
67
|
+
'XYZ',
|
|
68
|
+
),
|
|
69
|
+
);
|
|
70
|
+
return {
|
|
71
|
+
position: [...transform.position] as [number, number, number],
|
|
72
|
+
rotation: [quaternion.x, quaternion.y, quaternion.z, quaternion.w],
|
|
73
|
+
scale: [...transform.scale] as [number, number, number],
|
|
74
|
+
};
|
|
75
|
+
}
|