@realsee/five 6.8.0 → 6.8.1

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 (216) hide show
  1. package/ai_guides/features/flowing-light-2d-pass.md +64 -10
  2. package/ai_guides/features/flowing-light-3d-pass.md +64 -10
  3. package/docs/assets/hierarchy.js +1 -1
  4. package/docs/assets/navigation.js +1 -1
  5. package/docs/assets/search.js +1 -1
  6. package/docs/classes/five.AdaptiveLuminancePass.html +1 -1
  7. package/docs/classes/five.BoundingMesh.html +1 -1
  8. package/docs/classes/five.Camera.html +1 -1
  9. package/docs/classes/five.EyeDomeLightingPass.html +1 -1
  10. package/docs/classes/five.Five.html +1 -1
  11. package/docs/classes/five.FivePass.html +1 -1
  12. package/docs/classes/five.InternalWebGLRenderer.html +1 -1
  13. package/docs/classes/five.Model.html +1 -1
  14. package/docs/classes/five.ModelScene.html +1 -1
  15. package/docs/classes/five.NetworkSubscribe.html +1 -1
  16. package/docs/classes/five.PBMContainer.html +1 -1
  17. package/docs/classes/five.PBMCustomShader.html +1 -1
  18. package/docs/classes/five.PBMGSObject.html +1 -1
  19. package/docs/classes/five.PBMGroup.html +1 -1
  20. package/docs/classes/five.PBMMesh.html +1 -1
  21. package/docs/classes/five.PBMMeshMaterial.html +1 -1
  22. package/docs/classes/five.PBMPanoFilter.html +1 -1
  23. package/docs/classes/five.PBMPointCloud.html +1 -1
  24. package/docs/classes/five.PBMPointCloudMaterial.html +1 -1
  25. package/docs/classes/five.PBMSkinnedMesh.html +1 -1
  26. package/docs/classes/five.PBMUpdateable.html +1 -1
  27. package/docs/classes/five.PanoCircleMesh.html +1 -1
  28. package/docs/classes/five.PanoCircleMeshCustom.html +1 -1
  29. package/docs/classes/five.PanoCircleMeshSolid.html +1 -1
  30. package/docs/classes/five.Parameter.html +1 -1
  31. package/docs/classes/five.Scene.html +1 -1
  32. package/docs/classes/five.Subscribe.html +1 -1
  33. package/docs/classes/five.Tile3D.html +1 -1
  34. package/docs/classes/five.TileNode.html +1 -1
  35. package/docs/classes/five.TrajectoryNode.html +1 -1
  36. package/docs/classes/five.WorkResolvedObserver.html +1 -1
  37. package/docs/classes/gltf-loader.DDSLoader.html +1 -1
  38. package/docs/classes/gltf-loader.DRACOLoader.html +1 -1
  39. package/docs/classes/gltf-loader.GLTFLoader.html +1 -1
  40. package/docs/classes/gltf-loader.GLTFObject.html +1 -1
  41. package/docs/classes/gltf-loader.THREEGLTFLoader.html +1 -1
  42. package/docs/classes/line.Line.html +1 -1
  43. package/docs/classes/line.LineGeometry.html +1 -1
  44. package/docs/classes/line.LineMaterial.html +1 -1
  45. package/docs/classes/line.LineSegmentsGeometry.html +1 -1
  46. package/docs/classes/line.THREE_Line2.html +1 -1
  47. package/docs/classes/line.THREE_LineSegments2.html +1 -1
  48. package/docs/classes/plugins.BasePlugin.Controller.html +1 -1
  49. package/docs/classes/plugins.CSS2DObject.html +10 -0
  50. package/docs/classes/plugins.CSS2DRenderer.html +7 -0
  51. package/docs/classes/plugins.CSS3DObject.html +1 -1
  52. package/docs/classes/plugins.CSS3DSprite.html +1 -1
  53. package/docs/classes/plugins.Object3DHelperController.html +1 -1
  54. package/docs/classes/plugins.RoundedBoxGeometry.html +1 -1
  55. package/docs/classes/sticker.Sticker.html +1 -1
  56. package/docs/classes/vfx.Airflow.html +1 -1
  57. package/docs/classes/vfx.Flame.html +1 -1
  58. package/docs/classes/vfx.Particle.html +1 -1
  59. package/docs/classes/vfx.ParticleGPU.html +1 -1
  60. package/docs/classes/vfx.SpotLight.html +1 -1
  61. package/docs/documents/features_flowing-light-2d-pass.html +28 -15
  62. package/docs/documents/features_flowing-light-3d-pass.html +27 -14
  63. package/docs/functions/plugins.CSS2DPlugin.html +1 -0
  64. package/docs/functions/react.getPlugin.html +2 -0
  65. package/docs/functions/react.setPlugin.html +2 -0
  66. package/docs/functions/react.useFivePlugin.html +8 -0
  67. package/docs/functions/react.withFive.html +1 -1
  68. package/docs/hierarchy.html +1 -1
  69. package/docs/interfaces/five.AddableObject.html +1 -1
  70. package/docs/interfaces/five.AjaxOptions.html +1 -1
  71. package/docs/interfaces/five.BaseEvent.html +1 -1
  72. package/docs/interfaces/five.BaseExtendableEvent.html +1 -1
  73. package/docs/interfaces/five.EventCallback.html +1 -1
  74. package/docs/interfaces/five.GestureEvent.html +1 -1
  75. package/docs/interfaces/five.ImageOptions.html +1 -1
  76. package/docs/interfaces/five.IntersectEvent.html +1 -1
  77. package/docs/interfaces/five.IntersectMesh.html +1 -1
  78. package/docs/interfaces/five.IntersectMeshInterface.html +1 -1
  79. package/docs/interfaces/five.Intersection.html +1 -1
  80. package/docs/interfaces/five.LooseWorkWithExtrinsics.html +1 -1
  81. package/docs/interfaces/five.ModeChangeEvent.html +1 -1
  82. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +1 -1
  83. package/docs/interfaces/five.ModelEvent.html +1 -1
  84. package/docs/interfaces/five.ModelSceneEvent.html +1 -1
  85. package/docs/interfaces/five.ModelTileEvent.html +1 -1
  86. package/docs/interfaces/five.MovePanoOptions.html +1 -1
  87. package/docs/interfaces/five.NetworkAbortError.html +1 -1
  88. package/docs/interfaces/five.NetworkFirbiddenError.html +1 -1
  89. package/docs/interfaces/five.NetworkOptions.html +1 -1
  90. package/docs/interfaces/five.NetworkProxyError.html +1 -1
  91. package/docs/interfaces/five.NetworkResourceEvent.html +1 -1
  92. package/docs/interfaces/five.NetworkResponseError.html +1 -1
  93. package/docs/interfaces/five.NetworkTimeoutError.html +1 -1
  94. package/docs/interfaces/five.ObjectEvent.html +1 -1
  95. package/docs/interfaces/five.PBMMaterial.html +1 -1
  96. package/docs/interfaces/five.PBMMeshMaterialParameters.html +1 -1
  97. package/docs/interfaces/five.PBMPointCloudMaterialParameters.html +1 -1
  98. package/docs/interfaces/five.PanoCircleMeshInterface.html +1 -1
  99. package/docs/interfaces/five.PanoEvent.html +1 -1
  100. package/docs/interfaces/five.PanoPrepareEvent.html +1 -1
  101. package/docs/interfaces/five.PanoTextureEvent.html +1 -1
  102. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +1 -1
  103. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +1 -1
  104. package/docs/interfaces/five.ParameterMaterialValue.html +1 -1
  105. package/docs/interfaces/five.ParameterTilesetValue.html +1 -1
  106. package/docs/interfaces/five.ParameterValue.html +1 -1
  107. package/docs/interfaces/five.Pose.html +1 -1
  108. package/docs/interfaces/five.RenderEvent.html +1 -1
  109. package/docs/interfaces/five.ResolvedParameterValue.html +1 -1
  110. package/docs/interfaces/five.State.html +1 -1
  111. package/docs/interfaces/five.StateEvent.html +1 -1
  112. package/docs/interfaces/five.TextureOptions.html +1 -1
  113. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +1 -1
  114. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +1 -1
  115. package/docs/interfaces/five.ViewLayer.html +1 -1
  116. package/docs/interfaces/five.WorkCubeImage.html +1 -1
  117. package/docs/interfaces/five.WorkImage.html +1 -1
  118. package/docs/interfaces/five.WorkObserver.html +1 -1
  119. package/docs/interfaces/five.WorkObserverProto.html +1 -1
  120. package/docs/interfaces/five.WorkTile.html +1 -1
  121. package/docs/interfaces/five.WorksEvent.html +1 -1
  122. package/docs/interfaces/five.XRControllerEvent.html +1 -1
  123. package/docs/interfaces/five.XRGestureEvent.html +1 -1
  124. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +1 -1
  125. package/docs/interfaces/five.XRSessionEvent.html +1 -1
  126. package/docs/interfaces/plugins.BackgroundPluginController.html +1 -1
  127. package/docs/interfaces/plugins.BackgroundPluginType.EventMap.html +1 -1
  128. package/docs/interfaces/plugins.BasePlugin.State.html +1 -1
  129. package/docs/interfaces/plugins.CSS2DPluginController.html +49 -0
  130. package/docs/interfaces/plugins.CSS2DPluginType.Config.html +2 -0
  131. package/docs/interfaces/plugins.CSS2DPluginType.CreateCSS2DObjectType.html +8 -0
  132. package/docs/interfaces/plugins.CSS2DPluginType.EventMap.html +10 -0
  133. package/docs/interfaces/plugins.CSS2DPluginType.Params.html +4 -0
  134. package/docs/interfaces/plugins.CSS2DPluginType.State.html +8 -0
  135. package/docs/interfaces/plugins.CSS2DRendererParameters.html +2 -0
  136. package/docs/interfaces/plugins.CSS3DPluginController.html +12 -12
  137. package/docs/interfaces/plugins.CSS3DPluginType.EventMap.html +1 -1
  138. package/docs/interfaces/plugins.CSS3DPluginType.State.html +1 -1
  139. package/docs/interfaces/plugins.DynamicPathLinePluginController.html +1 -1
  140. package/docs/interfaces/plugins.DynamicPathLinePluginType.EventMap.html +1 -1
  141. package/docs/interfaces/plugins.DynamicPathLinePluginType.State.html +1 -1
  142. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationController.html +1 -1
  143. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.EventMap.html +1 -1
  144. package/docs/interfaces/plugins.GaussianSplattingEntranceAnimationPluginType.State.html +1 -1
  145. package/docs/interfaces/plugins.ItemMaskController.html +1 -1
  146. package/docs/interfaces/plugins.ItemMaskPluginType.EventMap.html +1 -1
  147. package/docs/interfaces/plugins.ItemMaskPluginType.State.html +1 -1
  148. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseController.html +1 -1
  149. package/docs/interfaces/plugins.Object3DHelperPluginType.BaseHelper.html +1 -1
  150. package/docs/interfaces/plugins.Object3DHelperPluginType.BoundingBoxController.html +1 -1
  151. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveController.html +1 -1
  152. package/docs/interfaces/plugins.Object3DHelperPluginType.MoveHelperAbstract.html +1 -1
  153. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateController.html +1 -1
  154. package/docs/interfaces/plugins.Object3DHelperPluginType.RotateHelperAbstract.html +1 -1
  155. package/docs/interfaces/plugins.OrientationPluginController.html +1 -1
  156. package/docs/interfaces/plugins.OrientationPluginType.EventMap.html +1 -1
  157. package/docs/interfaces/plugins.OrientationPluginType.State.html +1 -1
  158. package/docs/interfaces/plugins.PanoAnimeController.html +1 -1
  159. package/docs/interfaces/plugins.PanoAnimePluginType.EventMap.html +1 -1
  160. package/docs/interfaces/plugins.PanoAnimePluginType.State.html +1 -1
  161. package/docs/interfaces/plugins.PluginTemplateType.EventMap.html +1 -1
  162. package/docs/interfaces/plugins.PluginTemplateType.State.html +1 -1
  163. package/docs/interfaces/plugins.TrajectoryController.html +1 -1
  164. package/docs/interfaces/react.FiveAppProps.html +11 -0
  165. package/docs/interfaces/react.FiveInjectionTypes.html +1 -1
  166. package/docs/modules/plugins.CSS2DPluginType.html +1 -0
  167. package/docs/modules/plugins.html +1 -1
  168. package/docs/modules/react.html +1 -1
  169. package/docs/types/five.ParseOptions.html +1 -1
  170. package/docs/types/plugins.BasePlugin.EventMap.html +1 -1
  171. package/docs/types/plugins.CSS2DPluginType.PluginData.html +1 -0
  172. package/docs/types/plugins.CSS2DPluginType.ServerData.html +1 -0
  173. package/docs/variables/react.FiveApp.html +3 -0
  174. package/docs/variables/react.FiveAutoCanvas.html +3 -0
  175. package/five/index.js +5 -5
  176. package/five/index.mjs +65 -65
  177. package/five/renderer/postprocessing/passes/flowing-light-2d-pass.d.ts +6 -1
  178. package/five/renderer/postprocessing/passes/flowing-light-3d-pass.d.ts +3 -1
  179. package/gltf-loader/index.js +3 -3
  180. package/gltf-loader/index.mjs +3 -3
  181. package/line/index.js +3 -3
  182. package/line/index.mjs +3 -3
  183. package/package.json +1 -1
  184. package/plugins/CSS2DPlugin/Controller.d.ts +59 -0
  185. package/plugins/CSS2DPlugin/index.d.ts +5 -0
  186. package/plugins/CSS2DPlugin/typing.d.ts +30 -0
  187. package/plugins/index.d.ts +2 -0
  188. package/plugins/index.js +24 -4
  189. package/plugins/index.mjs +557 -393
  190. package/plugins/thirdParty/CSS2DRenderer.d.ts +37 -0
  191. package/react/autoCanvas.d.ts +9 -0
  192. package/react/fiveApp.d.ts +22 -0
  193. package/react/hooks/useFivePlugin.d.ts +26 -0
  194. package/react/index.d.ts +4 -0
  195. package/react/index.js +3 -3
  196. package/react/index.mjs +291 -175
  197. package/react/withFive.d.ts +1 -1
  198. package/shader-lib/index.js +2 -2
  199. package/shader-lib/index.mjs +2 -2
  200. package/sticker/index.js +3 -3
  201. package/sticker/index.mjs +3 -3
  202. package/umd/five-gltf-loader.js +3 -3
  203. package/umd/five-line.js +3 -3
  204. package/umd/five-plugins.js +24 -4
  205. package/umd/five-react.js +3 -3
  206. package/umd/five-shader-lib.js +2 -2
  207. package/umd/five-sticker.js +3 -3
  208. package/umd/five-vfx.js +2 -2
  209. package/umd/five-vue.js +2 -2
  210. package/umd/five.js +5 -5
  211. package/vfx/index.js +2 -2
  212. package/vfx/index.mjs +2 -2
  213. package/vue/index.js +2 -2
  214. package/vue/index.mjs +2 -2
  215. package/work-downloader/index.js +2 -2
  216. package/work-downloader/index.mjs +2 -2
