@volter/sdk 0.0.0-stage → 0.5.204
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/LICENSE +202 -0
- package/NOTICE +20 -0
- package/README.md +38 -3
- package/package.json +510 -4
- package/src/account.ts +210 -0
- package/src/chrome.ts +88 -0
- package/src/client.ts +1646 -0
- package/src/commands.ts +66 -0
- package/src/contributions.ts +619 -0
- package/src/css-numeric-style.ts +97 -0
- package/src/document-probe.ts +282 -0
- package/src/editor-view.ts +225 -0
- package/src/extension.ts +40 -0
- package/src/generations.ts +178 -0
- package/src/host.ts +1157 -0
- package/src/http-transport.browser.ts +14 -0
- package/src/http-transport.node.ts +19 -0
- package/src/index.ts +131 -0
- package/src/kit/CapabilityCoverageSection.tsx +185 -0
- package/src/kit/account-client.ts +333 -0
- package/src/kit/action-registry.ts +317 -0
- package/src/kit/active-product.ts +76 -0
- package/src/kit/active-project.ts +155 -0
- package/src/kit/adapter-editor-config.ts +25 -0
- package/src/kit/adapter-module.ts +7 -0
- package/src/kit/adapter-observation.ts +49 -0
- package/src/kit/animation/animation-clock.ts +479 -0
- package/src/kit/animation/stage-transport.ts +385 -0
- package/src/kit/api/assets.ts +365 -0
- package/src/kit/api/project-open.ts +355 -0
- package/src/kit/api/project-source.ts +180 -0
- package/src/kit/api/project-state.ts +110 -0
- package/src/kit/api/relay.ts +270 -0
- package/src/kit/api/themes.ts +45 -0
- package/src/kit/api-asset-library-wire.ts +45 -0
- package/src/kit/api-base.ts +10 -0
- package/src/kit/api-build.ts +99 -0
- package/src/kit/api-git-wire.ts +56 -0
- package/src/kit/api-logs.ts +92 -0
- package/src/kit/api-project-identity.ts +74 -0
- package/src/kit/api-settings.ts +36 -0
- package/src/kit/api-worktrees.ts +205 -0
- package/src/kit/asset-capabilities.ts +344 -0
- package/src/kit/asset-compare-core.ts +171 -0
- package/src/kit/asset-editor-context.tsx +101 -0
- package/src/kit/asset-events.ts +96 -0
- package/src/kit/asset-inspector-actions.ts +87 -0
- package/src/kit/asset-selection-viewer-registry.ts +113 -0
- package/src/kit/asset-selection.ts +146 -0
- package/src/kit/asset-thumbnails.ts +25 -0
- package/src/kit/asset-viewers.ts +115 -0
- package/src/kit/asset-workflow/asset-import-jobs.ts +106 -0
- package/src/kit/asset-workflow/asset-ledger-backend.ts +126 -0
- package/src/kit/asset-workflow/asset-ledger.ts +156 -0
- package/src/kit/asset-workflow/asset-materialization-report.ts +140 -0
- package/src/kit/asset-workflow/asset-pack-manifest.ts +320 -0
- package/src/kit/asset-workflow/asset-types.ts +142 -0
- package/src/kit/asset-workflow/audio-preview-player.ts +193 -0
- package/src/kit/asset-workflow/audio-waveform.ts +22 -0
- package/src/kit/asset-workflow/cloud-asset-client.ts +263 -0
- package/src/kit/asset-workflow/hosted-asset-materialization.ts +236 -0
- package/src/kit/asset-workflow/image-view-scale.ts +31 -0
- package/src/kit/asset-workflow/import-contract.ts +124 -0
- package/src/kit/asset-workflow/ledger-write-lock.ts +244 -0
- package/src/kit/asset-workflow/pixi-spritesheet.ts +197 -0
- package/src/kit/asset-workflow/preview-resource-lifetime.ts +44 -0
- package/src/kit/asset-workflow/project-asset-commands.ts +20 -0
- package/src/kit/asset-workflow/project-content.ts +288 -0
- package/src/kit/asset-workflow/project-source-index.ts +545 -0
- package/src/kit/asset-workflow/thumbnail-system.ts +256 -0
- package/src/kit/authoring/active-adapter.ts +200 -0
- package/src/kit/authoring/active-systems.ts +422 -0
- package/src/kit/authoring/adapter-key.ts +18 -0
- package/src/kit/authoring/authoring-asset-url.ts +27 -0
- package/src/kit/authoring/bootstrap-state.ts +49 -0
- package/src/kit/authoring/boundary-authoring-adapter.ts +189 -0
- package/src/kit/authoring/canvas-scene-guides.ts +84 -0
- package/src/kit/authoring/composite-authoring-adapter.ts +2109 -0
- package/src/kit/authoring/consumer-actions.ts +531 -0
- package/src/kit/authoring/design-time-layers.ts +852 -0
- package/src/kit/authoring/design-time-mount-registry.ts +244 -0
- package/src/kit/authoring/edit-mode-authoring.ts +637 -0
- package/src/kit/authoring/empty-project-authoring.ts +22 -0
- package/src/kit/authoring/instance-source-menu.ts +135 -0
- package/src/kit/authoring/layered-pick.ts +185 -0
- package/src/kit/authoring/mounted-root-subjects.ts +146 -0
- package/src/kit/authoring/no-authoring-adapter.ts +59 -0
- package/src/kit/authoring/object3d-document-persistence.ts +122 -0
- package/src/kit/authoring/panel-authoring.ts +121 -0
- package/src/kit/authoring/project-authoring-session.ts +105 -0
- package/src/kit/authoring/provenance.ts +99 -0
- package/src/kit/authoring/react-canvas-navigation.ts +259 -0
- package/src/kit/authoring/react-design-canvas-style.ts +20 -0
- package/src/kit/authoring/react-story-board.ts +917 -0
- package/src/kit/authoring/selection-scope.ts +195 -0
- package/src/kit/authoring/shell-document-ops.ts +169 -0
- package/src/kit/authoring/story-board-chrome-fit.ts +107 -0
- package/src/kit/authoring/story-board-presentation.ts +111 -0
- package/src/kit/authoring/three-root.ts +67 -0
- package/src/kit/authoring/viewport-tool-context.ts +73 -0
- package/src/kit/authoring/viewport-tool-owner.ts +38 -0
- package/src/kit/authoring/world-session-state.ts +101 -0
- package/src/kit/authoring-seam-evidence.ts +300 -0
- package/src/kit/availability-tick.ts +66 -0
- package/src/kit/bitmap-label.ts +120 -0
- package/src/kit/boot-routing.ts +392 -0
- package/src/kit/breakpoint-state.ts +43 -0
- package/src/kit/build-identity.ts +16 -0
- package/src/kit/bytes-codec.ts +62 -0
- package/src/kit/cancellation-reason.ts +58 -0
- package/src/kit/canvas-frames.ts +88 -0
- package/src/kit/capture-camera-pose.ts +77 -0
- package/src/kit/capture-size.ts +88 -0
- package/src/kit/chrome-registry.ts +159 -0
- package/src/kit/chrome-slot-registry.ts +91 -0
- package/src/kit/collaboration-client.ts +264 -0
- package/src/kit/collaboration-presence.ts +41 -0
- package/src/kit/command-dispatch.ts +19 -0
- package/src/kit/command-listener.ts +2182 -0
- package/src/kit/command-registry.ts +71 -0
- package/src/kit/component-board-registry.ts +205 -0
- package/src/kit/component-states-registry.ts +199 -0
- package/src/kit/components/AlignToolbar.tsx +204 -0
- package/src/kit/components/ApplicationMenus.tsx +372 -0
- package/src/kit/components/AssetEditorShell.tsx +216 -0
- package/src/kit/components/AssetInspectorToolSection.tsx +124 -0
- package/src/kit/components/BoardRulers.tsx +354 -0
- package/src/kit/components/CanvasAddNodeDialogs.tsx +529 -0
- package/src/kit/components/CanvasSceneViewport.tsx +1195 -0
- package/src/kit/components/ChromeSlot.tsx +20 -0
- package/src/kit/components/CodeView.tsx +470 -0
- package/src/kit/components/CompactInspectorShell.tsx +39 -0
- package/src/kit/components/ConsolePanel.tsx +273 -0
- package/src/kit/components/GameplaySessionTimeline.tsx +295 -0
- package/src/kit/components/InspectionProjection.tsx +932 -0
- package/src/kit/components/Inspector.tsx +270 -0
- package/src/kit/components/InspectorCanvasPreview.tsx +35 -0
- package/src/kit/components/InspectorFieldsSection.tsx +290 -0
- package/src/kit/components/InspectorStoriesSection.tsx +92 -0
- package/src/kit/components/InspectorToolSection.tsx +96 -0
- package/src/kit/components/InspectorTransformSection.tsx +245 -0
- package/src/kit/components/LightExplorerPanel.tsx +433 -0
- package/src/kit/components/MediaProperties.tsx +145 -0
- package/src/kit/components/ProjectHeader.tsx +328 -0
- package/src/kit/components/ReactCanvasControls.tsx +358 -0
- package/src/kit/components/RootSelectionOverlay.tsx +3688 -0
- package/src/kit/components/RootTextEditor.tsx +79 -0
- package/src/kit/components/SaveStatus.tsx +70 -0
- package/src/kit/components/SurfaceCrashBoundary.tsx +105 -0
- package/src/kit/components/SurfaceStateOverlay.tsx +24 -0
- package/src/kit/components/ToolContributionSurfaces.tsx +49 -0
- package/src/kit/components/ToolHost.tsx +380 -0
- package/src/kit/components/Toolbar.tsx +811 -0
- package/src/kit/components/TransientHint.tsx +44 -0
- package/src/kit/components/VersionControlSection.tsx +470 -0
- package/src/kit/components/ViewportOverlaysMenu.tsx +177 -0
- package/src/kit/components/VolterLogo.tsx +18 -0
- package/src/kit/components/WorktreeSwitcher.tsx +712 -0
- package/src/kit/components/account-documents.tsx +1162 -0
- package/src/kit/components/asset-documents.tsx +794 -0
- package/src/kit/components/asset-editor-persistence.ts +216 -0
- package/src/kit/components/asset-selection-section.tsx +545 -0
- package/src/kit/components/asset-thumbnails.tsx +307 -0
- package/src/kit/components/asset-viewers/AudioViewer.tsx +201 -0
- package/src/kit/components/asset-viewers/GenericJsonViewer.tsx +102 -0
- package/src/kit/components/asset-viewers/ImageViewer.tsx +300 -0
- package/src/kit/components/asset-viewers/JsonAssetDocument.tsx +98 -0
- package/src/kit/components/asset-viewers/OnlineAssetDetail.tsx +426 -0
- package/src/kit/components/asset-viewers/SourceAssetViewer.tsx +356 -0
- package/src/kit/components/asset-viewers/SpritesheetSpriteView.tsx +102 -0
- package/src/kit/components/asset-viewers/VideoViewer.tsx +101 -0
- package/src/kit/components/asset-viewers/shader-source.ts +144 -0
- package/src/kit/components/board-guides.ts +150 -0
- package/src/kit/components/canvas-scene-hotkeys.ts +37 -0
- package/src/kit/components/canvas-temporary-pivot.ts +34 -0
- package/src/kit/components/core-utilities.tsx +94 -0
- package/src/kit/components/inspector-preview-section.tsx +223 -0
- package/src/kit/components/inspector-revert-label.ts +20 -0
- package/src/kit/components/inspector-selection.ts +42 -0
- package/src/kit/components/inspector-stories-gating.ts +171 -0
- package/src/kit/components/inspector-transform-subject.ts +11 -0
- package/src/kit/components/inspector-transform.ts +88 -0
- package/src/kit/components/kind-documents.tsx +544 -0
- package/src/kit/components/primitives/DraftColorInput.tsx +74 -0
- package/src/kit/components/project-tool-documents.tsx +402 -0
- package/src/kit/components/scene-documents.tsx +221 -0
- package/src/kit/components/status-contributions.tsx +407 -0
- package/src/kit/components/tool-documents.tsx +302 -0
- package/src/kit/components/tool-schema-form.tsx +262 -0
- package/src/kit/components/use-after-paint.ts +41 -0
- package/src/kit/components/use-project-image-assets.ts +86 -0
- package/src/kit/components/workspace-history.ts +32 -0
- package/src/kit/components/world-documents.tsx +570 -0
- package/src/kit/components/world-overlay-gestures.ts +1939 -0
- package/src/kit/composite-screenshot.ts +2238 -0
- package/src/kit/content-entry-source-registry.ts +184 -0
- package/src/kit/contribution-surfaces.ts +48 -0
- package/src/kit/coverage/canvas-reveal.ts +192 -0
- package/src/kit/coverage/design-time-surfaces.ts +101 -0
- package/src/kit/coverage/ontology-invariants.ts +466 -0
- package/src/kit/coverage/session-vitals.ts +503 -0
- package/src/kit/crash-null-boundary.ts +36 -0
- package/src/kit/creation-site-edit.ts +1491 -0
- package/src/kit/creation-site-registry.ts +160 -0
- package/src/kit/delegate-harness-registry.ts +134 -0
- package/src/kit/document-areas.ts +70 -0
- package/src/kit/document-context-registry.ts +193 -0
- package/src/kit/document-open-registry.ts +200 -0
- package/src/kit/document-play-extension.ts +221 -0
- package/src/kit/document-preview-source.ts +20 -0
- package/src/kit/document-renderer-session.ts +138 -0
- package/src/kit/document-stage-sessions.ts +26 -0
- package/src/kit/document-viewports.ts +120 -0
- package/src/kit/editor-api.ts +46 -0
- package/src/kit/editor-chrome-capture.ts +136 -0
- package/src/kit/editor-commands.ts +176 -0
- package/src/kit/editor-console.ts +580 -0
- package/src/kit/editor-current-view.ts +56 -0
- package/src/kit/editor-document-probe.ts +1168 -0
- package/src/kit/editor-git-client.ts +115 -0
- package/src/kit/editor-hotkeys.ts +728 -0
- package/src/kit/editor-lease-view.ts +39 -0
- package/src/kit/editor-lease.ts +415 -0
- package/src/kit/editor-mode.ts +19 -0
- package/src/kit/editor-notifications.ts +140 -0
- package/src/kit/editor-presence.ts +563 -0
- package/src/kit/editor-presentation-activity.ts +58 -0
- package/src/kit/editor-presentation-notice.ts +42 -0
- package/src/kit/editor-runtime.tsx +147 -0
- package/src/kit/editor-server-response.ts +86 -0
- package/src/kit/editor-session-attribution.ts +85 -0
- package/src/kit/editor-session-mode.ts +54 -0
- package/src/kit/editor-state-facets.ts +74 -0
- package/src/kit/editor-view-presentation.ts +777 -0
- package/src/kit/environment-images.ts +58 -0
- package/src/kit/eyedropper-session.ts +60 -0
- package/src/kit/files/file-provider.ts +62 -0
- package/src/kit/files/project-files.ts +270 -0
- package/src/kit/finders/index.ts +137 -0
- package/src/kit/finders/scenes-from-entrypoint-selection.ts +387 -0
- package/src/kit/frame/frame-parts.ts +30 -0
- package/src/kit/framed-document-capture.ts +34 -0
- package/src/kit/game-globals-prelude.ts +143 -0
- package/src/kit/game-surface-defaults.ts +33 -0
- package/src/kit/gameplay-dom-recording.ts +318 -0
- package/src/kit/gameplay-export-state.ts +14 -0
- package/src/kit/gameplay-replay.ts +417 -0
- package/src/kit/gameplay-session-time.ts +9 -0
- package/src/kit/gameplay-sessions.ts +204 -0
- package/src/kit/hierarchy-component-marks.ts +298 -0
- package/src/kit/hierarchy-internals.ts +197 -0
- package/src/kit/hierarchy-kind-icon.ts +217 -0
- package/src/kit/hierarchy-menu-registry.ts +67 -0
- package/src/kit/hierarchy-node-rows.ts +307 -0
- package/src/kit/hierarchy-panel-view.ts +280 -0
- package/src/kit/hierarchy-projection.ts +76 -0
- package/src/kit/hierarchy-row-media.ts +45 -0
- package/src/kit/hierarchy-row-model.ts +308 -0
- package/src/kit/hierarchy-rows.ts +11 -0
- package/src/kit/hierarchy-walk.ts +86 -0
- package/src/kit/history/editor-session.ts +25 -0
- package/src/kit/history/history-commands.ts +147 -0
- package/src/kit/history/history-delegate.ts +187 -0
- package/src/kit/history/history-limit-notices.ts +43 -0
- package/src/kit/history/history-service.ts +1189 -0
- package/src/kit/history/persistence-coordinator.ts +35 -0
- package/src/kit/history/project-file-history.ts +386 -0
- package/src/kit/history/project-root-history-backends.ts +139 -0
- package/src/kit/history/resource-registry.ts +209 -0
- package/src/kit/history/snapshot-store.ts +103 -0
- package/src/kit/history/source-history-backend.ts +546 -0
- package/src/kit/history-types.ts +124 -0
- package/src/kit/hmr-registration-group.ts +67 -0
- package/src/kit/hmr-stable-react-context.ts +23 -0
- package/src/kit/hotkeys.ts +190 -0
- package/src/kit/inference-diagnostics.ts +69 -0
- package/src/kit/initial-project.ts +80 -0
- package/src/kit/inspection/active-subject.ts +571 -0
- package/src/kit/inspection/active-surface.ts +142 -0
- package/src/kit/inspection/compose-subject.ts +1055 -0
- package/src/kit/inspection/compose.ts +7 -0
- package/src/kit/inspection/display.ts +171 -0
- package/src/kit/inspection/document-subject.ts +109 -0
- package/src/kit/inspection/game-subject.ts +85 -0
- package/src/kit/inspection/null-subject.ts +119 -0
- package/src/kit/inspection/serialize.ts +357 -0
- package/src/kit/inspection/use-active-inspection.ts +180 -0
- package/src/kit/inspection-model.ts +542 -0
- package/src/kit/inspection-node-media.ts +58 -0
- package/src/kit/inspector-presentation.ts +203 -0
- package/src/kit/inspector-property-grouping.ts +64 -0
- package/src/kit/inspector-section-registry.ts +221 -0
- package/src/kit/instance-source-actions.ts +163 -0
- package/src/kit/js-heap.ts +71 -0
- package/src/kit/key-actions.ts +91 -0
- package/src/kit/keymap-presets.ts +428 -0
- package/src/kit/layout-policy.ts +31 -0
- package/src/kit/light-explorer-model.ts +134 -0
- package/src/kit/live-canvas-frame.ts +55 -0
- package/src/kit/live-document.ts +296 -0
- package/src/kit/live-gesture-lock.ts +50 -0
- package/src/kit/live-seam-evidence.ts +11 -0
- package/src/kit/live-session-registry.ts +220 -0
- package/src/kit/live-transition.ts +391 -0
- package/src/kit/manifest-project.ts +107 -0
- package/src/kit/module-fetch-diagnosis.ts +192 -0
- package/src/kit/mount-failure-report.ts +154 -0
- package/src/kit/native-selection-style.ts +497 -0
- package/src/kit/object3d-document-write-policy.ts +137 -0
- package/src/kit/packaged-runtime.ts +108 -0
- package/src/kit/palettes/maya.palette.json +57 -0
- package/src/kit/palettes/substance.palette.json +57 -0
- package/src/kit/performance-profiler.ts +367 -0
- package/src/kit/performance-sources.ts +69 -0
- package/src/kit/photograph-notice.ts +141 -0
- package/src/kit/play-boot-phase.ts +166 -0
- package/src/kit/play-camera-flight.ts +35 -0
- package/src/kit/png-encode.worker.ts +26 -0
- package/src/kit/presentation-surface.ts +248 -0
- package/src/kit/product-command.ts +90 -0
- package/src/kit/project-adapter.ts +1140 -0
- package/src/kit/project-asset-refresh.ts +23 -0
- package/src/kit/project-asset-roots.ts +68 -0
- package/src/kit/project-local-state.ts +151 -0
- package/src/kit/project-manager.ts +243 -0
- package/src/kit/project-module-changes.ts +201 -0
- package/src/kit/project-module-split.ts +270 -0
- package/src/kit/project-play-layers.ts +25 -0
- package/src/kit/project-provenance.ts +115 -0
- package/src/kit/project-ready.ts +42 -0
- package/src/kit/project-shape.ts +68 -0
- package/src/kit/project-tools.ts +107 -0
- package/src/kit/projection-types.ts +44 -0
- package/src/kit/readiness.ts +113 -0
- package/src/kit/renderer-resource-counts.ts +27 -0
- package/src/kit/reported-play-state.ts +90 -0
- package/src/kit/resolve-contributed-command.ts +14 -0
- package/src/kit/resolve-relative-specifier.ts +33 -0
- package/src/kit/retained-document-states.ts +91 -0
- package/src/kit/scene-document-plan.ts +320 -0
- package/src/kit/scene-live-open.ts +210 -0
- package/src/kit/scoped-game-css.ts +152 -0
- package/src/kit/served-url.ts +5 -0
- package/src/kit/session-close.ts +17 -0
- package/src/kit/session-tombstone.ts +127 -0
- package/src/kit/settings/settings-provider.ts +82 -0
- package/src/kit/settings-store.ts +348 -0
- package/src/kit/shell-document-state.ts +27 -0
- package/src/kit/shell-store-door.ts +45 -0
- package/src/kit/shell-store.ts +722 -0
- package/src/kit/source-conflict.ts +122 -0
- package/src/kit/stage-context.ts +377 -0
- package/src/kit/stage-invalidation.ts +25 -0
- package/src/kit/stage-store-registry.ts +69 -0
- package/src/kit/startup-failure.ts +80 -0
- package/src/kit/state-report-deferral.ts +73 -0
- package/src/kit/storage/host-files-storage.ts +97 -0
- package/src/kit/storage/http-storage.ts +174 -0
- package/src/kit/storage/index.ts +75 -0
- package/src/kit/storage/mem-storage.ts +158 -0
- package/src/kit/storage/path-lock.ts +44 -0
- package/src/kit/storage/paths.ts +26 -0
- package/src/kit/storage-types.ts +127 -0
- package/src/kit/stories/StoryPreviewMount.tsx +306 -0
- package/src/kit/stories/compose-project-stories.ts +255 -0
- package/src/kit/stories/prefabs-finder.ts +54 -0
- package/src/kit/stories/prefabs-from-stories.ts +182 -0
- package/src/kit/stories/project-story-regions.ts +24 -0
- package/src/kit/stories/story-capture.ts +579 -0
- package/src/kit/stories/story-declared-medium.ts +126 -0
- package/src/kit/stories/story-discovery.ts +176 -0
- package/src/kit/stories/story-dom-runtime.ts +78 -0
- package/src/kit/stories/story-grouping.ts +111 -0
- package/src/kit/stories/story-mount-turn.ts +27 -0
- package/src/kit/stories/story-presentation.ts +215 -0
- package/src/kit/stories/story-preview-component.ts +7 -0
- package/src/kit/stories/story-registry.ts +530 -0
- package/src/kit/stories-scope.ts +35 -0
- package/src/kit/story-document-openers.ts +36 -0
- package/src/kit/story-thumbnails.ts +47 -0
- package/src/kit/surface-keyboard.ts +101 -0
- package/src/kit/surface-state.ts +135 -0
- package/src/kit/system-seam-evidence.ts +72 -0
- package/src/kit/tab-census.ts +202 -0
- package/src/kit/tab-lifecycle-client.ts +227 -0
- package/src/kit/theme-library.ts +897 -0
- package/src/kit/theme-preference.ts +429 -0
- package/src/kit/three-viewport-presentation.ts +23 -0
- package/src/kit/tool-contribution-play.ts +74 -0
- package/src/kit/tool-loader.ts +1918 -0
- package/src/kit/transform-mode-request.ts +66 -0
- package/src/kit/transient-hint.ts +78 -0
- package/src/kit/transport-strip.tsx +174 -0
- package/src/kit/ui-source/adapter-region-includes.ts +238 -0
- package/src/kit/ui-source/file-region-resolver.ts +302 -0
- package/src/kit/ui-source/inspect.ts +775 -0
- package/src/kit/ui-source/source-write-backend.ts +605 -0
- package/src/kit/ui-source/tier-source-write-backend.ts +279 -0
- package/src/kit/user-local-state.ts +105 -0
- package/src/kit/viewport-activation-timings.ts +840 -0
- package/src/kit/viewport-editor-controls.ts +22 -0
- package/src/kit/viewport-presentation.ts +668 -0
- package/src/kit/viewport-surface-status.tsx +55 -0
- package/src/kit/wait-until.ts +37 -0
- package/src/kit/worker-call-metrics.ts +166 -0
- package/src/kit/workspace-areas.ts +191 -0
- package/src/kit/workspace-aux-commands.ts +11 -0
- package/src/kit/workspace-available-documents.ts +142 -0
- package/src/kit/workspace-core-utilities.ts +31 -0
- package/src/kit/workspace-document-ids.ts +59 -0
- package/src/kit/workspace-document-registry.ts +624 -0
- package/src/kit/workspace-document-restore.ts +146 -0
- package/src/kit/workspace-host-commands.ts +141 -0
- package/src/kit/workspace-persistence-gate.ts +40 -0
- package/src/kit/workspace-play-utilities.ts +44 -0
- package/src/kit/workspace-presets.ts +446 -0
- package/src/kit/workspace-regions.ts +276 -0
- package/src/kit/workspace-static-panels.ts +73 -0
- package/src/kit/workspace-status-registry.ts +121 -0
- package/src/kit/workspace-storage.ts +35 -0
- package/src/kit/workspace-style.ts +226 -0
- package/src/kit/workspace-utility-commands.ts +74 -0
- package/src/kit/workspace-utility-registry.ts +263 -0
- package/src/kit/world-adoption-event.ts +23 -0
- package/src/kit/world-adoption.ts +115 -0
- package/src/kit/world-canvas-viewport-state.ts +35 -0
- package/src/kit/world-document-routing.ts +104 -0
- package/src/kit/world-pan-state.ts +198 -0
- package/src/kit/write-pipe.ts +173 -0
- package/src/layout-arrangements.ts +5 -0
- package/src/layouts.tsx +108 -0
- package/src/looks.ts +16 -0
- package/src/project/output-roots.ts +73 -0
- package/src/project/tab-census.ts +155 -0
- package/src/project-tool-catalog.ts +104 -0
- package/src/selection.tsx +107 -0
- package/src/services.ts +18 -0
- package/src/session/build-report.ts +22 -0
- package/src/session/collaboration-types.ts +262 -0
- package/src/session/command-table.ts +327 -0
- package/src/session/discovery.ts +100 -0
- package/src/session/editor-brand.ts +48 -0
- package/src/session/editor-compatibility.ts +329 -0
- package/src/session/editor-control-lifecycle.ts +68 -0
- package/src/session/editor-control-protocol.ts +5 -0
- package/src/session/entrypoint-selection-readers.ts +66 -0
- package/src/session/entrypoint-selection-source.ts +120 -0
- package/src/session/game-css-scope.ts +30 -0
- package/src/session/hosted-attachment.ts +225 -0
- package/src/session/limited-view.ts +82 -0
- package/src/session/product-create.ts +24 -0
- package/src/session/product-locator.ts +478 -0
- package/src/session/project-module-url.ts +242 -0
- package/src/session/project-serving.ts +164 -0
- package/src/session/project-upgrade.ts +669 -0
- package/src/session/registry-format.ts +210 -0
- package/src/session/relative-path-guard.ts +56 -0
- package/src/session/scoped-game-css.ts +461 -0
- package/src/session/source-glob.ts +15 -0
- package/src/session/tool-contribution-convention.ts +123 -0
- package/src/session/workbench-locator.ts +712 -0
- package/src/session.ts +41 -0
- package/src/share.ts +160 -0
- package/src/source-analysis.ts +28 -0
- package/src/source-authoring.ts +439 -0
- package/src/tools/errors.ts +91 -0
- package/src/tools/provider-execution.ts +70 -0
- package/src/tools/registry.ts +341 -0
- package/src/tools/types.ts +159 -0
- package/src/transport.ts +100 -0
- package/src/types.ts +1693 -0
- package/src/views.ts +164 -0
- package/src/widgets/design-system.ts +93 -0
- package/src/widgets/editor-appearance.ts +151 -0
- package/src/widgets/editor-material.ts +83 -0
- package/src/widgets/icon-set-registry.ts +105 -0
- package/src/widgets/index.ts +71 -0
- package/src/widgets/inspector-widgets/AlignmentGrid.tsx +182 -0
- package/src/widgets/inspector-widgets/AssetSlotPicker.tsx +123 -0
- package/src/widgets/inspector-widgets/BorderEditor.tsx +309 -0
- package/src/widgets/inspector-widgets/ColorPicker.tsx +549 -0
- package/src/widgets/inspector-widgets/CurveEditor.tsx +359 -0
- package/src/widgets/inspector-widgets/FilterEditor.tsx +108 -0
- package/src/widgets/inspector-widgets/FontPicker.tsx +191 -0
- package/src/widgets/inspector-widgets/GradientEditor.tsx +623 -0
- package/src/widgets/inspector-widgets/ScrubbableInput.tsx +180 -0
- package/src/widgets/inspector-widgets/ShadowEditor.tsx +319 -0
- package/src/widgets/inspector-widgets/color-utils.ts +201 -0
- package/src/widgets/inspector-widgets/curve-utils.ts +212 -0
- package/src/widgets/inspector-widgets/index.ts +25 -0
- package/src/widgets/inspector-widgets/shared.tsx +140 -0
- package/src/widgets/interactive-edit-scope.ts +33 -0
- package/src/widgets/patterns/Dialog.tsx +140 -0
- package/src/widgets/patterns/Fields.tsx +44 -0
- package/src/widgets/patterns/List.tsx +25 -0
- package/src/widgets/patterns/StateSurface.tsx +40 -0
- package/src/widgets/patterns/Surfaces.tsx +122 -0
- package/src/widgets/patterns/Tabs.tsx +80 -0
- package/src/widgets/patterns/Toolbar.tsx +72 -0
- package/src/widgets/patterns/Tree.tsx +72 -0
- package/src/widgets/primitives/AnchoredMenu.tsx +260 -0
- package/src/widgets/primitives/Button.tsx +62 -0
- package/src/widgets/primitives/ColorInput.tsx +78 -0
- package/src/widgets/primitives/DraftTextInput.tsx +63 -0
- package/src/widgets/primitives/EditorIcon.tsx +157 -0
- package/src/widgets/primitives/FormControls.tsx +88 -0
- package/src/widgets/primitives/HoverPreview.tsx +96 -0
- package/src/widgets/primitives/JsonInput.tsx +113 -0
- package/src/widgets/primitives/Layout.tsx +100 -0
- package/src/widgets/primitives/Menu.tsx +161 -0
- package/src/widgets/primitives/NumberInput.tsx +169 -0
- package/src/widgets/primitives/Panel.tsx +80 -0
- package/src/widgets/primitives/SectionHeader.tsx +77 -0
- package/src/widgets/primitives/Text.tsx +54 -0
- package/src/widgets/primitives/ThemeRootPortal.tsx +52 -0
- package/src/widgets/primitives/Tooltip.tsx +204 -0
- package/src/widgets/primitives/Vec3Input.tsx +70 -0
- package/src/widgets/primitives/banner-tones.ts +32 -0
- package/src/widgets/primitives/clamp-to-viewport.ts +44 -0
- package/src/widgets/primitives/editor-icons.ts +254 -0
- package/src/widgets/primitives/panel-header-styles.ts +42 -0
- package/src/widgets/theme.ts +2841 -0
- package/src/widgets/z-index.ts +25 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RootTextEditor — spec 27 §6 D3.b double-click-to-edit-text: an inline canonical
|
|
3
|
+
* multiline text control positioned over the double-clicked node's rect. Escape cancels;
|
|
4
|
+
* Enter (no shift) or blur commits. Purely a controlled presentational component —
|
|
5
|
+
* `RootSelectionOverlay` decides WHETHER to render this (via `adapter.text`/`textForId`,
|
|
6
|
+
* rule zero) and supplies the initial text + the commit/cancel callbacks; this file has
|
|
7
|
+
* no adapter/DOM reach of its own.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { TextArea, zIndex } from '@volter/sdk/widgets';
|
|
11
|
+
import { useEffect, useRef, useState } from 'react';
|
|
12
|
+
|
|
13
|
+
export interface RootTextEditorProps {
|
|
14
|
+
rect: { x: number; y: number; width: number; height: number };
|
|
15
|
+
initialText: string;
|
|
16
|
+
onCommit: (text: string) => void;
|
|
17
|
+
onCancel: () => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function RootTextEditor({
|
|
21
|
+
rect,
|
|
22
|
+
initialText,
|
|
23
|
+
onCommit,
|
|
24
|
+
onCancel,
|
|
25
|
+
}: RootTextEditorProps): React.ReactNode {
|
|
26
|
+
const [value, setValue] = useState(initialText);
|
|
27
|
+
const ref = useRef<HTMLTextAreaElement>(null);
|
|
28
|
+
const committedRef = useRef(false);
|
|
29
|
+
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const el = ref.current;
|
|
32
|
+
if (!el) return;
|
|
33
|
+
el.focus();
|
|
34
|
+
el.select();
|
|
35
|
+
}, []);
|
|
36
|
+
|
|
37
|
+
const commit = (): void => {
|
|
38
|
+
if (committedRef.current) return;
|
|
39
|
+
committedRef.current = true;
|
|
40
|
+
onCommit(value);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const cancel = (): void => {
|
|
44
|
+
if (committedRef.current) return;
|
|
45
|
+
committedRef.current = true;
|
|
46
|
+
onCancel();
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<TextArea
|
|
51
|
+
ref={ref}
|
|
52
|
+
data-testid="world-text-editor"
|
|
53
|
+
value={value}
|
|
54
|
+
onChange={(e) => setValue(e.target.value)}
|
|
55
|
+
onBlur={commit}
|
|
56
|
+
onKeyDown={(e) => {
|
|
57
|
+
if (e.key === 'Escape') {
|
|
58
|
+
e.stopPropagation();
|
|
59
|
+
cancel();
|
|
60
|
+
} else if (e.key === 'Enter' && !e.shiftKey) {
|
|
61
|
+
e.preventDefault();
|
|
62
|
+
commit();
|
|
63
|
+
}
|
|
64
|
+
}}
|
|
65
|
+
data-variant="inline-editor"
|
|
66
|
+
style={{
|
|
67
|
+
position: 'absolute',
|
|
68
|
+
left: rect.x,
|
|
69
|
+
top: rect.y,
|
|
70
|
+
width: Math.max(rect.width, 40),
|
|
71
|
+
height: Math.max(rect.height, 20),
|
|
72
|
+
boxSizing: 'border-box',
|
|
73
|
+
zIndex: zIndex.overlayLow,
|
|
74
|
+
pointerEvents: 'auto',
|
|
75
|
+
resize: 'none',
|
|
76
|
+
}}
|
|
77
|
+
/>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Button } from '@volter/sdk/widgets';
|
|
2
|
+
import { useSyncExternalStore } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
activeSaveDestination,
|
|
5
|
+
activeSaveFailure,
|
|
6
|
+
activeSaveState,
|
|
7
|
+
saveActiveAuthoring,
|
|
8
|
+
} from '@volter/sdk/kit/authoring/shell-document-ops';
|
|
9
|
+
import { useEditorStore, useOptionalHistoryService } from '@volter/sdk/kit/editor-runtime';
|
|
10
|
+
import { showConsoleUtility } from '../workspace-utility-commands';
|
|
11
|
+
|
|
12
|
+
const subscribeToNothing = () => () => undefined;
|
|
13
|
+
const noHistorySnapshot = () => null;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Compact save-status affordance for the status bar. Surfaces whether the
|
|
17
|
+
* ACTIVE authoring adapter has unsaved edits. Click to force a save (also bound
|
|
18
|
+
* to Cmd/Ctrl+S).
|
|
19
|
+
*/
|
|
20
|
+
export function SaveStatus() {
|
|
21
|
+
const store = useEditorStore();
|
|
22
|
+
const history = useOptionalHistoryService();
|
|
23
|
+
useSyncExternalStore(store.subscribe, store.getShellSnapshot ?? store.getSnapshot);
|
|
24
|
+
// Source writes clear HistoryService.lastError only after the async commit
|
|
25
|
+
// succeeds. Subscribe directly so the red failure state clears at that
|
|
26
|
+
// exact point rather than waiting for an unrelated store/HMR notification.
|
|
27
|
+
useSyncExternalStore(
|
|
28
|
+
history?.subscribe ?? subscribeToNothing,
|
|
29
|
+
history?.getSnapshot ?? noHistorySnapshot,
|
|
30
|
+
history?.getSnapshot ?? noHistorySnapshot,
|
|
31
|
+
);
|
|
32
|
+
const state = activeSaveState(store);
|
|
33
|
+
// Success is the steady state, not an alert. Keep the status bar quiet
|
|
34
|
+
// until there is unsaved work or a failure requiring attention.
|
|
35
|
+
if (state === 'saved') return null;
|
|
36
|
+
// Destination is the active adapter's own — never a hard-coded path — so
|
|
37
|
+
// the status honestly reflects where a save (or autosave) would actually go.
|
|
38
|
+
const destination = activeSaveDestination(store);
|
|
39
|
+
|
|
40
|
+
const failed = state === 'failed';
|
|
41
|
+
const failure = failed ? activeSaveFailure(store) : null;
|
|
42
|
+
const config = failed
|
|
43
|
+
? {
|
|
44
|
+
label: 'Save failed',
|
|
45
|
+
title: failure
|
|
46
|
+
? `Save failed: ${failure} — click to open Console`
|
|
47
|
+
: 'Save failed — click to open Console',
|
|
48
|
+
}
|
|
49
|
+
: {
|
|
50
|
+
label: 'Unsaved',
|
|
51
|
+
title: 'Unsaved changes — click to save (Cmd/Ctrl+S)',
|
|
52
|
+
};
|
|
53
|
+
const title = destination ? `${config.title} — ${destination}` : config.title;
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<Button
|
|
57
|
+
type="button"
|
|
58
|
+
data-testid="save-status"
|
|
59
|
+
data-save-state={state}
|
|
60
|
+
variant="ghost"
|
|
61
|
+
size="compact"
|
|
62
|
+
className="volter-save-status"
|
|
63
|
+
onClick={() => (failed ? showConsoleUtility() : void saveActiveAuthoring(store))}
|
|
64
|
+
title={title}
|
|
65
|
+
>
|
|
66
|
+
<span className="volter-save-status-dot" />
|
|
67
|
+
{config.label}
|
|
68
|
+
</Button>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A CRASH THAT STAYS WHERE IT HAPPENED. One part of the editor's own tree — an
|
|
3
|
+
* Inspector section, a workspace document such as the UI component board —
|
|
4
|
+
* that throws while rendering is replaced IN PLACE by its error, with the
|
|
5
|
+
* message, and nothing above it unmounts.
|
|
6
|
+
*
|
|
7
|
+
* Without it the throw climbed to `AppRoot`'s `EditorRuntimeBoundary`, which
|
|
8
|
+
* swaps the WHOLE editor surface for its startup-error screen. Measured on
|
|
9
|
+
* raiku-walk (0.5.189, Windows, 2026-10-07): the React inspector's
|
|
10
|
+
* `ClassesBlock` threw "Invalid hook call" while an agent checked HUD stories
|
|
11
|
+
* on the UI board, and every panel, the board and the inspector went with it —
|
|
12
|
+
* to the agent driving the session, the surface simply stopped answering.
|
|
13
|
+
*
|
|
14
|
+
* The crash is LOUD as well as contained: an error in the editor console
|
|
15
|
+
* ledger (what the `console` command and the session log read), with React's
|
|
16
|
+
* component stack, and a startup failure for the frame's cover, so a crash
|
|
17
|
+
* drawn under a cover that has not lifted yet is not hidden behind it
|
|
18
|
+
* (`startup-failure.ts`; `AppRoot`'s boundary publishes the same way). Retry
|
|
19
|
+
* draws the subtree again; unmounting withdraws the notice.
|
|
20
|
+
*
|
|
21
|
+
* Sibling of `ToolHost`'s `ToolErrorBoundary` (a project tool's file, the dock's
|
|
22
|
+
* wording) and `crash-null-boundary.ts` (a throw that must render nothing).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import { Button, space, themeVars } from '@volter/sdk/widgets';
|
|
26
|
+
import { Component, type ErrorInfo, type ReactNode } from 'react';
|
|
27
|
+
import { editorConsole } from '@volter/sdk/kit/editor-console';
|
|
28
|
+
import { clearStartupFailure, reportStartupFailure } from '@volter/sdk/kit/startup-failure';
|
|
29
|
+
|
|
30
|
+
interface SurfaceCrashBoundaryProps {
|
|
31
|
+
/** Stable id of the part (`inspector-section:<id>`, `document:<id>`): the startup-failure source. */
|
|
32
|
+
readonly surface: string;
|
|
33
|
+
/** What crashed, as a person names it ("The Classes inspector section"). */
|
|
34
|
+
readonly label: string;
|
|
35
|
+
readonly children?: ReactNode;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface SurfaceCrashBoundaryState {
|
|
39
|
+
readonly error: Error | null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function crashMessage(error: unknown): string {
|
|
43
|
+
return error instanceof Error ? error.message : String(error);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export class SurfaceCrashBoundary extends Component<SurfaceCrashBoundaryProps, SurfaceCrashBoundaryState> {
|
|
47
|
+
override state: SurfaceCrashBoundaryState = { error: null };
|
|
48
|
+
|
|
49
|
+
static getDerivedStateFromError(error: unknown): SurfaceCrashBoundaryState {
|
|
50
|
+
return { error: error instanceof Error ? error : new Error(String(error)) };
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
private get source(): string {
|
|
54
|
+
return `surface-crash:${this.props.surface}`;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
override componentDidCatch(error: unknown, info: ErrorInfo): void {
|
|
58
|
+
const message = crashMessage(error);
|
|
59
|
+
editorConsole.error(
|
|
60
|
+
`${this.props.label} crashed while rendering (the rest of the editor is still running): ${message}\n${info.componentStack ?? ''}`,
|
|
61
|
+
'editor',
|
|
62
|
+
);
|
|
63
|
+
reportStartupFailure(this.source, {
|
|
64
|
+
message: `${this.props.label} crashed: ${message}`,
|
|
65
|
+
guidance: 'The rest of the editor is still running. Dismiss this; the error is shown in place, with Retry.',
|
|
66
|
+
command: null,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
override componentWillUnmount(): void {
|
|
71
|
+
clearStartupFailure(this.source);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
override render(): ReactNode {
|
|
75
|
+
const { error } = this.state;
|
|
76
|
+
if (!error) return this.props.children;
|
|
77
|
+
return (
|
|
78
|
+
<div
|
|
79
|
+
role="alert"
|
|
80
|
+
data-testid="surface-crash"
|
|
81
|
+
data-surface-crash={this.props.surface}
|
|
82
|
+
style={{
|
|
83
|
+
padding: space[4],
|
|
84
|
+
fontSize: 'var(--volter-font-md)',
|
|
85
|
+
color: themeVars.semantic.danger,
|
|
86
|
+
overflow: 'auto',
|
|
87
|
+
}}
|
|
88
|
+
>
|
|
89
|
+
<div style={{ fontWeight: 600, marginBottom: space[2] }}>{this.props.label} crashed</div>
|
|
90
|
+
<div style={{ whiteSpace: 'pre-wrap', wordBreak: 'break-word' }}>{error.message}</div>
|
|
91
|
+
<div style={{ color: themeVars.content.muted, marginTop: space[3], marginBottom: space[3] }}>
|
|
92
|
+
The rest of the editor is still running. The error is in the editor console.
|
|
93
|
+
</div>
|
|
94
|
+
<Button
|
|
95
|
+
onClick={() => {
|
|
96
|
+
clearStartupFailure(this.source);
|
|
97
|
+
this.setState({ error: null });
|
|
98
|
+
}}
|
|
99
|
+
>
|
|
100
|
+
Retry
|
|
101
|
+
</Button>
|
|
102
|
+
</div>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { StateSurface } from '@volter/sdk/widgets';
|
|
2
|
+
import type { CSSProperties } from 'react';
|
|
3
|
+
import type { SurfaceExplanation } from '@volter/sdk/kit/surface-state';
|
|
4
|
+
|
|
5
|
+
export function SurfaceStateOverlay({
|
|
6
|
+
explanation,
|
|
7
|
+
testId,
|
|
8
|
+
style,
|
|
9
|
+
}: {
|
|
10
|
+
readonly explanation: SurfaceExplanation | null;
|
|
11
|
+
readonly testId: string;
|
|
12
|
+
readonly style?: CSSProperties;
|
|
13
|
+
}) {
|
|
14
|
+
if (!explanation) return null;
|
|
15
|
+
return (
|
|
16
|
+
<StateSurface
|
|
17
|
+
data-testid={testId}
|
|
18
|
+
tone={explanation.tone}
|
|
19
|
+
title={explanation.title}
|
|
20
|
+
description={<span style={{ whiteSpace: 'pre-wrap' }}>{explanation.description}</span>}
|
|
21
|
+
style={{ position: 'absolute', inset: 0, pointerEvents: 'none', ...style }}
|
|
22
|
+
/>
|
|
23
|
+
);
|
|
24
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ToolAssetDocumentProps, ToolContributionSurfaces } from '@volter/sdk/contributions';
|
|
2
|
+
import { type ComponentType, useCallback, useSyncExternalStore } from 'react';
|
|
3
|
+
import { AssetEditorSubject } from '@volter/sdk/kit/components/AssetEditorShell';
|
|
4
|
+
import { contributionSurface, subscribeContributionSurfaces } from '@volter/sdk/kit/contribution-surfaces';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Registers the ordinary Asset Lab subject for a project-owned document. The
|
|
8
|
+
* surface is intentionally childless: it registers a subject and draws nothing
|
|
9
|
+
* of the document's own, which the document keeps rendering itself.
|
|
10
|
+
*/
|
|
11
|
+
export function ToolAssetDocumentSurface(props: ToolAssetDocumentProps) {
|
|
12
|
+
return <AssetEditorSubject {...props} />;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const forwarders = new Map<string, ComponentType<object>>();
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Lightweight contribution boundary: the kit renders the surface a medium's integration
|
|
19
|
+
* registered under `name` (`kit/contribution-surfaces`) and imports no viewport, so ToolHost
|
|
20
|
+
* pulls no WebGL or model modules into Node tools and tests.
|
|
21
|
+
*/
|
|
22
|
+
function forwarder(name: string): ComponentType<object> {
|
|
23
|
+
const existing = forwarders.get(name);
|
|
24
|
+
if (existing) return existing;
|
|
25
|
+
function ContributionSurface(props: object) {
|
|
26
|
+
const read = useCallback(() => contributionSurface(name), []);
|
|
27
|
+
const Surface = useSyncExternalStore(subscribeContributionSurfaces, read, read) as ComponentType<object> | null;
|
|
28
|
+
if (!Surface) return <div style={{ minHeight: 240 }}>Loading {name}…</div>;
|
|
29
|
+
return <Surface {...props} />;
|
|
30
|
+
}
|
|
31
|
+
ContributionSurface.displayName = `ContributionSurface(${name})`;
|
|
32
|
+
forwarders.set(name, ContributionSurface);
|
|
33
|
+
return ContributionSurface;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Stable dependency-injection value shared by every contribution mount: the kit's own surfaces,
|
|
37
|
+
* and a forwarder for each name a medium's integration adds. */
|
|
38
|
+
export const toolContributionSurfaces: ToolContributionSurfaces = new Proxy(
|
|
39
|
+
Object.freeze({ AssetDocument: ToolAssetDocumentSurface }) as ToolContributionSurfaces,
|
|
40
|
+
{
|
|
41
|
+
get(target, name, receiver) {
|
|
42
|
+
// A surface is a component, named like one; `then`, `toJSON` and the rest stay absent.
|
|
43
|
+
if (typeof name !== 'string' || Reflect.has(target, name) || !/^[A-Z]/.test(name)) {
|
|
44
|
+
return Reflect.get(target, name, receiver);
|
|
45
|
+
}
|
|
46
|
+
return forwarder(name);
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
);
|