@webspatial/react-sdk 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +265 -4
- package/dist/Model-DO5ps8NA.d.ts +35 -0
- package/dist/Reality-BDyKL6th.d.ts +256 -0
- package/dist/Reality-DO-itiWW.d.ts +33 -0
- package/dist/SceneGraph-DxH74y6-.d.ts +214 -0
- package/dist/chunk-6JSRUX7P.js +2 -0
- package/dist/chunk-6JSRUX7P.js.map +1 -0
- package/dist/chunk-BTLTBCA7.js +2 -0
- package/dist/chunk-BTLTBCA7.js.map +1 -0
- package/dist/chunk-GG2QK5MA.js +2 -0
- package/dist/chunk-GG2QK5MA.js.map +1 -0
- package/dist/chunk-IOLNY4GP.js +2 -0
- package/dist/chunk-IOLNY4GP.js.map +1 -0
- package/dist/chunk-NWVQY6CN.js +2 -0
- package/dist/chunk-NWVQY6CN.js.map +1 -0
- package/dist/chunk-NXEOIP4Z.js +2 -0
- package/dist/chunk-NXEOIP4Z.js.map +1 -0
- package/dist/chunk-PDUEHFTO.js +2 -0
- package/dist/chunk-PDUEHFTO.js.map +1 -0
- package/dist/chunk-QHUROD77.js +2 -0
- package/dist/chunk-QHUROD77.js.map +1 -0
- package/dist/chunk-UHEO47WY.js +2 -0
- package/dist/chunk-UHEO47WY.js.map +1 -0
- package/dist/chunk-WDOPCAA3.js +19 -0
- package/dist/chunk-WDOPCAA3.js.map +1 -0
- package/dist/eager.d.ts +46 -0
- package/dist/eager.js +8 -0
- package/dist/eager.js.map +1 -0
- package/dist/experimental.d.ts +24 -0
- package/dist/experimental.js +8 -0
- package/dist/experimental.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/facades-client.d.ts +50 -0
- package/dist/internal/facades-client.js +3 -0
- package/dist/internal/facades-client.js.map +1 -0
- package/dist/jsx/jsx-dev-runtime.d.ts +7 -83
- package/dist/jsx/jsx-dev-runtime.js +1 -67
- package/dist/jsx/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx/jsx-runtime.d.ts +81 -2
- package/dist/jsx/jsx-runtime.js +1 -67
- package/dist/jsx/jsx-runtime.js.map +1 -1
- package/dist/jsx-shared-CFDVUVpc.d.ts +16 -0
- package/dist/motionBindingTypes-CjxIC5bP.d.ts +25 -0
- package/dist/runtime/registerEagerEntry.d.ts +8 -0
- package/dist/runtime/registerEagerEntry.js +2 -0
- package/dist/runtime/registerEagerEntry.js.map +1 -0
- package/dist/spatial.d.ts +25 -0
- package/dist/spatial.js +7 -0
- package/dist/spatial.js.map +1 -0
- package/dist/useAnimation-C1LXt-xO.d.ts +28 -0
- package/dist/useMetrics-Bm_Urbtp.d.ts +96 -0
- package/package.json +51 -31
- package/dist/default/index.d.ts +0 -475
- package/dist/default/index.js +0 -4269
- package/dist/default/index.js.map +0 -1
- package/dist/jsx/jsx-dev-runtime.web.d.ts +0 -2
- package/dist/jsx/jsx-dev-runtime.web.js +0 -18
- package/dist/jsx/jsx-dev-runtime.web.js.map +0 -1
- package/dist/jsx/jsx-runtime.web.d.ts +0 -1
- package/dist/jsx/jsx-runtime.web.js +0 -18
- package/dist/jsx/jsx-runtime.web.js.map +0 -1
- package/dist/web/index.d.ts +0 -475
- package/dist/web/index.js +0 -4333
- package/dist/web/index.js.map +0 -1
package/dist/eager.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export { M as Model, a as ModelProps, b as ModelRef } from './Model-DO5ps8NA.js';
|
|
2
|
+
export { A as AttachmentAsset, a as AttachmentEntity, B as Box, B as BoxEntity, C as Cone, C as ConeEntity, b as Cylinder, b as CylinderEntity, E as Entity, M as Material, c as ModelAsset, d as ModelEntity, P as Plane, P as PlaneEntity, S as SceneGraph, e as Sphere, e as SphereEntity, T as Texture, U as UnlitMaterial, S as World, u as useMetrics } from './useMetrics-Bm_Urbtp.js';
|
|
3
|
+
export { E as EntityEventHandler, k as EntityProps, l as EntityRef, m as EntityRefShape, M as ModelLoadEvent, n as ModelSpatialDragEndEvent, o as ModelSpatialDragEvent, p as ModelSpatialDragStartEvent, q as ModelSpatialMagnifyEndEvent, r as ModelSpatialMagnifyEvent, s as ModelSpatialRotateEndEvent, t as ModelSpatialRotateEvent, u as ModelSpatialTapEvent, R as Reality, v as RealityProps, w as SpatialContentReadyCallback, x as SpatialContentReadyContext, y as SpatialDragEndEntityEvent, e as SpatialDragEndEvent, z as SpatialDragEntityEvent, d as SpatialDragEvent, A as SpatialDragStartEntityEvent, c as SpatialDragStartEvent, j as SpatialEventOptions, B as SpatialMagnifyEndEntityEvent, i as SpatialMagnifyEndEvent, C as SpatialMagnifyEntityEvent, h as SpatialMagnifyEvent, D as SpatialRotateEndEntityEvent, g as SpatialRotateEndEvent, F as SpatialRotateEntityEvent, f as SpatialRotateEvent, G as SpatialTapEntityEvent, b as SpatialTapEvent, H as SpatializedDivElementRef, I as SpatializedElementRef, S as SpatializedStatic3DContainerProps, a as SpatializedStatic3DElementRef } from './Reality-BDyKL6th.js';
|
|
4
|
+
export { AttachmentEntityOptions, AttachmentEntityUpdateOptions, BackgroundMaterialType, BaseplateVisibilityType, CornerRadius, JsbAdapterPlatformKind, ModelAssetOptions, ModelComponentOptions, ModelSource, PWAManifest, Point3D, Quaternion, SceneUnit, SceneUnitM, SceneUnitPx, Size, Size3D, SpatialBoxGeometryOptions, SpatialConeGeometryOptions, SpatialCylinderGeometryOptions, SpatialEntityEventType, SpatialEntityOrReality, SpatialEntityProperties, SpatialEntityUserData, SpatialGeometryOptions, SpatialGeometryType, SpatialMaterialType, SpatialModelEntityCreationOptions, SpatialPlaneGeometryOptions, SpatialSceneCreationOptions, SpatialSceneProperties, SpatialSceneType, SpatialSphereGeometryOptions, SpatialTextureResourceOptions, SpatialUnlitMaterialOptions, Spatialized2DElementProperties, SpatializedElementProperties, SpatializedStatic3DElementProperties, Vec3, WorldAlignmentType, WorldScalingType, XRMainSceneConfig, XRPrdConfig, XRSceneResizability, XRSceneSize, XRSpatialSceneConfig, XRSpatialSceneDefaults, XRSpatialSceneOverrides } from '@webspatial/core-sdk';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import { S as SpatialBootProps, W as WebSpatialBootError } from './SceneGraph-DxH74y6-.js';
|
|
7
|
+
export { A as AttachmentAssetProps, a as AttachmentEntityProps, B as BoxEntityProps, C as ConeEntityProps, b as CylinderEntityProps, E as EntityFacadeProps, M as MaterialProps, c as ModelAssetProps, d as ModelEntityProps, P as PlaneEntityProps, e as SceneGraphProps, f as SphereEntityProps, T as TextureProps, U as UnlitMaterialProps, g as WebSpatialMixedEntryError, h as WebSpatialRuntime, i as convertCoordinate, j as enableDebugTool, k as initScene } from './SceneGraph-DxH74y6-.js';
|
|
8
|
+
export { CapabilityKey, WebSpatialRuntimeError, WebSpatialRuntimeSnapshot, WebSpatialRuntimeType } from '@webspatial/core-sdk/runtime';
|
|
9
|
+
export { c as createElement } from './jsx-shared-CFDVUVpc.js';
|
|
10
|
+
import './motionBindingTypes-CjxIC5bP.js';
|
|
11
|
+
import 'react/jsx-runtime';
|
|
12
|
+
import 'react/jsx-dev-runtime';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Eager-mode `bootSpatial` stub.
|
|
16
|
+
*
|
|
17
|
+
* Returns a resolved promise without scheduling any dynamic import,
|
|
18
|
+
* since the eager entry has already statically linked the spatial
|
|
19
|
+
* implementation by the time any user code runs.
|
|
20
|
+
*/
|
|
21
|
+
declare function bootSpatialEager(): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Eager-mode `isSpatialReady` stub. Always returns `true` because the
|
|
24
|
+
* spatial implementation is statically linked at module-evaluation time.
|
|
25
|
+
*/
|
|
26
|
+
declare function isSpatialReadyEager(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Eager-mode `useSpatialReady` stub. Always returns `true` on every
|
|
29
|
+
* render. Implementation does NOT use `useSyncExternalStore` because the
|
|
30
|
+
* value is constant — a plain function call returning a constant is
|
|
31
|
+
* cheaper and avoids the per-component subscription bookkeeping that
|
|
32
|
+
* the lazy-load implementation needs.
|
|
33
|
+
*/
|
|
34
|
+
declare function useSpatialReadyEager(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Eager-mode `onSpatialLoadError` stub. Registers the callback for
|
|
37
|
+
* shape compatibility but never invokes it — the eager entry has no
|
|
38
|
+
* dynamic load and therefore no load failure path.
|
|
39
|
+
*/
|
|
40
|
+
declare function onSpatialLoadErrorEager(_cb: (error: WebSpatialBootError) => void): () => void;
|
|
41
|
+
/** Eager entry `SpatialBoot` — same public props, instant ready status. */
|
|
42
|
+
declare const SpatialBootEager: (props: SpatialBootProps) => React.ReactNode;
|
|
43
|
+
|
|
44
|
+
declare const version: string;
|
|
45
|
+
|
|
46
|
+
export { SpatialBootEager as SpatialBoot, SpatialBootProps, WebSpatialBootError, bootSpatialEager as bootSpatial, isSpatialReadyEager as isSpatialReady, onSpatialLoadErrorEager as onSpatialLoadError, useSpatialReadyEager as useSpatialReady, version };
|
package/dist/eager.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
(function(){
|
|
3
|
+
if(typeof window === 'undefined') return;
|
|
4
|
+
if(!window.__webspatialsdk__) window.__webspatialsdk__ = {}
|
|
5
|
+
window.__webspatialsdk__['react-sdk-version'] = "2.0.0"
|
|
6
|
+
})()
|
|
7
|
+
import{WebSpatialRuntime,convertCoordinate,createSpatialBoot,initScene}from"./chunk-NWVQY6CN.js";import{eagerEntryRegistered}from"./chunk-IOLNY4GP.js";import{WebSpatialMixedEntryError}from"./chunk-6JSRUX7P.js";import{AttachmentAsset,AttachmentEntity,BoxEntity,ConeEntity,CylinderEntity,Entity,Material,Model,ModelAsset,ModelEntity,PlaneEntity,Reality,SceneGraph,SphereEntity,Texture,UnlitMaterial,spatial_exports,useMetrics}from"./chunk-WDOPCAA3.js";import{enableDebugTool}from"./chunk-UHEO47WY.js";import{WebSpatialBootError,WebSpatialRuntimeError,__internalSetSpatialImpl}from"./chunk-GG2QK5MA.js";import{createElement}from"./chunk-PDUEHFTO.js";import"./chunk-QHUROD77.js";import"./chunk-NXEOIP4Z.js";import{useEffect,useRef}from"react";var bootWarned=!1;function bootSpatialEager(){return!bootWarned&&typeof process<"u"&&process.env?.NODE_ENV!=="production"&&(bootWarned=!0,console.warn("[WebSpatial] bootSpatial() is a no-op on @webspatial/react-sdk/eager.")),Promise.resolve()}function isSpatialReadyEager(){return!0}function useSpatialReadyEager(){return!0}function onSpatialLoadErrorEager(_cb){return noop}function noop(){}function useBootSpatialEager(options={}){let{onReady}=options,onReadyRef=useRef(onReady);return onReadyRef.current=onReady,useEffect(()=>{bootSpatialEager().then(()=>{onReadyRef.current?.()})},[]),{status:"ready",error:null,boot:bootSpatialEager}}var SpatialBootEager=createSpatialBoot(useBootSpatialEager);__internalSetSpatialImpl(spatial_exports,eagerEntryRegistered);var version="2.0.0";export{AttachmentAsset,AttachmentEntity,BoxEntity as Box,BoxEntity,ConeEntity as Cone,ConeEntity,CylinderEntity as Cylinder,CylinderEntity,Entity,Material,Model,ModelAsset,ModelEntity,PlaneEntity as Plane,PlaneEntity,Reality,SceneGraph,SpatialBootEager as SpatialBoot,SphereEntity as Sphere,SphereEntity,Texture,UnlitMaterial,WebSpatialBootError,WebSpatialMixedEntryError,WebSpatialRuntime,WebSpatialRuntimeError,SceneGraph as World,bootSpatialEager as bootSpatial,convertCoordinate,createElement,enableDebugTool,initScene,isSpatialReadyEager as isSpatialReady,onSpatialLoadErrorEager as onSpatialLoadError,useMetrics,useSpatialReadyEager as useSpatialReady,version};
|
|
8
|
+
//# sourceMappingURL=eager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/eagerStubs.ts","../src/eager.ts"],"sourcesContent":["// =============================================================================\n// `runtime/eagerStubs.ts` — compatibility stubs for the lazy-load runtime API\n// surface, used by the eager entry (`@webspatial/react-sdk/eager`).\n//\n// The eager entry statically links the spatial implementation, so the\n// bridge / boot / readiness API has no work to do — but consumer code\n// written against the lazy-load default entry expects these names to\n// exist. The stubs here let consumers migrate by changing only their\n// import root.\n//\n// Per the \"Eager-mode entry for spatial-only consumers\" Requirement\n// Scenarios:\n//\n// - `bootSpatial()` returns `Promise.resolve()` immediately\n// - `isSpatialReady()` returns `true`\n// - `useSpatialReady()` returns `true` on first and every render\n// - `onSpatialLoadError(cb)` registers the callback but it is never\n// invoked (eager entry has no dynamic load and therefore no failure)\n//\n// Dev builds emit a one-shot console.warn when `bootSpatial()` is called,\n// reminding the consumer that boot is unnecessary on the eager entry.\n// The warning is gated on `process.env.NODE_ENV !== 'production'` so\n// production builds tree-shake it out.\n// =============================================================================\n\nimport { useEffect, useRef } from 'react'\nimport type { WebSpatialBootError } from './errors'\nimport type {\n BootStatus,\n UseBootSpatialOptions,\n UseBootSpatialResult,\n} from './useBootSpatial'\nimport { createSpatialBoot } from './createSpatialBoot'\n\nlet bootWarned = false\n\n/**\n * Eager-mode `bootSpatial` stub.\n *\n * Returns a resolved promise without scheduling any dynamic import,\n * since the eager entry has already statically linked the spatial\n * implementation by the time any user code runs.\n */\nexport function bootSpatialEager(): Promise<void> {\n if (\n !bootWarned &&\n typeof process !== 'undefined' &&\n process.env?.NODE_ENV !== 'production'\n ) {\n bootWarned = true\n // eslint-disable-next-line no-console\n console.warn(\n '[WebSpatial] bootSpatial() is a no-op on @webspatial/react-sdk/eager.',\n )\n }\n return Promise.resolve()\n}\n\n/**\n * Eager-mode `isSpatialReady` stub. Always returns `true` because the\n * spatial implementation is statically linked at module-evaluation time.\n */\nexport function isSpatialReadyEager(): boolean {\n return true\n}\n\n/**\n * Eager-mode `useSpatialReady` stub. Always returns `true` on every\n * render. Implementation does NOT use `useSyncExternalStore` because the\n * value is constant — a plain function call returning a constant is\n * cheaper and avoids the per-component subscription bookkeeping that\n * the lazy-load implementation needs.\n */\nexport function useSpatialReadyEager(): boolean {\n return true\n}\n\n/**\n * Eager-mode `onSpatialLoadError` stub. Registers the callback for\n * shape compatibility but never invokes it — the eager entry has no\n * dynamic load and therefore no load failure path.\n */\nexport function onSpatialLoadErrorEager(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _cb: (error: WebSpatialBootError) => void,\n): () => void {\n return noop\n}\n\nfunction noop(): void {\n // intentionally empty\n}\n\n/**\n * Eager-mode `useBootSpatial` stub. Reports `ready` immediately; `boot()`\n * delegates to the no-op `bootSpatialEager`.\n */\nexport function useBootSpatialEager(\n options: UseBootSpatialOptions = {},\n): UseBootSpatialResult {\n const { onReady } = options\n const onReadyRef = useRef(onReady)\n onReadyRef.current = onReady\n\n useEffect(() => {\n void bootSpatialEager().then(() => {\n onReadyRef.current?.()\n })\n }, [])\n\n return {\n status: 'ready' satisfies BootStatus,\n error: null,\n boot: bootSpatialEager,\n }\n}\n\n/** Eager entry `SpatialBoot` — same public props, instant ready status. */\nexport const SpatialBootEager = createSpatialBoot(useBootSpatialEager)\n\n// Test-only: reset the one-shot warning latch so multiple test runs\n// can each verify the warning fires on first call.\nexport function __resetEagerStubsForTests(): void {\n bootWarned = false\n}\n","'use client'\n\n// IMPORTANT: this guard MUST be the first import so the mixed-entry\n// registration/validation runs before `./spatial` (imported below) evaluates\n// its polyfill side effects. ESM evaluates static imports in source order\n// before the module body, so placing a `registerReactSdkEntry('eager')` call\n// in this file's body would run AFTER `./spatial`'s side effects.\n//\n// We import a VALUE binding (not a bare side-effect import) and reference it\n// below so consumer bundlers cannot tree-shake the registration chunk away.\n// See `./runtime/registerEagerEntry` for the full rationale.\nimport { eagerEntryRegistered } from './runtime/registerEagerEntry'\n\n// =============================================================================\n// `@webspatial/react-sdk/eager` — eager-mode entry for spatial-only consumers.\n//\n// Purpose: applications that target ONLY WebSpatial runtimes (internal AVP /\n// Pico enterprise apps, App Store apps shipped to fixed spatial devices,\n// deeply spatial-first product surfaces) pay one network request instead of\n// two and skip the `bootSpatial()` round-trip entirely. The lazy-load\n// default entry (`@webspatial/react-sdk`) remains the right choice for\n// web-first consumers who progressively enhance into spatial.\n//\n// This entry SHARES the entire packaging-hygiene contract set with the\n// default entry (per the \"Two distribution forms share packaging hygiene\"\n// Requirement) — the only differences are:\n//\n// 1. Spatial primitives resolve to the REAL implementations from\n// `./spatial` (statically linked), NOT to facade fallbacks.\n// 2. The lazy-load runtime API (`bootSpatial` / `isSpatialReady` /\n// `useSpatialReady` / `onSpatialLoadError` / `WebSpatialBootError`)\n// is a no-op compatibility stub — see `./runtime/eagerStubs.ts`.\n//\n// All other surface (stateless utilities, type re-exports, JSX runtime\n// behavior, `'use client'` RSC boundary) aligns with the default entry by\n// re-exporting the same source modules the default entry uses, so the two\n// entries stay in lockstep without pulling the default-entry facade chunk into\n// the eager static closure.\n//\n// Normative product routing (see `openspec/.../spatial-lazy-load/spec.md`:\n// \"Entry routing\", \"CSR-only for spatial primitives\"): spatial primitives\n// from this entry MUST mount client-only; applications that server-render\n// those primitives MUST use `@webspatial/react-sdk` instead (or CSR-gate\n// their subtree). Packaging-hygiene overlaps with the default entry (ESM,\n// peers, sideEffects, etc.) without extending full façade SSR semantics to\n// eager-imported spatial components.\n//\n// Per spec `tasks.md §16` and the \"Eager-mode entry for spatial-only\n// consumers\" Requirement.\n// =============================================================================\n\n// --- Step 1: statically link the spatial implementation into the bridge ----\n// `import * as SpatialImpl from './spatial'` evaluates the spatial chunk\n// at module-evaluation time, which (a) installs the polyfill side effects\n// (`@webspatial/core-sdk/install-polyfills` + the container `initPolyfill()`\n// bootstrap) and (b) gives us a namespace object containing every real\n// spatial implementation. We hand that namespace to the bridge so any\n// facade-equivalent path (e.g. JSX runtime → facade HOC → bridge lookup)\n// also sees the bridge as ready and immediately commits the real\n// implementation on first render.\n//\n// `__internalSetSpatialImpl` is an internal coupling between this entry\n// and the bridge; it is NOT exported from the default-entry public surface\n// (see `runtime/bridge.ts` for the rationale).\nimport * as SpatialImpl from './spatial'\nimport { __internalSetSpatialImpl } from './runtime/bridge'\n// Keep registration binding live for downstream tree-shaking by passing it\n// through the bridge setup call. A standalone `void eagerEntryRegistered` is\n// pure enough for consumer bundlers to erase, which drops the registration\n// chunk and disables mixed-entry detection.\n__internalSetSpatialImpl(SpatialImpl, eagerEntryRegistered)\n\n// --- Step 2: spatial primitives — REAL implementations from /spatial -------\n// Per the \"Spatial primitives mount real implementations on first render\"\n// Scenario, these MUST resolve to the real implementations, not the\n// facade fallbacks. The names mirror the default entry's facade exports\n// 1-to-1 so a consumer can switch import roots without renaming any\n// symbol — see the \"Migration from default to eager is import-root-only\"\n// Scenario.\n// `withSpatialized2DElementContainer` and `withSpatialMonitor` USED to be\n// re-exported here for default-entry parity. They were demoted to\n// internal-only in the `internalize-hoc-factories` change — the\n// `enable-xr` / `enable-xr-monitor` JSX markers remain the documented\n// public mechanism, and consumers who need a wrapped component for\n// composition with another HOC (e.g. `animated(...)`) should write a\n// thin `forwardRef` shim around `<div enable-xr ref={ref} />`. See the\n// migration guide for the recipe.\nexport {\n Model,\n Reality,\n Entity,\n AttachmentEntity,\n Box,\n BoxEntity,\n Cone,\n ConeEntity,\n Cylinder,\n CylinderEntity,\n ModelEntity,\n Plane,\n PlaneEntity,\n Sphere,\n SphereEntity,\n AttachmentAsset,\n Material,\n ModelAsset,\n Texture,\n UnlitMaterial,\n SceneGraph,\n World,\n useMetrics,\n} from './spatial'\n\n// --- Step 3: lazy-load runtime API as no-op compatibility stubs ------------\n// Per the \"`bootSpatial()` compatibility stub is a no-op\",\n// \"`isSpatialReady` / `useSpatialReady` always report ready\", and\n// \"`onSpatialLoadError` registers but never fires\" Scenarios. These names\n// are kept on the eager entry's surface for source compatibility — a\n// consumer migrating from the default entry should not have to remove\n// `await bootSpatial()` calls.\nexport {\n bootSpatialEager as bootSpatial,\n isSpatialReadyEager as isSpatialReady,\n useSpatialReadyEager as useSpatialReady,\n onSpatialLoadErrorEager as onSpatialLoadError,\n SpatialBootEager as SpatialBoot,\n} from './runtime/eagerStubs'\n// `WebSpatialBootError` is the same class definition the default entry\n// exports — eager stubs simply never throw it, but the class remains\n// importable for type-narrowing convenience and for consumers that catch\n// boot errors generically.\nexport { WebSpatialBootError } from './runtime/errors'\nexport { WebSpatialMixedEntryError } from './runtime/entryRegistry'\n\n// --- Step 4: stateless utilities — shared source modules with default entry -\n// Per the \"Two distribution forms share packaging hygiene\" Requirement\n// these MUST reuse the same source modules the default entry exposes (no\n// redeclaration) so behavior parity remains byte-identical without importing\n// the whole default-entry facade graph into the eager static closure.\nexport { enableDebugTool } from './utils/debugTool'\nexport { convertCoordinate } from './utils/convertCoordinate'\nexport { initScene } from './initScene'\nexport { WebSpatialRuntime } from './webSpatialRuntime'\nexport { WebSpatialRuntimeError } from '@webspatial/core-sdk/runtime'\nexport { createElement } from './jsx/jsx-shared'\n\nexport const version = __WEBSPATIAL_REACT_SDK_VERSION__\n\n// --- Step 5: type-only re-exports — match the default entry surface --------\n// `export type *` re-exports the type-side of every default-entry export\n// (facade prop types, event types, refs, runtime types, core-sdk type\n// re-exports). Zero runtime cost; satisfies the \"named-export set is a\n// strict superset of the default entry\" half of the Eager Requirement\n// for the type surface.\nexport type * from './index'\n"],"mappings":"4sBAyBA,OAAS,UAAW,WAAc,QASlC,IAAI,WAAa,GASV,SAAS,kBAAkC,CAChD,MACE,CAAC,YACD,OAAO,QAAY,KACnB,QAAQ,KAAK,WAAa,eAE1B,WAAa,GAEb,QAAQ,KACN,uEACF,GAEK,QAAQ,QAAQ,CACzB,CAMO,SAAS,qBAA+B,CAC7C,MAAO,EACT,CASO,SAAS,sBAAgC,CAC9C,MAAO,EACT,CAOO,SAAS,wBAEd,IACY,CACZ,OAAO,IACT,CAEA,SAAS,MAAa,CAEtB,CAMO,SAAS,oBACd,QAAiC,CAAC,EACZ,CACtB,GAAM,CAAE,OAAQ,EAAI,QACd,WAAa,OAAO,OAAO,EACjC,kBAAW,QAAU,QAErB,UAAU,IAAM,CACT,iBAAiB,EAAE,KAAK,IAAM,CACjC,WAAW,UAAU,CACvB,CAAC,CACH,EAAG,CAAC,CAAC,EAEE,CACL,OAAQ,QACR,MAAO,KACP,KAAM,gBACR,CACF,CAGO,IAAM,iBAAmB,kBAAkB,mBAAmB,EChDrE,yBAAyB,gBAAa,oBAAoB,EA4EnD,IAAM,QAAU","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { S as SpatializedMotionConfig, U as UseAnimationResult } from './useAnimation-C1LXt-xO.js';
|
|
2
|
+
export { a as SpatializedMotionSegmentConfig } from './useAnimation-C1LXt-xO.js';
|
|
3
|
+
import { AnimationConfig, AnimatedProps, AnimationApi } from '@webspatial/core-sdk';
|
|
4
|
+
export { SpatializedPlaybackApi } from '@webspatial/core-sdk';
|
|
5
|
+
import 'react';
|
|
6
|
+
import './motionBindingTypes-CjxIC5bP.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Ready-gated experimental-entry facade for the real spatial useAnimation hook.
|
|
10
|
+
*
|
|
11
|
+
* @param config - The spatialized motion author config.
|
|
12
|
+
* @returns The animation tuple backed by the spatial implementation.
|
|
13
|
+
*/
|
|
14
|
+
declare function useAnimation(config: SpatializedMotionConfig): UseAnimationResult;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Ready-gated experimental-entry facade for the real spatial useEntityAnimation hook.
|
|
18
|
+
*
|
|
19
|
+
* @param config - The entity animation author config.
|
|
20
|
+
* @returns The animated props tuple backed by the spatial implementation.
|
|
21
|
+
*/
|
|
22
|
+
declare function useEntityAnimation(config: AnimationConfig): [AnimatedProps, AnimationApi];
|
|
23
|
+
|
|
24
|
+
export { SpatializedMotionConfig, UseAnimationResult, useAnimation, useEntityAnimation };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
(function(){
|
|
3
|
+
if(typeof window === 'undefined') return;
|
|
4
|
+
if(!window.__webspatialsdk__) window.__webspatialsdk__ = {}
|
|
5
|
+
window.__webspatialsdk__['react-sdk-version'] = "2.0.0"
|
|
6
|
+
})()
|
|
7
|
+
import{WebSpatialRuntimeError,getSpatialImpl}from"./chunk-GG2QK5MA.js";import"./chunk-NXEOIP4Z.js";function throwAnimationUnavailable(capability){throw new WebSpatialRuntimeError(capability,`${capability} is not available until bootSpatial() has resolved. Wrap the animated subtree in <SpatialBoot> or await bootSpatial() before mounting the component.`)}function useAnimation(config){let real=getSpatialImpl()?.useAnimation;return real?real(config):throwAnimationUnavailable("useAnimation")}function throwAnimationUnavailable2(capability){throw new WebSpatialRuntimeError(capability,`${capability} is not available until bootSpatial() has resolved. Wrap the animated subtree in <SpatialBoot> or await bootSpatial() before mounting the component.`)}function useEntityAnimation(config){let real=getSpatialImpl()?.useEntityAnimation;return real?real(config):throwAnimationUnavailable2("useEntityAnimation")}export{useAnimation,useEntityAnimation};
|
|
8
|
+
//# sourceMappingURL=experimental.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/hooks-web/useAnimation.ts","../src/hooks-web/useEntityAnimation.ts"],"sourcesContent":["'use client'\n\nimport { WebSpatialRuntimeError } from '@webspatial/core-sdk/runtime'\nimport type {\n SpatializedMotionConfig,\n UseAnimationResult,\n} from '../spatialized-container/motion'\nimport { getSpatialImpl } from '../runtime/bridge'\n\n/**\n * Throws the experimental-entry readiness error for capabilities that require the\n * spatial implementation to be loaded first.\n *\n * @param capability - The capability name to include in the runtime error.\n * @returns This function never returns.\n */\nfunction throwAnimationUnavailable(capability: string): never {\n throw new WebSpatialRuntimeError(\n capability,\n `${capability} is not available until bootSpatial() has resolved. Wrap the animated subtree in <SpatialBoot> or await bootSpatial() before mounting the component.`,\n )\n}\n\n/**\n * Ready-gated experimental-entry facade for the real spatial useAnimation hook.\n *\n * @param config - The spatialized motion author config.\n * @returns The animation tuple backed by the spatial implementation.\n */\nexport function useAnimation(\n config: SpatializedMotionConfig,\n): UseAnimationResult {\n const real = getSpatialImpl()?.useAnimation\n if (!real) return throwAnimationUnavailable('useAnimation')\n return real(config)\n}\n","'use client'\n\nimport type {\n AnimatedProps,\n AnimationApi,\n AnimationConfig,\n} from '@webspatial/core-sdk'\nimport { WebSpatialRuntimeError } from '@webspatial/core-sdk/runtime'\nimport { getSpatialImpl } from '../runtime/bridge'\n\n/**\n * Throws the experimental-entry readiness error for capabilities that require the\n * spatial implementation to be loaded first.\n *\n * @param capability - The capability name to include in the runtime error.\n * @returns This function never returns.\n */\nfunction throwAnimationUnavailable(capability: string): never {\n throw new WebSpatialRuntimeError(\n capability,\n `${capability} is not available until bootSpatial() has resolved. Wrap the animated subtree in <SpatialBoot> or await bootSpatial() before mounting the component.`,\n )\n}\n\n/**\n * Ready-gated experimental-entry facade for the real spatial useEntityAnimation hook.\n *\n * @param config - The entity animation author config.\n * @returns The animated props tuple backed by the spatial implementation.\n */\nexport function useEntityAnimation(\n config: AnimationConfig,\n): [AnimatedProps, AnimationApi] {\n const real = getSpatialImpl()?.useEntityAnimation\n if (!real) return throwAnimationUnavailable('useEntityAnimation')\n return real(config)\n}\n"],"mappings":"gHAgBA,SAAS,0BAA0B,WAA2B,CAC5D,MAAM,IAAI,uBACR,WACA,GAAG,UAAU,sJACf,CACF,CAQO,SAAS,aACd,OACoB,CACpB,IAAM,KAAO,eAAe,GAAG,aAC/B,OAAK,KACE,KAAK,MAAM,EADA,0BAA0B,cAAc,CAE5D,CClBA,SAASA,2BAA0B,WAA2B,CAC5D,MAAM,IAAI,uBACR,WACA,GAAG,UAAU,sJACf,CACF,CAQO,SAAS,mBACd,OAC+B,CAC/B,IAAM,KAAO,eAAe,GAAG,mBAC/B,OAAK,KACE,KAAK,MAAM,EADAA,2BAA0B,oBAAoB,CAElE","names":["throwAnimationUnavailable"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { W as WebSpatialBootError, S as SpatialBootProps } from './SceneGraph-DxH74y6-.js';
|
|
2
|
+
export { l as AttachmentAsset, A as AttachmentAssetProps, m as AttachmentEntity, a as AttachmentEntityProps, n as Box, n as BoxEntity, B as BoxEntityProps, o as Cone, o as ConeEntity, C as ConeEntityProps, p as Cylinder, p as CylinderEntity, b as CylinderEntityProps, q as Entity, E as EntityFacadeProps, r as Material, M as MaterialProps, s as ModelAsset, c as ModelAssetProps, t as ModelEntity, d as ModelEntityProps, u as Plane, u as PlaneEntity, P as PlaneEntityProps, v as SceneGraph, e as SceneGraphProps, w as Sphere, w as SphereEntity, f as SphereEntityProps, x as Texture, T as TextureProps, y as UnlitMaterial, U as UnlitMaterialProps, g as WebSpatialMixedEntryError, h as WebSpatialRuntime, v as World, i as convertCoordinate, j as enableDebugTool, k as initScene } from './SceneGraph-DxH74y6-.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
export { CapabilityKey, WebSpatialRuntimeError, WebSpatialRuntimeSnapshot, WebSpatialRuntimeType } from '@webspatial/core-sdk/runtime';
|
|
5
|
+
export { AttachmentEntityOptions, AttachmentEntityUpdateOptions, BackgroundMaterialType, BaseplateVisibilityType, CornerRadius, JsbAdapterPlatformKind, ModelAssetOptions, ModelComponentOptions, ModelSource, PWAManifest, Point3D, Quaternion, SceneUnit, SceneUnitM, SceneUnitPx, Size, Size3D, SpatialBoxGeometryOptions, SpatialConeGeometryOptions, SpatialCylinderGeometryOptions, SpatialEntityEventType, SpatialEntityOrReality, SpatialEntityProperties, SpatialEntityUserData, SpatialGeometryOptions, SpatialGeometryType, SpatialMaterialType, SpatialModelEntityCreationOptions, SpatialPlaneGeometryOptions, SpatialSceneCreationOptions, SpatialSceneProperties, SpatialSceneType, SpatialSphereGeometryOptions, SpatialTextureResourceOptions, SpatialUnlitMaterialOptions, Spatialized2DElementProperties, SpatializedElementProperties, SpatializedStatic3DElementProperties, Vec3, WorldAlignmentType, WorldScalingType, XRMainSceneConfig, XRPrdConfig, XRSceneResizability, XRSceneSize, XRSpatialSceneConfig, XRSpatialSceneDefaults, XRSpatialSceneOverrides } from '@webspatial/core-sdk';
|
|
6
|
+
export { M as Model, R as Reality } from './Reality-DO-itiWW.js';
|
|
7
|
+
export { E as EntityEventHandler, k as EntityProps, l as EntityRef, m as EntityRefShape, M as ModelLoadEvent, n as ModelSpatialDragEndEvent, o as ModelSpatialDragEvent, p as ModelSpatialDragStartEvent, q as ModelSpatialMagnifyEndEvent, r as ModelSpatialMagnifyEvent, s as ModelSpatialRotateEndEvent, t as ModelSpatialRotateEvent, u as ModelSpatialTapEvent, v as RealityProps, w as SpatialContentReadyCallback, x as SpatialContentReadyContext, y as SpatialDragEndEntityEvent, e as SpatialDragEndEvent, z as SpatialDragEntityEvent, d as SpatialDragEvent, A as SpatialDragStartEntityEvent, c as SpatialDragStartEvent, j as SpatialEventOptions, B as SpatialMagnifyEndEntityEvent, i as SpatialMagnifyEndEvent, C as SpatialMagnifyEntityEvent, h as SpatialMagnifyEvent, D as SpatialRotateEndEntityEvent, g as SpatialRotateEndEvent, F as SpatialRotateEntityEvent, f as SpatialRotateEvent, G as SpatialTapEntityEvent, b as SpatialTapEvent, H as SpatializedDivElementRef, I as SpatializedElementRef, S as SpatializedStatic3DContainerProps, a as SpatializedStatic3DElementRef } from './Reality-BDyKL6th.js';
|
|
8
|
+
export { c as createElement } from './jsx-shared-CFDVUVpc.js';
|
|
9
|
+
export { a as ModelProps, b as ModelRef } from './Model-DO5ps8NA.js';
|
|
10
|
+
import 'react/jsx-runtime';
|
|
11
|
+
import './motionBindingTypes-CjxIC5bP.js';
|
|
12
|
+
import 'react/jsx-dev-runtime';
|
|
13
|
+
|
|
14
|
+
declare function bootSpatial(): Promise<void>;
|
|
15
|
+
|
|
16
|
+
type SpatialLoadErrorListener = (error: WebSpatialBootError) => void;
|
|
17
|
+
declare function isSpatialReady(): boolean;
|
|
18
|
+
declare function onSpatialLoadError(listener: SpatialLoadErrorListener): () => void;
|
|
19
|
+
|
|
20
|
+
declare const SpatialBoot: (props: SpatialBootProps) => React.ReactNode;
|
|
21
|
+
|
|
22
|
+
declare function useSpatialReady(): boolean;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* `useMetrics` placeholder (web-mode fallback).
|
|
26
|
+
*
|
|
27
|
+
* Module-level frozen singleton with module-level constant function
|
|
28
|
+
* references for `pointToPhysical` / `physicalToPoint`. Invoking either
|
|
29
|
+
* conversion function throws `WebSpatialRuntimeError` — including in plain
|
|
30
|
+
* web, during SSR, and in a WebSpatial runtime while the bridge is not ready
|
|
31
|
+
* (or while a component instance remains pinned to the placeholder).
|
|
32
|
+
*
|
|
33
|
+
* Per spatial-lazy-load spec "Hook placeholders" Requirement (the
|
|
34
|
+
* `useMetrics` row in the public-hook table) + "useMetrics function identities
|
|
35
|
+
* are stable across renders" / "useMetrics is SSR-safe" Scenarios.
|
|
36
|
+
*
|
|
37
|
+
* Pure constants module — no React imports, no `'use client'` directive.
|
|
38
|
+
* Safe to import from server-only modules.
|
|
39
|
+
*/
|
|
40
|
+
declare function pointToPhysical(_point: number, _options?: object): number;
|
|
41
|
+
declare function physicalToPoint(_physical: number, _options?: object): number;
|
|
42
|
+
declare const METRICS_PLACEHOLDER: Readonly<{
|
|
43
|
+
pointToPhysical: typeof pointToPhysical;
|
|
44
|
+
physicalToPoint: typeof physicalToPoint;
|
|
45
|
+
}>;
|
|
46
|
+
type MetricsPlaceholder = typeof METRICS_PLACEHOLDER;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Public `useMetrics` hook.
|
|
50
|
+
*
|
|
51
|
+
* Per spatial-lazy-load spec "Hook placeholders" Requirement: the
|
|
52
|
+
* placeholder-vs-real selection is decided ONCE per component instance via
|
|
53
|
+
* a `useState` initializer. In plain web, the placeholder conversion
|
|
54
|
+
* functions throw `WebSpatialRuntimeError` when invoked. The hook never
|
|
55
|
+
* switches mid-life: a component that first invoked the placeholder keeps
|
|
56
|
+
* invoking the placeholder for its entire lifetime, even after
|
|
57
|
+
* `bootSpatial()` resolves. To get the real hook implementation, the
|
|
58
|
+
* component MUST be unmounted and remounted (e.g. via a `key` change,
|
|
59
|
+
* parent unmount, or page reload).
|
|
60
|
+
*
|
|
61
|
+
* This decision lives in `useState`'s initializer (called once per
|
|
62
|
+
* instance) — that is what allows the placeholder and the real hook to
|
|
63
|
+
* differ in their internal React Hook call sequences without violating
|
|
64
|
+
* the Rules of Hooks.
|
|
65
|
+
*/
|
|
66
|
+
declare function useMetrics(): MetricsPlaceholder;
|
|
67
|
+
|
|
68
|
+
declare const version: string;
|
|
69
|
+
|
|
70
|
+
export { SpatialBoot, SpatialBootProps, WebSpatialBootError, bootSpatial, isSpatialReady, onSpatialLoadError, useMetrics, useSpatialReady, version };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
(function(){
|
|
3
|
+
if(typeof window === 'undefined') return;
|
|
4
|
+
if(!window.__webspatialsdk__) window.__webspatialsdk__ = {}
|
|
5
|
+
window.__webspatialsdk__['react-sdk-version'] = "2.0.0"
|
|
6
|
+
})()
|
|
7
|
+
import{WebSpatialRuntime,convertCoordinate,createSpatialBoot,initScene}from"./chunk-NWVQY6CN.js";import{WebSpatialMixedEntryError,registerReactSdkEntry}from"./chunk-6JSRUX7P.js";import{enableDebugTool}from"./chunk-UHEO47WY.js";import{Model,Reality,bootSpatial,useSpatialReady,warnBootForgotten}from"./chunk-BTLTBCA7.js";import{WebSpatialBootError,WebSpatialRuntimeError,getSpatialImpl,isSpatialReady,onSpatialLoadError,requireSpatialImpl}from"./chunk-GG2QK5MA.js";import{createElement}from"./chunk-PDUEHFTO.js";import"./chunk-QHUROD77.js";import"./chunk-NXEOIP4Z.js";import{useCallback,useEffect,useRef,useState}from"react";function useBootSpatial(options={}){let{auto=!0,onReady,onError}=options,[status,setStatus]=useState("idle"),[error,setError]=useState(null),onReadyRef=useRef(onReady),onErrorRef=useRef(onError);onReadyRef.current=onReady,onErrorRef.current=onError;let boot=useCallback(async()=>{setStatus("booting"),setError(null);try{await bootSpatial(),setStatus("ready"),onReadyRef.current?.()}catch(err){if(err instanceof WebSpatialBootError){setStatus("failed"),setError(err),onErrorRef.current?.(err);return}throw err}},[]);return useEffect(()=>{auto&&boot()},[auto,boot]),{status,error,boot}}var SpatialBoot=createSpatialBoot(useBootSpatial);import{forwardRef}from"react";import{jsx}from"react/jsx-runtime";function createEntityRefFacade(componentName,pickReal){function Impl(props,ref){if(!useSpatialReady())return warnBootForgotten(componentName),null;let RealComponent=pickReal(requireSpatialImpl());return jsx(RealComponent,{...props,ref})}let Facade=forwardRef(Impl);return Facade.displayName=componentName,Facade}function createNullFacade(componentName,pickReal){function Facade(props){if(!useSpatialReady())return warnBootForgotten(componentName),null;let RealComponent=pickReal(requireSpatialImpl());return jsx(RealComponent,{...props})}return Facade.displayName=componentName,Facade}var Entity=createEntityRefFacade("Entity",impl=>impl.Entity),BoxEntity=createEntityRefFacade("BoxEntity",impl=>impl.BoxEntity),SphereEntity=createEntityRefFacade("SphereEntity",impl=>impl.SphereEntity),ConeEntity=createEntityRefFacade("ConeEntity",impl=>impl.ConeEntity),CylinderEntity=createEntityRefFacade("CylinderEntity",impl=>impl.CylinderEntity),PlaneEntity=createEntityRefFacade("PlaneEntity",impl=>impl.PlaneEntity),ModelEntity=createEntityRefFacade("ModelEntity",impl=>impl.ModelEntity),AttachmentEntity=createNullFacade("AttachmentEntity",impl=>impl.AttachmentEntity);import{jsx as jsx2}from"react/jsx-runtime";function createNullFacade2(componentName,pickReal){function Facade(props){if(!useSpatialReady())return warnBootForgotten(componentName),null;let RealComponent=pickReal(requireSpatialImpl());return jsx2(RealComponent,{...props})}return Facade.displayName=componentName,Facade}var UnlitMaterial=createNullFacade2("UnlitMaterial",impl=>impl.UnlitMaterial),Material=createNullFacade2("Material",impl=>impl.Material),Texture=createNullFacade2("Texture",impl=>impl.Texture),ModelAsset=createNullFacade2("ModelAsset",impl=>impl.ModelAsset),AttachmentAsset=createNullFacade2("AttachmentAsset",impl=>impl.AttachmentAsset);import{jsx as jsx3}from"react/jsx-runtime";function SceneGraph({children}){if(!useSpatialReady())return warnBootForgotten("SceneGraph"),null;let RealSceneGraph=requireSpatialImpl().SceneGraph;return jsx3(RealSceneGraph,{children})}SceneGraph.displayName="SceneGraph";import{useState as useState2}from"react";function throwMetricsConversionUnavailable(){throw new WebSpatialRuntimeError("useMetrics","useMetrics conversion functions are not available until bootSpatial() has resolved and the component remounts with the real hook implementation")}function pointToPhysical(_point,_options){return throwMetricsConversionUnavailable()}function physicalToPoint(_physical,_options){return throwMetricsConversionUnavailable()}var METRICS_PLACEHOLDER=Object.freeze({pointToPhysical,physicalToPoint});function useMetricsPlaceholder(){return METRICS_PLACEHOLDER}function useMetrics(){let[impl]=useState2(()=>isSpatialReady()?getSpatialImpl()?.useMetrics??useMetricsPlaceholder:useMetricsPlaceholder);return impl()}registerReactSdkEntry("lazy");var version="2.0.0";export{AttachmentAsset,AttachmentEntity,BoxEntity as Box,BoxEntity,ConeEntity as Cone,ConeEntity,CylinderEntity as Cylinder,CylinderEntity,Entity,Material,Model,ModelAsset,ModelEntity,PlaneEntity as Plane,PlaneEntity,Reality,SceneGraph,SpatialBoot,SphereEntity as Sphere,SphereEntity,Texture,UnlitMaterial,WebSpatialBootError,WebSpatialMixedEntryError,WebSpatialRuntime,WebSpatialRuntimeError,SceneGraph as World,bootSpatial,convertCoordinate,createElement,enableDebugTool,initScene,isSpatialReady,onSpatialLoadError,useMetrics,useSpatialReady,version};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runtime/useBootSpatial.ts","../src/runtime/SpatialBoot.tsx","../src/facades/entities.tsx","../src/facades/resources.tsx","../src/facades/SceneGraph.tsx","../src/hooks-web/useMetrics.ts","../src/hooks-web/useMetrics-placeholder.ts","../src/index.ts"],"sourcesContent":["'use client'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { bootSpatial } from './boot'\nimport { WebSpatialBootError } from './errors'\n\nexport type BootStatus = 'idle' | 'booting' | 'ready' | 'failed'\n\nexport type UseBootSpatialOptions = {\n /**\n * When `true` (default), invokes `bootSpatial()` once after mount.\n * Set to `false` to call `boot()` manually.\n */\n auto?: boolean\n onReady?: () => void\n onError?: (error: WebSpatialBootError) => void\n}\n\nexport type UseBootSpatialResult = {\n status: BootStatus\n error: WebSpatialBootError | null\n /** (Re)run `bootSpatial()`. Updates `status` / `error` while in flight. */\n boot: () => Promise<void>\n}\n\n/**\n * Internal hook used by `<SpatialBoot>`. Not exported from the package entry;\n * a public `useBootSpatial` MAY be added in a future release if needed.\n */\nexport function useBootSpatial(\n options: UseBootSpatialOptions = {},\n): UseBootSpatialResult {\n const { auto = true, onReady, onError } = options\n const [status, setStatus] = useState<BootStatus>('idle')\n const [error, setError] = useState<WebSpatialBootError | null>(null)\n const onReadyRef = useRef(onReady)\n const onErrorRef = useRef(onError)\n onReadyRef.current = onReady\n onErrorRef.current = onError\n\n const boot = useCallback(async () => {\n setStatus('booting')\n setError(null)\n try {\n await bootSpatial()\n setStatus('ready')\n onReadyRef.current?.()\n } catch (err: unknown) {\n if (err instanceof WebSpatialBootError) {\n setStatus('failed')\n setError(err)\n onErrorRef.current?.(err)\n return\n }\n throw err\n }\n }, [])\n\n useEffect(() => {\n if (!auto) return\n void boot()\n }, [auto, boot])\n\n return { status, error, boot }\n}\n","'use client'\n\nimport { createSpatialBoot } from './createSpatialBoot'\nimport { useBootSpatial } from './useBootSpatial'\nexport type { SpatialBootProps } from './createSpatialBoot'\n\nexport const SpatialBoot = /* @__PURE__ */ createSpatialBoot(useBootSpatial)\n","'use client'\n\nimport { ComponentType, ForwardedRef, forwardRef } from 'react'\nimport type {\n SpatialBoxGeometryOptions,\n SpatialConeGeometryOptions,\n SpatialCylinderGeometryOptions,\n SpatialPlaneGeometryOptions,\n SpatialSphereGeometryOptions,\n} from '@webspatial/core-sdk'\nimport type { EntityRefShape } from '../reality/hooks/useEntityRef'\nimport type { EntityEventHandler, EntityProps } from '../reality/type'\nimport { requireSpatialImpl } from '../runtime/bridge'\nimport { useSpatialReady } from '../runtime/useSpatialReady'\nimport { warnBootForgotten } from './shared/warnBootForgotten'\n\nexport type { EntityRefShape }\n\ntype SpatialImpl = ReturnType<typeof requireSpatialImpl>\n\n/**\n * Factory for entity-class facades whose documented fallback is `null`.\n * The facade subscribes to bridge readiness via `useSpatialReady()` and\n * renders the real implementation only after `bootSpatial()` resolves in\n * a WebSpatial runtime. Per spec \"Component facades\" Requirement +\n * per-component fallback table.\n *\n * **PARITY (spec tasks.md §15.6)**: this Path 1 fallback is pinned\n * by `runtime-capabilities` \"Unsupported HTML component rendering\"\n * Scenario (\"MUST not render corresponding DOM/entity node\"). Real\n * `*Entity` components (`src/reality/components/*Entity.tsx`) currently\n * throw when `useRealityContext()` is null instead of rendering null,\n * which is a real-impl drift tracked under §15.8 (see\n * `src/__tests__/parity.test.tsx` \"Entity-class parity\" `it.todo`).\n * Do not modify this Path 1 `null` fallback without first aligning the\n * real-impl branch.\n */\nfunction createEntityRefFacade<P>(\n componentName: string,\n pickReal: (impl: SpatialImpl) => unknown,\n) {\n function Impl(props: P, ref: ForwardedRef<EntityRefShape>) {\n const ready = useSpatialReady()\n if (!ready) {\n warnBootForgotten(componentName)\n return null\n }\n const RealComponent = pickReal(requireSpatialImpl()) as ComponentType<\n P & { ref?: unknown }\n >\n return <RealComponent {...(props as P)} ref={ref as any} />\n }\n const Facade = forwardRef<EntityRefShape, P>(Impl as any)\n Facade.displayName = componentName\n return Facade\n}\n\n/** Factory for facades whose real impl is a plain function component (no ref). */\nfunction createNullFacade<P>(\n componentName: string,\n pickReal: (impl: SpatialImpl) => unknown,\n) {\n function Facade(props: P) {\n const ready = useSpatialReady()\n if (!ready) {\n warnBootForgotten(componentName)\n return null\n }\n const RealComponent = pickReal(requireSpatialImpl()) as ComponentType<any>\n return <RealComponent {...(props as any)} />\n }\n Facade.displayName = componentName\n return Facade\n}\n\n// Prop shapes mirror src/reality/components/*Entity.tsx so consumers get the\n// same TypeScript signatures from the default-entry facade as they would\n// from the real spatial implementation.\n\ntype WithChildren<T> = T & { children?: React.ReactNode }\nexport type EntityFacadeProps = WithChildren<EntityProps>\nexport type BoxEntityProps = WithChildren<\n EntityProps & { materials?: string[] } & SpatialBoxGeometryOptions\n>\nexport type SphereEntityProps = WithChildren<\n EntityProps & { materials?: string[] } & SpatialSphereGeometryOptions\n>\nexport type ConeEntityProps = WithChildren<\n EntityProps & { materials?: string[] } & SpatialConeGeometryOptions\n>\nexport type CylinderEntityProps = WithChildren<\n EntityProps & { materials?: string[] } & SpatialCylinderGeometryOptions\n>\nexport type PlaneEntityProps = WithChildren<\n EntityProps & { materials?: string[] } & SpatialPlaneGeometryOptions\n>\nexport type ModelEntityProps = WithChildren<\n EntityProps & EntityEventHandler & { model: string; materials?: string[] }\n>\nexport type AttachmentEntityProps = {\n attachment: string\n position?: [number, number, number]\n size: { width: number; height: number }\n}\n\n// `/* @__PURE__ */` annotations on each factory call: tells the consumer\n// bundler (and the spatial-lazy-load §9.6 lint) that the factory invocation\n// has no observable side effect, so unused entity facades can be tree-shaken\n// out of the consumer bundle. The factories themselves only call\n// `forwardRef` / set `displayName` — both module-private pure operations.\nexport const Entity = /* @__PURE__ */ createEntityRefFacade<EntityFacadeProps>(\n 'Entity',\n impl => impl.Entity,\n)\nexport const BoxEntity = /* @__PURE__ */ createEntityRefFacade<BoxEntityProps>(\n 'BoxEntity',\n impl => impl.BoxEntity,\n)\nexport const SphereEntity =\n /* @__PURE__ */ createEntityRefFacade<SphereEntityProps>(\n 'SphereEntity',\n impl => impl.SphereEntity,\n )\nexport const ConeEntity =\n /* @__PURE__ */ createEntityRefFacade<ConeEntityProps>(\n 'ConeEntity',\n impl => impl.ConeEntity,\n )\nexport const CylinderEntity =\n /* @__PURE__ */ createEntityRefFacade<CylinderEntityProps>(\n 'CylinderEntity',\n impl => impl.CylinderEntity,\n )\nexport const PlaneEntity =\n /* @__PURE__ */ createEntityRefFacade<PlaneEntityProps>(\n 'PlaneEntity',\n impl => impl.PlaneEntity,\n )\nexport const ModelEntity =\n /* @__PURE__ */ createEntityRefFacade<ModelEntityProps>(\n 'ModelEntity',\n impl => impl.ModelEntity,\n )\n\nexport const AttachmentEntity =\n /* @__PURE__ */ createNullFacade<AttachmentEntityProps>(\n 'AttachmentEntity',\n impl => impl.AttachmentEntity,\n )\n\n// Public aliases mirror src/reality/components/index.tsx.\nexport {\n BoxEntity as Box,\n ConeEntity as Cone,\n CylinderEntity as Cylinder,\n PlaneEntity as Plane,\n SphereEntity as Sphere,\n}\n","'use client'\n\nimport { ComponentType, ReactNode } from 'react'\nimport type { SpatialUnlitMaterialOptions } from '@webspatial/core-sdk'\nimport { requireSpatialImpl } from '../runtime/bridge'\nimport { useSpatialReady } from '../runtime/useSpatialReady'\nimport { warnBootForgotten } from './shared/warnBootForgotten'\n\ntype SpatialImpl = ReturnType<typeof requireSpatialImpl>\n\n/**\n * Factory for material / texture / asset facades. Fallback is `null` per\n * spec's per-component fallback table (\"Unsupported HTML component\n * rendering\" Scenario in runtime-capabilities + facade table).\n *\n * **PARITY (spec tasks.md §15.6)**: this Path 1 fallback is pinned by\n * `runtime-capabilities` \"Unsupported HTML component rendering\"\n * Scenario. Real-impl Path 2 alignment for materials / textures / assets\n * is tracked under §15.8 (see `src/__tests__/parity.test.tsx`\n * \"Material / Texture / *Asset parity\" `it.todo`). Do not modify this\n * Path 1 `null` fallback without first aligning the real-impl branch.\n */\nfunction createNullFacade<P>(\n componentName: string,\n pickReal: (impl: SpatialImpl) => unknown,\n) {\n function Facade(props: P) {\n const ready = useSpatialReady()\n if (!ready) {\n warnBootForgotten(componentName)\n return null\n }\n const RealComponent = pickReal(requireSpatialImpl()) as ComponentType<any>\n return <RealComponent {...(props as any)} />\n }\n Facade.displayName = componentName\n return Facade\n}\n\nexport type UnlitMaterialProps = {\n children?: ReactNode\n id: string\n} & SpatialUnlitMaterialOptions\n\nexport type MaterialProps = { type: 'unlit' } & UnlitMaterialProps\n\nexport type TextureProps = {\n children?: ReactNode\n id: string\n url: string\n onLoad?: () => void\n onError?: (error: unknown) => void\n}\n\nexport type ModelAssetProps = {\n children?: ReactNode\n id: string\n src: string\n onLoad?: () => void\n onError?: (error: unknown) => void\n}\n\nexport type AttachmentAssetProps = {\n name: string\n children?: ReactNode\n}\n\n// `/* @__PURE__ */` annotations on the factory calls so the consumer\n// bundler tree-shakes unused asset / material facades and the\n// spatial-lazy-load §9.6 lint accepts them as module-private pure\n// initialization.\nexport const UnlitMaterial =\n /* @__PURE__ */ createNullFacade<UnlitMaterialProps>(\n 'UnlitMaterial',\n impl => impl.UnlitMaterial,\n )\n\nexport const Material = /* @__PURE__ */ createNullFacade<MaterialProps>(\n 'Material',\n impl => impl.Material,\n)\n\nexport const Texture = /* @__PURE__ */ createNullFacade<TextureProps>(\n 'Texture',\n impl => impl.Texture,\n)\n\nexport const ModelAsset = /* @__PURE__ */ createNullFacade<ModelAssetProps>(\n 'ModelAsset',\n impl => impl.ModelAsset,\n)\n\nexport const AttachmentAsset =\n /* @__PURE__ */ createNullFacade<AttachmentAssetProps>(\n 'AttachmentAsset',\n impl => impl.AttachmentAsset,\n )\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { requireSpatialImpl } from '../runtime/bridge'\nimport { useSpatialReady } from '../runtime/useSpatialReady'\nimport { warnBootForgotten } from './shared/warnBootForgotten'\n\nexport type SceneGraphProps = {\n children?: ReactNode\n}\n\n/**\n * Default-entry facade for `SceneGraph`. Fallback is `null` (children NOT\n * mounted), matching entity / asset facades and the usual authoring shape\n * under `<Reality>` (whose fallback already suppresses the child subtree).\n * Per spec per-component fallback table (\"`SceneGraph` / `World` → `null`\").\n *\n * **PARITY (spec tasks.md §15.6)**: Path 2 unpinned in\n * `runtime-capabilities` today; the parity test is tracked as `it.todo`\n * under §15.8 (see `src/__tests__/parity.test.tsx`). Once the real-impl\n * unsupported branch lands or the spec amendment defines it, the\n * existing `null` fallback here MUST stay aligned.\n */\nexport function SceneGraph({ children }: SceneGraphProps) {\n const ready = useSpatialReady()\n if (!ready) {\n warnBootForgotten('SceneGraph')\n return null\n }\n const RealSceneGraph = requireSpatialImpl().SceneGraph\n return <RealSceneGraph>{children}</RealSceneGraph>\n}\nSceneGraph.displayName = 'SceneGraph'\n\n// Public alias matches src/reality/components/index.tsx (`export {\n// SceneGraph as World } from './SceneGraph'`).\nexport { SceneGraph as World }\n","'use client'\n\nimport { useState } from 'react'\nimport { getSpatialImpl, isSpatialReady } from '../runtime/bridge'\nimport {\n type MetricsPlaceholder,\n useMetricsPlaceholder,\n} from './useMetrics-placeholder'\n\ntype MetricsImpl = () => MetricsPlaceholder\n\n/**\n * Public `useMetrics` hook.\n *\n * Per spatial-lazy-load spec \"Hook placeholders\" Requirement: the\n * placeholder-vs-real selection is decided ONCE per component instance via\n * a `useState` initializer. In plain web, the placeholder conversion\n * functions throw `WebSpatialRuntimeError` when invoked. The hook never\n * switches mid-life: a component that first invoked the placeholder keeps\n * invoking the placeholder for its entire lifetime, even after\n * `bootSpatial()` resolves. To get the real hook implementation, the\n * component MUST be unmounted and remounted (e.g. via a `key` change,\n * parent unmount, or page reload).\n *\n * This decision lives in `useState`'s initializer (called once per\n * instance) — that is what allows the placeholder and the real hook to\n * differ in their internal React Hook call sequences without violating\n * the Rules of Hooks.\n */\nexport function useMetrics(): MetricsPlaceholder {\n const [impl] = useState<MetricsImpl>(() => {\n if (!isSpatialReady()) return useMetricsPlaceholder\n const real = getSpatialImpl()?.useMetrics\n return (real ?? useMetricsPlaceholder) as MetricsImpl\n })\n return impl()\n}\n","/**\n * `useMetrics` placeholder (web-mode fallback).\n *\n * Module-level frozen singleton with module-level constant function\n * references for `pointToPhysical` / `physicalToPoint`. Invoking either\n * conversion function throws `WebSpatialRuntimeError` — including in plain\n * web, during SSR, and in a WebSpatial runtime while the bridge is not ready\n * (or while a component instance remains pinned to the placeholder).\n *\n * Per spatial-lazy-load spec \"Hook placeholders\" Requirement (the\n * `useMetrics` row in the public-hook table) + \"useMetrics function identities\n * are stable across renders\" / \"useMetrics is SSR-safe\" Scenarios.\n *\n * Pure constants module — no React imports, no `'use client'` directive.\n * Safe to import from server-only modules.\n */\n\nimport { WebSpatialRuntimeError } from '@webspatial/core-sdk/runtime'\n\nfunction throwMetricsConversionUnavailable(): never {\n throw new WebSpatialRuntimeError(\n 'useMetrics',\n 'useMetrics conversion functions are not available until bootSpatial() has resolved and the component remounts with the real hook implementation',\n )\n}\n\nfunction pointToPhysical(_point: number, _options?: object): number {\n return throwMetricsConversionUnavailable()\n}\n\nfunction physicalToPoint(_physical: number, _options?: object): number {\n return throwMetricsConversionUnavailable()\n}\n\nconst METRICS_PLACEHOLDER = Object.freeze({\n pointToPhysical,\n physicalToPoint,\n})\n\nexport type MetricsPlaceholder = typeof METRICS_PLACEHOLDER\n\n/**\n * Returns the frozen module-level metrics singleton. The two function\n * references are stable across the page lifetime (consumers using them in\n * `useEffect` dependency arrays get no re-runs).\n */\nexport function useMetricsPlaceholder(): MetricsPlaceholder {\n return METRICS_PLACEHOLDER\n}\n","// =============================================================================\n// `@webspatial/react-sdk` default entry — lazy-load v1.\n//\n// Per spatial-lazy-load spec tasks.md §7.1, the default entry exposes ONLY the\n// documented public surface: bridge / boot / readiness API, the spatial\n// primitive **facades** (which lazy-load the real implementation via\n// `bootSpatial()`), the `useMetrics` placeholder-or-real selector, stateless\n// utilities (Group B), pure re-exports (Group C), and the deprecated\n// `createElement` export retained for the classic JSX transform.\n//\n// Notably absent (per the BREAKING bullet in the proposal): the four internal\n// containers / monitors `SpatializedContainer`, `Spatialized2DElementContainer`,\n// `SpatializedStatic3DElementContainer`, and `SpatialMonitor`. They were\n// previously exposed via `export * from './spatialized-container'` /\n// `./spatialized-container-monitor` and are now facade-HOC implementation\n// details only reachable through the `withSpatialized2DElementContainer` /\n// `withSpatialMonitor` facade HOCs.\n//\n// Real spatial implementation modules (`./Model`, `./reality/*`, the\n// `./spatialized-container/*` and `./spatialized-container-monitor/*` runtime\n// values, and the real `./useMetrics`) MUST NOT be statically reachable from\n// this file. Per spec tasks.md §7.3 the only path from default entry to the\n// spatial implementation is the bridge's dynamic `import('./spatial')` (PR 5\n// publishes the corresponding `@webspatial/react-sdk/spatial` exports\n// subpath). The top-level `initPolyfill()` side effect that previously lived\n// here has been moved into `src/spatial/index.ts` (per spec tasks.md §7.2) so\n// the polyfill installs when the spatial chunk loads, not on every default\n// import.\n// =============================================================================\n\nimport { registerReactSdkEntry } from './runtime/entryRegistry'\n\nregisterReactSdkEntry('lazy')\n\n// --- Lazy-load runtime: bridge / boot / readiness / error class --------------\nexport { bootSpatial } from './runtime/boot'\nexport { WebSpatialMixedEntryError } from './runtime/entryRegistry'\nexport { isSpatialReady, onSpatialLoadError } from './runtime/bridge'\nexport { SpatialBoot } from './runtime/SpatialBoot'\nexport { useSpatialReady } from './runtime/useSpatialReady'\nexport { WebSpatialBootError } from './runtime/errors'\nexport type { SpatialBootProps } from './runtime/SpatialBoot'\n\n// --- Runtime capability infrastructure (from @webspatial/core-sdk/runtime) ----\nexport { WebSpatialRuntime } from './webSpatialRuntime'\nexport { WebSpatialRuntimeError } from '@webspatial/core-sdk/runtime'\nexport type {\n CapabilityKey,\n WebSpatialRuntimeSnapshot,\n WebSpatialRuntimeType,\n} from '@webspatial/core-sdk/runtime'\n\n// --- Core-sdk type re-exports (zero runtime cost) ---------------------------\n// `@webspatial/core-sdk` remains a regular dependency of this package because\n// the spatial/eager implementation graphs use its real runtime classes.\n// The default entry bundles `@webspatial/core-sdk/runtime` at build time\n// (not a runtime `import '@webspatial/core-sdk'`). It MUST NOT reach the\n// spatial implementation modules or the core-sdk main entry graph.\n// To keep the \"single-package installation, single-package import\" TypeScript\n// experience, the documented user-facing TYPE surface of core-sdk is still\n// re-exported here as declaration-only API.\n//\n// IMPORTANT: only TYPE-only re-exports live here. Re-exporting heavy\n// runtime classes (`Spatial`, `SpatialSession`, `SpatializedDynamic3DElement`,\n// etc.) would inflate the §9.2 marginal-delta budget — every consumer that\n// imports `@webspatial/react-sdk` would link the runtime class into their\n// main bundle even when they only meant to use a facade. Power users who\n// genuinely need the runtime classes (currently only the SDK's own demos\n// like `apps/test-server`) can still `import from '@webspatial/core-sdk'`\n// directly; the package is reachable through the dependency graph either\n// way. See `openspec/changes/lazy-load-spatial-runtime/tasks.md` follow-up\n// notes for the rationale.\n//\n// Names that already resolve to a richer parameterized type via\n// `./spatialized-container/types` (the `SpatialTapEvent` / `SpatialDragEvent`\n// family) intentionally do NOT appear here — re-exporting the simpler\n// core-sdk version of the same name would shadow the more useful one in\n// consumer IDEs.\nexport type {\n // Common scalar types not already covered by `spatialized-container/types`.\n CornerRadius,\n // Backplate / world configuration (consumer-facing scene properties).\n BackgroundMaterialType,\n BaseplateVisibilityType,\n WorldScalingType,\n WorldAlignmentType,\n SpatialSceneType,\n // Scene size / unit shapes.\n Size,\n Size3D,\n SceneUnit,\n SceneUnitPx,\n SceneUnitM,\n SpatialSceneCreationOptions,\n SpatialSceneProperties,\n // Element-level configuration (consumer-facing container props).\n SpatializedElementProperties,\n Spatialized2DElementProperties,\n SpatializedStatic3DElementProperties,\n // Geometry options (configure entity geometry from JS).\n SpatialGeometryType,\n SpatialGeometryOptions,\n SpatialBoxGeometryOptions,\n SpatialPlaneGeometryOptions,\n SpatialSphereGeometryOptions,\n SpatialConeGeometryOptions,\n SpatialCylinderGeometryOptions,\n // Material / texture options.\n SpatialMaterialType,\n SpatialUnlitMaterialOptions,\n SpatialTextureResourceOptions,\n // Model / asset options.\n ModelSource,\n ModelComponentOptions,\n ModelAssetOptions,\n SpatialModelEntityCreationOptions,\n // Entity-level types (configuration, user data, event taxonomy).\n SpatialEntityProperties,\n SpatialEntityUserData,\n SpatialEntityEventType,\n SpatialEntityOrReality,\n // Attachment options.\n AttachmentEntityOptions,\n AttachmentEntityUpdateOptions,\n // PWA manifest + scene config (used by builder tooling and consumer\n // manifest authoring).\n XRSceneSize,\n XRSceneResizability,\n XRMainSceneConfig,\n XRSpatialSceneDefaults,\n XRSpatialSceneOverrides,\n XRSpatialSceneConfig,\n XRPrdConfig,\n PWAManifest,\n JsbAdapterPlatformKind,\n} from '@webspatial/core-sdk'\n\n// --- Stateless utilities (Group B: gracefully degrade via bridge session) ----\n// `enableDebugTool` is imported from its source file (NOT from `./utils`)\n// so the `./utils/index.ts` barrel — which still re-exports `getSession`\n// for spatial-chunk callers — does NOT enter the default-entry static\n// module graph. This protects against bundler heuristics that may pull\n// barrel re-exports as a unit. Per `tasks.md §12.9` calibration follow-up.\nexport { enableDebugTool } from './utils/debugTool'\nexport { convertCoordinate } from './utils/convertCoordinate'\n// `getAbsoluteUrl` USED to be exported here as a Group C \"stateless\n// utility\" until the v2 cycle removed it. The helper still exists at\n// `src/internal/urlUtils.ts` and is consumed by `Texture.tsx` /\n// `ModelAsset.tsx` via a relative import; it is no longer reachable\n// from the published `dist/index.js` / `dist/eager.js` surface. See the\n// `remove-getabsoluteurl` changeset for the migration recipe\n// (`new URL(url, location.href).href` / framework URL helper).\nexport { initScene } from './initScene'\n\n// `SSRProvider` USED to be exported here as a Group C helper until the\n// `remove-ssr-provider` change: hydration gating now lives in the facade's\n// `useSpatialReady` (`useSyncExternalStore` + `getServerSnapshot`), and real\n// hosts mount post-hydration through the facade delegate (no Context, no\n// internal SSR wrapper). Remove any remaining `<SSRProvider>` wrappers from\n// app code.\n\n// --- Spatial primitive facades (Group A: lazy-loaded) -----------------------\n// `withSpatialized2DElementContainer` and `withSpatialMonitor` USED to live\n// on this re-export block as factory-style HOC public APIs; they have since\n// been demoted to internal-only — the `<div enable-xr>` /\n// `<div enable-xr-monitor>` JSX markers remain the documented public\n// mechanism for wrapping intrinsic elements with spatial behaviour. See the\n// `internalize-hoc-factories` changeset for migration recipes (e.g. for\n// passing a spatial-wrapped component to a third-party HOC like\n// `animated(...)`). The factories themselves still exist at their original\n// source paths and are reached internally by the JSX runtime via\n// `src/internal/facades-client.ts`.\nexport {\n AttachmentEntity,\n Box,\n BoxEntity,\n Cone,\n ConeEntity,\n Cylinder,\n CylinderEntity,\n Entity,\n Model,\n ModelEntity,\n Plane,\n PlaneEntity,\n Reality,\n SceneGraph,\n Sphere,\n SphereEntity,\n AttachmentAsset,\n Material,\n ModelAsset,\n Texture,\n UnlitMaterial,\n World,\n} from './facades'\nexport type {\n AttachmentAssetProps,\n AttachmentEntityProps,\n BoxEntityProps,\n ConeEntityProps,\n CylinderEntityProps,\n EntityFacadeProps,\n EntityRefShape,\n MaterialProps,\n ModelAssetProps,\n ModelEntityProps,\n ModelProps,\n ModelRef,\n PlaneEntityProps,\n RealityProps,\n SceneGraphProps,\n SphereEntityProps,\n TextureProps,\n UnlitMaterialProps,\n} from './facades'\n\n// --- Hooks (placeholder / ready-gated per spec \"Hook placeholders\") ---------\nexport { useMetrics } from './hooks-web/useMetrics'\n\n// --- Public type surface (no runtime values) --------------------------------\n// Spatial event + ref types — referenced by facade prop / ref typing.\n// Using `export type` so TypeScript / esbuild fully erase these\n// re-exports; the underlying `./spatialized-container/types.ts` module\n// stays in the spatial chunk's runtime module graph, not default entry's\n// (per spec tasks.md §7.3).\nexport type {\n ModelLoadEvent,\n ModelSpatialDragEndEvent,\n ModelSpatialDragEvent,\n ModelSpatialDragStartEvent,\n ModelSpatialMagnifyEndEvent,\n ModelSpatialMagnifyEvent,\n ModelSpatialRotateEndEvent,\n ModelSpatialRotateEvent,\n ModelSpatialTapEvent,\n Point3D,\n Quaternion,\n // `Spatialized2DElementContainerProps` was originally re-exported here as\n // the props shape of `withSpatialized2DElementContainer`. The HOC has\n // since been demoted to internal-only (see the `internalize-hoc-factories`\n // changeset); the type lives on at `src/spatialized-container/types.ts`\n // for internal use but is no longer part of the published type surface.\n SpatializedDivElementRef,\n SpatializedElementRef,\n SpatializedStatic3DContainerProps,\n SpatializedStatic3DElementRef,\n SpatialContentReadyCallback,\n SpatialContentReadyContext,\n SpatialDragEndEvent,\n SpatialDragEvent,\n SpatialDragStartEvent,\n SpatialEventOptions,\n SpatialMagnifyEndEvent,\n SpatialMagnifyEvent,\n SpatialRotateEndEvent,\n SpatialRotateEvent,\n SpatialTapEvent,\n Vec3,\n} from './spatialized-container/types'\n// Entity event types and event handler shapes.\nexport type {\n EntityEventHandler,\n EntityProps,\n SpatialDragEndEntityEvent,\n SpatialDragEntityEvent,\n SpatialDragStartEntityEvent,\n SpatialMagnifyEndEntityEvent,\n SpatialMagnifyEntityEvent,\n SpatialRotateEndEntityEvent,\n SpatialRotateEntityEvent,\n SpatialTapEntityEvent,\n} from './reality/type'\n// `EntityRef` — the (class-shaped) public ref type for `*Entity` facades.\n// Re-exported as type-only — the class value is a spatial-chunk implementation\n// detail, not part of the default-entry runtime surface.\nexport type { EntityRef } from './reality/hooks/useEntityRef'\n\n// --- Deprecated JSX runtime classic-transform export ------------------------\n// Annotation lives on the named function in `./jsx/jsx-shared.ts`. See spec\n// \"createElement export is deprecated\" Scenario; the export's v1 runtime\n// behavior is unchanged (still calls `replaceToSpatialPrimitiveType` +\n// `reactCreateElement`).\nexport { createElement } from './jsx/jsx-shared'\n\n// --- Package version --------------------------------------------------------\nexport const version = __WEBSPATIAL_REACT_SDK_VERSION__\n"],"mappings":"ujBAEA,OAAS,YAAa,UAAW,OAAQ,aAAgB,QA2BlD,SAAS,eACd,QAAiC,CAAC,EACZ,CACtB,GAAM,CAAE,KAAO,GAAM,QAAS,OAAQ,EAAI,QACpC,CAAC,OAAQ,SAAS,EAAI,SAAqB,MAAM,EACjD,CAAC,MAAO,QAAQ,EAAI,SAAqC,IAAI,EAC7D,WAAa,OAAO,OAAO,EAC3B,WAAa,OAAO,OAAO,EACjC,WAAW,QAAU,QACrB,WAAW,QAAU,QAErB,IAAM,KAAO,YAAY,SAAY,CACnC,UAAU,SAAS,EACnB,SAAS,IAAI,EACb,GAAI,CACF,MAAM,YAAY,EAClB,UAAU,OAAO,EACjB,WAAW,UAAU,CACvB,OAAS,IAAc,CACrB,GAAI,eAAe,oBAAqB,CACtC,UAAU,QAAQ,EAClB,SAAS,GAAG,EACZ,WAAW,UAAU,GAAG,EACxB,MACF,CACA,MAAM,GACR,CACF,EAAG,CAAC,CAAC,EAEL,iBAAU,IAAM,CACT,MACA,KAAK,CACZ,EAAG,CAAC,KAAM,IAAI,CAAC,EAER,CAAE,OAAQ,MAAO,IAAK,CAC/B,CC1DO,IAAM,YAA8B,kBAAkB,cAAc,ECJ3E,OAAsC,eAAkB,QAgD7C,mCAbX,SAAS,sBACP,cACA,SACA,CACA,SAAS,KAAK,MAAU,IAAmC,CAEzD,GAAI,CADU,gBAAgB,EAE5B,yBAAkB,aAAa,EACxB,KAET,IAAM,cAAgB,SAAS,mBAAmB,CAAC,EAGnD,OAAO,IAAC,eAAe,GAAI,MAAa,IAAiB,CAC3D,CACA,IAAM,OAAS,WAA8B,IAAW,EACxD,cAAO,YAAc,cACd,MACT,CAGA,SAAS,iBACP,cACA,SACA,CACA,SAAS,OAAO,MAAU,CAExB,GAAI,CADU,gBAAgB,EAE5B,yBAAkB,aAAa,EACxB,KAET,IAAM,cAAgB,SAAS,mBAAmB,CAAC,EACnD,OAAO,IAAC,eAAe,GAAI,MAAe,CAC5C,CACA,cAAO,YAAc,cACd,MACT,CAqCO,IAAM,OAAyB,sBACpC,SACA,MAAQ,KAAK,MACf,EACa,UAA4B,sBACvC,YACA,MAAQ,KAAK,SACf,EACa,aACK,sBACd,eACA,MAAQ,KAAK,YACf,EACW,WACK,sBACd,aACA,MAAQ,KAAK,UACf,EACW,eACK,sBACd,iBACA,MAAQ,KAAK,cACf,EACW,YACK,sBACd,cACA,MAAQ,KAAK,WACf,EACW,YACK,sBACd,cACA,MAAQ,KAAK,WACf,EAEW,iBACK,iBACd,mBACA,MAAQ,KAAK,gBACf,ECnHS,cAAAA,SAAA,oBAXX,SAASC,kBACP,cACA,SACA,CACA,SAAS,OAAO,MAAU,CAExB,GAAI,CADU,gBAAgB,EAE5B,yBAAkB,aAAa,EACxB,KAET,IAAM,cAAgB,SAAS,mBAAmB,CAAC,EACnD,OAAOD,KAAC,eAAe,GAAI,MAAe,CAC5C,CACA,cAAO,YAAc,cACd,MACT,CAkCO,IAAM,cACKC,kBACd,gBACA,MAAQ,KAAK,aACf,EAEW,SAA2BA,kBACtC,WACA,MAAQ,KAAK,QACf,EAEa,QAA0BA,kBACrC,UACA,MAAQ,KAAK,OACf,EAEa,WAA6BA,kBACxC,aACA,MAAQ,KAAK,UACf,EAEa,gBACKA,kBACd,kBACA,MAAQ,KAAK,eACf,EClEO,cAAAC,SAAA,oBAPF,SAAS,WAAW,CAAE,QAAS,EAAoB,CAExD,GAAI,CADU,gBAAgB,EAE5B,yBAAkB,YAAY,EACvB,KAET,IAAM,eAAiB,mBAAmB,EAAE,WAC5C,OAAOA,KAAC,gBAAgB,SAAS,CACnC,CACA,WAAW,YAAc,aC9BzB,OAAS,YAAAC,cAAgB,QCiBzB,SAAS,mCAA2C,CAClD,MAAM,IAAI,uBACR,aACA,iJACF,CACF,CAEA,SAAS,gBAAgB,OAAgB,SAA2B,CAClE,OAAO,kCAAkC,CAC3C,CAEA,SAAS,gBAAgB,UAAmB,SAA2B,CACrE,OAAO,kCAAkC,CAC3C,CAEA,IAAM,oBAAsB,OAAO,OAAO,CACxC,gBACA,eACF,CAAC,EASM,SAAS,uBAA4C,CAC1D,OAAO,mBACT,CDnBO,SAAS,YAAiC,CAC/C,GAAM,CAAC,IAAI,EAAIC,UAAsB,IAC9B,eAAe,EACP,eAAe,GAAG,YACf,sBAFc,qBAG/B,EACD,OAAO,KAAK,CACd,CEJA,sBAAsB,MAAM,EA8PrB,IAAM,QAAU","names":["jsx","createNullFacade","jsx","useState","useState"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export { M as Model, R as Reality } from '../Reality-DO-itiWW.js';
|
|
2
|
+
import { ElementType } from 'react';
|
|
3
|
+
import '@webspatial/core-sdk';
|
|
4
|
+
import '../motionBindingTypes-CjxIC5bP.js';
|
|
5
|
+
import '../Reality-BDyKL6th.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Default-entry facade for the `withSpatialized2DElementContainer(Comp)` HOC.
|
|
9
|
+
*
|
|
10
|
+
* Per spec "HOC facade preserves wrapper-cache identity contract" Scenario:
|
|
11
|
+
* passing the same `Component` reference more than once returns the same
|
|
12
|
+
* wrapper facade reference. Cache key is the raw `Component` reference; no
|
|
13
|
+
* normalization.
|
|
14
|
+
*
|
|
15
|
+
* In fallback mode the wrapper is a transparent passthrough — `<Component
|
|
16
|
+
* {...passthroughProps} ref={ref} />` after stripping spatial-only event
|
|
17
|
+
* handlers / spatial-only options. Once `bootSpatial()` resolves, the
|
|
18
|
+
* wrapper renders the real spatialized container by delegating to the real
|
|
19
|
+
* HOC produced via `requireSpatialImpl().withSpatialized2DElementContainer`
|
|
20
|
+
* (the real HOC has its own internal cache, so `RealHOC(Component)`
|
|
21
|
+
* returns a stable reference across renders).
|
|
22
|
+
*
|
|
23
|
+
* **PARITY (spec tasks.md §15.6)**: Path 2 unpinned in
|
|
24
|
+
* `runtime-capabilities` today; tracked under §15.8 (see
|
|
25
|
+
* `src/__tests__/parity.test.tsx` "withSpatialized2DElementContainer …
|
|
26
|
+
* parity" `it.todo`). Keep this transparent-passthrough fallback in sync
|
|
27
|
+
* with whatever the real-impl unsupported branch later commits to.
|
|
28
|
+
*/
|
|
29
|
+
declare function withSpatialized2DElementContainer<P extends ElementType>(Component: P): P;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Default-entry facade for the `withSpatialMonitor(El)` HOC.
|
|
33
|
+
*
|
|
34
|
+
* Per spec "HOC facade preserves wrapper-cache identity contract" Scenario:
|
|
35
|
+
* same `El` reference → same wrapper reference. Cache key is the raw `El`.
|
|
36
|
+
*
|
|
37
|
+
* Fallback renders `<El {...passthrough} ref={ref} />` (transparent
|
|
38
|
+
* passthrough). After boot the wrapper delegates to the real
|
|
39
|
+
* `withSpatialMonitor(El)` HOC, which has its own internal cache so
|
|
40
|
+
* repeated calls return a stable reference.
|
|
41
|
+
*
|
|
42
|
+
* **PARITY (spec tasks.md §15.6)**: Path 2 unpinned in
|
|
43
|
+
* `runtime-capabilities` today; tracked under §15.8 (see
|
|
44
|
+
* `src/__tests__/parity.test.tsx` "withSpatialMonitor … parity"
|
|
45
|
+
* `it.todo`). Keep this transparent-passthrough fallback in sync with
|
|
46
|
+
* whatever the real-impl unsupported branch later commits to.
|
|
47
|
+
*/
|
|
48
|
+
declare function withSpatialMonitor(El: ElementType): ElementType;
|
|
49
|
+
|
|
50
|
+
export { withSpatialMonitor, withSpatialized2DElementContainer };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import{Model,Reality,withSpatialMonitor,withSpatialized2DElementContainer}from"../chunk-BTLTBCA7.js";import"../chunk-GG2QK5MA.js";import"../chunk-QHUROD77.js";import"../chunk-NXEOIP4Z.js";export{Model,Reality,withSpatialMonitor,withSpatialized2DElementContainer};
|
|
3
|
+
//# sourceMappingURL=facades-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,84 +1,8 @@
|
|
|
1
1
|
export { Fragment } from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
type IsPreReact19 = 2 extends Parameters<React.FunctionComponent<any>>['length'] ? true : false;
|
|
11
|
-
/** @ts-ignore */
|
|
12
|
-
type ReactJSXElement = true extends IsPreReact19 ? JSX.Element : React.JSX.Element;
|
|
13
|
-
/** @ts-ignore */
|
|
14
|
-
type ReactJSXElementClass = true extends IsPreReact19 ? JSX.ElementClass : React.JSX.ElementClass;
|
|
15
|
-
/** @ts-ignore */
|
|
16
|
-
type ReactJSXElementAttributesProperty = true extends IsPreReact19 ? JSX.ElementAttributesProperty : React.JSX.ElementAttributesProperty;
|
|
17
|
-
/** @ts-ignore */
|
|
18
|
-
type ReactJSXElementChildrenAttribute = true extends IsPreReact19 ? JSX.ElementChildrenAttribute : React.JSX.ElementChildrenAttribute;
|
|
19
|
-
/** @ts-ignore */
|
|
20
|
-
type ReactJSXLibraryManagedAttributes<C, P> = true extends IsPreReact19 ? JSX.LibraryManagedAttributes<C, P> : React.JSX.LibraryManagedAttributes<C, P>;
|
|
21
|
-
/** @ts-ignore */
|
|
22
|
-
type ReactJSXIntrinsicAttributes = true extends IsPreReact19 ? JSX.IntrinsicAttributes : React.JSX.IntrinsicAttributes;
|
|
23
|
-
/** @ts-ignore */
|
|
24
|
-
type ReactJSXIntrinsicClassAttributes<T> = true extends IsPreReact19 ? JSX.IntrinsicClassAttributes<T> : React.JSX.IntrinsicClassAttributes<T>;
|
|
25
|
-
/** @ts-ignore */
|
|
26
|
-
type ReactJSXIntrinsicElements = true extends IsPreReact19 ? JSX.IntrinsicElements : React.JSX.IntrinsicElements;
|
|
27
|
-
/** @ts-ignore */
|
|
28
|
-
type ReactJSXElementType = true extends IsPreReact19 ? string | React.JSXElementConstructor<any> : React.JSX.ElementType;
|
|
29
|
-
declare namespace WebSpatialJSX {
|
|
30
|
-
export type ElementType = ReactJSXElementType;
|
|
31
|
-
export interface Element extends ReactJSXElement {
|
|
32
|
-
}
|
|
33
|
-
export interface ElementClass extends ReactJSXElementClass {
|
|
34
|
-
}
|
|
35
|
-
export interface ElementAttributesProperty extends ReactJSXElementAttributesProperty {
|
|
36
|
-
}
|
|
37
|
-
export interface ElementChildrenAttribute extends ReactJSXElementChildrenAttribute {
|
|
38
|
-
}
|
|
39
|
-
export type LibraryManagedAttributes<C, P> = ReactJSXLibraryManagedAttributes<C, P>;
|
|
40
|
-
export interface IntrinsicAttributes extends ReactJSXIntrinsicAttributes {
|
|
41
|
-
}
|
|
42
|
-
export interface IntrinsicClassAttributes<T> extends ReactJSXIntrinsicClassAttributes<T> {
|
|
43
|
-
}
|
|
44
|
-
type BaseSpatialIntrinsic = {
|
|
45
|
-
style?: React.CSSProperties;
|
|
46
|
-
'enable-xr'?: boolean;
|
|
47
|
-
onSpatialTap?: (e: SpatialTapEvent) => void;
|
|
48
|
-
onSpatialDragStart?: (e: SpatialDragStartEvent) => void;
|
|
49
|
-
onSpatialDrag?: (e: SpatialDragEvent) => void;
|
|
50
|
-
onSpatialDragEnd?: (e: SpatialDragEndEvent) => void;
|
|
51
|
-
onSpatialRotate?: (e: SpatialRotateEvent) => void;
|
|
52
|
-
onSpatialRotateEnd?: (e: SpatialRotateEndEvent) => void;
|
|
53
|
-
onSpatialMagnify?: (e: SpatialMagnifyEvent) => void;
|
|
54
|
-
onSpatialMagnifyEnd?: (e: SpatialMagnifyEndEvent) => void;
|
|
55
|
-
spatialEventOptions?: SpatialEventOptions;
|
|
56
|
-
};
|
|
57
|
-
export type IntrinsicElements = {
|
|
58
|
-
[K in keyof ReactJSXIntrinsicElements]: ReactJSXIntrinsicElements[K] & BaseSpatialIntrinsic & (K extends 'div' ? {
|
|
59
|
-
onSpatialContentReady?: SpatialContentReadyCallback;
|
|
60
|
-
} : {});
|
|
61
|
-
};
|
|
62
|
-
export { };
|
|
63
|
-
}
|
|
64
|
-
declare module 'react' {
|
|
65
|
-
interface CSSProperties {
|
|
66
|
-
'--xr-background-material'?: string;
|
|
67
|
-
'--xr-back'?: number | string;
|
|
68
|
-
'--xr-depth'?: number | string;
|
|
69
|
-
'--xr-z-index'?: number | string;
|
|
70
|
-
enableXr?: boolean;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
declare global {
|
|
75
|
-
interface CSSStyleDeclaration {
|
|
76
|
-
'--xr-background-material'?: string;
|
|
77
|
-
'--xr-back'?: number | string;
|
|
78
|
-
'--xr-depth'?: number | string;
|
|
79
|
-
'--xr-z-index'?: number | string;
|
|
80
|
-
enableXr?: boolean;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export { WebSpatialJSX as JSX, jsxs as j, jsx, jsxDEV };
|
|
2
|
+
export { j as jsx, b as jsxDEV } from '../jsx-shared-CFDVUVpc.js';
|
|
3
|
+
export { JSX } from './jsx-runtime.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
import 'react/jsx-dev-runtime';
|
|
6
|
+
import '@webspatial/react-sdk';
|
|
7
|
+
import '../motionBindingTypes-CjxIC5bP.js';
|
|
8
|
+
import '@webspatial/core-sdk';
|
|
@@ -1,68 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
(function(){
|
|
3
|
-
if(typeof window === 'undefined') return;
|
|
4
|
-
if(!window.__webspatialsdk__) window.__webspatialsdk__ = {}
|
|
5
|
-
window.__webspatialsdk__['react-sdk-version'] = "1.7.0"
|
|
6
|
-
window.__webspatialsdk__['XR_ENV'] = "avp"
|
|
7
|
-
})()
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// src/jsx/jsx-dev-runtime.ts
|
|
11
|
-
import { Fragment } from "react/jsx-runtime";
|
|
12
|
-
|
|
13
|
-
// src/jsx/jsx-shared.ts
|
|
14
|
-
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
|
15
|
-
import reactJSXRuntime from "react/jsx-runtime";
|
|
16
|
-
import { createElement as reactCreateElement } from "react";
|
|
17
|
-
import {
|
|
18
|
-
withSpatialMonitor,
|
|
19
|
-
withSpatialized2DElementContainer,
|
|
20
|
-
Model,
|
|
21
|
-
Reality
|
|
22
|
-
} from "@webspatial/react-sdk";
|
|
23
|
-
var attributeFlag = "enable-xr";
|
|
24
|
-
var styleFlag = "enableXr";
|
|
25
|
-
var classFlag = "__enableXr__";
|
|
26
|
-
var xrMonitorFlag = "enable-xr-monitor";
|
|
27
|
-
function replaceToSpatialPrimitiveType(type, props) {
|
|
28
|
-
if (type === Model || type === Reality) {
|
|
29
|
-
return type;
|
|
30
|
-
}
|
|
31
|
-
const propsObject = props;
|
|
32
|
-
if (attributeFlag in propsObject) {
|
|
33
|
-
delete propsObject[attributeFlag];
|
|
34
|
-
return withSpatialized2DElementContainer(type);
|
|
35
|
-
}
|
|
36
|
-
if (xrMonitorFlag in propsObject) {
|
|
37
|
-
delete propsObject[xrMonitorFlag];
|
|
38
|
-
return withSpatialMonitor(type);
|
|
39
|
-
}
|
|
40
|
-
if (propsObject && propsObject.style && styleFlag in propsObject.style) {
|
|
41
|
-
delete propsObject.style[styleFlag];
|
|
42
|
-
return withSpatialized2DElementContainer(type);
|
|
43
|
-
}
|
|
44
|
-
if (propsObject && typeof propsObject.className === "string") {
|
|
45
|
-
const originalClassNames = propsObject.className.split(" ");
|
|
46
|
-
const idx = originalClassNames.indexOf(classFlag);
|
|
47
|
-
if (idx !== -1) {
|
|
48
|
-
originalClassNames.splice(idx, 1);
|
|
49
|
-
propsObject.className = originalClassNames.join(" ");
|
|
50
|
-
return withSpatialized2DElementContainer(type);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return type;
|
|
54
|
-
}
|
|
55
|
-
function jsx(type, props, key) {
|
|
56
|
-
type = replaceToSpatialPrimitiveType(type, props);
|
|
57
|
-
return reactJSXRuntime.jsx(type, props, key);
|
|
58
|
-
}
|
|
59
|
-
function jsxDEV(type, props, key, isStatic, source, self) {
|
|
60
|
-
type = replaceToSpatialPrimitiveType(type, props);
|
|
61
|
-
return _jsxDEV(type, props, key, isStatic, source, self);
|
|
62
|
-
}
|
|
63
|
-
export {
|
|
64
|
-
Fragment,
|
|
65
|
-
jsx,
|
|
66
|
-
jsxDEV
|
|
67
|
-
};
|
|
1
|
+
import{jsx,jsxDEV}from"../chunk-PDUEHFTO.js";import"../chunk-QHUROD77.js";import"../chunk-NXEOIP4Z.js";import{Fragment}from"react/jsx-runtime";export{Fragment,jsx,jsxDEV};
|
|
68
2
|
//# sourceMappingURL=jsx-dev-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/jsx/jsx-dev-runtime.ts"
|
|
1
|
+
{"version":3,"sources":["../../src/jsx/jsx-dev-runtime.ts"],"sourcesContent":["export { Fragment } from 'react/jsx-runtime'\nexport { jsxDEV, jsx } from './jsx-shared'\n\nexport type { WebSpatialJSX as JSX } from './jsx-namespace'\nexport * from './xr-css-extension'\n"],"mappings":"uGAAA,OAAS,aAAgB","names":[]}
|