@@ -0,0 +1,37 @@
1
+ import {
2
+ Object3D,
3
+ Vector2,
4
+ Scene,
5
+ Camera
6
+ } from 'three';
7
+
8
+ export class CSS2DObject extends Object3D {
9
+
10
+ constructor( element?: HTMLElement );
11
+
12
+ readonly isCSS2DObject: true;
13
+ element: HTMLElement;
14
+ center: Vector2;
15
+
16
+ onBeforeRender: ( renderer: unknown, scene: Scene, camera: Camera ) => void;
17
+ onAfterRender: ( renderer: unknown, scene: Scene, camera: Camera ) => void;
18
+
19
+ copy( source: CSS2DObject, recursive?: boolean ): this;
20
+
21
+ }
22
+
23
+ export interface CSS2DRendererParameters {
24
+ element?: HTMLElement;
25
+ }
26
+
27
+ export class CSS2DRenderer {
28
+
29
+ constructor( parameters?: CSS2DRendererParameters );
30
+ domElement: HTMLElement;
31
+ sortObjects: boolean;
32
+
33
+ getSize(): { width: number, height: number };
34
+ setSize( width: number, height: number ): void;
35
+ render( scene: Scene, camera: Camera ): void;
36
+
37
+ }
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ /**
3
+ * 自适应尺寸的 Five 渲染区域组件
4
+ * @description 自动跟随容器大小,无需手动传 width/height。请在 FiveProvider 内使用。
5
+ */
6
+ declare const FiveAutoCanvas: React.FC<{
7
+ children?: React.ReactNode;
8
+ }>;
9
+ export { FiveAutoCanvas };
@@ -0,0 +1,22 @@
1
+ import * as React from "react";
2
+ import { Five, FiveInitArgs } from "@realsee/five";
3
+ type LoadArgs = Parameters<Five["load"]>;
4
+ interface FiveAppProps {
5
+ fiveInitArgs?: FiveInitArgs;
6
+ load?: (five: Five) => Promise<LoadArgs>;
7
+ plugins?: FiveInitArgs["plugins"];
8
+ renderChildren?: boolean;
9
+ fullscreen?: boolean;
10
+ /** 是否自动挂载 FiveAutoCanvas,默认 true */
11
+ autoCanvas?: boolean;
12
+ /** 加载中显示的 fallback,类似 Suspense 的 fallback */
13
+ fallback?: React.ReactNode;
14
+ children?: React.ReactNode;
15
+ }
16
+ /**
17
+ * Five 应用组件
18
+ * @description 组合了 Provider + AutoCanvas + 数据加载流程的一体化组件。
19
+ */
20
+ declare const FiveApp: React.FC<FiveAppProps>;
21
+ export { FiveApp };
22
+ export type { FiveAppProps };
@@ -0,0 +1,26 @@
1
+ import { Five } from "@realsee/five";
2
+ /**
3
+ * 获取插件实例(非 hook,可在任意位置调用)
4
+ */
5
+ export declare function getPlugin<T = any>(workCode: string, pluginName: string): T | undefined;
6
+ /**
7
+ * 手动设置插件实例到缓存(非 hook,可在任意位置调用)
8
+ */
9
+ export declare function setPlugin(workCode: string, pluginName: string, plugin: any): void;
10
+ interface UseFivePluginOptions<T> {
11
+ /** 缓存未命中时自动创建插件实例 */
12
+ createPlugin?: (five: Five) => T;
13
+ /** Five 实例变化时是否重新创建(而非同步引用),默认 false */
14
+ reCreateOnFiveChange?: boolean;
15
+ }
16
+ /**
17
+ * 插件实例管理 hook
18
+ *
19
+ * - 以 `five.work.workCode + pluginName` 为 key 缓存插件实例
20
+ * - `createPlugin` 存在时,缓存未命中会自动创建
21
+ * - Five 实例变化时自动同步插件内部的 five 引用
22
+ *
23
+ * @returns 插件实例(可能为 undefined)
24
+ */
25
+ export declare function useFivePlugin<T = any>(pluginName: string, options?: UseFivePluginOptions<T>): T | undefined;
26
+ export {};
package/react/index.d.ts CHANGED
@@ -2,6 +2,9 @@ export { createFiveProvider } from "./createProvider";
2
2
  export type { FiveProviderType, FiveProviderPropTypes } from "./createProvider";
