@relu-interactives/spatial-ecs 0.8.0 → 0.10.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.
Files changed (56) hide show
  1. package/dist/{System-8D-XBDKZ.d.cts → System-BldSHxZV.d.cts} +214 -81
  2. package/dist/{System-DPMAW30g.d.ts → System-CADhPyQs.d.ts} +214 -81
  3. package/dist/{XRHandPose-G0Dl-F0w.d.ts → XRHandPose-BNSwd1y9.d.ts} +145 -2
  4. package/dist/{XRHandPose-VQMT1WXj.d.cts → XRHandPose-D3Ab1Dfs.d.cts} +145 -2
  5. package/dist/{chunk-G4XJ53LS.js → chunk-JEPUCLZX.js} +3 -3
  6. package/dist/{chunk-G4XJ53LS.js.map → chunk-JEPUCLZX.js.map} +1 -1
  7. package/dist/{chunk-NNDUOQ7O.js → chunk-JNYPJB55.js} +250 -3
  8. package/dist/chunk-JNYPJB55.js.map +1 -0
  9. package/dist/{chunk-SGF73YTF.js → chunk-NXASMBDS.js} +4 -4
  10. package/dist/{chunk-SGF73YTF.js.map → chunk-NXASMBDS.js.map} +1 -1
  11. package/dist/{chunk-JIJQFW6P.js → chunk-TY3XCHOR.js} +1390 -485
  12. package/dist/chunk-TY3XCHOR.js.map +1 -0
  13. package/dist/{chunk-U727NTWQ.js → chunk-WWP46AEF.js} +26 -4
  14. package/dist/chunk-WWP46AEF.js.map +1 -0
  15. package/dist/components/index.cjs +151 -0
  16. package/dist/components/index.cjs.map +1 -1
  17. package/dist/components/index.d.cts +3 -3
  18. package/dist/components/index.d.ts +3 -3
  19. package/dist/components/index.js +1 -1
  20. package/dist/docs/guide/bone-attachments-and-ik.md +1 -1
  21. package/dist/docs/guide/multiplayer.md +65 -0
  22. package/dist/docs/guide/spatial-ui.md +83 -7
  23. package/dist/factories/index.cjs +151 -0
  24. package/dist/factories/index.cjs.map +1 -1
  25. package/dist/factories/index.d.cts +2 -2
  26. package/dist/factories/index.d.ts +2 -2
  27. package/dist/factories/index.js +3 -3
  28. package/dist/{index-C61n65PE.d.ts → index-6pZO_gV7.d.ts} +27 -2
  29. package/dist/{index-D9DjrUn3.d.cts → index-BXjwEdNq.d.cts} +6 -3
  30. package/dist/{index-C70N4BYG.d.cts → index-BdghvXKE.d.cts} +27 -2
  31. package/dist/{index-DppafVu4.d.ts → index-CVG-hREM.d.ts} +6 -3
  32. package/dist/index.cjs +1800 -626
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +8 -30
  35. package/dist/index.d.ts +8 -30
  36. package/dist/index.js +10 -10
  37. package/dist/network/index.cjs +858 -8
  38. package/dist/network/index.cjs.map +1 -1
  39. package/dist/network/index.d.cts +126 -5
  40. package/dist/network/index.d.ts +126 -5
  41. package/dist/network/index.js +683 -8
  42. package/dist/network/index.js.map +1 -1
  43. package/dist/systems/index.cjs +1702 -528
  44. package/dist/systems/index.cjs.map +1 -1
  45. package/dist/systems/index.d.cts +2 -2
  46. package/dist/systems/index.d.ts +2 -2
  47. package/dist/systems/index.js +4 -4
  48. package/dist/types.d.cts +1 -1
  49. package/dist/types.d.ts +1 -1
  50. package/dist/webgpu/index.d.ts +2 -2
  51. package/dist/worldSnapshotUtils.d.cts +1 -1
  52. package/dist/worldSnapshotUtils.d.ts +1 -1
  53. package/package.json +1 -1
  54. package/dist/chunk-JIJQFW6P.js.map +0 -1
  55. package/dist/chunk-NNDUOQ7O.js.map +0 -1
  56. package/dist/chunk-U727NTWQ.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { readWorldRenderBackend } from './chunk-OHCNPPMX.js';
2
- import { createAnimationComponent, createAudioComponent, createCameraComponent, createPhysicsComponent, createEnvironmentComponent, createEntityTypeComponent, createImageComponent, createXRRigComponent, createVRTeleportAreaComponent, createXRHandPoseComponent, createXRAnchorComponent, createBoneAttachmentComponent, createIKComponent, createNetworkIdentityComponent, createNetworkTransformComponent, createNetworkedPropsComponent, createNetworkSpawnerComponent, createUIPanelComponent, createUITextComponent, createUIButtonComponent, createUIToggleComponent, createUISliderComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createImageTargetAnchorComponent, createImageTargetComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVideoComponent, createInstancedMeshComponent, createBaseEntity, createTransform, createModel } from './chunk-G4XJ53LS.js';
3
- import { Object3DRef, Name, InstanceSlotComponent, EntityType, Selectable, ParentId, DEFAULT_INSTANCE_TRANSFORM, VRTeleportAreaComponent, XRInteractorComponent, XRInteractorSideComponent, UIButtonComponent, XRInteractableComponent, UIPanelComponent, UISliderComponent, UITextComponent, UIToggleComponent, XRRigComponent } from './chunk-NNDUOQ7O.js';
2
+ import { createAnimationComponent, createAudioComponent, createCameraComponent, createPhysicsComponent, createEnvironmentComponent, createEntityTypeComponent, createImageComponent, createXRRigComponent, createVRTeleportAreaComponent, createXRHandPoseComponent, createXRAnchorComponent, createBoneAttachmentComponent, createIKComponent, createNetworkIdentityComponent, createNetworkTransformComponent, createNetworkedPropsComponent, createNetworkSpawnerComponent, createUIPanelComponent, createUITextComponent, createUIButtonComponent, createUIToggleComponent, createUISliderComponent, createXRInteractableComponent, createXRInteractorComponent, createXRInteractorSideComponent, createImageTargetAnchorComponent, createImageTargetComponent, createLightComponent, createMaterialComponent, createMeshComponent, createMeshGeometryComponent, createModelComponent, createNameComponent, createObject3DRefComponent, createParentIdComponent, createPostprocessingComponent, createScriptComponent, createScriptObjectComponent, createSelectableComponent, createSelectionTransformStateComponent, createSpriteComponent, createTransformComponent, createVideoComponent, createInstancedMeshComponent, createBaseEntity, createTransform, createModel } from './chunk-JEPUCLZX.js';
3
+ import { Object3DRef, Name, InstanceSlotComponent, EntityType, Selectable, ParentId, DEFAULT_INSTANCE_TRANSFORM, VRTeleportAreaComponent, XRInteractorComponent, XRInteractorSideComponent, UIButtonComponent, XRInteractableComponent, UIPanelComponent, UISliderComponent, UITextComponent, UIToggleComponent, XRRigComponent } from './chunk-JNYPJB55.js';
4
4
  import { __name } from './chunk-XE4OXN2W.js';
5
5
  import * as THREE27 from 'three';