3
3
  export { FiveCanvas } from "./canvas";
4
4
  export type { FiveCanvasProps } from "./canvas";
5
+ export { FiveAutoCanvas } from "./autoCanvas";
6
+ export { FiveApp } from "./fiveApp";
7
+ export type { FiveAppProps } from "./fiveApp";
5
8
  export { unsafe__useFiveInstance } from "./hooks/unsafe__useFiveInstance";
6
9
  export { useFiveSceneEffect, useFiveScene } from "./hooks/useFiveSceneEffect";
7
10
  export { useFiveWork } from "./hooks/useFiveWork";
@@ -16,6 +19,7 @@ export { useFiveCameraRaycaster } from "./hooks/useFiveCameraRaycaster";
16
19
  export { useFiveCameraDirection } from "./hooks/useFiveCameraDirection";
17
20
  export { useFiveModelIntersectRaycaster } from "./hooks/useFiveModelIntersectRaycaster";
18
21
  export { useFiveModelReadyState } from "./hooks/useFiveModelReadyState";
22
+ export { useFivePlugin, getPlugin, setPlugin } from "./hooks/useFivePlugin";
19
23
  export { useFiveFloor } from "./hooks/useFiveFloor";
20
24
  export { useFiveHelper } from "./hooks/useFiveHelper";
21
25
  export { INJECTION_PROPNAME, withFive, createFiveFeature, } from "./withFive";
package/react/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 4/17/2026
5
- * Version: 6.8.0
4
+ * Generated: 2026/4/28
5
+ * Version: 6.8.1
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -252,4 +252,4 @@
252
252
  * No amendment to or modification of this Agreement will be binding unless in
253
253
  * writing and signed by Realsee. You and Realsee hereto confirm that this
254
254
  * Agreement and all related documents shall be drafted in English.
255
- */Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`react`);c=s(c);let l=require(`three`);l=s(l);let u=require(`@realsee/five`);var d=[],f=[];function p({preserveDrawingBuffer:e=!0,webgl2:t=!1}={}){if(typeof window>`u`)return;let n=null;if(n=t?d.shift():f.shift(),!n){if(t){let t=document.createElement(`canvas`),r=t.getContext(`webgl2`);r?n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!0,alpha:!0,stencil:!0,canvas:t,context:r}):(console.error(`error occurred when getting webgl2 canvas context, mybe webgl2 not support, fallback to webgl.`),n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!1,alpha:!0,stencil:!0}))}else n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!1,alpha:!0,stencil:!0});n.outputEncoding=l.sRGBEncoding}return n.autoClear=!0,n}function m(e){e&&(e.capabilities.isWebGL2?f.indexOf(e)===-1&&f.push(e):d.indexOf(e)===-1&&d.push(e))}var h=c.createContext(null);function g(){let e=c.useContext(h);if(!e)throw Error(`FiveProvider never found.`);return e.five}function _(){let e=c.useContext(h);if(!e)throw Error(`FiveProvider never found.`);return e.loadWork}function v(e,t){let n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t];if(n.length!==r.length)return!1;for(let e=0;e<n.length;e++)if(n[e].workCode!==r[e].workCode)return!1;return!0}function y(e={}){return class extends c.Component{constructor(t){super(t),this.__fiveEventDisposers=[],this.__fiveDisposeTimer=null,this.five=new u.Five(Object.assign(Object.assign({},e),{renderer:void 0})),this.loadWork=this.loadWork.bind(this),this.state={}}loadWork(e,t,n,r=!0){if(this.props.work)throw Error(`props 'works' is set in fiveProvider, if you need modify work internal, use 'initialWork' instead.`);return this.five.load(e,t,n,r)}shouldComponentUpdate(e){return this.five.renderer&&this.five&&e.work&&!v(e.work,this.five.works)&&this.five.load(e.work,e.initialState,e.initialOptions),!0}componentDidMount(){var t;clearTimeout(this.__fiveDisposeTimer),this.__fiveDisposeTimer=null;let n;if(typeof window<`u`){n=p({webgl2:e==null?void 0:e.webgl2,preserveDrawingBuffer:e==null?void 0:e.preserveDrawingBuffer});let t=(0,u.getViewportScale)()===1?window.devicePixelRatio:1;n==null||n.setPixelRatio(t)}this.five.renderer=n,this.setState({renderer:n}),this.__fiveEventDisposers.push(this.five.on(`load`,()=>{this.props.onWorksChange&&this.props.onWorksChange(this.five.works)})),this.__fiveEventDisposers.push(this.five.on(`stateChange`,(e,t)=>{this.props.onStateChange&&this.props.onStateChange(e,t)})),this.__fiveEventDisposers.push(this.five.on(`currentStateChange`,(e,t)=>{this.props.onCurrentStateChange&&this.props.onCurrentStateChange(e,t)})),this.__fiveEventDisposers.push(this.five.on(`error`,e=>{this.props.onError?this.props.onError(e):console.warn(e.message)}));let r=this.props.work||this.props.initialWork;r&&this.five.load(r,this.props.initialState,this.props.initialOptions,(t=this.props.initialUserAction)==null?!0:t)}componentWillUnmount(){var e;(e=this.five.controller)==null||e.destroy();let t=this.five.renderer;this.five.renderer=void 0,m(t),this.setState({renderer:void 0}),this.__fiveDisposeTimer=setTimeout(()=>{this.__fiveDisposeTimer=null,this.five.dispose()},1e3)}render(){let e=this.five,t=this.loadWork,n=this.state.renderer;return c.createElement(h.Provider,{value:{renderer:n,five:e,loadWork:t}},this.props.children)}}}var b=typeof window<`u`?c.useLayoutEffect:c.useEffect,x={display:`inline-block`,overflow:`hidden`},S=({width:e,height:t})=>{let n=g(),r=c.createRef(),i=Object.assign({width:e,height:t},x);return b(()=>{let i=r.current;if(!i||!n.renderer)return;let a=n.renderer.domElement;if(a.parentNode!==null&&a.parentNode!==i)throw Error(`There are more than 2 fiveCanvas in this context.`);return a.parentNode!==i&&i.appendChild(a),n.camera.aspect=e/t,n.camera.updateProjectionMatrix(),n.renderer.setSize(e,t),n.refresh({width:e,height:t}),n.needsRender=!0,()=>{a.parentNode===i&&i.removeChild(a)}},[n,n.renderer,e,t,r.current]),c.createElement(`div`,{ref:r,style:i})};function C(){return g()}function w(e,t){let n=g(),r=[n];t!==void 0&&(r=r.concat(t)),c.useLayoutEffect(()=>e(n.scene),r)}var T=w;function E(){let e=g(),t=_(),[n,r]=c.useState(()=>e.works);return c.useLayoutEffect(()=>e.on(`load`,()=>r(e.works)),[e]),[n,t]}function D(e){return Object.assign({},e.state)}function O(){let e=g(),[t,n]=c.useState(()=>D(e)),r=c.useCallback((t,n=!1,r=!0)=>{let i=typeof t==`function`?t(e.getCurrentState()):t;e.setState(i,n,r)},[e]);return c.useLayoutEffect(()=>e.on(`stateChange`,()=>n(D(e))),[e]),[t,r]}function k(){let e=g(),[t,n]=c.useState(()=>e.getCurrentState()),r=c.useCallback((t,n=!1,r=!0)=>{let i=typeof t==`function`?t(e.getCurrentState()):t;e.setState(i,n,r)},[e]);return c.useLayoutEffect(()=>e.on(`currentStateChange`,()=>n(e.getCurrentState())),[e]),[t,r]}function A(){let e=g(),[t,n]=c.useState(()=>e.getCurrentState());return c.useLayoutEffect(()=>e.on(`currentStateChange`,()=>n(e.getCurrentState())),[e]),e.works.getObserver(t)}function j(e,t,n){let r=g(),i=[r,e];n!==void 0&&(i=i.concat(n)),c.useLayoutEffect(()=>r.on(e,t),i)}function M(){let e=g();return{updateCamera:c.useCallback((t,n)=>e.updateCamera(t,n),[e]),getPixels:c.useCallback(e.getPixels.bind(e),[e]),render:c.useCallback(t=>e.render(t),[e]),needsRender:c.useCallback(()=>e.needsRender=!0,[e]),preloadPano:c.useCallback((t,n)=>e.preloadPano(t,n),[e])}}function N(){let e=g(),[t,n]=c.useState(()=>Symbol());return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(Symbol())),[e]),c.useCallback((t,n)=>e.project2d(t,n),[e])}function P(e){let t=e.camera.getWorldDirection(new l.Vector3);return new l.Raycaster(e.camera.position,t)}function ee(){let e=g(),[t,n]=c.useState(()=>P(e));return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(P(e))),[e]),t}function F(e){return e.camera.getWorldDirection(new l.Vector3)}function I(){let e=g(),[t,n]=c.useState(()=>F(e));return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(F(e))),[e]),t}function te(){let e=g();return c.useCallback(t=>e.model.intersectRaycaster(t),[e])}function L(e){return e.model.empty?`Empty`:`Loaded`}function ne(){let e=g(),[t,n]=c.useState(()=>L(e));return c.useLayoutEffect(()=>e.on(`modelLoaded`,()=>n(L(e))),[e]),t}function re(){let e=g(),[t,n]=c.useState(e.model.shownFloor),[r,i]=c.useState(e.model.floorLength),a=c.useCallback(t=>{typeof t==`number`?e.model.show(t):e.model.show()},[e]);return c.useLayoutEffect(()=>{let t=[];return t.push(e.on(`modelShownFloorChange`,()=>n(e.model.shownFloor))),t.push(e.on(`modelLoaded`,()=>i(e.model.floorLength))),()=>{let e;for(;e=t.shift();)e()}},[e]),[t,r,a]}function R(){let e=g(),[t,n]=c.useState(e.helperVisible),r=c.useCallback(t=>{e.helperVisible=t},[e]);return c.useLayoutEffect(()=>e.on(`helpersVisibleChange`,e=>n(e)),[e]),[t,r]}var z=`$five`;function B(e,t){return t.indexOf(e)>=0}function V(e,t){for(let n of Object.keys(t))t[n]!==void 0&&(e[n]=t[n])}function H(e,t){let n=B(`state`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return Object.assign({},e.state)},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`stateChange`,()=>i(Symbol()))},[e]),[a,r]}function U(e,t){let n=B(`currentState`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.getCurrentState()},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`currentStateChange`,()=>i(Symbol()))},[e]),[a,r]}function W(e,t){let n=B(`currentObserver`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.getCurrentState()},[e,r]);c.useLayoutEffect(()=>{if(n)return e.on(`currentStateChange`,()=>i(Symbol()))},[e]);let o;return a&&(o=e.works.getObserver(a)),[o,r]}function G(e,t){return[B(`unsafe__fiveInstance`,t)?e:void 0]}function K(e,t){let n=B(`works`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.works},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`load`,()=>i(Symbol()))},[e]),[a,r]}function q(e,t){let n=B(`model`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelLoaded`,()=>i(Symbol()))},[e]),[a,r]}function J(e,t){return[B(`scene`,t)?e.scene:void 0]}function Y(e,t){let n=B(`cameraDirection`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.camera.getWorldDirection(new l.Vector3)},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`cameraUpdate`,()=>i(Symbol()))},[e]),[a,r]}function X(e,t){let n=B(`cameraRaycaster`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n){let t=e.camera.getWorldDirection(new l.Vector3);return new l.Raycaster(e.camera.position,t)}},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`cameraUpdate`,()=>i(Symbol()))},[e]),[a,r]}function ie(e,t){let n=B(`modelReadyState`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model.empty?`Empty`:`Loaded`},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelLoaded`,()=>i(Symbol()))},[e]),[a,r]}function ae(e,t){let n=B(`shownFloor`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model.shownFloor},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelShownFloorChange`,()=>i(Symbol()))},[e]),[a,r]}function oe(e,t){let n=B(`helperVisible`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.helperVisible},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`helpersVisibleChange`,()=>i(Symbol()))},[e]),[a,r]}function se(e,t){if(B(`loadWork`,t))return e}function ce(e,t){if(B(`setState`,t))return(...t)=>e.setState(...t)}function le(e,t){if(B(`on`,t))return(...t)=>e.on(...t)}function ue(e,t){if(B(`on`,t))return(...t)=>e.once(...t)}function de(e,t){if(B(`off`,t))return(...t)=>e.off(...t)}function fe(e,t){if(B(`intersectRaycaster`,t))return(...t)=>e.model.intersectRaycaster(...t)}function pe(e,t){if(B(`project2d`,t))return(...t)=>e.project2d(...t)}function me(e,t){if(B(`updateCamera`,t))return(...t)=>e.updateCamera(...t)}function he(e,t){if(B(`getPixels`,t))return e.getPixels.bind(e)}function Z(e,t){if(B(`render`,t))return(...t)=>e.render(...t)}function ge(e,t){if(B(`needsRender`,t))return()=>{e.needsRender=!0}}function _e(e,t){if(B(`preloadPano`,t))return(...t)=>e.preloadPano(...t)}function ve(e,t){if(B(`showFloor`,t))return t=>{typeof t==`number`?e.model.show(t):e.model.show()}}function ye(e,t){if(B(`toggleHelperVisible`,t))return t=>{e.helperVisible=t}}function be(e){return function(t){return c.forwardRef((n,r)=>{let i=g(),a=_(),[o]=G(i,e),[s,l]=H(i,e),[u,d]=U(i,e),[f,p]=W(i,e),[m,h]=K(i,e),[v,y]=q(i,e),[b]=J(i,e),[x,S]=Y(i,e),[C,w]=X(i,e),[T,E]=ie(i,e),[D,O]=ae(i,e),[k,A]=oe(i,e),j=c.useMemo(()=>{let t={};return V(t,{setState:ce(i,e),loadWork:se(a,e),on:le(i,e),once:ue(i,e),off:de(i,e),intersectRaycaster:fe(i,e),project2d:pe(i,e),updateCamera:me(i,e),getPixels:he(i,e),render:Z(i,e),needsRender:ge(i,e),preloadPano:_e(i,e),showFloor:ve(i,e),toggleHelperVisible:ye(i,e)}),t},[i,a]),M=c.useMemo(()=>{let e=Object.assign({},j);return V(e,{unsafe__fiveInstance:o,state:s,currentState:u,currentObserver:f,work:m,model:v,scene:b,cameraDirection:x,cameraRaycaster:C,modelReadyState:T,shownFloor:D,helperVisible:k}),e},[i,j,l,d,p,h,y,S,w,E,O,A]);return c.createElement(t,Object.assign({ref:r,$five:M},n))})}}function xe(...e){return e}function Q(e,t){let n={},r=t.length,i=-1;for(;++i<r;){let r=t[i];r in e&&(n[r]=e[r])}return n}function Se(e,t){return typeof e==`number`&&typeof t==`number`&&isNaN(e)&&isNaN(t)?!0:e===t}function Ce(e,t){for(let n=0;n<e.length;n++)for(let r=0;r<t.length;r++)if(e[n]===t[r])return!0;return!1}var $=class{constructor(e,t){this.values=e,this.listeners=[],this.onValuesChange=t}on(e,t){let n=[e,t];return this.listeners.push(n),()=>{let e=this.listeners.indexOf(n);e>=0&&this.listeners.splice(e,1)}}getValues(e){return Q(this.values,e)}setValues(e,t){let n=[];for(let r in t)e.indexOf(r)>=0&&!Se(t[r],this.values[r])&&n.push(r);if(n.length===0)return;let r=Object.assign({},this.values);for(let e of n)this.values[e]=t[e];this.onValuesChange&&this.onValuesChange(this.values,r);for(let[e,t]of this.listeners){if(!Ce(e,n))continue;let i=Q(r,e);t(Q(this.values,e),i)}}};function we(e){let t=c.createContext(null);return{useStore(e){let n=c.useContext(t);if(n===null)throw Error(`StoreProvider never found.`);let r=c.useRef(!0),[i,a]=c.useState(n.getValues(e)),o=[n,...e];return c.useLayoutEffect(()=>(r.current?r.current=!1:a(n.getValues(e)),n.on(e,e=>a(e))),o),[i,c.useCallback(t=>n.setValues(e,t),o)]},useStoreSetter(e){let n=c.useContext(t);if(n===null)throw Error(`StoreProvider never found.`);return c.useCallback(t=>n.setValues(e,t),[n,...e])},watchStore(e,n,r){let i=c.useContext(t);if(i===null)throw Error(`StoreProvider never found.`);let a=[i,...e];r!==void 0&&(a=a.concat(r)),c.useLayoutEffect(()=>i.on(e,n),a)},useStoreAction(n){let r=c.useContext(t);if(r===null)throw Error(`StoreProvider never found.`);return c.useCallback((...t)=>{let[i,...a]=e[n];return i(()=>r.getValues(a),e=>r.setValues(a,e),...t)},[])},StoreProvider:class extends c.Component{constructor(e){super(e),this.store=new $(e.initialValue,(...e)=>{this.props.onValuesChange&&this.props.onValuesChange(...e)})}shouldComponentUpdate(e){return e.children!==this.props.children}render(){return c.createElement(t.Provider,{value:this.store},this.props.children)}}}}exports.FiveCanvas=S,exports.INJECTION_PROPNAME=z,exports.Store=$,exports.createFiveFeature=xe,exports.createFiveProvider=y,exports.createStore=we,exports.unsafe__useFiveInstance=C,exports.useFiveAction=M,exports.useFiveCameraDirection=I,exports.useFiveCameraRaycaster=ee,exports.useFiveCurrentObserver=A,exports.useFiveCurrentState=k,exports.useFiveEventCallback=j,exports.useFiveFloor=re,exports.useFiveHelper=R,exports.useFiveModelIntersectRaycaster=te,exports.useFiveModelReadyState=ne,exports.useFiveProject2d=N,exports.useFiveScene=T,exports.useFiveSceneEffect=w,exports.useFiveState=O,exports.useFiveWork=E,exports.withFive=be;
255
+ */Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`react`);c=s(c);let l=require(`three`);l=s(l);let u=require(`@realsee/five`);var d=[],f=[];function p({preserveDrawingBuffer:e=!0,webgl2:t=!1}={}){if(typeof window>`u`)return;let n=null;if(n=t?d.shift():f.shift(),!n){if(t){let t=document.createElement(`canvas`),r=t.getContext(`webgl2`);r?n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!0,alpha:!0,stencil:!0,canvas:t,context:r}):(console.error(`error occurred when getting webgl2 canvas context, mybe webgl2 not support, fallback to webgl.`),n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!1,alpha:!0,stencil:!0}))}else n=new l.WebGLRenderer({preserveDrawingBuffer:e,antialias:!1,alpha:!0,stencil:!0});n.outputEncoding=l.sRGBEncoding}return n.autoClear=!0,n}function m(e){e&&(e.capabilities.isWebGL2?f.indexOf(e)===-1&&f.push(e):d.indexOf(e)===-1&&d.push(e))}var h=c.createContext(null);function g(){let e=c.useContext(h);if(!e)throw Error(`FiveProvider never found.`);return e.five}function _(){let e=c.useContext(h);if(!e)throw Error(`FiveProvider never found.`);return e.loadWork}function v(e,t){let n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t];if(n.length!==r.length)return!1;for(let e=0;e<n.length;e++)if(n[e].workCode!==r[e].workCode)return!1;return!0}function y(e={}){return class extends c.Component{constructor(t){super(t),this.__fiveEventDisposers=[],this.__fiveDisposeTimer=null,this.five=new u.Five(Object.assign(Object.assign({},e),{renderer:void 0})),this.loadWork=this.loadWork.bind(this),this.state={}}loadWork(e,t,n,r=!0){if(this.props.work)throw Error(`props 'works' is set in fiveProvider, if you need modify work internal, use 'initialWork' instead.`);return this.five.load(e,t,n,r)}shouldComponentUpdate(e){return this.five.renderer&&this.five&&e.work&&!v(e.work,this.five.works)&&this.five.load(e.work,e.initialState,e.initialOptions),!0}componentDidMount(){var t;clearTimeout(this.__fiveDisposeTimer),this.__fiveDisposeTimer=null;let n;if(typeof window<`u`){n=p({webgl2:e==null?void 0:e.webgl2,preserveDrawingBuffer:e==null?void 0:e.preserveDrawingBuffer});let t=(0,u.getViewportScale)()===1?window.devicePixelRatio:1;n==null||n.setPixelRatio(t)}this.five.renderer=n,this.setState({renderer:n}),this.__fiveEventDisposers.push(this.five.on(`load`,()=>{this.props.onWorksChange&&this.props.onWorksChange(this.five.works)})),this.__fiveEventDisposers.push(this.five.on(`stateChange`,(e,t)=>{this.props.onStateChange&&this.props.onStateChange(e,t)})),this.__fiveEventDisposers.push(this.five.on(`currentStateChange`,(e,t)=>{this.props.onCurrentStateChange&&this.props.onCurrentStateChange(e,t)})),this.__fiveEventDisposers.push(this.five.on(`error`,e=>{this.props.onError?this.props.onError(e):console.warn(e.message)}));let r=this.props.work||this.props.initialWork;r&&this.five.load(r,this.props.initialState,this.props.initialOptions,(t=this.props.initialUserAction)==null?!0:t)}componentWillUnmount(){var e;(e=this.five.controller)==null||e.destroy();let t=this.five.renderer;this.five.renderer=void 0,m(t),this.setState({renderer:void 0}),this.__fiveDisposeTimer=setTimeout(()=>{this.__fiveDisposeTimer=null,this.five.dispose()},1e3)}render(){let e=this.five,t=this.loadWork,n=this.state.renderer;return c.createElement(h.Provider,{value:{renderer:n,five:e,loadWork:t}},this.props.children)}}}var b=typeof window<`u`?c.useLayoutEffect:c.useEffect,x={display:`inline-block`,overflow:`hidden`},S=({width:e,height:t})=>{let n=g(),r=c.createRef(),i=Object.assign({width:e,height:t},x);return b(()=>{let i=r.current;if(!i||!n.renderer)return;let a=n.renderer.domElement;if(a.parentNode!==null&&a.parentNode!==i)throw Error(`There are more than 2 fiveCanvas in this context.`);return a.parentNode!==i&&i.appendChild(a),n.camera.aspect=e/t,n.camera.updateProjectionMatrix(),n.renderer.setSize(e,t),n.refresh({width:e,height:t}),n.needsRender=!0,()=>{a.parentNode===i&&i.removeChild(a)}},[n,n.renderer,e,t,r.current]),c.createElement(`div`,{ref:r,style:i})},C=({children:e})=>{let t=g(),n=c.useRef(null);return c.useEffect(()=>{let e=n.current;if(!e||!t.renderer)return;let r=t.renderer.domElement;e.appendChild(r);let i=()=>{var n;let{width:r,height:i}=e.getBoundingClientRect();r===0||i===0||(t.camera.aspect=r/i,t.camera.updateProjectionMatrix(),(n=t.renderer)==null||n.setSize(r,i),t.refresh({width:r,height:i}),t.needsRender=!0)},a=new ResizeObserver(i);return a.observe(e),i(),()=>{r.parentNode===e&&e.removeChild(r),a.unobserve(e),a.disconnect()}},[]),c.createElement(`div`,{ref:n,style:{position:`absolute`,top:0,left:0,right:0,bottom:0}},e)},w=({renderChildren:e,load:t,children:n,fallback:r})=>{let i=g(),[a,o]=c.useState(!!e),[s,l]=c.useState(!1);return c.useEffect(()=>{i.getElement()&&(o(!0),t&&t(i).then(e=>{i.load(...e)}))},[i]),c.useEffect(()=>{let e=()=>l(!0);return i.on(`works.load`,e),i.works&&i.works.length>0&&l(!0),()=>{i.off(`works.load`,e)}},[i]),!s&&!e||!a?r==null?null:c.createElement(c.Fragment,null,r):c.createElement(c.Fragment,null,n)},T={position:`relative`,width:`100vw`,height:`100vh`,overflow:`hidden`},E={backgroundAlpha:1,backgroundColor:0,imageOptions:{size:512},textureOptions:{autoResize:!1},preserveDrawingBuffer:!0,webgl2:!0},D=({fiveInitArgs:e=E,renderChildren:t,plugins:n,load:r,children:i,fullscreen:a,autoCanvas:o=!0,fallback:s})=>{let[l]=c.useState(()=>y(Object.assign(Object.assign({},e),{plugins:n}))),u=[];o&&u.push(c.createElement(C,{key:`auto-canvas`})),i&&u.push(i);let d=c.createElement(l,null,c.createElement(w,{load:r,renderChildren:t,fallback:s},...u));return a?c.createElement(`div`,{style:T},d):d};function O(){return g()}function k(e,t){let n=g(),r=[n];t!==void 0&&(r=r.concat(t)),c.useLayoutEffect(()=>e(n.scene),r)}var A=k;function j(){let e=g(),t=_(),[n,r]=c.useState(()=>e.works);return c.useLayoutEffect(()=>e.on(`load`,()=>r(e.works)),[e]),[n,t]}function M(e){return Object.assign({},e.state)}function N(){let e=g(),[t,n]=c.useState(()=>M(e)),r=c.useCallback((t,n=!1,r=!0)=>{let i=typeof t==`function`?t(e.getCurrentState()):t;e.setState(i,n,r)},[e]);return c.useLayoutEffect(()=>e.on(`stateChange`,()=>n(M(e))),[e]),[t,r]}function ee(){let e=g(),[t,n]=c.useState(()=>e.getCurrentState()),r=c.useCallback((t,n=!1,r=!0)=>{let i=typeof t==`function`?t(e.getCurrentState()):t;e.setState(i,n,r)},[e]);return c.useLayoutEffect(()=>e.on(`currentStateChange`,()=>n(e.getCurrentState())),[e]),[t,r]}function te(){let e=g(),[t,n]=c.useState(()=>e.getCurrentState());return c.useLayoutEffect(()=>e.on(`currentStateChange`,()=>n(e.getCurrentState())),[e]),e.works.getObserver(t)}function P(e,t,n){let r=g(),i=[r,e];n!==void 0&&(i=i.concat(n)),c.useLayoutEffect(()=>r.on(e,t),i)}function F(){let e=g();return{updateCamera:c.useCallback((t,n)=>e.updateCamera(t,n),[e]),getPixels:c.useCallback(e.getPixels.bind(e),[e]),render:c.useCallback(t=>e.render(t),[e]),needsRender:c.useCallback(()=>e.needsRender=!0,[e]),preloadPano:c.useCallback((t,n)=>e.preloadPano(t,n),[e])}}function I(){let e=g(),[t,n]=c.useState(()=>Symbol());return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(Symbol())),[e]),c.useCallback((t,n)=>e.project2d(t,n),[e])}function L(e){let t=e.camera.getWorldDirection(new l.Vector3);return new l.Raycaster(e.camera.position,t)}function ne(){let e=g(),[t,n]=c.useState(()=>L(e));return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(L(e))),[e]),t}function R(e){return e.camera.getWorldDirection(new l.Vector3)}function re(){let e=g(),[t,n]=c.useState(()=>R(e));return c.useLayoutEffect(()=>e.on(`cameraUpdate`,()=>n(R(e))),[e]),t}function ie(){let e=g();return c.useCallback(t=>e.model.intersectRaycaster(t),[e])}function z(e){return e.model.empty?`Empty`:`Loaded`}function ae(){let e=g(),[t,n]=c.useState(()=>z(e));return c.useLayoutEffect(()=>e.on(`modelLoaded`,()=>n(z(e))),[e]),t}var B=new Map,V=new Map;function H(e){let t=V.get(e);t&&t.forEach(e=>e())}function U(e,t){return V.has(e)||V.set(e,new Set),V.get(e).add(t),()=>{let n=V.get(e);n&&(n.delete(t),n.size===0&&V.delete(e))}}function W(e,t){return`${e}:${t}`}function G(e,t){var n;return(n=B.get(W(e,t)))==null?void 0:n.plugin}function K(e,t,n){B.set(W(e,t),{plugin:n}),H(e)}function q(e,t){var n,r;let i=g(),a=(r=(n=i.work)==null?void 0:n.workCode)==null?``:r,o=W(a,e),s=(0,c.useRef)(i),[,l]=(0,c.useState)(0);return(0,c.useEffect)(()=>{if(a)return U(a,()=>l(e=>e+1))},[a]),(0,c.useEffect)(()=>{if(s.current===i)return;s.current=i;let n=B.get(o);if(!n)return;let r=n.plugin;if(t!=null&&t.reCreateOnFiveChange&&t.createPlugin){typeof r.dispose==`function`&&r.dispose();let n=t.createPlugin(i);B.set(o,{plugin:n}),i.plugins[e]=n,H(a)}else r&&(typeof r.updateFive==`function`?r.updateFive(i):`five`in r&&(r.five=i))},[i]),(0,c.useCallback)(()=>{let n=B.get(o);if(n)return i.plugins[e]=n.plugin,n.plugin;let r=i.plugins[e];if(r)return B.set(o,{plugin:r}),r;if(t!=null&&t.createPlugin){let n=t.createPlugin(i);return B.set(o,{plugin:n}),i.plugins[e]=n,H(a),n}},[o,i,t==null?void 0:t.createPlugin])()}function J(){let e=g(),[t,n]=c.useState(e.model.shownFloor),[r,i]=c.useState(e.model.floorLength),a=c.useCallback(t=>{typeof t==`number`?e.model.show(t):e.model.show()},[e]);return c.useLayoutEffect(()=>{let t=[];return t.push(e.on(`modelShownFloorChange`,()=>n(e.model.shownFloor))),t.push(e.on(`modelLoaded`,()=>i(e.model.floorLength))),()=>{let e;for(;e=t.shift();)e()}},[e]),[t,r,a]}function oe(){let e=g(),[t,n]=c.useState(e.helperVisible),r=c.useCallback(t=>{e.helperVisible=t},[e]);return c.useLayoutEffect(()=>e.on(`helpersVisibleChange`,e=>n(e)),[e]),[t,r]}var se=`$five`;function Y(e,t){return t.indexOf(e)>=0}function X(e,t){for(let n of Object.keys(t))t[n]!==void 0&&(e[n]=t[n])}function ce(e,t){let n=Y(`state`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return Object.assign({},e.state)},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`stateChange`,()=>i(Symbol()))},[e]),[a,r]}function le(e,t){let n=Y(`currentState`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.getCurrentState()},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`currentStateChange`,()=>i(Symbol()))},[e]),[a,r]}function ue(e,t){let n=Y(`currentObserver`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.getCurrentState()},[e,r]);c.useLayoutEffect(()=>{if(n)return e.on(`currentStateChange`,()=>i(Symbol()))},[e]);let o;return a&&(o=e.works.getObserver(a)),[o,r]}function de(e,t){return[Y(`unsafe__fiveInstance`,t)?e:void 0]}function fe(e,t){let n=Y(`works`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.works},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`load`,()=>i(Symbol()))},[e]),[a,r]}function pe(e,t){let n=Y(`model`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelLoaded`,()=>i(Symbol()))},[e]),[a,r]}function me(e,t){return[Y(`scene`,t)?e.scene:void 0]}function he(e,t){let n=Y(`cameraDirection`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.camera.getWorldDirection(new l.Vector3)},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`cameraUpdate`,()=>i(Symbol()))},[e]),[a,r]}function ge(e,t){let n=Y(`cameraRaycaster`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n){let t=e.camera.getWorldDirection(new l.Vector3);return new l.Raycaster(e.camera.position,t)}},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`cameraUpdate`,()=>i(Symbol()))},[e]),[a,r]}function Z(e,t){let n=Y(`modelReadyState`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model.empty?`Empty`:`Loaded`},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelLoaded`,()=>i(Symbol()))},[e]),[a,r]}function _e(e,t){let n=Y(`shownFloor`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.model.shownFloor},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`modelShownFloorChange`,()=>i(Symbol()))},[e]),[a,r]}function ve(e,t){let n=Y(`helperVisible`,t),[r,i]=c.useState(Symbol()),a=c.useMemo(()=>{if(n)return e.helperVisible},[e,r]);return c.useLayoutEffect(()=>{if(n)return e.on(`helpersVisibleChange`,()=>i(Symbol()))},[e]),[a,r]}function ye(e,t){if(Y(`loadWork`,t))return e}function be(e,t){if(Y(`setState`,t))return(...t)=>e.setState(...t)}function xe(e,t){if(Y(`on`,t))return(...t)=>e.on(...t)}function Se(e,t){if(Y(`on`,t))return(...t)=>e.once(...t)}function Ce(e,t){if(Y(`off`,t))return(...t)=>e.off(...t)}function we(e,t){if(Y(`intersectRaycaster`,t))return(...t)=>e.model.intersectRaycaster(...t)}function Te(e,t){if(Y(`project2d`,t))return(...t)=>e.project2d(...t)}function Ee(e,t){if(Y(`updateCamera`,t))return(...t)=>e.updateCamera(...t)}function De(e,t){if(Y(`getPixels`,t))return e.getPixels.bind(e)}function Oe(e,t){if(Y(`render`,t))return(...t)=>e.render(...t)}function ke(e,t){if(Y(`needsRender`,t))return()=>{e.needsRender=!0}}function Ae(e,t){if(Y(`preloadPano`,t))return(...t)=>e.preloadPano(...t)}function je(e,t){if(Y(`showFloor`,t))return t=>{typeof t==`number`?e.model.show(t):e.model.show()}}function Me(e,t){if(Y(`toggleHelperVisible`,t))return t=>{e.helperVisible=t}}function Ne(e){return function(t){return c.forwardRef((n,r)=>{let i=g(),a=_(),[o]=de(i,e),[s,l]=ce(i,e),[u,d]=le(i,e),[f,p]=ue(i,e),[m,h]=fe(i,e),[v,y]=pe(i,e),[b]=me(i,e),[x,S]=he(i,e),[C,w]=ge(i,e),[T,E]=Z(i,e),[D,O]=_e(i,e),[k,A]=ve(i,e),j=c.useMemo(()=>{let t={};return X(t,{setState:be(i,e),loadWork:ye(a,e),on:xe(i,e),once:Se(i,e),off:Ce(i,e),intersectRaycaster:we(i,e),project2d:Te(i,e),updateCamera:Ee(i,e),getPixels:De(i,e),render:Oe(i,e),needsRender:ke(i,e),preloadPano:Ae(i,e),showFloor:je(i,e),toggleHelperVisible:Me(i,e)}),t},[i,a]),M=c.useMemo(()=>{let e=Object.assign({},j);return X(e,{unsafe__fiveInstance:o,state:s,currentState:u,currentObserver:f,work:m,model:v,scene:b,cameraDirection:x,cameraRaycaster:C,modelReadyState:T,shownFloor:D,helperVisible:k}),e},[i,j,l,d,p,h,y,S,w,E,O,A]);return c.createElement(t,Object.assign({ref:r,$five:M},n))})}}function Pe(...e){return e}function Q(e,t){let n={},r=t.length,i=-1;for(;++i<r;){let r=t[i];r in e&&(n[r]=e[r])}return n}function Fe(e,t){return typeof e==`number`&&typeof t==`number`&&isNaN(e)&&isNaN(t)?!0:e===t}function Ie(e,t){for(let n=0;n<e.length;n++)for(let r=0;r<t.length;r++)if(e[n]===t[r])return!0;return!1}var $=class{constructor(e,t){this.values=e,this.listeners=[],this.onValuesChange=t}on(e,t){let n=[e,t];return this.listeners.push(n),()=>{let e=this.listeners.indexOf(n);e>=0&&this.listeners.splice(e,1)}}getValues(e){return Q(this.values,e)}setValues(e,t){let n=[];for(let r in t)e.indexOf(r)>=0&&!Fe(t[r],this.values[r])&&n.push(r);if(n.length===0)return;let r=Object.assign({},this.values);for(let e of n)this.values[e]=t[e];this.onValuesChange&&this.onValuesChange(this.values,r);for(let[e,t]of this.listeners){if(!Ie(e,n))continue;let i=Q(r,e);t(Q(this.values,e),i)}}};function Le(e){let t=c.createContext(null);return{useStore(e){let n=c.useContext(t);if(n===null)throw Error(`StoreProvider never found.`);let r=c.useRef(!0),[i,a]=c.useState(n.getValues(e)),o=[n,...e];return c.useLayoutEffect(()=>(r.current?r.current=!1:a(n.getValues(e)),n.on(e,e=>a(e))),o),[i,c.useCallback(t=>n.setValues(e,t),o)]},useStoreSetter(e){let n=c.useContext(t);if(n===null)throw Error(`StoreProvider never found.`);return c.useCallback(t=>n.setValues(e,t),[n,...e])},watchStore(e,n,r){let i=c.useContext(t);if(i===null)throw Error(`StoreProvider never found.`);let a=[i,...e];r!==void 0&&(a=a.concat(r)),c.useLayoutEffect(()=>i.on(e,n),a)},useStoreAction(n){let r=c.useContext(t);if(r===null)throw Error(`StoreProvider never found.`);return c.useCallback((...t)=>{let[i,...a]=e[n];return i(()=>r.getValues(a),e=>r.setValues(a,e),...t)},[])},StoreProvider:class extends c.Component{constructor(e){super(e),this.store=new $(e.initialValue,(...e)=>{this.props.onValuesChange&&this.props.onValuesChange(...e)})}shouldComponentUpdate(e){return e.children!==this.props.children}render(){return c.createElement(t.Provider,{value:this.store},this.props.children)}}}}exports.FiveApp=D,exports.FiveAutoCanvas=C,exports.FiveCanvas=S,exports.INJECTION_PROPNAME=se,exports.Store=$,exports.createFiveFeature=Pe,exports.createFiveProvider=y,exports.createStore=Le,exports.getPlugin=G,exports.setPlugin=K,exports.unsafe__useFiveInstance=O,exports.useFiveAction=F,exports.useFiveCameraDirection=re,exports.useFiveCameraRaycaster=ne,exports.useFiveCurrentObserver=te,exports.useFiveCurrentState=ee,exports.useFiveEventCallback=P,exports.useFiveFloor=J,exports.useFiveHelper=oe,exports.useFiveModelIntersectRaycaster=ie,exports.useFiveModelReadyState=ae,exports.useFivePlugin=q,exports.useFiveProject2d=I,exports.useFiveScene=A,exports.useFiveSceneEffect=k,exports.useFiveState=N,exports.useFiveWork=j,exports.withFive=Ne;