6
6
  import { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';
@@ -1226,5 +1226,5 @@ function registerDefaultFactories(objectManagementSystem) {
1226
1226
  __name(registerDefaultFactories, "registerDefaultFactories");
1227
1227
 
1228
1228
  export { registerDefaultComponentFactories, registerDefaultFactories };
1229
- //# sourceMappingURL=chunk-SGF73YTF.js.map
1230
- //# sourceMappingURL=chunk-SGF73YTF.js.map
1229
+ //# sourceMappingURL=chunk-NXASMBDS.js.map
1230
+ //# sourceMappingURL=chunk-NXASMBDS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../core/factories/registerDefaultComponentFactories.ts","../core/factories/objects/AudioFactory.ts","../core/factories/objects/CameraFactory.ts","../core/factories/objects/CapsuleFactory.ts","../core/factories/objects/CubeFactory.ts","../core/factories/objects/CylinderFactory.ts","../core/factories/objects/EmptyFactory.ts","../core/factories/objects/ImageFactory.ts","../core/factories/objects/ImageTargetFactory.ts","../core/factories/objects/InstancedMeshFactory.ts","../core/factories/objects/InstanceSlotFactory.ts","../core/factories/objects/lights/AmbientLightFactory.ts","../core/factories/objects/lights/AreaLightFactory.ts","../core/factories/objects/lights/DirectionalLightFactory.ts","../core/factories/objects/lights/PointLightFactory.ts","../core/factories/objects/lights/SpotLightFactory.ts","../core/factories/objects/PlaneFactory.ts","../core/factories/objects/ScriptObjectFactory.ts","../core/factories/objects/TeleportAreaFactory.ts","../core/factories/objects/XRInteractorFactory.ts","../core/factories/objects/UIButtonObjectFactory.ts","../core/factories/objects/UIPanelObjectFactory.ts","../core/factories/objects/UISliderObjectFactory.ts","../core/factories/objects/UITextObjectFactory.ts","../core/factories/objects/UIToggleObjectFactory.ts","../core/factories/objects/XRRigFactory.ts","../core/factories/objects/SpriteFactory.ts","../core/factories/objects/SphereFactory.ts","../core/factories/objects/VideoFactory.ts","../core/factories/registerDefaultFactories.ts"],"names":["THREE","THREE2","THREE3","THREE4","THREE5","THREE6","THREE7","THREE8","THREE9","THREE10","THREE11","THREE12","THREE13","THREE14","THREE15","THREE16","THREE17","THREE18","THREE19","THREE20","THREE21","THREE22","THREE23","THREE24","THREE25","THREE26","getOrCreateListener"],"mappings":"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","file":"chunk-SGF73YTF.js","sourcesContent":["import {\n createAnimationComponent,\n createAudioComponent,\n createCameraComponent,\n createEnvironmentComponent,\n createEntityTypeComponent,\n createImageComponent,\n createImageTargetAnchorComponent,\n createImageTargetComponent,\n createInstancedMeshComponent,\n createLightComponent,\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n createModelComponent,\n createNameComponent,\n createObject3DRefComponent,\n createParentIdComponent,\n createPhysicsComponent,\n createPostprocessingComponent,\n createScriptComponent,\n createScriptObjectComponent,\n createSelectableComponent,\n createSelectionTransformStateComponent,\n createSpriteComponent,\n createTransformComponent,\n createUIButtonComponent,\n createUIPanelComponent,\n createUISliderComponent,\n createUITextComponent,\n createUIToggleComponent,\n createVideoComponent,\n createVRTeleportAreaComponent,\n createXRAnchorComponent,\n createBoneAttachmentComponent,\n createIKComponent,\n createNetworkedPropsComponent,\n createNetworkIdentityComponent,\n createNetworkSpawnerComponent,\n createNetworkTransformComponent,\n createXRHandPoseComponent,\n createXRInteractableComponent,\n createXRInteractorComponent,\n createXRInteractorSideComponent,\n createXRRigComponent,\n} from \"./components\";\nimport type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\n\nexport function registerDefaultComponentFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.registerComponentFactory(\"animation\", createAnimationComponent);\n objectManagementSystem.registerComponentFactory(\"audio\", createAudioComponent);\n objectManagementSystem.registerComponentFactory(\"camera\", createCameraComponent);\n objectManagementSystem.registerComponentFactory(\"physics\", createPhysicsComponent);\n objectManagementSystem.registerComponentFactory(\"environment\", createEnvironmentComponent);\n objectManagementSystem.registerComponentFactory(\"entityType\", createEntityTypeComponent);\n objectManagementSystem.registerComponentFactory(\"image\", createImageComponent);\n objectManagementSystem.registerComponentFactory(\"xrRig\", createXRRigComponent);\n objectManagementSystem.registerComponentFactory(\"vrTeleportArea\", createVRTeleportAreaComponent);\n objectManagementSystem.registerComponentFactory(\"xrHandPose\", createXRHandPoseComponent);\n objectManagementSystem.registerComponentFactory(\"xrAnchor\", createXRAnchorComponent);\n objectManagementSystem.registerComponentFactory(\"boneAttachment\", createBoneAttachmentComponent);\n objectManagementSystem.registerComponentFactory(\"ik\", createIKComponent);\n objectManagementSystem.registerComponentFactory(\"networkIdentity\", createNetworkIdentityComponent);\n objectManagementSystem.registerComponentFactory(\"networkTransform\", createNetworkTransformComponent);\n objectManagementSystem.registerComponentFactory(\"networkedProps\", createNetworkedPropsComponent);\n objectManagementSystem.registerComponentFactory(\"networkSpawner\", createNetworkSpawnerComponent);\n objectManagementSystem.registerComponentFactory(\"uiPanel\", createUIPanelComponent);\n objectManagementSystem.registerComponentFactory(\"uiText\", createUITextComponent);\n objectManagementSystem.registerComponentFactory(\"uiButton\", createUIButtonComponent);\n objectManagementSystem.registerComponentFactory(\"uiToggle\", createUIToggleComponent);\n objectManagementSystem.registerComponentFactory(\"uiSlider\", createUISliderComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractable\", createXRInteractableComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractor\", createXRInteractorComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractorSide\", createXRInteractorSideComponent);\n objectManagementSystem.registerComponentFactory(\n \"imageTargetAnchor\",\n createImageTargetAnchorComponent,\n );\n objectManagementSystem.registerComponentFactory(\"imageTarget\", createImageTargetComponent);\n objectManagementSystem.registerComponentFactory(\"light\", createLightComponent);\n objectManagementSystem.registerComponentFactory(\"material\", createMaterialComponent);\n objectManagementSystem.registerComponentFactory(\"mesh\", createMeshComponent);\n objectManagementSystem.registerComponentFactory(\n \"meshGeometry\",\n createMeshGeometryComponent,\n );\n objectManagementSystem.registerComponentFactory(\"model\", createModelComponent);\n objectManagementSystem.registerComponentFactory(\"name\", createNameComponent);\n objectManagementSystem.registerComponentFactory(\n \"object3DRef\",\n createObject3DRefComponent,\n );\n objectManagementSystem.registerComponentFactory(\"parentId\", createParentIdComponent);\n objectManagementSystem.registerComponentFactory(\n \"postprocessing\",\n createPostprocessingComponent,\n );\n\n objectManagementSystem.registerComponentFactory(\"script\", createScriptComponent);\n objectManagementSystem.registerComponentFactory(\n \"scriptObject\",\n createScriptObjectComponent,\n );\n objectManagementSystem.registerComponentFactory(\"selectable\", createSelectableComponent);\n objectManagementSystem.registerComponentFactory(\n \"selectionTransformState\",\n createSelectionTransformStateComponent,\n );\n objectManagementSystem.registerComponentFactory(\"sprite\", createSpriteComponent);\n objectManagementSystem.registerComponentFactory(\"transform\", createTransformComponent);\n objectManagementSystem.registerComponentFactory(\"video\", createVideoComponent);\n objectManagementSystem.registerComponentFactory(\"instancedMesh\", createInstancedMeshComponent);\n}\n","import * as THREE from \"three\";\n\nimport { createAudioComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\n\nexport function createAudio({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Audio\",\n entityType: \"audio\",\n transformInput: payload.transform,\n });\n\n const audio = createAudioComponent(\n world,\n entityId,\n payload.path ?? \"\",\n payload.options ?? {},\n {\n object: anchor,\n listener: getOrCreateListener(camera),\n isEditor,\n },\n );\n scene.add(anchor);\n\n if (!audio.path) {\n return entityId;\n }\n\n if (!isEditor) {\n const loader = new THREE.AudioLoader();\n loader.load(\n audio.path,\n (buffer) => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n const sound = audio.audio;\n if (!sound) {\n return;\n }\n\n sound.setBuffer(buffer);\n if (audio.options.autoplay) {\n audio.play();\n }\n },\n undefined,\n (error) => {\n console.error(`Failed to load audio: ${audio.path}`, error);\n },\n );\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type {\n CameraComponentOptions,\n CameraProjection,\n CameraRuntimeType,\n} from \"../../components/Camera\";\nimport { createCameraComponent } from \"../components\";\nimport { Object3DRef } from \"../../components/Object3DRef\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype CameraCreateOptions = {\n type?: CameraRuntimeType;\n isDefault?: boolean;\n projection?: CameraProjection;\n fov?: number;\n near?: number;\n far?: number;\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n zoom?: number;\n};\n\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 2000;\nconst DEFAULT_FOV = 50;\nconst DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT = 5;\n\nfunction readViewportAspect(): number {\n if (typeof window === \"undefined\") {\n return 1;\n }\n\n const width = window.innerWidth;\n const height = window.innerHeight;\n if (\n Number.isFinite(width) &&\n Number.isFinite(height) &&\n width > 0 &&\n height > 0\n ) {\n return width / height;\n }\n\n return 1;\n}\n\nfunction toCameraCreateOptions(input: unknown): CameraCreateOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as Record<string, unknown>;\n\n const type =\n value.type === \"3d\" || value.type === \"ar\"\n ? value.type\n : undefined;\n\n const projection =\n value.projection === \"orthographic\" || value.projection === \"perspective\"\n ? value.projection\n : undefined;\n\n return {\n type,\n isDefault: typeof value.isDefault === \"boolean\" ? value.isDefault : undefined,\n projection,\n fov: typeof value.fov === \"number\" && Number.isFinite(value.fov) ? value.fov : undefined,\n near:\n typeof value.near === \"number\" && Number.isFinite(value.near)\n ? value.near\n : undefined,\n far: typeof value.far === \"number\" && Number.isFinite(value.far) ? value.far : undefined,\n left:\n typeof value.left === \"number\" && Number.isFinite(value.left)\n ? value.left\n : undefined,\n right:\n typeof value.right === \"number\" && Number.isFinite(value.right)\n ? value.right\n : undefined,\n top:\n typeof value.top === \"number\" && Number.isFinite(value.top)\n ? value.top\n : undefined,\n bottom:\n typeof value.bottom === \"number\" && Number.isFinite(value.bottom)\n ? value.bottom\n : undefined,\n zoom:\n typeof value.zoom === \"number\" && Number.isFinite(value.zoom)\n ? value.zoom\n : undefined,\n };\n}\n\nfunction resolveCameraCreateOptions(payload: {\n options?: unknown;\n camera?: unknown;\n}): CameraCreateOptions {\n // Prefer new payload.options shape, but support legacy payload.camera for\n // backward compatibility with older editor/serialized payloads.\n const next = toCameraCreateOptions(payload.options);\n\n if (payload.options && typeof payload.options === \"object\") {\n return next;\n }\n\n return toCameraCreateOptions(payload.camera);\n}\n\nfunction applyCameraSettings(camera: THREE.Camera, options: CameraCreateOptions): void {\n const near = typeof options.near === \"number\" ? options.near : DEFAULT_NEAR;\n const far = typeof options.far === \"number\" ? options.far : DEFAULT_FAR;\n const projection = options.projection;\n\n if (camera instanceof THREE.PerspectiveCamera) {\n if (!projection || projection === \"perspective\") {\n camera.fov = typeof options.fov === \"number\" ? options.fov : DEFAULT_FOV;\n }\n\n camera.aspect = readViewportAspect();\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n return;\n }\n\n if (camera instanceof THREE.OrthographicCamera) {\n camera.left =\n typeof options.left === \"number\"\n ? options.left\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.right =\n typeof options.right === \"number\"\n ? options.right\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.top =\n typeof options.top === \"number\"\n ? options.top\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.bottom =\n typeof options.bottom === \"number\"\n ? options.bottom\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.zoom = typeof options.zoom === \"number\" ? options.zoom : 1;\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n}\n\nfunction createCameraObject(options: CameraCreateOptions): THREE.Camera {\n const projection = options.projection ?? \"perspective\";\n const near = options.near ?? DEFAULT_NEAR;\n const far = options.far ?? DEFAULT_FAR;\n\n if (projection === \"orthographic\") {\n const top = options.top ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const bottom = options.bottom ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const left = options.left ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const right = options.right ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const camera = new THREE.OrthographicCamera(\n left,\n right,\n top,\n bottom,\n near,\n far,\n );\n\n camera.zoom = options.zoom ?? 1;\n camera.updateProjectionMatrix();\n return camera;\n }\n\n return new THREE.PerspectiveCamera(\n options.fov ?? DEFAULT_FOV,\n readViewportAspect(),\n near,\n far,\n );\n}\n\nexport function createCamera({ world, scene, camera, payload, isEditor }: CreateContext): number {\n const options = resolveCameraCreateOptions(payload);\n const useWorldCamera = !isEditor && (payload.useWorldCamera === true || Boolean(options.isDefault));\n const object = useWorldCamera ? camera : createCameraObject(options);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Camera\",\n entityType: \"camera\",\n transformInput: payload.transform,\n });\n\n const objectRef = world.getComponent(entityId, Object3DRef);\n if (objectRef?.object instanceof THREE.Camera) {\n objectRef.object.userData.entityId = entityId;\n }\n\n const componentOptions: CameraComponentOptions = {\n camera: object,\n type: options.type,\n isDefault: options.isDefault,\n projection: options.projection,\n fov: options.fov,\n near: options.near,\n far: options.far,\n left: options.left,\n right: options.right,\n top: options.top,\n bottom: options.bottom,\n zoom: options.zoom,\n };\n\n const component = createCameraComponent(world, entityId, componentOptions);\n\n if (useWorldCamera) {\n applyCameraSettings(object, options);\n } else {\n applyCameraSettings(object, options);\n // No THREE.CameraHelper: the editor's camera-preview inset already shows\n // the camera's view, so the frustum wireframe is visual noise.\n scene.add(object);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCapsule({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CapsuleGeometry(0.5, 1, 4, 8);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Capsule\",\n entityType: \"capsule\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"capsule\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCube({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.BoxGeometry(1, 1, 1);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cube\",\n entityType: \"cube\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cube\", mesh, {\n width: 1,\n height: 1,\n depth: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCylinder({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CylinderGeometry(0.5, 0.5, 1, 20);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cylinder\",\n entityType: \"cylinder\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cylinder\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction createEmptyEditorHelper(): THREE.LineSegments {\n const geometry = new THREE.EdgesGeometry(new THREE.BoxGeometry(0.1, 0.1, 0.1));\n const material = new THREE.LineBasicMaterial({\n color: \"#7f8ea3\",\n transparent: true,\n opacity: 0.9,\n depthTest: false,\n });\n\n const helper = new THREE.LineSegments(geometry, material);\n helper.renderOrder = 10;\n helper.userData.ecsHelper = true;\n\n return helper;\n}\n\nexport function createEmpty({ world, scene, payload, isEditor }: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Empty\",\n entityType: \"empty\",\n transformInput: payload.transform,\n });\n\n // if (isEditor) {\n // object.add(createEmptyEditorHelper());\n // }\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createImageComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createImage({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image\",\n entityType: \"image\",\n transformInput: payload.transform,\n });\n\n const image = createImageComponent(world, entityId, imagePath);\n image.object = anchor;\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n image.width = width;\n image.height = height;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n image.texture = texture;\n image.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n type ImageTarget,\n type ImageTargetReference,\n} from \"../../components/ImageTarget\";\nimport { createImageTargetComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype ImageTargetOptions = {\n targets?: ImageTargetReference[];\n compiledTargetUrl?: string;\n compiledTargetDir?: string;\n};\n\nfunction toImageTargetOptions(input: unknown): ImageTargetOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as {\n targets?: unknown;\n compiledTargetUrl?: unknown;\n compiledTargetDir?: unknown;\n };\n\n const targets = Array.isArray(value.targets)\n ? value.targets.filter((target): target is ImageTargetReference => {\n if (!target || typeof target !== \"object\") {\n return false;\n }\n\n const candidate = target as Partial<ImageTargetReference>;\n return (\n typeof candidate.id === \"number\" &&\n Number.isFinite(candidate.id) &&\n typeof candidate.url === \"string\" &&\n candidate.url.length > 0 &&\n typeof candidate.width === \"number\" &&\n Number.isFinite(candidate.width) &&\n typeof candidate.height === \"number\" &&\n Number.isFinite(candidate.height)\n );\n })\n : undefined;\n\n return {\n targets,\n compiledTargetUrl:\n typeof value.compiledTargetUrl === \"string\"\n ? value.compiledTargetUrl\n : undefined,\n compiledTargetDir:\n typeof value.compiledTargetDir === \"string\"\n ? value.compiledTargetDir\n : undefined,\n };\n}\n\nexport function createImageTarget({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image Target\",\n entityType: \"imageTarget\",\n transformInput: payload.transform,\n });\n\n const targetOptions = toImageTargetOptions(payload.options);\n const imageTarget: ImageTarget = createImageTargetComponent(\n world,\n entityId,\n targetOptions,\n );\n scene.add(anchor);\n\n // Only editor sessions should load and render image planes for targets.\n if (!isEditor || !imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as\n | { width?: number; height?: number }\n | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n imageTarget.texture = texture;\n imageTarget.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image target: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}","import * as THREE from \"three\";\n\nimport {\n type InstancedMeshKind,\n type InstanceTransform,\n DEFAULT_INSTANCE_TRANSFORM,\n} from \"../../components/InstancedMesh\";\nimport { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport type { MeshGeometryParameters } from \"../../components/MeshGeometry\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport { createInstancedMeshComponent } from \"../components/InstancedMeshComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction isInstancedMeshKind(value: unknown): value is InstancedMeshKind {\n return (\n value === \"cube\" ||\n value === \"sphere\" ||\n value === \"plane\" ||\n value === \"cylinder\" ||\n value === \"capsule\" ||\n value === \"model\"\n );\n}\n\n/**\n * Creates a lightweight instance-slot entity for the given group, using the\n * provided transform data. Does NOT add an `Object3DRef` — instance slots are\n * pure data entities whose transform is read by `InstancedMeshSystem`.\n */\nfunction createInstanceSlotEntity(\n world: Parameters<typeof createBaseEntity>[0],\n groupEntityId: number,\n slotIndex: number,\n label: string,\n transform?: InstanceTransform,\n): number {\n const instanceEntityId = world.createEntity();\n world.addComponent(instanceEntityId, new Name(label));\n world.addComponent(\n instanceEntityId,\n createTransform(\n transform\n ? {\n position: transform.position,\n rotation: transform.rotation,\n scale: transform.scale,\n }\n : undefined,\n ),\n );\n world.addComponent(\n instanceEntityId,\n new InstanceSlotComponent(groupEntityId, slotIndex),\n );\n world.addComponent(instanceEntityId, new EntityType(\"instanceSlot\"));\n world.addComponent(instanceEntityId, new Selectable(true));\n world.addComponent(instanceEntityId, new ParentId(groupEntityId));\n return instanceEntityId;\n}\n\nexport function createInstancedMesh({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const opts = payload.options ?? {};\n const meshKind: InstancedMeshKind = isInstancedMeshKind(opts.meshKind)\n ? (opts.meshKind as InstancedMeshKind)\n : \"cube\";\n\n const meshParameters =\n opts.meshParameters && typeof opts.meshParameters === \"object\"\n ? (opts.meshParameters as Partial<MeshGeometryParameters>)\n : undefined;\n\n const castShadow =\n typeof opts.castShadow === \"boolean\" ? opts.castShadow : false;\n const receiveShadow =\n typeof opts.receiveShadow === \"boolean\" ? opts.receiveShadow : false;\n const modelPath =\n typeof opts.modelPath === \"string\" ? opts.modelPath : undefined;\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Instanced Mesh\",\n entityType: \"instancedMesh\",\n transformInput: payload.transform,\n });\n\n // Determine instance entity IDs.\n // Three cases:\n // 1. `opts.instanceEntityIds` is present (new-format hydration) — skip child creation.\n // 2. `opts.instances` is present (old-format migration) — create a slot entity per legacy transform.\n // 3. Neither — fresh creation from UI: create one default slot entity.\n let instanceEntityIds: number[] = [];\n\n if (Array.isArray(opts.instanceEntityIds)) {\n // New hydration format — child entities are already in snapshot.entities and\n // will be created separately. Leave instanceEntityIds empty here; it will be\n // populated by restoreComponentState + remapped by restorePostCreateComponents.\n instanceEntityIds = [];\n } else if (Array.isArray(opts.instances) && (opts.instances as InstanceTransform[]).length > 0) {\n // Old snapshot migration: create a slot entity for each legacy InstanceTransform.\n const legacyInstances = opts.instances as InstanceTransform[];\n for (let i = 0; i < legacyInstances.length; i++) {\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n i,\n `Instance ${i + 1}`,\n legacyInstances[i],\n );\n instanceEntityIds.push(slotId);\n }\n } else {\n // Fresh creation: one default instance.\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n 0,\n \"Instance 1\",\n { ...DEFAULT_INSTANCE_TRANSFORM },\n );\n instanceEntityIds = [slotId];\n }\n\n createInstancedMeshComponent(world, entityId, meshKind, meshParameters, {\n castShadow,\n receiveShadow,\n instanceEntityIds,\n modelPath,\n });\n\n scene.add(anchor);\n return entityId;\n}\n","import { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\n\n/**\n * Creates a lightweight instance-slot entity.\n *\n * Instance slot entities carry `TransformComponent` and `InstanceSlotComponent`\n * but intentionally do **not** have an `Object3DRef` — they are pure data\n * containers whose transform is consumed by `InstancedMeshSystem` to build\n * instance matrices. They appear in the hierarchy as children of the owning\n * `instancedMesh` group entity.\n */\nexport function createInstanceSlot({ world, payload }: CreateContext): number {\n const opts = payload.options ?? {};\n const groupEntityId =\n typeof opts.groupEntityId === \"number\" ? opts.groupEntityId : -1;\n const slotIndex =\n typeof opts.slotIndex === \"number\" ? opts.slotIndex : 0;\n\n const entityId = world.createEntity();\n\n world.addComponent(\n entityId,\n new Name(payload.name ?? `Instance ${slotIndex + 1}`),\n );\n world.addComponent(entityId, createTransform(payload.transform));\n world.addComponent(entityId, new InstanceSlotComponent(groupEntityId, slotIndex));\n world.addComponent(entityId, new EntityType(\"instanceSlot\"));\n world.addComponent(entityId, new Selectable(true));\n // ParentId is applied by applyParentLinks during hydration, or set directly\n // by the instanced mesh factory / runtime when creating fresh instances.\n world.addComponent(entityId, new ParentId(groupEntityId !== -1 ? groupEntityId : null));\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAmbientLight({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const light = new THREE.AmbientLight(\"#ffffff\", 0.6);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Ambient Light\",\n entityType: \"ambientLight\",\n transformInput: payload.transform,\n });\n\n createLightComponent(world, entityId, light);\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\nimport { RectAreaLightHelper } from \"three/examples/jsm/helpers/RectAreaLightHelper.js\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { readWorldRenderBackend } from \"../../../render/resolveBackend\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAreaLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n // Area lights shade through lookup tables the backend loads on first use.\n readWorldRenderBackend(world).prepareAreaLights?.(world);\n\n const light = new THREE.RectAreaLight(\"#ffffff\", 5, 4, 4);\n light.lookAt(0, 0, 0);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Area Light\",\n entityType: \"areaLight\",\n transformInput: payload.transform ?? {\n position: { x: 0, y: 4, z: 0 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new RectAreaLightHelper(light, \"#fb7185\");\n helper.onBeforeRender = () => {\n helper.updateMatrixWorld(true);\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createDirectionalLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.DirectionalLight(\"#ffffff\", 1.5);\n light.castShadow = true;\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Directional Light\",\n entityType: \"directionalLight\",\n transformInput: payload.transform ?? {\n position: { x: 3, y: 6, z: 4 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.DirectionalLightHelper(light, 1.8, \"#38bdf8\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createPointLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.PointLight(\"#ffffff\", 1, 10);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Point Light\",\n entityType: \"pointLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 3, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.PointLightHelper(light, 0.35, \"#fbbf24\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createSpotLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.SpotLight(\"#ffffff\", 1, 20, Math.PI / 6, 0.1, 1);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Spot Light\",\n entityType: \"spotLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 5, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.SpotLightHelper(light, \"#f59e0b\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createPlane({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.PlaneGeometry(100, 100);\n const material = new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n side: THREE.DoubleSide,\n });\n\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(\n world,\n mesh,\n {\n label: payload.name ?? \"Plane\",\n entityType: \"plane\",\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? {\n x: -Math.PI / 2,\n y: 0,\n z: 0,\n },\n scale: payload.transform?.scale,\n },\n },\n );\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"plane\", mesh, {\n width: 10,\n height: 10,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createScriptObjectComponent } from \"../components/ScriptObjectComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * A \"script object\" entity: an empty Group whose visual is built at runtime by\n * a user {@link ScriptObject} script (attached via `ScriptObjectComponent`).\n * `ScriptObjectSystem` builds/ticks/disposes the visual in editor AND runtime.\n * Create payload `options` may pre-link a script: `{ scriptUrl, className,\n * enabled?, data? }`. `runtimeState` always starts `\"idle\"` so the system loads\n * cleanly.\n */\nexport function createScriptObject({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Script Object\",\n entityType: \"scriptObject\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n createScriptObjectComponent(world, entityId, {\n scriptUrl: typeof options.scriptUrl === \"string\" ? options.scriptUrl : null,\n className: typeof options.className === \"string\" ? options.className : null,\n enabled: typeof options.enabled === \"boolean\" ? options.enabled : true,\n data:\n options.data &&\n typeof options.data === \"object\" &&\n !Array.isArray(options.data)\n ? (options.data as Record<string, unknown>)\n : {},\n });\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { VRTeleportAreaComponent } from \"../../components/VRTeleportArea\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a teleport destination surface.\n *\n * The mesh is a real, raycastable plane lying in the XZ ground plane (rotated\n * -90° about X, matching the `plane` primitive's convention) because\n * `XRLocomotionSystem` teleports by raycasting against it.\n *\n * It renders as a translucent guide rather than an invisible trigger: in the\n * editor the author needs to see the walkable region, and in-headset a subtle\n * floor tint reads as \"you may stand here\" without dominating the scene.\n */\nexport function createTeleportArea({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const options = (payload.options ?? {}) as Record<string, unknown>;\n const width = typeof options.width === \"number\" ? options.width : 10;\n const depth = typeof options.depth === \"number\" ? options.depth : 10;\n\n const geometry = new THREE.PlaneGeometry(width, depth);\n const material = new THREE.MeshBasicMaterial({\n color: \"#4da3ff\",\n transparent: true,\n opacity: 0.18,\n side: THREE.DoubleSide,\n depthWrite: false,\n });\n\n const object = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Teleport Area\",\n entityType: \"teleportArea\",\n // The flat-on-the-ground rotation must live in the ECS TRANSFORM, not on\n // the Object3D: createBaseEntity applies the transform over the object, and\n // TransformSyncSystem re-applies it every frame — so a rotation set\n // directly on the mesh is overwritten immediately and the area stands up\n // like a wall. Same convention as the `plane` primitive.\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? { x: -Math.PI / 2, y: 0, z: 0 },\n scale: payload.transform?.scale,\n },\n });\n\n world.addComponent(\n entityId,\n new VRTeleportAreaComponent({ width, depth, ...options }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n XRInteractorComponent,\n XRInteractorSideComponent,\n} from \"../../components/XRInteractor\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR interactor and its two hand slots.\n *\n * The children exist so authors have somewhere to PUT custom hand content: drop\n * a mesh under \"Left Interactor\" and it renders at the left hand, with no\n * scripting. Both slots are created up front — discovering you have to\n * hand-build them would be a poor first experience, and their names are what\n * make the hierarchy self-explanatory.\n */\nexport function createXRInteractor({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const root = new THREE.Group();\n const options = (payload.options ?? {}) as Record<string, unknown>;\n\n const entityId = createBaseEntity(world, root, {\n label: payload.name ?? \"XR Interactor\",\n entityType: \"xrInteractor\",\n transformInput: payload.transform,\n });\n world.addComponent(entityId, new XRInteractorComponent(options));\n scene.add(root);\n\n // Skipped when hydrating: the saved scene already contains these slots (and\n // any content the author put in them), so creating a fresh pair on top would\n // add another Left/Right pair on EVERY load — which then gets saved, and\n // grows without bound.\n if (payload.skipDefaultChildren) {\n return entityId;\n }\n\n for (const side of [\"left\", \"right\"] as const) {\n const slot = new THREE.Group();\n const label = side === \"left\" ? \"Left Interactor\" : \"Right Interactor\";\n const slotEntityId = createBaseEntity(world, slot, {\n label,\n entityType: \"empty\",\n parentId: entityId,\n });\n world.addComponent(slotEntityId, new XRInteractorSideComponent({ side }));\n scene.add(slot);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIButtonComponent } from \"../../components/UIButton\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a pressable spatial button.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIButton({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Button\",\n entityType: \"uiButton\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIButtonComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIPanelComponent } from \"../../components/UIPanel\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial UI panel — the backdrop menus and HUDs are built on.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIPanel({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Panel\",\n entityType: \"uiPanel\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIPanelComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UISliderComponent } from \"../../components/UISlider\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a draggable spatial value control.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUISlider({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Slider\",\n entityType: \"uiSlider\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UISliderComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"none\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UITextComponent } from \"../../components/UIText\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial text block.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIText({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Text\",\n entityType: \"uiText\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UITextComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIToggleComponent } from \"../../components/UIToggle\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates an on/off spatial switch.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIToggle({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Toggle\",\n entityType: \"uiToggle\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIToggleComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { XRRigComponent } from \"../../components/XRRig\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR rig — the player's movable origin.\n *\n * A plain `Group`, because the rig's whole job is to be a transform the\n * locomotion system can move: three renders the headset as\n * `rig.matrixWorld × headPose`, so moving this group moves the player. The\n * scene's camera entity should be parented to it.\n */\nexport function createXRRig({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"XR Rig\",\n entityType: \"xrRig\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new XRRigComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createSpriteComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSprite({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Sprite\",\n entityType: \"sprite\",\n transformInput: payload.transform,\n });\n\n const spriteComponent = createSpriteComponent(world, entityId, imagePath);\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.SpriteMaterial({\n map: texture,\n transparent: true,\n });\n const sprite = new THREE.Sprite(material);\n sprite.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n spriteComponent.width = textureImage?.width ?? 1;\n spriteComponent.height = textureImage?.height ?? 1;\n\n anchor.add(sprite);\n spriteComponent.texture = texture;\n spriteComponent.object = sprite;\n },\n undefined,\n (error) => {\n console.error(`Failed to load sprite: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSphere({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.SphereGeometry(0.5, 24, 24);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Sphere\",\n entityType: \"sphere\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"sphere\", mesh, {\n radius: 0.5,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createVideoComponent } from \"../components\";\nimport type { VideoComponent } from \"../../components/Video\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport type { RenderBackend } from \"../../render/RenderBackend\";\nimport { readWorldRenderBackend } from \"../../render/resolveBackend\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\nfunction normalizeDistanceModel(\n value: string,\n): \"inverse\" | \"linear\" | \"exponential\" {\n const v = value.trim().toLowerCase();\n if (v === \"linear\" || v === \"exponential\") return v;\n return \"inverse\";\n}\n\ntype DistanceVideoOptions = VideoComponent[\"options\"];\n\nfunction toBool(value: unknown, fallback: boolean): boolean {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction toNumber(value: unknown, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n\n return value;\n}\n\nfunction toColor(value: unknown, fallback: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return fallback;\n }\n\n return value;\n}\n\nfunction normalizeOptions(\n input: Record<string, unknown> | undefined,\n): DistanceVideoOptions {\n return {\n autoplay: toBool(input?.autoplay, false),\n loop: toBool(input?.loop, true),\n volume: Math.max(0, Math.min(1, toNumber(input?.volume, 1))),\n width: Math.max(0.01, toNumber(input?.width, 1)),\n height: Math.max(0.01, toNumber(input?.height, 1)),\n isGreenScreen: toBool(input?.isGreenScreen, false),\n backgroundColor: toColor(input?.backgroundColor, \"#00ff00\"),\n similarity: Math.max(0.01, Math.min(1, toNumber(input?.similarity, 0.4))),\n smoothness: Math.max(0.001, Math.min(1, toNumber(input?.smoothness, 0.08))),\n spill: Math.max(0, Math.min(1, toNumber(input?.spill, 0.12))),\n positional: toBool(input?.positional, false),\n refDistance: Math.max(0, toNumber(input?.refDistance, 1)),\n distanceModel: toColor(input?.distanceModel, \"inverse\"),\n rolloffFactor: Math.max(0, toNumber(input?.rolloffFactor, 1)),\n };\n}\n\nfunction createStandardMaterial(\n texture: THREE.VideoTexture,\n): THREE.MeshBasicMaterial {\n return new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n}\n\nfunction createVideoMesh(\n entityId: number,\n texture: THREE.VideoTexture,\n options: DistanceVideoOptions,\n backend: RenderBackend,\n): { mesh: THREE.Mesh; material: THREE.Material } {\n const geometry = new THREE.PlaneGeometry(1, 1);\n // The keying material is renderer-specific (GLSL on WebGL, TSL on WebGPU).\n const material = options.isGreenScreen\n ? backend.createChromaKeyMaterial(texture, {\n keyColor: options.backgroundColor,\n similarity: options.similarity,\n smoothness: options.smoothness,\n spill: options.spill,\n })\n : createStandardMaterial(texture);\n const mesh = new THREE.Mesh(geometry, material);\n\n mesh.userData.entityId = entityId;\n mesh.scale.set(options.width, options.height, 1);\n\n return { mesh, material };\n}\n\nfunction applyMetadataSizing(\n video: HTMLVideoElement,\n mesh: THREE.Mesh,\n options: DistanceVideoOptions,\n): void {\n const width = video.videoWidth;\n const height = video.videoHeight;\n if (width <= 0 || height <= 0) {\n return;\n }\n\n // Respect explicit option sizing. Otherwise fall back to video aspect.\n const nextWidth = options.width > 0 ? options.width : width / height;\n const nextHeight = options.height > 0 ? options.height : 1;\n\n mesh.scale.set(nextWidth, nextHeight, 1);\n}\n\nfunction createVideoElement(\n path: string,\n options: DistanceVideoOptions,\n): HTMLVideoElement {\n const video = document.createElement(\"video\");\n video.src = path;\n video.crossOrigin = \"anonymous\";\n video.loop = options.loop;\n video.playsInline = true;\n video.preload = \"auto\";\n video.volume = options.volume;\n\n return video;\n}\n\nexport function createVideo({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n const path = payload.path ?? \"\";\n const options = normalizeOptions(payload.options);\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Video\",\n entityType: \"video\",\n transformInput: payload.transform,\n });\n\n const videoComponent = createVideoComponent(world, entityId, path, options);\n videoComponent.object = anchor;\n scene.add(anchor);\n\n if (!path || typeof document === \"undefined\") {\n return entityId;\n }\n\n const video = createVideoElement(path, options);\n const texture = new THREE.VideoTexture(video);\n texture.colorSpace = THREE.SRGBColorSpace;\n texture.needsUpdate = true;\n\n const { mesh, material } = createVideoMesh(\n entityId,\n texture,\n options,\n readWorldRenderBackend(world),\n );\n anchor.add(mesh);\n\n videoComponent.videoElement = video;\n videoComponent.texture = texture;\n videoComponent.material = material;\n videoComponent.object = mesh;\n\n video.addEventListener(\"loadedmetadata\", () => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n applyMetadataSizing(video, mesh, options);\n });\n\n // Route audio through the Web Audio API only when positional audio is\n // requested. Positional audio requires Web Audio for spatialization.\n // Non-positional video leaves the native <video> audio path intact so\n // the browser can play audio without needing the AudioContext to be\n // in \"running\" state (it is suspended until a user gesture).\n if (!isEditor && options.positional) {\n const listener = getOrCreateListener(camera);\n const audioNode = new THREE.PositionalAudio(listener);\n\n audioNode.setVolume(options.volume);\n audioNode.setRefDistance(options.refDistance);\n audioNode.setDistanceModel(normalizeDistanceModel(options.distanceModel));\n audioNode.setRolloffFactor(options.rolloffFactor);\n\n // Connects the video element's audio into the Web Audio graph.\n // After this call, video.volume acts as a pre-gain before the node —\n // reset it to 1 so the audioNode's own gain is the single source of truth.\n audioNode.setMediaElementSource(video);\n video.volume = 1;\n\n anchor.add(audioNode);\n videoComponent.audioNode = audioNode;\n }\n\n if (options.autoplay) {\n videoComponent.play(); // sets isPlaying flag; VideoSystem drives actual play()\n }\n\n return entityId;\n}\n","import type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\nimport { createAudio } from \"./objects/AudioFactory\";\nimport { createCamera } from \"./objects/CameraFactory\";\nimport { createCapsule } from \"./objects/CapsuleFactory\";\nimport { createCube } from \"./objects/CubeFactory\";\nimport { createCylinder } from \"./objects/CylinderFactory\";\nimport { createEmpty } from \"./objects/EmptyFactory\";\nimport { createImage } from \"./objects/ImageFactory\";\nimport { createImageTarget } from \"./objects/ImageTargetFactory\";\nimport { createInstancedMesh } from \"./objects/InstancedMeshFactory\";\nimport { createInstanceSlot } from \"./objects/InstanceSlotFactory\";\nimport { createAmbientLight } from \"./objects/lights/AmbientLightFactory\";\nimport { createAreaLight } from \"./objects/lights/AreaLightFactory\";\nimport { createDirectionalLight } from \"./objects/lights/DirectionalLightFactory\";\nimport { createPointLight } from \"./objects/lights/PointLightFactory\";\nimport { createSpotLight } from \"./objects/lights/SpotLightFactory\";\nimport { createModel } from \"./objects/ModelFactory\";\nimport { createPlane } from \"./objects/PlaneFactory\";\nimport { createScriptObject } from \"./objects/ScriptObjectFactory\";\nimport { createTeleportArea } from \"./objects/TeleportAreaFactory\";\nimport { createXRInteractor } from \"./objects/XRInteractorFactory\";\nimport { createUIButton } from \"./objects/UIButtonObjectFactory\";\nimport { createUIPanel } from \"./objects/UIPanelObjectFactory\";\nimport { createUISlider } from \"./objects/UISliderObjectFactory\";\nimport { createUIText } from \"./objects/UITextObjectFactory\";\nimport { createUIToggle } from \"./objects/UIToggleObjectFactory\";\nimport { createXRRig } from \"./objects/XRRigFactory\";\nimport { createSprite } from \"./objects/SpriteFactory\";\nimport { createSphere } from \"./objects/SphereFactory\";\nimport { createVideo } from \"./objects/VideoFactory\";\nimport { registerDefaultComponentFactories } from \"./registerDefaultComponentFactories\";\n\nexport function registerDefaultFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.register(\"cube\", createCube);\n objectManagementSystem.register(\"sphere\", createSphere);\n objectManagementSystem.register(\"plane\", createPlane);\n objectManagementSystem.register(\"capsule\", createCapsule);\n objectManagementSystem.register(\"cylinder\", createCylinder);\n objectManagementSystem.register(\"empty\", createEmpty);\n objectManagementSystem.register(\"model\", createModel);\n objectManagementSystem.register(\"image\", createImage);\n objectManagementSystem.register(\"imageTarget\", createImageTarget);\n objectManagementSystem.register(\"instancedMesh\", createInstancedMesh);\n objectManagementSystem.register(\"instanceSlot\", createInstanceSlot);\n objectManagementSystem.register(\"sprite\", createSprite);\n objectManagementSystem.register(\"audio\", createAudio);\n objectManagementSystem.register(\"camera\", createCamera);\n objectManagementSystem.register(\"video\", createVideo);\n objectManagementSystem.register(\"ambientLight\", createAmbientLight);\n objectManagementSystem.register(\"directionalLight\", createDirectionalLight);\n objectManagementSystem.register(\"pointLight\", createPointLight);\n objectManagementSystem.register(\"spotLight\", createSpotLight);\n objectManagementSystem.register(\"areaLight\", createAreaLight);\n objectManagementSystem.register(\"scriptObject\", createScriptObject);\n objectManagementSystem.register(\"xrRig\", createXRRig);\n objectManagementSystem.register(\"xrInteractor\", createXRInteractor);\n objectManagementSystem.register(\"teleportArea\", createTeleportArea);\n objectManagementSystem.register(\"uiPanel\", createUIPanel);\n objectManagementSystem.register(\"uiText\", createUIText);\n objectManagementSystem.register(\"uiButton\", createUIButton);\n objectManagementSystem.register(\"uiToggle\", createUIToggle);\n objectManagementSystem.register(\"uiSlider\", createUISlider);\n\n registerDefaultComponentFactories(objectManagementSystem);\n}\n"]}
1
+ {"version":3,"sources":["../core/factories/registerDefaultComponentFactories.ts","../core/factories/objects/AudioFactory.ts","../core/factories/objects/CameraFactory.ts","../core/factories/objects/CapsuleFactory.ts","../core/factories/objects/CubeFactory.ts","../core/factories/objects/CylinderFactory.ts","../core/factories/objects/EmptyFactory.ts","../core/factories/objects/ImageFactory.ts","../core/factories/objects/ImageTargetFactory.ts","../core/factories/objects/InstancedMeshFactory.ts","../core/factories/objects/InstanceSlotFactory.ts","../core/factories/objects/lights/AmbientLightFactory.ts","../core/factories/objects/lights/AreaLightFactory.ts","../core/factories/objects/lights/DirectionalLightFactory.ts","../core/factories/objects/lights/PointLightFactory.ts","../core/factories/objects/lights/SpotLightFactory.ts","../core/factories/objects/PlaneFactory.ts","../core/factories/objects/ScriptObjectFactory.ts","../core/factories/objects/TeleportAreaFactory.ts","../core/factories/objects/XRInteractorFactory.ts","../core/factories/objects/UIButtonObjectFactory.ts","../core/factories/objects/UIPanelObjectFactory.ts","../core/factories/objects/UISliderObjectFactory.ts","../core/factories/objects/UITextObjectFactory.ts","../core/factories/objects/UIToggleObjectFactory.ts","../core/factories/objects/XRRigFactory.ts","../core/factories/objects/SpriteFactory.ts","../core/factories/objects/SphereFactory.ts","../core/factories/objects/VideoFactory.ts","../core/factories/registerDefaultFactories.ts"],"names":["THREE","THREE2","THREE3","THREE4","THREE5","THREE6","THREE7","THREE8","THREE9","THREE10","THREE11","THREE12","THREE13","THREE14","THREE15","THREE16","THREE17","THREE18","THREE19","THREE20","THREE21","THREE22","THREE23","THREE24","THREE25","THREE26","getOrCreateListener"],"mappings":";;;;;;;;AAgDO,SAAS,kCACd,sBAAA,EACM;AACN,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,aAAa,wBAAwB,CAAA;AACrF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,UAAU,qBAAqB,CAAA;AAC/E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,WAAW,sBAAsB,CAAA;AACjF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,eAAe,0BAA0B,CAAA;AACzF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,cAAc,yBAAyB,CAAA;AACvF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,kBAAkB,6BAA6B,CAAA;AAC/F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,cAAc,yBAAyB,CAAA;AACvF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,kBAAkB,6BAA6B,CAAA;AAC/F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,MAAM,iBAAiB,CAAA;AACvE,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,mBAAmB,8BAA8B,CAAA;AACjG,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,oBAAoB,+BAA+B,CAAA;AACnG,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,kBAAkB,6BAA6B,CAAA;AAC/F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,kBAAkB,6BAA6B,CAAA;AAC/F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,WAAW,sBAAsB,CAAA;AACjF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,UAAU,qBAAqB,CAAA;AAC/E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,kBAAkB,6BAA6B,CAAA;AAC/F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,gBAAgB,2BAA2B,CAAA;AAC3F,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,oBAAoB,+BAA+B,CAAA;AACnG,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,mBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,eAAe,0BAA0B,CAAA;AACzF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,QAAQ,mBAAmB,CAAA;AAC3E,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,cAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,QAAQ,mBAAmB,CAAA;AAC3E,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,aAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,YAAY,uBAAuB,CAAA;AACnF,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,gBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,UAAU,qBAAqB,CAAA;AAC/E,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,cAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,cAAc,yBAAyB,CAAA;AACvF,EAAA,sBAAA,CAAuB,wBAAA;AAAA,IACrB,yBAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,UAAU,qBAAqB,CAAA;AAC/E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,aAAa,wBAAwB,CAAA;AACrF,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,SAAS,oBAAoB,CAAA;AAC7E,EAAA,sBAAA,CAAuB,wBAAA,CAAyB,iBAAiB,4BAA4B,CAAA;AAC/F;AAlEgB,MAAA,CAAA,iCAAA,EAAA,mCAAA,CAAA;AC1ChB,SAAS,oBACP,MAAA,EACqB;AACrB,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,gBAAA;AACjC,EAAA,IAAI,oBAA0BA,OAAA,CAAA,aAAA,EAAe;AAC3C,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,aAAA,EAAc;AACzC,EAAA,MAAA,CAAO,IAAI,QAAQ,CAAA;AACnB,EAAA,MAAA,CAAO,SAAS,gBAAA,GAAmB,QAAA;AAEnC,EAAA,OAAO,QAAA;AACT;AAbS,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAgBF,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,QAAA,EAAS;AAElC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,OAAA;AAAA,IACvB,UAAA,EAAY,OAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,oBAAA;AAAA,IACZ,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAQ,IAAA,IAAQ,EAAA;AAAA,IAChB,OAAA,CAAQ,WAAW,EAAC;AAAA,IACpB;AAAA,MACE,MAAA,EAAQ,MAAA;AAAA,MACR,QAAA,EAAU,oBAAoB,MAAM,CAAA;AAAA,MACpC;AAAA;AACF,GACF;AACA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAEhB,EAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AACf,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,WAAA,EAAY;AACrC,IAAA,MAAA,CAAO,IAAA;AAAA,MACL,KAAA,CAAM,IAAA;AAAA,MACN,CAAC,MAAA,KAAW;AACV,QAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9B,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,QAAQ,KAAA,CAAM,KAAA;AACpB,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA;AAAA,QACF;AAEA,QAAA,KAAA,CAAM,UAAU,MAAM,CAAA;AACtB,QAAA,IAAI,KAAA,CAAM,QAAQ,QAAA,EAAU;AAC1B,UAAA,KAAA,CAAM,IAAA,EAAK;AAAA,QACb;AAAA,MACF,CAAA;AAAA,MACA,MAAA;AAAA,MACA,CAAC,KAAA,KAAU;AACT,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,sBAAA,EAAyB,KAAA,CAAM,IAAI,IAAI,KAAK,CAAA;AAAA,MAC5D;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AA3DgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACIhB,IAAM,YAAA,GAAe,GAAA;AACrB,IAAM,WAAA,GAAc,GAAA;AACpB,IAAM,WAAA,GAAc,EAAA;AACpB,IAAM,gCAAA,GAAmC,CAAA;AAEzC,SAAS,kBAAA,GAA6B;AACpC,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACjC,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAQ,MAAA,CAAO,UAAA;AACrB,EAAA,MAAM,SAAS,MAAA,CAAO,WAAA;AACtB,EAAA,IACE,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,IACrB,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,IACtB,KAAA,GAAQ,CAAA,IACR,MAAA,GAAS,CAAA,EACT;AACA,IAAA,OAAO,KAAA,GAAQ,MAAA;AAAA,EACjB;AAEA,EAAA,OAAO,CAAA;AACT;AAjBS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAmBT,SAAS,sBAAsB,KAAA,EAAqC;AAClE,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACvC,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAA;AAEd,EAAA,MAAM,IAAA,GACJ,MAAM,IAAA,KAAS,IAAA,IAAQ,MAAM,IAAA,KAAS,IAAA,GAClC,MAAM,IAAA,GACN,MAAA;AAEN,EAAA,MAAM,UAAA,GACJ,MAAM,UAAA,KAAe,cAAA,IAAkB,MAAM,UAAA,KAAe,aAAA,GACxD,MAAM,UAAA,GACN,MAAA;AAEN,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,WAAW,OAAO,KAAA,CAAM,SAAA,KAAc,SAAA,GAAY,MAAM,SAAA,GAAY,MAAA;AAAA,IACpE,UAAA;AAAA,IACA,GAAA,EAAK,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA,CAAM,GAAA,GAAM,MAAA;AAAA,IAC/E,IAAA,EACE,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GACxD,KAAA,CAAM,IAAA,GACN,MAAA;AAAA,IACN,GAAA,EAAK,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA,CAAM,GAAA,GAAM,MAAA;AAAA,IAC/E,IAAA,EACE,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GACxD,KAAA,CAAM,IAAA,GACN,MAAA;AAAA,IACN,KAAA,EACE,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,GAC1D,KAAA,CAAM,KAAA,GACN,MAAA;AAAA,IACN,GAAA,EACE,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,GACtD,KAAA,CAAM,GAAA,GACN,MAAA;AAAA,IACN,MAAA,EACE,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,GAC5D,KAAA,CAAM,MAAA,GACN,MAAA;AAAA,IACN,IAAA,EACE,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,GACxD,KAAA,CAAM,IAAA,GACN;AAAA,GACR;AACF;AAhDS,MAAA,CAAA,qBAAA,EAAA,uBAAA,CAAA;AAkDT,SAAS,2BAA2B,OAAA,EAGZ;AAGtB,EAAA,MAAM,IAAA,GAAO,qBAAA,CAAsB,OAAA,CAAQ,OAAO,CAAA;AAElD,EAAA,IAAI,OAAA,CAAQ,OAAA,IAAW,OAAO,OAAA,CAAQ,YAAY,QAAA,EAAU;AAC1D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,qBAAA,CAAsB,QAAQ,MAAM,CAAA;AAC7C;AAbS,MAAA,CAAA,0BAAA,EAAA,4BAAA,CAAA;AAeT,SAAS,mBAAA,CAAoB,QAAsB,OAAA,EAAoC;AACrF,EAAA,MAAM,OAAO,OAAO,OAAA,CAAQ,IAAA,KAAS,QAAA,GAAW,QAAQ,IAAA,GAAO,YAAA;AAC/D,EAAA,MAAM,MAAM,OAAO,OAAA,CAAQ,GAAA,KAAQ,QAAA,GAAW,QAAQ,GAAA,GAAM,WAAA;AAC5D,EAAA,MAAM,aAAa,OAAA,CAAQ,UAAA;AAE3B,EAAA,IAAI,kBAAwBC,OAAA,CAAA,iBAAA,EAAmB;AAC7C,IAAA,IAAI,CAAC,UAAA,IAAc,UAAA,KAAe,aAAA,EAAe;AAC/C,MAAA,MAAA,CAAO,MAAM,OAAO,OAAA,CAAQ,GAAA,KAAQ,QAAA,GAAW,QAAQ,GAAA,GAAM,WAAA;AAAA,IAC/D;AAEA,IAAA,MAAA,CAAO,SAAS,kBAAA,EAAmB;AACnC,IAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AACd,IAAA,MAAA,CAAO,GAAA,GAAM,GAAA;AACb,IAAA,MAAA,CAAO,sBAAA,EAAuB;AAC9B,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,kBAAwBA,OAAA,CAAA,kBAAA,EAAoB;AAC9C,IAAA,MAAA,CAAO,OACL,OAAO,OAAA,CAAQ,SAAS,QAAA,GACpB,OAAA,CAAQ,OACR,CAAC,gCAAA;AACP,IAAA,MAAA,CAAO,QACL,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,GACrB,QAAQ,KAAA,GACR,gCAAA;AACN,IAAA,MAAA,CAAO,MACL,OAAO,OAAA,CAAQ,GAAA,KAAQ,QAAA,GACnB,QAAQ,GAAA,GACR,gCAAA;AACN,IAAA,MAAA,CAAO,SACL,OAAO,OAAA,CAAQ,WAAW,QAAA,GACtB,OAAA,CAAQ,SACR,CAAC,gCAAA;AACP,IAAA,MAAA,CAAO,OAAO,OAAO,OAAA,CAAQ,IAAA,KAAS,QAAA,GAAW,QAAQ,IAAA,GAAO,CAAA;AAChE,IAAA,MAAA,CAAO,IAAA,GAAO,IAAA;AACd,IAAA,MAAA,CAAO,GAAA,GAAM,GAAA;AACb,IAAA,MAAA,CAAO,sBAAA,EAAuB;AAAA,EAChC;AACF;AAvCS,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAyCT,SAAS,mBAAmB,OAAA,EAA4C;AACtE,EAAA,MAAM,UAAA,GAAa,QAAQ,UAAA,IAAc,aAAA;AACzC,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,YAAA;AAC7B,EAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,IAAO,WAAA;AAE3B,EAAA,IAAI,eAAe,cAAA,EAAgB;AACjC,IAAA,MAAM,GAAA,GAAM,QAAQ,GAAA,IAAO,gCAAA;AAC3B,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,IAAU,CAAC,gCAAA;AAClC,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,IAAQ,CAAC,gCAAA;AAC9B,IAAA,MAAM,KAAA,GAAQ,QAAQ,KAAA,IAAS,gCAAA;AAC/B,IAAA,MAAM,SAAS,IAAUA,OAAA,CAAA,kBAAA;AAAA,MACvB,IAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,IAAA,GAAO,QAAQ,IAAA,IAAQ,CAAA;AAC9B,IAAA,MAAA,CAAO,sBAAA,EAAuB;AAC9B,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAUA,OAAA,CAAA,iBAAA;AAAA,IACf,QAAQ,GAAA,IAAO,WAAA;AAAA,IACf,kBAAA,EAAmB;AAAA,IACnB,IAAA;AAAA,IACA;AAAA,GACF;AACF;AA9BS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAgCF,SAAS,aAAa,EAAE,KAAA,EAAO,OAAO,MAAA,EAAQ,OAAA,EAAS,UAAS,EAA0B;AAC/F,EAAA,MAAM,OAAA,GAAU,2BAA2B,OAAO,CAAA;AAClD,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAa,OAAA,CAAQ,mBAAmB,IAAA,IAAQ,OAAA,CAAQ,QAAQ,SAAS,CAAA,CAAA;AACjG,EAAA,MAAM,MAAA,GAAS,cAAA,GAAiB,MAAA,GAAS,kBAAA,CAAmB,OAAO,CAAA;AAEnE,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,QAAA;AAAA,IACvB,UAAA,EAAY,QAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,WAAW,CAAA;AAC1D,EAAA,IAAI,SAAA,EAAW,kBAAwBA,OAAA,CAAA,MAAA,EAAQ;AAC7C,IAAA,SAAA,CAAU,MAAA,CAAO,SAAS,QAAA,GAAW,QAAA;AAAA,EACvC;AAEA,EAAA,MAAM,gBAAA,GAA2C;AAAA,IAC/C,MAAA,EAAQ,MAAA;AAAA,IACR,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,WAAW,OAAA,CAAQ,SAAA;AAAA,IACnB,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,KAAK,OAAA,CAAQ,GAAA;AAAA,IACb,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,KAAK,OAAA,CAAQ,GAAA;AAAA,IACb,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,OAAO,OAAA,CAAQ,KAAA;AAAA,IACf,KAAK,OAAA,CAAQ,GAAA;AAAA,IACb,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,MAAM,OAAA,CAAQ;AAAA,GAChB;AAEA,EAAkB,qBAAA,CAAsB,KAAA,EAAO,QAAA,EAAU,gBAAgB;AAEzE,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,mBAAA,CAAoB,QAAQ,OAAO,CAAA;AAAA,EACrC,CAAA,MAAO;AACL,IAAA,mBAAA,CAAoB,QAAQ,OAAO,CAAA;AAGnC,IAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,EAClB;AAEA,EAAA,OAAO,QAAA;AACT;AA3CgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;AClLT,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAW,IAAUC,OAAA,CAAA,eAAA,CAAgB,GAAA,EAAK,CAAA,EAAG,GAAG,CAAC,CAAA;AACvD,EAAA,MAAM,WAAW,IAAUA,OAAA,CAAA,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAW,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,IAC7C,KAAA,EAAO,QAAQ,IAAA,IAAQ,SAAA;AAAA,IACvB,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,mBAAA,CAAoB,KAAA,EAAO,UAAU,IAAI,CAAA;AACzC,EAAA,uBAAA,CAAwB,KAAA,EAAO,UAAU,QAAQ,CAAA;AACjD,EAAA,2BAAA,CAA4B,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,IAAA,EAAM;AAAA,IAC1D,MAAA,EAAQ,GAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACV,EAAG;AAAA,IACD,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AACH,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAEd,EAAA,OAAO,QAAA;AACT;AA3BgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;ACAT,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,EAAO,SAAQ,EAA0B;AAC3E,EAAA,MAAM,QAAA,GAAW,IAAUC,OAAA,CAAA,WAAA,CAAY,CAAA,EAAG,GAAG,CAAC,CAAA;AAC9C,EAAA,MAAM,WAAW,IAAUA,OAAA,CAAA,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAW,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,IAC7C,KAAA,EAAO,QAAQ,IAAA,IAAQ,MAAA;AAAA,IACvB,UAAA,EAAY,MAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,mBAAA,CAAoB,KAAA,EAAO,UAAU,IAAI,CAAA;AACzC,EAAA,uBAAA,CAAwB,KAAA,EAAO,UAAU,QAAQ,CAAA;AACjD,EAAA,2BAAA,CAA4B,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,IAAA,EAAM;AAAA,IACvD,KAAA,EAAO,CAAA;AAAA,IACP,MAAA,EAAQ,CAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT,EAAG;AAAA,IACD,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AAEH,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,EAAA,OAAO,QAAA;AACT;AAxBgB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;ACAT,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,WAAW,IAAUC,OAAA,CAAA,gBAAA,CAAiB,GAAA,EAAK,GAAA,EAAK,GAAG,EAAE,CAAA;AAC3D,EAAA,MAAM,WAAW,IAAUA,OAAA,CAAA,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAW,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,IAC7C,KAAA,EAAO,QAAQ,IAAA,IAAQ,UAAA;AAAA,IACvB,UAAA,EAAY,UAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,mBAAA,CAAoB,KAAA,EAAO,UAAU,IAAI,CAAA;AACzC,EAAA,uBAAA,CAAwB,KAAA,EAAO,UAAU,QAAQ,CAAA;AACjD,EAAA,2BAAA,CAA4B,KAAA,EAAO,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM;AAAA,IAC3D,MAAA,EAAQ,GAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACV,EAAG;AAAA,IACD,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AACH,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAEd,EAAA,OAAO,QAAA;AACT;AA3BgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACWT,SAAS,YAAY,EAAE,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,UAAS,EAA0B;AACtF,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,OAAA;AAAA,IACvB,UAAA,EAAY,OAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAMD,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AAfgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACfT,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,KAAA,EAAO,SAAQ,EAA0B;AAC5E,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,QAAA,EAAS;AAElC,EAAA,MAAM,SAAA,GAAY,QAAQ,IAAA,IAAQ,EAAA;AAClC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,OAAA;AAAA,IACvB,UAAA,EAAY,OAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,KAAA,GAAQ,oBAAA,CAAqB,KAAA,EAAO,QAAA,EAAU,SAAS,CAAA;AAC7D,EAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AACf,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAEhB,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,aAAA,EAAc;AACvC,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,SAAA;AAAA,IACA,CAAC,OAAA,KAAY;AACX,MAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9B,QAAA,OAAA,CAAQ,OAAA,EAAQ;AAChB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,iBAAA,CAAkB;AAAA,QAC3C,GAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAa,IAAA;AAAA,QACb,IAAA,EAAYA,OAAA,CAAA;AAAA,OACb,CAAA;AACD,MAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA;AAC7C,MAAA,MAAM,KAAA,GAAQ,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAC/C,MAAA,KAAA,CAAM,SAAS,QAAA,GAAW,QAAA;AAE1B,MAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAC7B,MAAA,MAAM,KAAA,GAAQ,cAAc,KAAA,IAAS,CAAA;AACrC,MAAA,MAAM,MAAA,GAAS,cAAc,MAAA,IAAU,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAA,GAAS,CAAA;AAE7C,MAAA,KAAA,CAAM,KAAA,GAAQ,KAAA;AACd,MAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAEf,MAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAE5B,MAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,MAAA,KAAA,CAAM,OAAA,GAAU,OAAA;AAChB,MAAA,KAAA,CAAM,MAAA,GAAS,KAAA;AAAA,IACjB,CAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,KAAA,KAAU;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,sBAAA,EAAyB,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,IAC3D;AAAA,GACF;AAEA,EAAA,OAAO,QAAA;AACT;AAzDgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACUhB,SAAS,qBAAqB,KAAA,EAAoC;AAChE,EAAA,IAAI,CAAC,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,EAAU;AACvC,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,MAAM,KAAA,GAAQ,KAAA;AAMd,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,OAAO,IACvC,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAA2C;AAC/D,IAAA,IAAI,CAAC,MAAA,IAAU,OAAO,MAAA,KAAW,QAAA,EAAU;AACzC,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,SAAA,GAAY,MAAA;AAClB,IAAA,OACE,OAAO,SAAA,CAAU,EAAA,KAAO,QAAA,IACxB,OAAO,QAAA,CAAS,SAAA,CAAU,EAAE,CAAA,IAC5B,OAAO,SAAA,CAAU,GAAA,KAAQ,QAAA,IACzB,UAAU,GAAA,CAAI,MAAA,GAAS,CAAA,IACvB,OAAO,SAAA,CAAU,KAAA,KAAU,QAAA,IAC3B,MAAA,CAAO,SAAS,SAAA,CAAU,KAAK,CAAA,IAC/B,OAAO,UAAU,MAAA,KAAW,QAAA,IAC5B,MAAA,CAAO,QAAA,CAAS,UAAU,MAAM,CAAA;AAAA,EAEpC,CAAC,CAAA,GACD,MAAA;AAEJ,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,mBACE,OAAO,KAAA,CAAM,iBAAA,KAAsB,QAAA,GAC/B,MAAM,iBAAA,GACN,MAAA;AAAA,IACN,mBACE,OAAO,KAAA,CAAM,iBAAA,KAAsB,QAAA,GAC/B,MAAM,iBAAA,GACN;AAAA,GACR;AACF;AA1CS,MAAA,CAAA,oBAAA,EAAA,sBAAA,CAAA;AA4CF,SAAS,iBAAA,CAAkB;AAAA,EAChC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,QAAA,EAAS;AAElC,EAAA,MAAM,SAAA,GAAY,QAAQ,IAAA,IAAQ,EAAA;AAElC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,cAAA;AAAA,IACvB,UAAA,EAAY,aAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,aAAA,GAAgB,oBAAA,CAAqB,OAAA,CAAQ,OAAO,CAAA;AAC1D,EAAA,MAAM,WAAA,GAA2B,0BAAA;AAAA,IAC/B,KAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AACA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAGhB,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,SAAA,EAAW;AAC3B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,aAAA,EAAc;AACvC,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,SAAA;AAAA,IACA,CAAC,OAAA,KAAY;AACX,MAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9B,QAAA,OAAA,CAAQ,OAAA,EAAQ;AAChB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,iBAAA,CAAkB;AAAA,QAC3C,GAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAa,IAAA;AAAA,QACb,IAAA,EAAYA,OAAA,CAAA;AAAA,OACb,CAAA;AACD,MAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA;AAC7C,MAAA,MAAM,KAAA,GAAQ,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAC/C,MAAA,KAAA,CAAM,SAAS,QAAA,GAAW,QAAA;AAE1B,MAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAG7B,MAAA,MAAM,KAAA,GAAQ,cAAc,KAAA,IAAS,CAAA;AACrC,MAAA,MAAM,MAAA,GAAS,cAAc,MAAA,IAAU,CAAA;AACvC,MAAA,MAAM,MAAA,GAAS,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAA,GAAS,CAAA;AAE7C,MAAA,KAAA,CAAM,KAAA,CAAM,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,CAAC,CAAA;AAE5B,MAAA,MAAA,CAAO,IAAI,KAAK,CAAA;AAChB,MAAA,WAAA,CAAY,OAAA,GAAU,OAAA;AACtB,MAAA,WAAA,CAAY,MAAA,GAAS,KAAA;AAAA,IACvB,CAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,KAAA,KAAU;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,EAAgC,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,IAClE;AAAA,GACF;AAEA,EAAA,OAAO,QAAA;AACT;AAnEgB,MAAA,CAAA,iBAAA,EAAA,mBAAA,CAAA;ACzChB,SAAS,oBAAoB,KAAA,EAA4C;AACvE,EAAA,OACE,KAAA,KAAU,MAAA,IACV,KAAA,KAAU,QAAA,IACV,KAAA,KAAU,WACV,KAAA,KAAU,UAAA,IACV,KAAA,KAAU,SAAA,IACV,KAAA,KAAU,OAAA;AAEd;AATS,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAgBT,SAAS,wBAAA,CACP,KAAA,EACA,aAAA,EACA,SAAA,EACA,OACA,SAAA,EACQ;AACR,EAAA,MAAM,gBAAA,GAAmB,MAAM,YAAA,EAAa;AAC5C,EAAA,KAAA,CAAM,YAAA,CAAa,gBAAA,EAAkB,IAAI,IAAA,CAAK,KAAK,CAAC,CAAA;AACpD,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,gBAAA;AAAA,IACA,eAAA;AAAA,MACE,SAAA,GACI;AAAA,QACE,UAAU,SAAA,CAAU,QAAA;AAAA,QACpB,UAAU,SAAA,CAAU,QAAA;AAAA,QACpB,OAAO,SAAA,CAAU;AAAA,OACnB,GACA;AAAA;AACN,GACF;AACA,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,gBAAA;AAAA,IACA,IAAI,qBAAA,CAAsB,aAAA,EAAe,SAAS;AAAA,GACpD;AACA,EAAA,KAAA,CAAM,YAAA,CAAa,gBAAA,EAAkB,IAAI,UAAA,CAAW,cAAc,CAAC,CAAA;AACnE,EAAA,KAAA,CAAM,YAAA,CAAa,gBAAA,EAAkB,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AACzD,EAAA,KAAA,CAAM,YAAA,CAAa,gBAAA,EAAkB,IAAI,QAAA,CAAS,aAAa,CAAC,CAAA;AAChE,EAAA,OAAO,gBAAA;AACT;AA7BS,MAAA,CAAA,wBAAA,EAAA,0BAAA,CAAA;AA+BF,SAAS,mBAAA,CAAoB;AAAA,EAClC,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,QAAA,EAAS;AAElC,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,IAAW,EAAC;AACjC,EAAA,MAAM,WAA8B,mBAAA,CAAoB,IAAA,CAAK,QAAQ,CAAA,GAChE,KAAK,QAAA,GACN,MAAA;AAEJ,EAAA,MAAM,cAAA,GACJ,KAAK,cAAA,IAAkB,OAAO,KAAK,cAAA,KAAmB,QAAA,GACjD,KAAK,cAAA,GACN,MAAA;AAEN,EAAA,MAAM,aACJ,OAAO,IAAA,CAAK,UAAA,KAAe,SAAA,GAAY,KAAK,UAAA,GAAa,KAAA;AAC3D,EAAA,MAAM,gBACJ,OAAO,IAAA,CAAK,aAAA,KAAkB,SAAA,GAAY,KAAK,aAAA,GAAgB,KAAA;AACjE,EAAA,MAAM,YACJ,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,GAAW,KAAK,SAAA,GAAY,MAAA;AAExD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,gBAAA;AAAA,IACvB,UAAA,EAAY,eAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAOD,EAAA,IAAI,oBAA8B,EAAC;AAEnC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,iBAAiB,CAAA,EAAG;AAIzC,IAAA,iBAAA,GAAoB,EAAC;AAAA,EACvB,CAAA,MAAA,IAAW,MAAM,OAAA,CAAQ,IAAA,CAAK,SAAS,CAAA,IAAM,IAAA,CAAK,SAAA,CAAkC,MAAA,GAAS,CAAA,EAAG;AAE9F,IAAA,MAAM,kBAAkB,IAAA,CAAK,SAAA;AAC7B,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,eAAA,CAAgB,QAAQ,CAAA,EAAA,EAAK;AAC/C,MAAA,MAAM,MAAA,GAAS,wBAAA;AAAA,QACb,KAAA;AAAA,QACA,QAAA;AAAA,QACA,CAAA;AAAA,QACA,CAAA,SAAA,EAAY,IAAI,CAAC,CAAA,CAAA;AAAA,QACjB,gBAAgB,CAAC;AAAA,OACnB;AACA,MAAA,iBAAA,CAAkB,KAAK,MAAM,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA,MAAO;AAEL,IAAA,MAAM,MAAA,GAAS,wBAAA;AAAA,MACb,KAAA;AAAA,MACA,QAAA;AAAA,MACA,CAAA;AAAA,MACA,YAAA;AAAA,MACA,EAAE,GAAG,0BAAA;AAA2B,KAClC;AACA,IAAA,iBAAA,GAAoB,CAAC,MAAM,CAAA;AAAA,EAC7B;AAEA,EAAA,4BAAA,CAA6B,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,cAAA,EAAgB;AAAA,IACtE,UAAA;AAAA,IACA,aAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA5EgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;;;AChDT,SAAS,kBAAA,CAAmB,EAAE,KAAA,EAAO,OAAA,EAAQ,EAA0B;AAC5E,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,OAAA,IAAW,EAAC;AACjC,EAAA,MAAM,gBACJ,OAAO,IAAA,CAAK,aAAA,KAAkB,QAAA,GAAW,KAAK,aAAA,GAAgB,EAAA;AAChE,EAAA,MAAM,YACJ,OAAO,IAAA,CAAK,SAAA,KAAc,QAAA,GAAW,KAAK,SAAA,GAAY,CAAA;AAExD,EAAA,MAAM,QAAA,GAAW,MAAM,YAAA,EAAa;AAEpC,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,SAAA,EAAY,SAAA,GAAY,CAAC,CAAA,CAAE;AAAA,GACtD;AACA,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,eAAA,CAAgB,OAAA,CAAQ,SAAS,CAAC,CAAA;AAC/D,EAAA,KAAA,CAAM,aAAa,QAAA,EAAU,IAAI,qBAAA,CAAsB,aAAA,EAAe,SAAS,CAAC,CAAA;AAChF,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,UAAA,CAAW,cAAc,CAAC,CAAA;AAC3D,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AAGjD,EAAA,KAAA,CAAM,YAAA,CAAa,UAAU,IAAI,QAAA,CAAS,kBAAkB,EAAA,GAAK,aAAA,GAAgB,IAAI,CAAC,CAAA;AAEtF,EAAA,OAAO,QAAA;AACT;AAtBgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACZT,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAUC,OAAA,CAAA,YAAA,CAAa,SAAA,EAAW,GAAG,CAAA;AAEnD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,KAAA,EAAO;AAAA,IAC9C,KAAA,EAAO,QAAQ,IAAA,IAAQ,eAAA;AAAA,IACvB,UAAA,EAAY,cAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,oBAAA,CAAqB,KAAA,EAAO,UAAU,KAAK,CAAA;AAC3C,EAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AAEf,EAAA,OAAO,QAAA;AACT;AAjBgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACET,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AAExB,EAAA,sBAAA,CAAuB,KAAK,CAAA,CAAE,iBAAA,GAAoB,KAAK,CAAA;AAEvD,EAAA,MAAM,QAAQ,IAAUC,OAAA,CAAA,aAAA,CAAc,SAAA,EAAW,CAAA,EAAG,GAAG,CAAC,CAAA;AACxD,EAAA,KAAA,CAAM,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAEpB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,KAAA,EAAO;AAAA,IAC9C,KAAA,EAAO,QAAQ,IAAA,IAAQ,YAAA;AAAA,IACvB,UAAA,EAAY,WAAA;AAAA,IACZ,cAAA,EAAgB,QAAQ,SAAA,IAAa;AAAA,MACnC,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAE;AAC/B,GACD,CAAA;AAED,EAAA,oBAAA,CAAqB,KAAA,EAAO,UAAU,KAAK,CAAA;AAE3C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,IAAI,mBAAA,CAAoB,KAAA,EAAO,SAAS,CAAA;AACvD,IAAA,MAAA,CAAO,iBAAiB,MAAM;AAC5B,MAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA;AAAA,IAC/B,CAAA;AACA,IAAA,MAAA,CAAO,SAAS,SAAA,GAAY,IAAA;AAC5B,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AACjB,IAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,EAClB;AAEA,EAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AAEf,EAAA,OAAO,QAAA;AACT;AAnCgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;ACFT,SAAS,sBAAA,CAAuB;AAAA,EACrC,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAUC,OAAA,CAAA,gBAAA,CAAiB,SAAA,EAAW,GAAG,CAAA;AACvD,EAAA,KAAA,CAAM,UAAA,GAAa,IAAA;AAEnB,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,KAAA,EAAO;AAAA,IAC9C,KAAA,EAAO,QAAQ,IAAA,IAAQ,mBAAA;AAAA,IACvB,UAAA,EAAY,kBAAA;AAAA,IACZ,cAAA,EAAgB,QAAQ,SAAA,IAAa;AAAA,MACnC,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAE;AAC/B,GACD,CAAA;AAED,EAAA,oBAAA,CAAqB,KAAA,EAAO,UAAU,KAAK,CAAA;AAE3C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,sBAAA,CAAuB,KAAA,EAAO,KAAK,SAAS,CAAA;AACrE,IAAA,MAAA,CAAO,iBAAiB,MAAM;AAC5B,MAAA,MAAA,CAAO,MAAA,EAAO;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,SAAS,SAAA,GAAY,IAAA;AAC5B,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AACjB,IAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,EAClB;AAEA,EAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AAEf,EAAA,OAAO,QAAA;AACT;AAhCgB,MAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;ACAT,SAAS,gBAAA,CAAiB;AAAA,EAC/B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAUC,OAAA,CAAA,UAAA,CAAW,SAAA,EAAW,GAAG,EAAE,CAAA;AAEnD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,KAAA,EAAO;AAAA,IAC9C,KAAA,EAAO,QAAQ,IAAA,IAAQ,aAAA;AAAA,IACvB,UAAA,EAAY,YAAA;AAAA,IACZ,cAAA,EAAgB,QAAQ,SAAA,IAAa;AAAA,MACnC,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAE;AAC/B,GACD,CAAA;AAED,EAAA,oBAAA,CAAqB,KAAA,EAAO,UAAU,KAAK,CAAA;AAE3C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,gBAAA,CAAiB,KAAA,EAAO,MAAM,SAAS,CAAA;AAChE,IAAA,MAAA,CAAO,iBAAiB,MAAM;AAC5B,MAAA,MAAA,CAAO,MAAA,EAAO;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,SAAS,SAAA,GAAY,IAAA;AAC5B,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AACjB,IAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,EAClB;AAEA,EAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AAEf,EAAA,OAAO,QAAA;AACT;AA/BgB,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;ACAT,SAAS,eAAA,CAAgB;AAAA,EAC9B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAUC,OAAA,CAAA,SAAA,CAAU,SAAA,EAAW,CAAA,EAAG,IAAI,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,GAAA,EAAK,CAAC,CAAA;AAEvE,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,KAAA,EAAO;AAAA,IAC9C,KAAA,EAAO,QAAQ,IAAA,IAAQ,YAAA;AAAA,IACvB,UAAA,EAAY,WAAA;AAAA,IACZ,cAAA,EAAgB,QAAQ,SAAA,IAAa;AAAA,MACnC,UAAU,EAAE,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAAE;AAC/B,GACD,CAAA;AAED,EAAA,oBAAA,CAAqB,KAAA,EAAO,UAAU,KAAK,CAAA;AAE3C,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,eAAA,CAAgB,KAAA,EAAO,SAAS,CAAA;AACzD,IAAA,MAAA,CAAO,iBAAiB,MAAM;AAC5B,MAAA,MAAA,CAAO,MAAA,EAAO;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,SAAS,SAAA,GAAY,IAAA;AAC5B,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AACjB,IAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAAA,EAClB;AAEA,EAAA,KAAA,CAAM,IAAI,KAAK,CAAA;AAEf,EAAA,OAAO,QAAA;AACT;AA/BgB,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;ACIT,SAAS,WAAA,CAAY,EAAE,KAAA,EAAO,KAAA,EAAO,SAAQ,EAA0B;AAC5E,EAAA,MAAM,QAAA,GAAW,IAAUC,OAAA,CAAA,aAAA,CAAc,GAAA,EAAK,GAAG,CAAA;AACjD,EAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,oBAAA,CAAqB;AAAA,IAC9C,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAYA,OAAA,CAAA;AAAA,GACb,CAAA;AAED,EAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,gBAAA;AAAA,IACf,KAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAO,QAAQ,IAAA,IAAQ,OAAA;AAAA,MACvB,UAAA,EAAY,OAAA;AAAA,MACZ,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,QAAQ,SAAA,EAAW,QAAA;AAAA,QAC7B,QAAA,EAAU,OAAA,CAAQ,SAAA,EAAW,QAAA,IAAY;AAAA,UACvC,CAAA,EAAG,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA;AAAA,UACd,CAAA,EAAG,CAAA;AAAA,UACH,CAAA,EAAG;AAAA,SACL;AAAA,QACA,KAAA,EAAO,QAAQ,SAAA,EAAW;AAAA;AAC5B;AACF,GACF;AAEA,EAAA,mBAAA,CAAoB,KAAA,EAAO,UAAU,IAAI,CAAA;AACzC,EAAA,uBAAA,CAAwB,KAAA,EAAO,UAAU,QAAQ,CAAA;AACjD,EAAA,2BAAA,CAA4B,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM;AAAA,IACxD,KAAA,EAAO,EAAA;AAAA,IACP,MAAA,EAAQ;AAAA,GACV,EAAG;AAAA,IACD,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AAEH,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,EAAA,OAAO,QAAA;AACT;AAvCgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACIT,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,eAAA;AAAA,IACvB,UAAA,EAAY,cAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,2BAAA,CAA4B,OAAO,QAAA,EAAU;AAAA,IAC3C,WAAW,OAAO,OAAA,CAAQ,SAAA,KAAc,QAAA,GAAW,QAAQ,SAAA,GAAY,IAAA;AAAA,IACvE,WAAW,OAAO,OAAA,CAAQ,SAAA,KAAc,QAAA,GAAW,QAAQ,SAAA,GAAY,IAAA;AAAA,IACvE,SAAS,OAAO,OAAA,CAAQ,OAAA,KAAY,SAAA,GAAY,QAAQ,OAAA,GAAU,IAAA;AAAA,IAClE,IAAA,EACE,OAAA,CAAQ,IAAA,IACR,OAAO,QAAQ,IAAA,KAAS,QAAA,IACxB,CAAC,KAAA,CAAM,QAAQ,OAAA,CAAQ,IAAI,CAAA,GACtB,OAAA,CAAQ,OACT;AAAC,GACR,CAAA;AAED,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA5BgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACGT,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,MAAM,QAAQ,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,GAAW,QAAQ,KAAA,GAAQ,EAAA;AAClE,EAAA,MAAM,QAAQ,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,GAAW,QAAQ,KAAA,GAAQ,EAAA;AAElE,EAAA,MAAM,QAAA,GAAW,IAAUC,OAAA,CAAA,aAAA,CAAc,KAAA,EAAO,KAAK,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,iBAAA,CAAkB;AAAA,IAC3C,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,IAAA;AAAA,IACb,OAAA,EAAS,IAAA;AAAA,IACT,IAAA,EAAYA,OAAA,CAAA,UAAA;AAAA,IACZ,UAAA,EAAY;AAAA,GACb,CAAA;AAED,EAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAEhD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,eAAA;AAAA,IACvB,UAAA,EAAY,cAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMZ,cAAA,EAAgB;AAAA,MACd,QAAA,EAAU,QAAQ,SAAA,EAAW,QAAA;AAAA,MAC7B,QAAA,EAAU,OAAA,CAAQ,SAAA,EAAW,QAAA,IAAY,EAAE,CAAA,EAAG,CAAC,IAAA,CAAK,EAAA,GAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAAA,MACvE,KAAA,EAAO,QAAQ,SAAA,EAAW;AAAA;AAC5B,GACD,CAAA;AAED,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAI,uBAAA,CAAwB,EAAE,OAAO,KAAA,EAAO,GAAG,SAAS;AAAA,GAC1D;AAEA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA1CgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACCT,SAAS,kBAAA,CAAmB;AAAA,EACjC,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,IAAA,GAAO,IAAUC,OAAA,CAAA,KAAA,EAAM;AAC7B,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AAErC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,IAC7C,KAAA,EAAO,QAAQ,IAAA,IAAQ,eAAA;AAAA,IACvB,UAAA,EAAY,cAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AACD,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,qBAAA,CAAsB,OAAO,CAAC,CAAA;AAC/D,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAMd,EAAA,IAAI,QAAQ,mBAAA,EAAqB;AAC/B,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAY;AAC7C,IAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,KAAA,EAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,MAAA,GAAS,iBAAA,GAAoB,kBAAA;AACpD,IAAA,MAAM,YAAA,GAAe,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,MACjD,KAAA;AAAA,MACA,UAAA,EAAY,OAAA;AAAA,MACZ,QAAA,EAAU;AAAA,KACX,CAAA;AACD,IAAA,KAAA,CAAM,aAAa,YAAA,EAAc,IAAI,0BAA0B,EAAE,IAAA,EAAM,CAAC,CAAA;AACxE,IAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AAAA,EAChB;AAEA,EAAA,OAAO,QAAA;AACT;AArCgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;ACJT,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,WAAA;AAAA,IACvB,UAAA,EAAY,UAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAK3D,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAI,uBAAA,CAAwB;AAAA,MAC1B,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAe;AAAA,KAChB;AAAA,GACH;AAEA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA9BgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACDT,SAAS,aAAA,CAAc;AAAA,EAC5B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,UAAA;AAAA,IACvB,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAE1D,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AAlBgB,MAAA,CAAA,aAAA,EAAA,eAAA,CAAA;ACCT,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,WAAA;AAAA,IACvB,UAAA,EAAY,UAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAK3D,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAI,uBAAA,CAAwB;AAAA,MAC1B,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAe;AAAA,KAChB;AAAA,GACH;AAEA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA9BgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACDT,SAAS,YAAA,CAAa;AAAA,EAC3B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,SAAA;AAAA,IACvB,UAAA,EAAY,QAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,eAAA,CAAgB,OAAO,CAAC,CAAA;AAEzD,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AAlBgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACCT,SAAS,cAAA,CAAe;AAAA,EAC7B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,WAAA;AAAA,IACvB,UAAA,EAAY,UAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAK3D,EAAA,KAAA,CAAM,YAAA;AAAA,IACJ,QAAA;AAAA,IACA,IAAI,uBAAA,CAAwB;AAAA,MAC1B,SAAA,EAAW,KAAA;AAAA,MACX,SAAA,EAAW,IAAA;AAAA,MACX,aAAA,EAAe;AAAA,KAChB;AAAA,GACH;AAEA,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AA9BgB,MAAA,CAAA,cAAA,EAAA,gBAAA,CAAA;ACAT,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,KAAA,EAAM;AAE/B,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,QAAA;AAAA,IACvB,UAAA,EAAY,OAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,OAAA,GAAW,OAAA,CAAQ,OAAA,IAAW,EAAC;AACrC,EAAA,KAAA,CAAM,YAAA,CAAa,QAAA,EAAU,IAAI,cAAA,CAAe,OAAO,CAAC,CAAA;AAExD,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAChB,EAAA,OAAO,QAAA;AACT;AAlBgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;ACRT,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,KAAA,EAAO,SAAQ,EAA0B;AAC7E,EAAA,MAAM,MAAA,GAAS,IAAUC,OAAA,CAAA,QAAA,EAAS;AAElC,EAAA,MAAM,SAAA,GAAY,QAAQ,IAAA,IAAQ,EAAA;AAElC,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,QAAA;AAAA,IACvB,UAAA,EAAY,QAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,KAAA,EAAO,QAAA,EAAU,SAAS,CAAA;AACxE,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAEhB,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,aAAA,EAAc;AACvC,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,SAAA;AAAA,IACA,CAAC,OAAA,KAAY;AACX,MAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9B,QAAA,OAAA,CAAQ,OAAA,EAAQ;AAChB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,IAAUA,OAAA,CAAA,cAAA,CAAe;AAAA,QACxC,GAAA,EAAK,OAAA;AAAA,QACL,WAAA,EAAa;AAAA,OACd,CAAA;AACD,MAAA,MAAM,MAAA,GAAS,IAAUA,OAAA,CAAA,MAAA,CAAO,QAAQ,CAAA;AACxC,MAAA,MAAA,CAAO,SAAS,QAAA,GAAW,QAAA;AAE3B,MAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAC7B,MAAA,eAAA,CAAgB,KAAA,GAAQ,cAAc,KAAA,IAAS,CAAA;AAC/C,MAAA,eAAA,CAAgB,MAAA,GAAS,cAAc,MAAA,IAAU,CAAA;AAEjD,MAAA,MAAA,CAAO,IAAI,MAAM,CAAA;AACjB,MAAA,eAAA,CAAgB,OAAA,GAAU,OAAA;AAC1B,MAAA,eAAA,CAAgB,MAAA,GAAS,MAAA;AAAA,IAC3B,CAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,KAAA,KAAU;AACT,MAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,uBAAA,EAA0B,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA;AAAA,IAC5D;AAAA,GACF;AAEA,EAAA,OAAO,QAAA;AACT;AAjDgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACIT,SAAS,YAAA,CAAa,EAAE,KAAA,EAAO,KAAA,EAAO,SAAQ,EAA0B;AAC7E,EAAA,MAAM,QAAA,GAAW,IAAUC,OAAA,CAAA,cAAA,CAAe,GAAA,EAAK,IAAI,EAAE,CAAA;AACrD,EAAA,MAAM,WAAW,IAAUA,OAAA,CAAA,oBAAA,CAAqB,EAAE,KAAA,EAAO,WAAW,CAAA;AACpE,EAAA,MAAM,IAAA,GAAO,IAAUA,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,IAAA,EAAM;AAAA,IAC7C,KAAA,EAAO,QAAQ,IAAA,IAAQ,QAAA;AAAA,IACvB,UAAA,EAAY,QAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,mBAAA,CAAoB,KAAA,EAAO,UAAU,IAAI,CAAA;AACzC,EAAA,uBAAA,CAAwB,KAAA,EAAO,UAAU,QAAQ,CAAA;AACjD,EAAA,2BAAA,CAA4B,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM;AAAA,IACzD,MAAA,EAAQ;AAAA,GACV,EAAG;AAAA,IACD,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe;AAAA,GAChB,CAAA;AAEH,EAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,EAAA,OAAO,QAAA;AACT;AAtBgB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;ACDhB,SAASC,qBACP,MAAA,EACqB;AACrB,EAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,gBAAA;AACjC,EAAA,IAAI,oBAA0B,OAAA,CAAA,aAAA,EAAe;AAC3C,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,IAAU,OAAA,CAAA,aAAA,EAAc;AACzC,EAAA,MAAA,CAAO,IAAI,QAAQ,CAAA;AACnB,EAAA,MAAA,CAAO,SAAS,gBAAA,GAAmB,QAAA;AAEnC,EAAA,OAAO,QAAA;AACT;AAbS,MAAA,CAAAA,oBAAAA,EAAA,qBAAA,CAAA;AAeT,SAAS,uBACP,KAAA,EACsC;AACtC,EAAA,MAAM,CAAA,GAAI,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACnC,EAAA,IAAI,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,aAAA,EAAe,OAAO,CAAA;AAClD,EAAA,OAAO,SAAA;AACT;AANS,MAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;AAUT,SAAS,MAAA,CAAO,OAAgB,QAAA,EAA4B;AAC1D,EAAA,OAAO,OAAO,KAAA,KAAU,SAAA,GAAY,KAAA,GAAQ,QAAA;AAC9C;AAFS,MAAA,CAAA,MAAA,EAAA,QAAA,CAAA;AAIT,SAAS,QAAA,CAAS,OAAgB,QAAA,EAA0B;AAC1D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AACxD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA;AACT;AANS,MAAA,CAAA,QAAA,EAAA,UAAA,CAAA;AAQT,SAAS,OAAA,CAAQ,OAAgB,QAAA,EAA0B;AACzD,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,MAAM,IAAA,EAAK,CAAE,WAAW,CAAA,EAAG;AAC1D,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO,KAAA;AACT;AANS,MAAA,CAAA,OAAA,EAAA,SAAA,CAAA;AAQT,SAAS,iBACP,KAAA,EACsB;AACtB,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,MAAA,CAAO,KAAA,EAAO,QAAA,EAAU,KAAK,CAAA;AAAA,IACvC,IAAA,EAAM,MAAA,CAAO,KAAA,EAAO,IAAA,EAAM,IAAI,CAAA;AAAA,IAC9B,MAAA,EAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,CAAS,KAAA,EAAO,MAAA,EAAQ,CAAC,CAAC,CAAC,CAAA;AAAA,IAC3D,KAAA,EAAO,KAAK,GAAA,CAAI,IAAA,EAAM,SAAS,KAAA,EAAO,KAAA,EAAO,CAAC,CAAC,CAAA;AAAA,IAC/C,MAAA,EAAQ,KAAK,GAAA,CAAI,IAAA,EAAM,SAAS,KAAA,EAAO,MAAA,EAAQ,CAAC,CAAC,CAAA;AAAA,IACjD,aAAA,EAAe,MAAA,CAAO,KAAA,EAAO,aAAA,EAAe,KAAK,CAAA;AAAA,IACjD,eAAA,EAAiB,OAAA,CAAQ,KAAA,EAAO,eAAA,EAAiB,SAAS,CAAA;AAAA,IAC1D,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,IAAA,EAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,CAAS,KAAA,EAAO,UAAA,EAAY,GAAG,CAAC,CAAC,CAAA;AAAA,IACxE,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,IAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,CAAS,KAAA,EAAO,UAAA,EAAY,IAAI,CAAC,CAAC,CAAA;AAAA,IAC1E,KAAA,EAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,QAAA,CAAS,KAAA,EAAO,KAAA,EAAO,IAAI,CAAC,CAAC,CAAA;AAAA,IAC5D,UAAA,EAAY,MAAA,CAAO,KAAA,EAAO,UAAA,EAAY,KAAK,CAAA;AAAA,IAC3C,WAAA,EAAa,KAAK,GAAA,CAAI,CAAA,EAAG,SAAS,KAAA,EAAO,WAAA,EAAa,CAAC,CAAC,CAAA;AAAA,IACxD,aAAA,EAAe,OAAA,CAAQ,KAAA,EAAO,aAAA,EAAe,SAAS,CAAA;AAAA,IACtD,aAAA,EAAe,KAAK,GAAA,CAAI,CAAA,EAAG,SAAS,KAAA,EAAO,aAAA,EAAe,CAAC,CAAC;AAAA,GAC9D;AACF;AAnBS,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAqBT,SAAS,uBACP,OAAA,EACyB;AACzB,EAAA,OAAO,IAAU,OAAA,CAAA,iBAAA,CAAkB;AAAA,IACjC,GAAA,EAAK,OAAA;AAAA,IACL,WAAA,EAAa,IAAA;AAAA,IACb,IAAA,EAAY,OAAA,CAAA;AAAA,GACb,CAAA;AACH;AARS,MAAA,CAAA,sBAAA,EAAA,wBAAA,CAAA;AAUT,SAAS,eAAA,CACP,QAAA,EACA,OAAA,EACA,OAAA,EACA,OAAA,EACgD;AAChD,EAAA,MAAM,QAAA,GAAW,IAAU,OAAA,CAAA,aAAA,CAAc,CAAA,EAAG,CAAC,CAAA;AAE7C,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,aAAA,GACrB,OAAA,CAAQ,wBAAwB,OAAA,EAAS;AAAA,IACvC,UAAU,OAAA,CAAQ,eAAA;AAAA,IAClB,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,YAAY,OAAA,CAAQ,UAAA;AAAA,IACpB,OAAO,OAAA,CAAQ;AAAA,GAChB,CAAA,GACD,sBAAA,CAAuB,OAAO,CAAA;AAClC,EAAA,MAAM,IAAA,GAAO,IAAU,OAAA,CAAA,IAAA,CAAK,QAAA,EAAU,QAAQ,CAAA;AAE9C,EAAA,IAAA,CAAK,SAAS,QAAA,GAAW,QAAA;AACzB,EAAA,IAAA,CAAK,MAAM,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,OAAA,CAAQ,QAAQ,CAAC,CAAA;AAE/C,EAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAC1B;AAtBS,MAAA,CAAA,eAAA,EAAA,iBAAA,CAAA;AAwBT,SAAS,mBAAA,CACP,KAAA,EACA,IAAA,EACA,OAAA,EACM;AACN,EAAA,MAAM,QAAQ,KAAA,CAAM,UAAA;AACpB,EAAA,MAAM,SAAS,KAAA,CAAM,WAAA;AACrB,EAAA,IAAI,KAAA,IAAS,CAAA,IAAK,MAAA,IAAU,CAAA,EAAG;AAC7B,IAAA;AAAA,EACF;AAGA,EAAA,MAAM,YAAY,OAAA,CAAQ,KAAA,GAAQ,CAAA,GAAI,OAAA,CAAQ,QAAQ,KAAA,GAAQ,MAAA;AAC9D,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,QAAQ,MAAA,GAAS,CAAA;AAEzD,EAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,SAAA,EAAW,UAAA,EAAY,CAAC,CAAA;AACzC;AAhBS,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AAkBT,SAAS,kBAAA,CACP,MACA,OAAA,EACkB;AAClB,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,EAAA,KAAA,CAAM,GAAA,GAAM,IAAA;AACZ,EAAA,KAAA,CAAM,WAAA,GAAc,WAAA;AACpB,EAAA,KAAA,CAAM,OAAO,OAAA,CAAQ,IAAA;AACrB,EAAA,KAAA,CAAM,WAAA,GAAc,IAAA;AACpB,EAAA,KAAA,CAAM,OAAA,GAAU,MAAA;AAChB,EAAA,KAAA,CAAM,SAAS,OAAA,CAAQ,MAAA;AAEvB,EAAA,OAAO,KAAA;AACT;AAbS,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAeF,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,MAAA,GAAS,IAAU,OAAA,CAAA,QAAA,EAAS;AAClC,EAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,EAAA;AAC7B,EAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,OAAA,CAAQ,OAAO,CAAA;AAEhD,EAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,KAAA,EAAO,MAAA,EAAQ;AAAA,IAC/C,KAAA,EAAO,QAAQ,IAAA,IAAQ,OAAA;AAAA,IACvB,UAAA,EAAY,OAAA;AAAA,IACZ,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AAED,EAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,KAAA,EAAO,QAAA,EAAU,MAAM,OAAO,CAAA;AAC1E,EAAA,cAAA,CAAe,MAAA,GAAS,MAAA;AACxB,EAAA,KAAA,CAAM,IAAI,MAAM,CAAA;AAEhB,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,QAAA,KAAa,WAAA,EAAa;AAC5C,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,IAAA,EAAM,OAAO,CAAA;AAC9C,EAAA,MAAM,OAAA,GAAU,IAAU,OAAA,CAAA,YAAA,CAAa,KAAK,CAAA;AAC5C,EAAA,OAAA,CAAQ,UAAA,GAAmB,OAAA,CAAA,cAAA;AAC3B,EAAA,OAAA,CAAQ,WAAA,GAAc,IAAA;AAEtB,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,eAAA;AAAA,IACzB,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,uBAAuB,KAAK;AAAA,GAC9B;AACA,EAAA,MAAA,CAAO,IAAI,IAAI,CAAA;AAEf,EAAA,cAAA,CAAe,YAAA,GAAe,KAAA;AAC9B,EAAA,cAAA,CAAe,OAAA,GAAU,OAAA;AACzB,EAAA,cAAA,CAAe,QAAA,GAAW,QAAA;AAC1B,EAAA,cAAA,CAAe,MAAA,GAAS,IAAA;AAExB,EAAA,KAAA,CAAM,gBAAA,CAAiB,kBAAkB,MAAM;AAC7C,IAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EAAG;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,mBAAA,CAAoB,KAAA,EAAO,MAAM,OAAO,CAAA;AAAA,EAC1C,CAAC,CAAA;AAOD,EAAA,IAAI,CAAC,QAAA,IAAY,OAAA,CAAQ,UAAA,EAAY;AACnC,IAAA,MAAM,QAAA,GAAWA,qBAAoB,MAAM,CAAA;AAC3C,IAAA,MAAM,SAAA,GAAY,IAAU,OAAA,CAAA,eAAA,CAAgB,QAAQ,CAAA;AAEpD,IAAA,SAAA,CAAU,SAAA,CAAU,QAAQ,MAAM,CAAA;AAClC,IAAA,SAAA,CAAU,cAAA,CAAe,QAAQ,WAAW,CAAA;AAC5C,IAAA,SAAA,CAAU,gBAAA,CAAiB,sBAAA,CAAuB,OAAA,CAAQ,aAAa,CAAC,CAAA;AACxE,IAAA,SAAA,CAAU,gBAAA,CAAiB,QAAQ,aAAa,CAAA;AAKhD,IAAA,SAAA,CAAU,sBAAsB,KAAK,CAAA;AACrC,IAAA,KAAA,CAAM,MAAA,GAAS,CAAA;AAEf,IAAA,MAAA,CAAO,IAAI,SAAS,CAAA;AACpB,IAAA,cAAA,CAAe,SAAA,GAAY,SAAA;AAAA,EAC7B;AAEA,EAAA,IAAI,QAAQ,QAAA,EAAU;AACpB,IAAA,cAAA,CAAe,IAAA,EAAK;AAAA,EACtB;AAEA,EAAA,OAAO,QAAA;AACT;AAhFgB,MAAA,CAAA,WAAA,EAAA,aAAA,CAAA;;;AC9GT,SAAS,yBACd,sBAAA,EACM;AACN,EAAA,sBAAA,CAAuB,QAAA,CAAS,QAAQ,UAAU,CAAA;AAClD,EAAA,sBAAA,CAAuB,QAAA,CAAS,UAAU,YAAY,CAAA;AACtD,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,WAAW,aAAa,CAAA;AACxD,EAAA,sBAAA,CAAuB,QAAA,CAAS,YAAY,cAAc,CAAA;AAC1D,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,eAAe,iBAAiB,CAAA;AAChE,EAAA,sBAAA,CAAuB,QAAA,CAAS,iBAAiB,mBAAmB,CAAA;AACpE,EAAA,sBAAA,CAAuB,QAAA,CAAS,gBAAgB,kBAAkB,CAAA;AAClE,EAAA,sBAAA,CAAuB,QAAA,CAAS,UAAU,YAAY,CAAA;AACtD,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,UAAU,YAAY,CAAA;AACtD,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,gBAAgB,kBAAkB,CAAA;AAClE,EAAA,sBAAA,CAAuB,QAAA,CAAS,oBAAoB,sBAAsB,CAAA;AAC1E,EAAA,sBAAA,CAAuB,QAAA,CAAS,cAAc,gBAAgB,CAAA;AAC9D,EAAA,sBAAA,CAAuB,QAAA,CAAS,aAAa,eAAe,CAAA;AAC5D,EAAA,sBAAA,CAAuB,QAAA,CAAS,aAAa,eAAe,CAAA;AAC5D,EAAA,sBAAA,CAAuB,QAAA,CAAS,gBAAgB,kBAAkB,CAAA;AAClE,EAAA,sBAAA,CAAuB,QAAA,CAAS,SAAS,WAAW,CAAA;AACpD,EAAA,sBAAA,CAAuB,QAAA,CAAS,gBAAgB,kBAAkB,CAAA;AAClE,EAAA,sBAAA,CAAuB,QAAA,CAAS,gBAAgB,kBAAkB,CAAA;AAClE,EAAA,sBAAA,CAAuB,QAAA,CAAS,WAAW,aAAa,CAAA;AACxD,EAAA,sBAAA,CAAuB,QAAA,CAAS,UAAU,YAAY,CAAA;AACtD,EAAA,sBAAA,CAAuB,QAAA,CAAS,YAAY,cAAc,CAAA;AAC1D,EAAA,sBAAA,CAAuB,QAAA,CAAS,YAAY,cAAc,CAAA;AAC1D,EAAA,sBAAA,CAAuB,QAAA,CAAS,YAAY,cAAc,CAAA;AAE1D,EAAA,iCAAA,CAAkC,sBAAsB,CAAA;AAC1D;AAlCgB,MAAA,CAAA,wBAAA,EAAA,0BAAA,CAAA","file":"chunk-NXASMBDS.js","sourcesContent":["import {\n createAnimationComponent,\n createAudioComponent,\n createCameraComponent,\n createEnvironmentComponent,\n createEntityTypeComponent,\n createImageComponent,\n createImageTargetAnchorComponent,\n createImageTargetComponent,\n createInstancedMeshComponent,\n createLightComponent,\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n createModelComponent,\n createNameComponent,\n createObject3DRefComponent,\n createParentIdComponent,\n createPhysicsComponent,\n createPostprocessingComponent,\n createScriptComponent,\n createScriptObjectComponent,\n createSelectableComponent,\n createSelectionTransformStateComponent,\n createSpriteComponent,\n createTransformComponent,\n createUIButtonComponent,\n createUIPanelComponent,\n createUISliderComponent,\n createUITextComponent,\n createUIToggleComponent,\n createVideoComponent,\n createVRTeleportAreaComponent,\n createXRAnchorComponent,\n createBoneAttachmentComponent,\n createIKComponent,\n createNetworkedPropsComponent,\n createNetworkIdentityComponent,\n createNetworkSpawnerComponent,\n createNetworkTransformComponent,\n createXRHandPoseComponent,\n createXRInteractableComponent,\n createXRInteractorComponent,\n createXRInteractorSideComponent,\n createXRRigComponent,\n} from \"./components\";\nimport type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\n\nexport function registerDefaultComponentFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.registerComponentFactory(\"animation\", createAnimationComponent);\n objectManagementSystem.registerComponentFactory(\"audio\", createAudioComponent);\n objectManagementSystem.registerComponentFactory(\"camera\", createCameraComponent);\n objectManagementSystem.registerComponentFactory(\"physics\", createPhysicsComponent);\n objectManagementSystem.registerComponentFactory(\"environment\", createEnvironmentComponent);\n objectManagementSystem.registerComponentFactory(\"entityType\", createEntityTypeComponent);\n objectManagementSystem.registerComponentFactory(\"image\", createImageComponent);\n objectManagementSystem.registerComponentFactory(\"xrRig\", createXRRigComponent);\n objectManagementSystem.registerComponentFactory(\"vrTeleportArea\", createVRTeleportAreaComponent);\n objectManagementSystem.registerComponentFactory(\"xrHandPose\", createXRHandPoseComponent);\n objectManagementSystem.registerComponentFactory(\"xrAnchor\", createXRAnchorComponent);\n objectManagementSystem.registerComponentFactory(\"boneAttachment\", createBoneAttachmentComponent);\n objectManagementSystem.registerComponentFactory(\"ik\", createIKComponent);\n objectManagementSystem.registerComponentFactory(\"networkIdentity\", createNetworkIdentityComponent);\n objectManagementSystem.registerComponentFactory(\"networkTransform\", createNetworkTransformComponent);\n objectManagementSystem.registerComponentFactory(\"networkedProps\", createNetworkedPropsComponent);\n objectManagementSystem.registerComponentFactory(\"networkSpawner\", createNetworkSpawnerComponent);\n objectManagementSystem.registerComponentFactory(\"uiPanel\", createUIPanelComponent);\n objectManagementSystem.registerComponentFactory(\"uiText\", createUITextComponent);\n objectManagementSystem.registerComponentFactory(\"uiButton\", createUIButtonComponent);\n objectManagementSystem.registerComponentFactory(\"uiToggle\", createUIToggleComponent);\n objectManagementSystem.registerComponentFactory(\"uiSlider\", createUISliderComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractable\", createXRInteractableComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractor\", createXRInteractorComponent);\n objectManagementSystem.registerComponentFactory(\"xrInteractorSide\", createXRInteractorSideComponent);\n objectManagementSystem.registerComponentFactory(\n \"imageTargetAnchor\",\n createImageTargetAnchorComponent,\n );\n objectManagementSystem.registerComponentFactory(\"imageTarget\", createImageTargetComponent);\n objectManagementSystem.registerComponentFactory(\"light\", createLightComponent);\n objectManagementSystem.registerComponentFactory(\"material\", createMaterialComponent);\n objectManagementSystem.registerComponentFactory(\"mesh\", createMeshComponent);\n objectManagementSystem.registerComponentFactory(\n \"meshGeometry\",\n createMeshGeometryComponent,\n );\n objectManagementSystem.registerComponentFactory(\"model\", createModelComponent);\n objectManagementSystem.registerComponentFactory(\"name\", createNameComponent);\n objectManagementSystem.registerComponentFactory(\n \"object3DRef\",\n createObject3DRefComponent,\n );\n objectManagementSystem.registerComponentFactory(\"parentId\", createParentIdComponent);\n objectManagementSystem.registerComponentFactory(\n \"postprocessing\",\n createPostprocessingComponent,\n );\n\n objectManagementSystem.registerComponentFactory(\"script\", createScriptComponent);\n objectManagementSystem.registerComponentFactory(\n \"scriptObject\",\n createScriptObjectComponent,\n );\n objectManagementSystem.registerComponentFactory(\"selectable\", createSelectableComponent);\n objectManagementSystem.registerComponentFactory(\n \"selectionTransformState\",\n createSelectionTransformStateComponent,\n );\n objectManagementSystem.registerComponentFactory(\"sprite\", createSpriteComponent);\n objectManagementSystem.registerComponentFactory(\"transform\", createTransformComponent);\n objectManagementSystem.registerComponentFactory(\"video\", createVideoComponent);\n objectManagementSystem.registerComponentFactory(\"instancedMesh\", createInstancedMeshComponent);\n}\n","import * as THREE from \"three\";\n\nimport { createAudioComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\n\nexport function createAudio({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Audio\",\n entityType: \"audio\",\n transformInput: payload.transform,\n });\n\n const audio = createAudioComponent(\n world,\n entityId,\n payload.path ?? \"\",\n payload.options ?? {},\n {\n object: anchor,\n listener: getOrCreateListener(camera),\n isEditor,\n },\n );\n scene.add(anchor);\n\n if (!audio.path) {\n return entityId;\n }\n\n if (!isEditor) {\n const loader = new THREE.AudioLoader();\n loader.load(\n audio.path,\n (buffer) => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n const sound = audio.audio;\n if (!sound) {\n return;\n }\n\n sound.setBuffer(buffer);\n if (audio.options.autoplay) {\n audio.play();\n }\n },\n undefined,\n (error) => {\n console.error(`Failed to load audio: ${audio.path}`, error);\n },\n );\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type {\n CameraComponentOptions,\n CameraProjection,\n CameraRuntimeType,\n} from \"../../components/Camera\";\nimport { createCameraComponent } from \"../components\";\nimport { Object3DRef } from \"../../components/Object3DRef\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype CameraCreateOptions = {\n type?: CameraRuntimeType;\n isDefault?: boolean;\n projection?: CameraProjection;\n fov?: number;\n near?: number;\n far?: number;\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n zoom?: number;\n};\n\nconst DEFAULT_NEAR = 0.1;\nconst DEFAULT_FAR = 2000;\nconst DEFAULT_FOV = 50;\nconst DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT = 5;\n\nfunction readViewportAspect(): number {\n if (typeof window === \"undefined\") {\n return 1;\n }\n\n const width = window.innerWidth;\n const height = window.innerHeight;\n if (\n Number.isFinite(width) &&\n Number.isFinite(height) &&\n width > 0 &&\n height > 0\n ) {\n return width / height;\n }\n\n return 1;\n}\n\nfunction toCameraCreateOptions(input: unknown): CameraCreateOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as Record<string, unknown>;\n\n const type =\n value.type === \"3d\" || value.type === \"ar\"\n ? value.type\n : undefined;\n\n const projection =\n value.projection === \"orthographic\" || value.projection === \"perspective\"\n ? value.projection\n : undefined;\n\n return {\n type,\n isDefault: typeof value.isDefault === \"boolean\" ? value.isDefault : undefined,\n projection,\n fov: typeof value.fov === \"number\" && Number.isFinite(value.fov) ? value.fov : undefined,\n near:\n typeof value.near === \"number\" && Number.isFinite(value.near)\n ? value.near\n : undefined,\n far: typeof value.far === \"number\" && Number.isFinite(value.far) ? value.far : undefined,\n left:\n typeof value.left === \"number\" && Number.isFinite(value.left)\n ? value.left\n : undefined,\n right:\n typeof value.right === \"number\" && Number.isFinite(value.right)\n ? value.right\n : undefined,\n top:\n typeof value.top === \"number\" && Number.isFinite(value.top)\n ? value.top\n : undefined,\n bottom:\n typeof value.bottom === \"number\" && Number.isFinite(value.bottom)\n ? value.bottom\n : undefined,\n zoom:\n typeof value.zoom === \"number\" && Number.isFinite(value.zoom)\n ? value.zoom\n : undefined,\n };\n}\n\nfunction resolveCameraCreateOptions(payload: {\n options?: unknown;\n camera?: unknown;\n}): CameraCreateOptions {\n // Prefer new payload.options shape, but support legacy payload.camera for\n // backward compatibility with older editor/serialized payloads.\n const next = toCameraCreateOptions(payload.options);\n\n if (payload.options && typeof payload.options === \"object\") {\n return next;\n }\n\n return toCameraCreateOptions(payload.camera);\n}\n\nfunction applyCameraSettings(camera: THREE.Camera, options: CameraCreateOptions): void {\n const near = typeof options.near === \"number\" ? options.near : DEFAULT_NEAR;\n const far = typeof options.far === \"number\" ? options.far : DEFAULT_FAR;\n const projection = options.projection;\n\n if (camera instanceof THREE.PerspectiveCamera) {\n if (!projection || projection === \"perspective\") {\n camera.fov = typeof options.fov === \"number\" ? options.fov : DEFAULT_FOV;\n }\n\n camera.aspect = readViewportAspect();\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n return;\n }\n\n if (camera instanceof THREE.OrthographicCamera) {\n camera.left =\n typeof options.left === \"number\"\n ? options.left\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.right =\n typeof options.right === \"number\"\n ? options.right\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.top =\n typeof options.top === \"number\"\n ? options.top\n : DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.bottom =\n typeof options.bottom === \"number\"\n ? options.bottom\n : -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n camera.zoom = typeof options.zoom === \"number\" ? options.zoom : 1;\n camera.near = near;\n camera.far = far;\n camera.updateProjectionMatrix();\n }\n}\n\nfunction createCameraObject(options: CameraCreateOptions): THREE.Camera {\n const projection = options.projection ?? \"perspective\";\n const near = options.near ?? DEFAULT_NEAR;\n const far = options.far ?? DEFAULT_FAR;\n\n if (projection === \"orthographic\") {\n const top = options.top ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const bottom = options.bottom ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const left = options.left ?? -DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const right = options.right ?? DEFAULT_ORTHOGRAPHIC_HALF_HEIGHT;\n const camera = new THREE.OrthographicCamera(\n left,\n right,\n top,\n bottom,\n near,\n far,\n );\n\n camera.zoom = options.zoom ?? 1;\n camera.updateProjectionMatrix();\n return camera;\n }\n\n return new THREE.PerspectiveCamera(\n options.fov ?? DEFAULT_FOV,\n readViewportAspect(),\n near,\n far,\n );\n}\n\nexport function createCamera({ world, scene, camera, payload, isEditor }: CreateContext): number {\n const options = resolveCameraCreateOptions(payload);\n const useWorldCamera = !isEditor && (payload.useWorldCamera === true || Boolean(options.isDefault));\n const object = useWorldCamera ? camera : createCameraObject(options);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Camera\",\n entityType: \"camera\",\n transformInput: payload.transform,\n });\n\n const objectRef = world.getComponent(entityId, Object3DRef);\n if (objectRef?.object instanceof THREE.Camera) {\n objectRef.object.userData.entityId = entityId;\n }\n\n const componentOptions: CameraComponentOptions = {\n camera: object,\n type: options.type,\n isDefault: options.isDefault,\n projection: options.projection,\n fov: options.fov,\n near: options.near,\n far: options.far,\n left: options.left,\n right: options.right,\n top: options.top,\n bottom: options.bottom,\n zoom: options.zoom,\n };\n\n const component = createCameraComponent(world, entityId, componentOptions);\n\n if (useWorldCamera) {\n applyCameraSettings(object, options);\n } else {\n applyCameraSettings(object, options);\n // No THREE.CameraHelper: the editor's camera-preview inset already shows\n // the camera's view, so the frustum wireframe is visual noise.\n scene.add(object);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCapsule({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CapsuleGeometry(0.5, 1, 4, 8);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Capsule\",\n entityType: \"capsule\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"capsule\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCube({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.BoxGeometry(1, 1, 1);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cube\",\n entityType: \"cube\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cube\", mesh, {\n width: 1,\n height: 1,\n depth: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createCylinder({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const geometry = new THREE.CylinderGeometry(0.5, 0.5, 1, 20);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Cylinder\",\n entityType: \"cylinder\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"cylinder\", mesh, {\n radius: 0.5,\n height: 1,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n scene.add(mesh);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction createEmptyEditorHelper(): THREE.LineSegments {\n const geometry = new THREE.EdgesGeometry(new THREE.BoxGeometry(0.1, 0.1, 0.1));\n const material = new THREE.LineBasicMaterial({\n color: \"#7f8ea3\",\n transparent: true,\n opacity: 0.9,\n depthTest: false,\n });\n\n const helper = new THREE.LineSegments(geometry, material);\n helper.renderOrder = 10;\n helper.userData.ecsHelper = true;\n\n return helper;\n}\n\nexport function createEmpty({ world, scene, payload, isEditor }: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Empty\",\n entityType: \"empty\",\n transformInput: payload.transform,\n });\n\n // if (isEditor) {\n // object.add(createEmptyEditorHelper());\n // }\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createImageComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createImage({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image\",\n entityType: \"image\",\n transformInput: payload.transform,\n });\n\n const image = createImageComponent(world, entityId, imagePath);\n image.object = anchor;\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n image.width = width;\n image.height = height;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n image.texture = texture;\n image.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n type ImageTarget,\n type ImageTargetReference,\n} from \"../../components/ImageTarget\";\nimport { createImageTargetComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\ntype ImageTargetOptions = {\n targets?: ImageTargetReference[];\n compiledTargetUrl?: string;\n compiledTargetDir?: string;\n};\n\nfunction toImageTargetOptions(input: unknown): ImageTargetOptions {\n if (!input || typeof input !== \"object\") {\n return {};\n }\n\n const value = input as {\n targets?: unknown;\n compiledTargetUrl?: unknown;\n compiledTargetDir?: unknown;\n };\n\n const targets = Array.isArray(value.targets)\n ? value.targets.filter((target): target is ImageTargetReference => {\n if (!target || typeof target !== \"object\") {\n return false;\n }\n\n const candidate = target as Partial<ImageTargetReference>;\n return (\n typeof candidate.id === \"number\" &&\n Number.isFinite(candidate.id) &&\n typeof candidate.url === \"string\" &&\n candidate.url.length > 0 &&\n typeof candidate.width === \"number\" &&\n Number.isFinite(candidate.width) &&\n typeof candidate.height === \"number\" &&\n Number.isFinite(candidate.height)\n );\n })\n : undefined;\n\n return {\n targets,\n compiledTargetUrl:\n typeof value.compiledTargetUrl === \"string\"\n ? value.compiledTargetUrl\n : undefined,\n compiledTargetDir:\n typeof value.compiledTargetDir === \"string\"\n ? value.compiledTargetDir\n : undefined,\n };\n}\n\nexport function createImageTarget({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Image Target\",\n entityType: \"imageTarget\",\n transformInput: payload.transform,\n });\n\n const targetOptions = toImageTargetOptions(payload.options);\n const imageTarget: ImageTarget = createImageTargetComponent(\n world,\n entityId,\n targetOptions,\n );\n scene.add(anchor);\n\n // Only editor sessions should load and render image planes for targets.\n if (!isEditor || !imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n const geometry = new THREE.PlaneGeometry(1, 1);\n const plane = new THREE.Mesh(geometry, material);\n plane.userData.entityId = entityId;\n\n const textureImage = texture.image as\n | { width?: number; height?: number }\n | undefined;\n const width = textureImage?.width ?? 1;\n const height = textureImage?.height ?? 1;\n const aspect = height > 0 ? width / height : 1;\n\n plane.scale.set(aspect, 1, 1);\n\n anchor.add(plane);\n imageTarget.texture = texture;\n imageTarget.object = plane;\n },\n undefined,\n (error) => {\n console.error(`Failed to load image target: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}","import * as THREE from \"three\";\n\nimport {\n type InstancedMeshKind,\n type InstanceTransform,\n DEFAULT_INSTANCE_TRANSFORM,\n} from \"../../components/InstancedMesh\";\nimport { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport type { MeshGeometryParameters } from \"../../components/MeshGeometry\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport { createInstancedMeshComponent } from \"../components/InstancedMeshComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction isInstancedMeshKind(value: unknown): value is InstancedMeshKind {\n return (\n value === \"cube\" ||\n value === \"sphere\" ||\n value === \"plane\" ||\n value === \"cylinder\" ||\n value === \"capsule\" ||\n value === \"model\"\n );\n}\n\n/**\n * Creates a lightweight instance-slot entity for the given group, using the\n * provided transform data. Does NOT add an `Object3DRef` — instance slots are\n * pure data entities whose transform is read by `InstancedMeshSystem`.\n */\nfunction createInstanceSlotEntity(\n world: Parameters<typeof createBaseEntity>[0],\n groupEntityId: number,\n slotIndex: number,\n label: string,\n transform?: InstanceTransform,\n): number {\n const instanceEntityId = world.createEntity();\n world.addComponent(instanceEntityId, new Name(label));\n world.addComponent(\n instanceEntityId,\n createTransform(\n transform\n ? {\n position: transform.position,\n rotation: transform.rotation,\n scale: transform.scale,\n }\n : undefined,\n ),\n );\n world.addComponent(\n instanceEntityId,\n new InstanceSlotComponent(groupEntityId, slotIndex),\n );\n world.addComponent(instanceEntityId, new EntityType(\"instanceSlot\"));\n world.addComponent(instanceEntityId, new Selectable(true));\n world.addComponent(instanceEntityId, new ParentId(groupEntityId));\n return instanceEntityId;\n}\n\nexport function createInstancedMesh({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const opts = payload.options ?? {};\n const meshKind: InstancedMeshKind = isInstancedMeshKind(opts.meshKind)\n ? (opts.meshKind as InstancedMeshKind)\n : \"cube\";\n\n const meshParameters =\n opts.meshParameters && typeof opts.meshParameters === \"object\"\n ? (opts.meshParameters as Partial<MeshGeometryParameters>)\n : undefined;\n\n const castShadow =\n typeof opts.castShadow === \"boolean\" ? opts.castShadow : false;\n const receiveShadow =\n typeof opts.receiveShadow === \"boolean\" ? opts.receiveShadow : false;\n const modelPath =\n typeof opts.modelPath === \"string\" ? opts.modelPath : undefined;\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Instanced Mesh\",\n entityType: \"instancedMesh\",\n transformInput: payload.transform,\n });\n\n // Determine instance entity IDs.\n // Three cases:\n // 1. `opts.instanceEntityIds` is present (new-format hydration) — skip child creation.\n // 2. `opts.instances` is present (old-format migration) — create a slot entity per legacy transform.\n // 3. Neither — fresh creation from UI: create one default slot entity.\n let instanceEntityIds: number[] = [];\n\n if (Array.isArray(opts.instanceEntityIds)) {\n // New hydration format — child entities are already in snapshot.entities and\n // will be created separately. Leave instanceEntityIds empty here; it will be\n // populated by restoreComponentState + remapped by restorePostCreateComponents.\n instanceEntityIds = [];\n } else if (Array.isArray(opts.instances) && (opts.instances as InstanceTransform[]).length > 0) {\n // Old snapshot migration: create a slot entity for each legacy InstanceTransform.\n const legacyInstances = opts.instances as InstanceTransform[];\n for (let i = 0; i < legacyInstances.length; i++) {\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n i,\n `Instance ${i + 1}`,\n legacyInstances[i],\n );\n instanceEntityIds.push(slotId);\n }\n } else {\n // Fresh creation: one default instance.\n const slotId = createInstanceSlotEntity(\n world,\n entityId,\n 0,\n \"Instance 1\",\n { ...DEFAULT_INSTANCE_TRANSFORM },\n );\n instanceEntityIds = [slotId];\n }\n\n createInstancedMeshComponent(world, entityId, meshKind, meshParameters, {\n castShadow,\n receiveShadow,\n instanceEntityIds,\n modelPath,\n });\n\n scene.add(anchor);\n return entityId;\n}\n","import { EntityType } from \"../../components/EntityType\";\nimport { Name } from \"../../components/Name\";\nimport { ParentId } from \"../../components/ParentId\";\nimport { Selectable } from \"../../components/Selectable\";\nimport { TransformComponent } from \"../../components/Transform\";\nimport { InstanceSlotComponent } from \"../../components/InstanceSlotComponent\";\nimport { createTransform } from \"../../systems/ObjectManagementSystem\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\n\n/**\n * Creates a lightweight instance-slot entity.\n *\n * Instance slot entities carry `TransformComponent` and `InstanceSlotComponent`\n * but intentionally do **not** have an `Object3DRef` — they are pure data\n * containers whose transform is consumed by `InstancedMeshSystem` to build\n * instance matrices. They appear in the hierarchy as children of the owning\n * `instancedMesh` group entity.\n */\nexport function createInstanceSlot({ world, payload }: CreateContext): number {\n const opts = payload.options ?? {};\n const groupEntityId =\n typeof opts.groupEntityId === \"number\" ? opts.groupEntityId : -1;\n const slotIndex =\n typeof opts.slotIndex === \"number\" ? opts.slotIndex : 0;\n\n const entityId = world.createEntity();\n\n world.addComponent(\n entityId,\n new Name(payload.name ?? `Instance ${slotIndex + 1}`),\n );\n world.addComponent(entityId, createTransform(payload.transform));\n world.addComponent(entityId, new InstanceSlotComponent(groupEntityId, slotIndex));\n world.addComponent(entityId, new EntityType(\"instanceSlot\"));\n world.addComponent(entityId, new Selectable(true));\n // ParentId is applied by applyParentLinks during hydration, or set directly\n // by the instanced mesh factory / runtime when creating fresh instances.\n world.addComponent(entityId, new ParentId(groupEntityId !== -1 ? groupEntityId : null));\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAmbientLight({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const light = new THREE.AmbientLight(\"#ffffff\", 0.6);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Ambient Light\",\n entityType: \"ambientLight\",\n transformInput: payload.transform,\n });\n\n createLightComponent(world, entityId, light);\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\nimport { RectAreaLightHelper } from \"three/examples/jsm/helpers/RectAreaLightHelper.js\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { readWorldRenderBackend } from \"../../../render/resolveBackend\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createAreaLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n // Area lights shade through lookup tables the backend loads on first use.\n readWorldRenderBackend(world).prepareAreaLights?.(world);\n\n const light = new THREE.RectAreaLight(\"#ffffff\", 5, 4, 4);\n light.lookAt(0, 0, 0);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Area Light\",\n entityType: \"areaLight\",\n transformInput: payload.transform ?? {\n position: { x: 0, y: 4, z: 0 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new RectAreaLightHelper(light, \"#fb7185\");\n helper.onBeforeRender = () => {\n helper.updateMatrixWorld(true);\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createDirectionalLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.DirectionalLight(\"#ffffff\", 1.5);\n light.castShadow = true;\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Directional Light\",\n entityType: \"directionalLight\",\n transformInput: payload.transform ?? {\n position: { x: 3, y: 6, z: 4 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.DirectionalLightHelper(light, 1.8, \"#38bdf8\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createPointLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.PointLight(\"#ffffff\", 1, 10);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Point Light\",\n entityType: \"pointLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 3, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.PointLightHelper(light, 0.35, \"#fbbf24\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createLightComponent } from \"../../components\";\nimport type { CreateContext } from \"../../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"../shared\";\n\nexport function createSpotLight({\n world,\n scene,\n payload,\n isEditor,\n}: CreateContext): number {\n const light = new THREE.SpotLight(\"#ffffff\", 1, 20, Math.PI / 6, 0.1, 1);\n\n const entityId = createBaseEntity(world, light, {\n label: payload.name ?? \"Spot Light\",\n entityType: \"spotLight\",\n transformInput: payload.transform ?? {\n position: { x: 2, y: 5, z: 2 },\n },\n });\n\n createLightComponent(world, entityId, light);\n\n if (isEditor) {\n const helper = new THREE.SpotLightHelper(light, \"#f59e0b\");\n helper.onBeforeRender = () => {\n helper.update();\n };\n helper.userData.ecsHelper = true;\n helper.visible = false;\n light.add(helper);\n }\n\n scene.add(light);\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createPlane({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.PlaneGeometry(100, 100);\n const material = new THREE.MeshStandardMaterial({\n color: \"#ffffff\",\n side: THREE.DoubleSide,\n });\n\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(\n world,\n mesh,\n {\n label: payload.name ?? \"Plane\",\n entityType: \"plane\",\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? {\n x: -Math.PI / 2,\n y: 0,\n z: 0,\n },\n scale: payload.transform?.scale,\n },\n },\n );\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"plane\", mesh, {\n width: 10,\n height: 10,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createScriptObjectComponent } from \"../components/ScriptObjectComponentFactory\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * A \"script object\" entity: an empty Group whose visual is built at runtime by\n * a user {@link ScriptObject} script (attached via `ScriptObjectComponent`).\n * `ScriptObjectSystem` builds/ticks/disposes the visual in editor AND runtime.\n * Create payload `options` may pre-link a script: `{ scriptUrl, className,\n * enabled?, data? }`. `runtimeState` always starts `\"idle\"` so the system loads\n * cleanly.\n */\nexport function createScriptObject({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Script Object\",\n entityType: \"scriptObject\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n createScriptObjectComponent(world, entityId, {\n scriptUrl: typeof options.scriptUrl === \"string\" ? options.scriptUrl : null,\n className: typeof options.className === \"string\" ? options.className : null,\n enabled: typeof options.enabled === \"boolean\" ? options.enabled : true,\n data:\n options.data &&\n typeof options.data === \"object\" &&\n !Array.isArray(options.data)\n ? (options.data as Record<string, unknown>)\n : {},\n });\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { VRTeleportAreaComponent } from \"../../components/VRTeleportArea\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a teleport destination surface.\n *\n * The mesh is a real, raycastable plane lying in the XZ ground plane (rotated\n * -90° about X, matching the `plane` primitive's convention) because\n * `XRLocomotionSystem` teleports by raycasting against it.\n *\n * It renders as a translucent guide rather than an invisible trigger: in the\n * editor the author needs to see the walkable region, and in-headset a subtle\n * floor tint reads as \"you may stand here\" without dominating the scene.\n */\nexport function createTeleportArea({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const options = (payload.options ?? {}) as Record<string, unknown>;\n const width = typeof options.width === \"number\" ? options.width : 10;\n const depth = typeof options.depth === \"number\" ? options.depth : 10;\n\n const geometry = new THREE.PlaneGeometry(width, depth);\n const material = new THREE.MeshBasicMaterial({\n color: \"#4da3ff\",\n transparent: true,\n opacity: 0.18,\n side: THREE.DoubleSide,\n depthWrite: false,\n });\n\n const object = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"Teleport Area\",\n entityType: \"teleportArea\",\n // The flat-on-the-ground rotation must live in the ECS TRANSFORM, not on\n // the Object3D: createBaseEntity applies the transform over the object, and\n // TransformSyncSystem re-applies it every frame — so a rotation set\n // directly on the mesh is overwritten immediately and the area stands up\n // like a wall. Same convention as the `plane` primitive.\n transformInput: {\n position: payload.transform?.position,\n rotation: payload.transform?.rotation ?? { x: -Math.PI / 2, y: 0, z: 0 },\n scale: payload.transform?.scale,\n },\n });\n\n world.addComponent(\n entityId,\n new VRTeleportAreaComponent({ width, depth, ...options }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n XRInteractorComponent,\n XRInteractorSideComponent,\n} from \"../../components/XRInteractor\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR interactor and its two hand slots.\n *\n * The children exist so authors have somewhere to PUT custom hand content: drop\n * a mesh under \"Left Interactor\" and it renders at the left hand, with no\n * scripting. Both slots are created up front — discovering you have to\n * hand-build them would be a poor first experience, and their names are what\n * make the hierarchy self-explanatory.\n */\nexport function createXRInteractor({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const root = new THREE.Group();\n const options = (payload.options ?? {}) as Record<string, unknown>;\n\n const entityId = createBaseEntity(world, root, {\n label: payload.name ?? \"XR Interactor\",\n entityType: \"xrInteractor\",\n transformInput: payload.transform,\n });\n world.addComponent(entityId, new XRInteractorComponent(options));\n scene.add(root);\n\n // Skipped when hydrating: the saved scene already contains these slots (and\n // any content the author put in them), so creating a fresh pair on top would\n // add another Left/Right pair on EVERY load — which then gets saved, and\n // grows without bound.\n if (payload.skipDefaultChildren) {\n return entityId;\n }\n\n for (const side of [\"left\", \"right\"] as const) {\n const slot = new THREE.Group();\n const label = side === \"left\" ? \"Left Interactor\" : \"Right Interactor\";\n const slotEntityId = createBaseEntity(world, slot, {\n label,\n entityType: \"empty\",\n parentId: entityId,\n });\n world.addComponent(slotEntityId, new XRInteractorSideComponent({ side }));\n scene.add(slot);\n }\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIButtonComponent } from \"../../components/UIButton\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a pressable spatial button.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIButton({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Button\",\n entityType: \"uiButton\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIButtonComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIPanelComponent } from \"../../components/UIPanel\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial UI panel — the backdrop menus and HUDs are built on.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIPanel({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Panel\",\n entityType: \"uiPanel\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIPanelComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UISliderComponent } from \"../../components/UISlider\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a draggable spatial value control.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUISlider({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Slider\",\n entityType: \"uiSlider\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UISliderComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"none\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UITextComponent } from \"../../components/UIText\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates a spatial text block.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIText({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Text\",\n entityType: \"uiText\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UITextComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { UIToggleComponent } from \"../../components/UIToggle\";\nimport { XRInteractableComponent } from \"../../components/XRInteractable\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates an on/off spatial switch.\n *\n * The root is an empty Group: `UIPanelSystem` owns every visual child (canvas\n * quad, knobs) so it can rebuild and dispose them wholesale on style changes\n * without the factory and the system fighting over the same meshes.\n */\nexport function createUIToggle({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"UI Toggle\",\n entityType: \"uiToggle\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new UIToggleComponent(options));\n\n // Rides the existing XR interaction machinery: pointable so the hand ray\n // targets it (hover shell, ray clamps to the face), never grabbable — a\n // control is pressed, not picked up.\n world.addComponent(\n entityId,\n new XRInteractableComponent({\n grabbable: false,\n pointable: true,\n hoverBehavior: \"color\",\n }),\n );\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { XRRigComponent } from \"../../components/XRRig\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\n/**\n * Creates the XR rig — the player's movable origin.\n *\n * A plain `Group`, because the rig's whole job is to be a transform the\n * locomotion system can move: three renders the headset as\n * `rig.matrixWorld × headPose`, so moving this group moves the player. The\n * scene's camera entity should be parented to it.\n */\nexport function createXRRig({\n world,\n scene,\n payload,\n}: CreateContext): number {\n const object = new THREE.Group();\n\n const entityId = createBaseEntity(world, object, {\n label: payload.name ?? \"XR Rig\",\n entityType: \"xrRig\",\n transformInput: payload.transform,\n });\n\n const options = (payload.options ?? {}) as Record<string, unknown>;\n world.addComponent(entityId, new XRRigComponent(options));\n\n scene.add(object);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createSpriteComponent } from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSprite({ world, scene, payload }: CreateContext): number {\n const anchor = new THREE.Object3D();\n\n const imagePath = payload.path ?? \"\";\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Sprite\",\n entityType: \"sprite\",\n transformInput: payload.transform,\n });\n\n const spriteComponent = createSpriteComponent(world, entityId, imagePath);\n scene.add(anchor);\n\n if (!imagePath) {\n return entityId;\n }\n\n const loader = new THREE.TextureLoader();\n loader.load(\n imagePath,\n (texture) => {\n if (!world.hasEntity(entityId)) {\n texture.dispose();\n return;\n }\n\n const material = new THREE.SpriteMaterial({\n map: texture,\n transparent: true,\n });\n const sprite = new THREE.Sprite(material);\n sprite.userData.entityId = entityId;\n\n const textureImage = texture.image as { width?: number; height?: number } | undefined;\n spriteComponent.width = textureImage?.width ?? 1;\n spriteComponent.height = textureImage?.height ?? 1;\n\n anchor.add(sprite);\n spriteComponent.texture = texture;\n spriteComponent.object = sprite;\n },\n undefined,\n (error) => {\n console.error(`Failed to load sprite: ${imagePath}`, error);\n },\n );\n\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport {\n createMaterialComponent,\n createMeshComponent,\n createMeshGeometryComponent,\n} from \"../components\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport { createBaseEntity } from \"./shared\";\n\nexport function createSphere({ world, scene, payload }: CreateContext): number {\n const geometry = new THREE.SphereGeometry(0.5, 24, 24);\n const material = new THREE.MeshStandardMaterial({ color: \"#ffffff\" });\n const mesh = new THREE.Mesh(geometry, material);\n\n const entityId = createBaseEntity(world, mesh, {\n label: payload.name ?? \"Sphere\",\n entityType: \"sphere\",\n transformInput: payload.transform,\n });\n\n createMeshComponent(world, entityId, mesh);\n createMaterialComponent(world, entityId, material);\n createMeshGeometryComponent(world, entityId, \"sphere\", mesh, {\n radius: 0.5,\n }, {\n castShadow: false,\n receiveShadow: false,\n });\n\n scene.add(mesh);\n return entityId;\n}\n","import * as THREE from \"three\";\n\nimport { createVideoComponent } from \"../components\";\nimport type { VideoComponent } from \"../../components/Video\";\nimport type { CreateContext } from \"../../systems/ObjectManagementSystem\";\nimport type { RenderBackend } from \"../../render/RenderBackend\";\nimport { readWorldRenderBackend } from \"../../render/resolveBackend\";\nimport { createBaseEntity } from \"./shared\";\n\nfunction getOrCreateListener(\n camera: THREE.PerspectiveCamera,\n): THREE.AudioListener {\n const existing = camera.userData.ecsAudioListener;\n if (existing instanceof THREE.AudioListener) {\n return existing;\n }\n\n const listener = new THREE.AudioListener();\n camera.add(listener);\n camera.userData.ecsAudioListener = listener;\n\n return listener;\n}\n\nfunction normalizeDistanceModel(\n value: string,\n): \"inverse\" | \"linear\" | \"exponential\" {\n const v = value.trim().toLowerCase();\n if (v === \"linear\" || v === \"exponential\") return v;\n return \"inverse\";\n}\n\ntype DistanceVideoOptions = VideoComponent[\"options\"];\n\nfunction toBool(value: unknown, fallback: boolean): boolean {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction toNumber(value: unknown, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n\n return value;\n}\n\nfunction toColor(value: unknown, fallback: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return fallback;\n }\n\n return value;\n}\n\nfunction normalizeOptions(\n input: Record<string, unknown> | undefined,\n): DistanceVideoOptions {\n return {\n autoplay: toBool(input?.autoplay, false),\n loop: toBool(input?.loop, true),\n volume: Math.max(0, Math.min(1, toNumber(input?.volume, 1))),\n width: Math.max(0.01, toNumber(input?.width, 1)),\n height: Math.max(0.01, toNumber(input?.height, 1)),\n isGreenScreen: toBool(input?.isGreenScreen, false),\n backgroundColor: toColor(input?.backgroundColor, \"#00ff00\"),\n similarity: Math.max(0.01, Math.min(1, toNumber(input?.similarity, 0.4))),\n smoothness: Math.max(0.001, Math.min(1, toNumber(input?.smoothness, 0.08))),\n spill: Math.max(0, Math.min(1, toNumber(input?.spill, 0.12))),\n positional: toBool(input?.positional, false),\n refDistance: Math.max(0, toNumber(input?.refDistance, 1)),\n distanceModel: toColor(input?.distanceModel, \"inverse\"),\n rolloffFactor: Math.max(0, toNumber(input?.rolloffFactor, 1)),\n };\n}\n\nfunction createStandardMaterial(\n texture: THREE.VideoTexture,\n): THREE.MeshBasicMaterial {\n return new THREE.MeshBasicMaterial({\n map: texture,\n transparent: true,\n side: THREE.DoubleSide,\n });\n}\n\nfunction createVideoMesh(\n entityId: number,\n texture: THREE.VideoTexture,\n options: DistanceVideoOptions,\n backend: RenderBackend,\n): { mesh: THREE.Mesh; material: THREE.Material } {\n const geometry = new THREE.PlaneGeometry(1, 1);\n // The keying material is renderer-specific (GLSL on WebGL, TSL on WebGPU).\n const material = options.isGreenScreen\n ? backend.createChromaKeyMaterial(texture, {\n keyColor: options.backgroundColor,\n similarity: options.similarity,\n smoothness: options.smoothness,\n spill: options.spill,\n })\n : createStandardMaterial(texture);\n const mesh = new THREE.Mesh(geometry, material);\n\n mesh.userData.entityId = entityId;\n mesh.scale.set(options.width, options.height, 1);\n\n return { mesh, material };\n}\n\nfunction applyMetadataSizing(\n video: HTMLVideoElement,\n mesh: THREE.Mesh,\n options: DistanceVideoOptions,\n): void {\n const width = video.videoWidth;\n const height = video.videoHeight;\n if (width <= 0 || height <= 0) {\n return;\n }\n\n // Respect explicit option sizing. Otherwise fall back to video aspect.\n const nextWidth = options.width > 0 ? options.width : width / height;\n const nextHeight = options.height > 0 ? options.height : 1;\n\n mesh.scale.set(nextWidth, nextHeight, 1);\n}\n\nfunction createVideoElement(\n path: string,\n options: DistanceVideoOptions,\n): HTMLVideoElement {\n const video = document.createElement(\"video\");\n video.src = path;\n video.crossOrigin = \"anonymous\";\n video.loop = options.loop;\n video.playsInline = true;\n video.preload = \"auto\";\n video.volume = options.volume;\n\n return video;\n}\n\nexport function createVideo({\n world,\n scene,\n camera,\n payload,\n isEditor,\n}: CreateContext): number {\n const anchor = new THREE.Object3D();\n const path = payload.path ?? \"\";\n const options = normalizeOptions(payload.options);\n\n const entityId = createBaseEntity(world, anchor, {\n label: payload.name ?? \"Video\",\n entityType: \"video\",\n transformInput: payload.transform,\n });\n\n const videoComponent = createVideoComponent(world, entityId, path, options);\n videoComponent.object = anchor;\n scene.add(anchor);\n\n if (!path || typeof document === \"undefined\") {\n return entityId;\n }\n\n const video = createVideoElement(path, options);\n const texture = new THREE.VideoTexture(video);\n texture.colorSpace = THREE.SRGBColorSpace;\n texture.needsUpdate = true;\n\n const { mesh, material } = createVideoMesh(\n entityId,\n texture,\n options,\n readWorldRenderBackend(world),\n );\n anchor.add(mesh);\n\n videoComponent.videoElement = video;\n videoComponent.texture = texture;\n videoComponent.material = material;\n videoComponent.object = mesh;\n\n video.addEventListener(\"loadedmetadata\", () => {\n if (!world.hasEntity(entityId)) {\n return;\n }\n\n applyMetadataSizing(video, mesh, options);\n });\n\n // Route audio through the Web Audio API only when positional audio is\n // requested. Positional audio requires Web Audio for spatialization.\n // Non-positional video leaves the native <video> audio path intact so\n // the browser can play audio without needing the AudioContext to be\n // in \"running\" state (it is suspended until a user gesture).\n if (!isEditor && options.positional) {\n const listener = getOrCreateListener(camera);\n const audioNode = new THREE.PositionalAudio(listener);\n\n audioNode.setVolume(options.volume);\n audioNode.setRefDistance(options.refDistance);\n audioNode.setDistanceModel(normalizeDistanceModel(options.distanceModel));\n audioNode.setRolloffFactor(options.rolloffFactor);\n\n // Connects the video element's audio into the Web Audio graph.\n // After this call, video.volume acts as a pre-gain before the node —\n // reset it to 1 so the audioNode's own gain is the single source of truth.\n audioNode.setMediaElementSource(video);\n video.volume = 1;\n\n anchor.add(audioNode);\n videoComponent.audioNode = audioNode;\n }\n\n if (options.autoplay) {\n videoComponent.play(); // sets isPlaying flag; VideoSystem drives actual play()\n }\n\n return entityId;\n}\n","import type { ObjectManagementSystem } from \"../systems/ObjectManagementSystem\";\nimport { createAudio } from \"./objects/AudioFactory\";\nimport { createCamera } from \"./objects/CameraFactory\";\nimport { createCapsule } from \"./objects/CapsuleFactory\";\nimport { createCube } from \"./objects/CubeFactory\";\nimport { createCylinder } from \"./objects/CylinderFactory\";\nimport { createEmpty } from \"./objects/EmptyFactory\";\nimport { createImage } from \"./objects/ImageFactory\";\nimport { createImageTarget } from \"./objects/ImageTargetFactory\";\nimport { createInstancedMesh } from \"./objects/InstancedMeshFactory\";\nimport { createInstanceSlot } from \"./objects/InstanceSlotFactory\";\nimport { createAmbientLight } from \"./objects/lights/AmbientLightFactory\";\nimport { createAreaLight } from \"./objects/lights/AreaLightFactory\";\nimport { createDirectionalLight } from \"./objects/lights/DirectionalLightFactory\";\nimport { createPointLight } from \"./objects/lights/PointLightFactory\";\nimport { createSpotLight } from \"./objects/lights/SpotLightFactory\";\nimport { createModel } from \"./objects/ModelFactory\";\nimport { createPlane } from \"./objects/PlaneFactory\";\nimport { createScriptObject } from \"./objects/ScriptObjectFactory\";\nimport { createTeleportArea } from \"./objects/TeleportAreaFactory\";\nimport { createXRInteractor } from \"./objects/XRInteractorFactory\";\nimport { createUIButton } from \"./objects/UIButtonObjectFactory\";\nimport { createUIPanel } from \"./objects/UIPanelObjectFactory\";\nimport { createUISlider } from \"./objects/UISliderObjectFactory\";\nimport { createUIText } from \"./objects/UITextObjectFactory\";\nimport { createUIToggle } from \"./objects/UIToggleObjectFactory\";\nimport { createXRRig } from \"./objects/XRRigFactory\";\nimport { createSprite } from \"./objects/SpriteFactory\";\nimport { createSphere } from \"./objects/SphereFactory\";\nimport { createVideo } from \"./objects/VideoFactory\";\nimport { registerDefaultComponentFactories } from \"./registerDefaultComponentFactories\";\n\nexport function registerDefaultFactories(\n objectManagementSystem: ObjectManagementSystem,\n): void {\n objectManagementSystem.register(\"cube\", createCube);\n objectManagementSystem.register(\"sphere\", createSphere);\n objectManagementSystem.register(\"plane\", createPlane);\n objectManagementSystem.register(\"capsule\", createCapsule);\n objectManagementSystem.register(\"cylinder\", createCylinder);\n objectManagementSystem.register(\"empty\", createEmpty);\n objectManagementSystem.register(\"model\", createModel);\n objectManagementSystem.register(\"image\", createImage);\n objectManagementSystem.register(\"imageTarget\", createImageTarget);\n objectManagementSystem.register(\"instancedMesh\", createInstancedMesh);\n objectManagementSystem.register(\"instanceSlot\", createInstanceSlot);\n objectManagementSystem.register(\"sprite\", createSprite);\n objectManagementSystem.register(\"audio\", createAudio);\n objectManagementSystem.register(\"camera\", createCamera);\n objectManagementSystem.register(\"video\", createVideo);\n objectManagementSystem.register(\"ambientLight\", createAmbientLight);\n objectManagementSystem.register(\"directionalLight\", createDirectionalLight);\n objectManagementSystem.register(\"pointLight\", createPointLight);\n objectManagementSystem.register(\"spotLight\", createSpotLight);\n objectManagementSystem.register(\"areaLight\", createAreaLight);\n objectManagementSystem.register(\"scriptObject\", createScriptObject);\n objectManagementSystem.register(\"xrRig\", createXRRig);\n objectManagementSystem.register(\"xrInteractor\", createXRInteractor);\n objectManagementSystem.register(\"teleportArea\", createTeleportArea);\n objectManagementSystem.register(\"uiPanel\", createUIPanel);\n objectManagementSystem.register(\"uiText\", createUIText);\n objectManagementSystem.register(\"uiButton\", createUIButton);\n objectManagementSystem.register(\"uiToggle\", createUIToggle);\n objectManagementSystem.register(\"uiSlider\", createUISlider);\n\n registerDefaultComponentFactories(objectManagementSystem);\n}\n"]}