@realsee/dnalogel 2.10.0 → 2.10.2

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 (267) hide show
  1. package/dist/PanoVideoPlugin/Controller.d.ts +5 -0
  2. package/dist/PanoVideoPlugin/VideoMeshController.d.ts +13 -0
  3. package/dist/PanoVideoPlugin/utils/index.d.ts +9 -0
  4. package/dist/index.cjs.js +2 -2
  5. package/dist/index.js +696 -634
  6. package/dist/index.umd.js +20 -20
  7. package/docs/classes/CSS3DRender.html +31 -31
  8. package/docs/classes/CruisePluginController.html +24 -24
  9. package/docs/classes/Magnifier.html +20 -20
  10. package/docs/classes/ModelRoomLabelController.html +11 -11
  11. package/docs/classes/Object3DHelperController.html +24 -24
  12. package/docs/classes/PaintBrush.html +15 -15
  13. package/docs/classes/PanoMeasurePluginLine.html +23 -23
  14. package/docs/classes/PanoMeasurePluginModel.html +22 -22
  15. package/docs/classes/PanoMeasurePluginPoint.html +14 -14
  16. package/docs/classes/PanoMeasurePluginPolyline.html +26 -26
  17. package/docs/classes/PanoTagPluginController.html +47 -47
  18. package/docs/classes/Util.BetterTween.html +8 -8
  19. package/docs/classes/Util.FivePointSelector.html +12 -12
  20. package/docs/classes/Util.Interval.html +12 -12
  21. package/docs/classes/Util.Magnifier.html +17 -17
  22. package/docs/classes/Util.PointDomHelper.html +11 -11
  23. package/docs/classes/Util.PointHelper.html +11 -11
  24. package/docs/classes/Util.Rectangle.html +13 -13
  25. package/docs/enums/CameraMovementEffect.html +7 -7
  26. package/docs/enums/ContentType.html +19 -19
  27. package/docs/enums/DIRECTION.html +9 -9
  28. package/docs/enums/DISPLAY_STRATEGY_TYPE.html +9 -9
  29. package/docs/enums/DimensionType.html +7 -7
  30. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +8 -8
  31. package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +9 -9
  32. package/docs/enums/PaintBrushTypeEnum.html +8 -8
  33. package/docs/enums/PointType.html +7 -7
  34. package/docs/enums/Rotation.html +8 -8
  35. package/docs/functions/CSS3DRenderPlugin.html +4 -4
  36. package/docs/functions/CameraMovementPlugin.html +4 -4
  37. package/docs/functions/CruisePlugin.html +4 -4
  38. package/docs/functions/GuideLinePlugin.html +5 -5
  39. package/docs/functions/ItemLabelPlugin.html +4 -4
  40. package/docs/functions/MapviewFloorplanPlugin.html +4 -4
  41. package/docs/functions/ModelChassisCompassPlugin.html +4 -4
  42. package/docs/functions/ModelEntryDoorGuidePlugin.html +4 -4
  43. package/docs/functions/ModelFloorplanPlugin.html +4 -4
  44. package/docs/functions/ModelItemLabelPlugin.html +4 -4
  45. package/docs/functions/ModelRoomLabelPlugin.html +4 -4
  46. package/docs/functions/ModelTVVideoPlugin.html +4 -4
  47. package/docs/functions/ModelViewPlugin.html +4 -4
  48. package/docs/functions/Object3DHelperPlugin.html +4 -4
  49. package/docs/functions/PanoCompassPlugin.html +4 -4
  50. package/docs/functions/PanoCursorRaycasterPlugin.html +4 -4
  51. package/docs/functions/PanoDoorLabelPlugin.html +4 -4
  52. package/docs/functions/PanoFloorplanRadarPlugin.html +4 -4
  53. package/docs/functions/PanoMeasurePlugin.html +4 -4
  54. package/docs/functions/PanoRulerPlugin.html +4 -4
  55. package/docs/functions/PanoRulerProPlugin.html +4 -4
  56. package/docs/functions/PanoSpatialTagPlugin.html +4 -4
  57. package/docs/functions/PanoTagPlugin.html +4 -4
  58. package/docs/functions/PanoVideoPlugin.html +4 -4
  59. package/docs/functions/TopviewFloorplanPlugin.html +4 -4
  60. package/docs/functions/Util.getCoordsFromClient.html +5 -5
  61. package/docs/functions/Util.getCoordsFromElement.html +5 -5
  62. package/docs/functions/Util.getFrameTime.html +5 -5
  63. package/docs/functions/Util.getIntersectFromRelativePosition.html +5 -5
  64. package/docs/functions/Util.getRaycasterFromFivePointer.html +5 -5
  65. package/docs/functions/Util.isNil.html +5 -5
  66. package/docs/functions/Util.nextFrame.html +5 -5
  67. package/docs/functions/Util.notNil.html +5 -5
  68. package/docs/functions/Util.requestAnimationFrameInterval.html +5 -5
  69. package/docs/functions/Util.tweenProgress.html +5 -5
  70. package/docs/functions/pluginFlag.html +5 -5
  71. package/docs/index.html +4 -4
  72. package/docs/interfaces/AddTagConfig.html +6 -6
  73. package/docs/interfaces/CSS3DRenderPluginEventMap.html +11 -11
  74. package/docs/interfaces/CSS3DRenderPluginState.html +8 -8
  75. package/docs/interfaces/CameraMovementPluginExportType.html +7 -7
  76. package/docs/interfaces/EventMap.html +15 -15
  77. package/docs/interfaces/FloorplanBounding.html +8 -8
  78. package/docs/interfaces/FloorplanData.html +10 -10
  79. package/docs/interfaces/FloorplanEntrance.html +11 -11
  80. package/docs/interfaces/FloorplanExtraObject.html +10 -10
  81. package/docs/interfaces/FloorplanExtraObject3D.html +8 -8
  82. package/docs/interfaces/FloorplanFloorData.html +9 -9
  83. package/docs/interfaces/FloorplanImagePosition.html +7 -7
  84. package/docs/interfaces/FloorplanObserver.html +9 -9
  85. package/docs/interfaces/FloorplanOutlineItem.html +9 -9
  86. package/docs/interfaces/FloorplanPosition.html +7 -7
  87. package/docs/interfaces/FloorplanRoomItem.html +13 -13
  88. package/docs/interfaces/FloorplanRoomLabelItem.html +7 -7
  89. package/docs/interfaces/FloorplanServerBounding.html +8 -8
  90. package/docs/interfaces/FloorplanServerComputedData.html +10 -10
  91. package/docs/interfaces/FloorplanServerData.html +7 -7
  92. package/docs/interfaces/FloorplanServerDoorItem.html +10 -10
  93. package/docs/interfaces/FloorplanServerDoorPosition.html +8 -8
  94. package/docs/interfaces/FloorplanServerEntrance.html +11 -11
  95. package/docs/interfaces/FloorplanServerFloorData.html +9 -9
  96. package/docs/interfaces/FloorplanServerImagePosition.html +7 -7
  97. package/docs/interfaces/FloorplanServerObserver.html +9 -9
  98. package/docs/interfaces/FloorplanServerOutlineItem.html +9 -9
  99. package/docs/interfaces/FloorplanServerPosition.html +7 -7
  100. package/docs/interfaces/FloorplanServerRoomItem.html +14 -14
  101. package/docs/interfaces/FloorplanServerRoomLabelItem.html +7 -7
  102. package/docs/interfaces/HelperOffset.html +8 -8
  103. package/docs/interfaces/ItemLabelPluginData.html +6 -6
  104. package/docs/interfaces/ItemLabelPluginExportReturnsType.html +11 -11
  105. package/docs/interfaces/ItemLabelPluginParametersType.html +9 -9
  106. package/docs/interfaces/MinMax.html +7 -7
  107. package/docs/interfaces/ModelChassisCompassPluginData.html +7 -7
  108. package/docs/interfaces/ModelChassisCompassPluginExportType.html +8 -8
  109. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +7 -7
  110. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +8 -8
  111. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +8 -8
  112. package/docs/interfaces/ModelItemLabelPluginData.html +6 -6
  113. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +11 -11
  114. package/docs/interfaces/ModelItemLabelPluginParametersType.html +7 -7
  115. package/docs/interfaces/ModelRoomLabelPluginData.html +6 -6
  116. package/docs/interfaces/ModelTVVideoPluginData.html +9 -9
  117. package/docs/interfaces/ModelTVVideoPluginExportType.html +8 -8
  118. package/docs/interfaces/ModelTVVideoPluginParameterType.html +6 -6
  119. package/docs/interfaces/ModelViewPluginExportType.html +11 -11
  120. package/docs/interfaces/Object3DHelperState.html +8 -8
  121. package/docs/interfaces/ObjectHelperControllers.html +9 -9
  122. package/docs/interfaces/PaintBrushAction.html +12 -12
  123. package/docs/interfaces/PaintBrushConfigs.html +12 -12
  124. package/docs/interfaces/PaintBrushState.html +10 -10
  125. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +10 -10
  126. package/docs/interfaces/PanoCursorRaycasterPluginParameterType.html +5 -5
  127. package/docs/interfaces/PanoMeasureParameterType.html +12 -12
  128. package/docs/interfaces/PanoMeasurePluginLineJson.html +8 -8
  129. package/docs/interfaces/PanoMeasurePluginOpenParameter.html +7 -7
  130. package/docs/interfaces/PanoMeasurePluginPointJson.html +7 -7
  131. package/docs/interfaces/PanoMeasurePluginPolylineJson.html +8 -8
  132. package/docs/interfaces/PanoRulerPluginExportType.html +10 -10
  133. package/docs/interfaces/PanoRulerPluginOptions.html +7 -7
  134. package/docs/interfaces/PanoRulerPluginParameterType.html +8 -8
  135. package/docs/interfaces/PanoRulerProPluginExportType.html +9 -9
  136. package/docs/interfaces/PanoRulerProPluginOptions.html +7 -7
  137. package/docs/interfaces/PanoRulerProPluginParameterType.html +7 -7
  138. package/docs/interfaces/PanoRulerProPluginState.html +8 -8
  139. package/docs/interfaces/PanoSpatialTagPluginContentEvent.html +5 -5
  140. package/docs/interfaces/PanoSpatialTagPluginContentReplacement.html +5 -5
  141. package/docs/interfaces/PanoSpatialTagPluginData.html +11 -11
  142. package/docs/interfaces/PanoSpatialTagPluginDataElement.html +10 -10
  143. package/docs/interfaces/PanoSpatialTagPluginExportType.html +13 -13
  144. package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +10 -10
  145. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +13 -13
  146. package/docs/interfaces/PanoSpatialTagPluginPointElement.html +11 -11
  147. package/docs/interfaces/PanoSpatialTagPluginTagElement.html +10 -10
  148. package/docs/interfaces/PanoVideoPluginType.LoadParams.html +6 -6
  149. package/docs/interfaces/PanoVideoPluginType.PanoVideoItem.html +8 -8
  150. package/docs/interfaces/PanoVideoPluginType.PluginData.html +6 -6
  151. package/docs/interfaces/PanoVideoPluginType.PluginEventMap.html +9 -9
  152. package/docs/interfaces/PanoVideoPluginType.PluginState.html +6 -6
  153. package/docs/interfaces/PanoVideoPluginType.VideoItem.html +8 -8
  154. package/docs/interfaces/PanoVideoPluginType.VideoMeshParams.html +10 -10
  155. package/docs/interfaces/Point.html +8 -8
  156. package/docs/interfaces/Room.html +9 -9
  157. package/docs/interfaces/RoomInfo.html +7 -7
  158. package/docs/interfaces/RoomLabel.html +14 -14
  159. package/docs/interfaces/RoomRules.html +5 -5
  160. package/docs/interfaces/Rooms.html +5 -5
  161. package/docs/interfaces/Scissor.html +9 -9
  162. package/docs/interfaces/State.html +8 -8
  163. package/docs/interfaces/TagCache.html +12 -12
  164. package/docs/interfaces/TagConfig.html +10 -10
  165. package/docs/interfaces/TagIconUrl.html +9 -9
  166. package/docs/interfaces/Tags.html +9 -9
  167. package/docs/interfaces/TemporaryState.html +6 -6
  168. package/docs/interfaces/Util.MagnifierParameter.html +11 -11
  169. package/docs/interfaces/Util.MouseGroupParameter.html +8 -8
  170. package/docs/modules/PanoVideoPluginType.html +5 -5
  171. package/docs/modules/Util.html +5 -5
  172. package/docs/modules.html +4 -4
  173. package/docs/types/ArrayPosition.html +5 -5
  174. package/docs/types/AudioAppearance.html +5 -5
  175. package/docs/types/AudioTagTypeConfigKey.html +5 -5
  176. package/docs/types/CSS3DRenderExportType.html +5 -5
  177. package/docs/types/CSS3DRenderPluginExportType.html +5 -5
  178. package/docs/types/CSS3DRenderPluginParameterType.html +5 -5
  179. package/docs/types/ClassFunctionParameters.html +5 -5
  180. package/docs/types/Color.html +5 -5
  181. package/docs/types/ContentTypeConfigKey.html +5 -5
  182. package/docs/types/ContentTypeConfigKeySplit.html +5 -5
  183. package/docs/types/ContentTypeMap.html +5 -5
  184. package/docs/types/Create3DDomContainerReturnType.html +5 -5
  185. package/docs/types/Create3DElementReturnType.html +5 -5
  186. package/docs/types/CruisePluginExportType.html +5 -5
  187. package/docs/types/Direction-1.html +5 -5
  188. package/docs/types/Direction4.html +5 -5
  189. package/docs/types/FloorplanRuleLabels.html +5 -5
  190. package/docs/types/FloorplanServerRuleLabels.html +5 -5
  191. package/docs/types/GuideLinePluginExportType.html +5 -5
  192. package/docs/types/HelperEventMap.html +5 -5
  193. package/docs/types/LoadTagConfig.html +5 -5
  194. package/docs/types/MapviewFloorplanPluginParameterType.html +5 -5
  195. package/docs/types/MapviewFloorplanPluginReturnType.html +5 -5
  196. package/docs/types/MediaData.html +5 -5
  197. package/docs/types/MediaStore.html +5 -5
  198. package/docs/types/ModelElement.html +5 -5
  199. package/docs/types/ModelEntryDoorGuidePluginParameterType.html +5 -5
  200. package/docs/types/ModelFloorplanPluginParameterType.html +5 -5
  201. package/docs/types/ModelFloorplanPluginReturnType.html +5 -5
  202. package/docs/types/ModelRoomLabelPluginParameters.html +5 -5
  203. package/docs/types/ModelRoomLabelPluginReturnType.html +5 -5
  204. package/docs/types/MoveArgs.html +5 -5
  205. package/docs/types/MoveOpts.html +5 -5
  206. package/docs/types/Object3DHelperEventMap.html +5 -5
  207. package/docs/types/ObjectFit.html +5 -5
  208. package/docs/types/PaintBrushEventMap.html +5 -5
  209. package/docs/types/PanoCompassPluginData.html +5 -5
  210. package/docs/types/PanoCompassPluginExportType.html +5 -5
  211. package/docs/types/PanoCompassPluginParameterType.html +5 -5
  212. package/docs/types/PanoFloorplanRadarPluginParameterType.html +5 -5
  213. package/docs/types/PanoFloorplanRadarPluginReturnType.html +5 -5
  214. package/docs/types/PanoIndex.html +5 -5
  215. package/docs/types/PanoMeasurePluginEvent.html +5 -5
  216. package/docs/types/PanoMeasureReturnType.html +5 -5
  217. package/docs/types/PanoSpatialTagPluginId.html +5 -5
  218. package/docs/types/PanoTagPluginExportInterface.html +5 -5
  219. package/docs/types/PanoTagPluginParamsInterface.html +5 -5
  220. package/docs/types/PanoVideoPluginParameterType.html +5 -5
  221. package/docs/types/PanoVideoPluginReturnType.html +5 -5
  222. package/docs/types/PlaneTag.html +5 -5
  223. package/docs/types/PlaneTagElement.html +5 -5
  224. package/docs/types/Point2DElement.html +5 -5
  225. package/docs/types/Point2DTag.html +5 -5
  226. package/docs/types/Point3DElement.html +5 -5
  227. package/docs/types/Point3DTag.html +5 -5
  228. package/docs/types/PointTag.html +5 -5
  229. package/docs/types/PointTagElement.html +5 -5
  230. package/docs/types/Position.html +5 -5
  231. package/docs/types/RotateArgs.html +5 -5
  232. package/docs/types/RotateOpts.html +5 -5
  233. package/docs/types/RuleLabelsKey.html +5 -5
  234. package/docs/types/RuleLabelsValue.html +5 -5
  235. package/docs/types/StickType.html +5 -5
  236. package/docs/types/Tag.html +5 -5
  237. package/docs/types/Tag2D.html +5 -5
  238. package/docs/types/Tag3D.html +5 -5
  239. package/docs/types/TagContentType.html +5 -5
  240. package/docs/types/TagDimensionType.html +5 -5
  241. package/docs/types/TagElement.html +5 -5
  242. package/docs/types/TagEvents.html +5 -5
  243. package/docs/types/TagGLTFObject.html +5 -5
  244. package/docs/types/TagHooks.html +5 -5
  245. package/docs/types/TagIconSize.html +5 -5
  246. package/docs/types/TagId.html +5 -5
  247. package/docs/types/TagPointType.html +5 -5
  248. package/docs/types/TopviewFloorplanPluginParameterType.html +5 -5
  249. package/docs/types/TopviewFloorplanPluginReturnType.html +5 -5
  250. package/docs/types/WorkCode.html +5 -5
  251. package/docs/variables/FLOOR_TYPE_MAP.html +5 -5
  252. package/docs/variables/PLUGIN.html +5 -5
  253. package/docs/variables/ROOM_FETILE_TYPE_MAP.html +5 -5
  254. package/docs/variables/ROOM_TYPE_MAP.html +5 -5
  255. package/docs/variables/VERSION.html +5 -5
  256. package/docs/variables/itemLabelPluginServerParams.html +5 -5
  257. package/docs/variables/modelItemLabelPluginServerParams.html +5 -5
  258. package/docs/variables/modelRoomLabelPluginServerParams.html +5 -5
  259. package/libs/PanoVideoPlugin/Controller.d.ts +5 -0
  260. package/libs/PanoVideoPlugin/Controller.js +44 -35
  261. package/libs/PanoVideoPlugin/VideoMeshController.d.ts +13 -0
  262. package/libs/PanoVideoPlugin/VideoMeshController.js +100 -52
  263. package/libs/PanoVideoPlugin/index.js +6 -5
  264. package/libs/PanoVideoPlugin/utils/index.d.ts +9 -0
  265. package/libs/PanoVideoPlugin/utils/index.js +11 -0
  266. package/libs/index.js +105 -104
  267. package/package.json +1 -1
@@ -18,6 +18,11 @@ export declare class PanoVideoPluginController extends BasePlugin.Controller<Plu
18
18
  enable(options?: BasePlugin.BaseOptions): void;
19
19
  /** 禁用插件功能。 */
20
20
  disable(options?: BasePlugin.BaseOptions): void;
21
+ /** 看向某个视频。
22
+ * - 会自动切换到全景模式。
23
+ * - 如果遇到不能自动播放的问题,需要放到用户交互事件中调用。
24
+ */
25
+ lookAtVideoItemByRenderID(id: string): void;
21
26
  /** 为一个点位添加视频(可以是多条)。 */
22
27
  add(panoIndex: number, videoItems: VideoItem[]): void;
23
28
  /** 根据 VideoItem render_id 删除某个视频。 */
@@ -26,6 +26,8 @@ export declare class VideoMeshController {
26
26
  private five;
27
27
  /** 视频对应的点位 */
28
28
  private panoIndex;
29
+ /** 视频对应的 Work Observer */
30
+ private observer?;
29
31
  /** 视频在球面的 uv:[left, top, width, height] */
30
32
  private origin;
31
33
  /** Video DOM */
@@ -47,6 +49,14 @@ export declare class VideoMeshController {
47
49
  enable(): void;
48
50
  /** 禁用插件 */
49
51
  disable(): void;
52
+ /** 切换到全景模式并看向视频
53
+ * @remark 如果遇到不能自动播放的问题,需要放到用户交互事件中调用。
54
+ */
55
+ lookAtVideo(): void;
56
+ /** 把 uv 值转换成位置 */
57
+ private uv2Position;
58
+ /** 获取视频中心点的 uv */
59
+ private getUVCenter;
50
60
  /** 添加时间监听 */
51
61
  private addEventListeners;
52
62
  /** 移除事件监听 */
@@ -70,6 +80,7 @@ export declare class VideoMeshController {
70
80
  private onFiveModeChange;
71
81
  /** Five mode change 动画结束 */
72
82
  private onFiveInitAnimationEnded;
83
+ private onFiveWantsTapGesture;
73
84
  /** video playing 事件触发
74
85
  * @remarks
75
86
  * 事件触发时机:
@@ -82,4 +93,6 @@ export declare class VideoMeshController {
82
93
  private onVideoPaused;
83
94
  /** 控制台打印警告 */
84
95
  private logWarning;
96
+ /** 检测射线与模型的交点是不是在视频的范围内 */
97
+ private checkIntersectionInBounding;
85
98
  }
@@ -0,0 +1,9 @@
1
+ import { Vector3 } from 'three';
2
+ export default function directionToLongitudeAndLatitude(direction: Vector3 | {
3
+ x: number;
4
+ y: number;
5
+ z: number;
6
+ }): {
7
+ longitude: number;
8
+ latitude: number;
9
+ };
package/dist/index.cjs.js CHANGED
@@ -520,7 +520,7 @@ void main() {
520
520
  z-index: 5;
521
521
  `,e.container.style.pointerEvents="none";const n=g=>(e.wrapper=g,g.appendChild(e.container),l(),!0),o=g=>{e.itemLabels=wm(g),l()},s=()=>(e.enabled||(e.enabled=!0,l()),!0),r=()=>(e.enabled&&(e.enabled=!1,l()),!0),a=()=>{u(),e.container.remove()},l=()=>{var g;if(!!e.wrapper){if(!e.enabled||!e.fiveModeEnabled){(g=e.app)==null||g.$destroy(),e.app=void 0;return}e.app?e.app.$set({five:i,itemLabels:e.itemLabels}):e.app=new ym({target:e.container,props:{five:i,modelOcclusionEnable:e.modelOcclusionEnable,itemLabels:e.itemLabels,wrapper:e.wrapper,hooks:e.hooks,displayStrategyType:e.displayStrategyType}})}},c=()=>{i.on("modeChange",h),i.once("dispose",a)},u=()=>{i.off("modeChange",h)},h=g=>{if(!!e.enabled){if(g!==Ce.Five.Mode.Floorplan){e.fiveModeEnabled=!1,l();return}i.once("initAnimationEnded",()=>{e.fiveModeEnabled=i.currentMode===Ce.Five.Mode.Floorplan,l()})}};return c(),{appendTo:n,load:o,enable:s,disable:r,dispose:a,hooks:e.hooks}},Pm={name:"ModelItemLabelPlugin",version:0};var Ft=(i=>(i.TOP_LEFT="topLeft",i.TOP_RIGHT="topRight",i.BOTTOM_LEFT="bottomLeft",i.BOTTOM_RIGHT="bottomRight",i))(Ft||{});function Em(i){if(i.length===0)return[];if(Array.isArray(i[0]))return i;let t=[];return i.forEach(e=>{const n=[e[Ft.TOP_LEFT],e[Ft.BOTTOM_LEFT],e[Ft.BOTTOM_RIGHT],e[Ft.TOP_RIGHT]];t.push(n)}),t}const Im=(i,{videoElement:t})=>{const e={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:t},n=Jt(i),o=new Map,s=v=>{e.videoTexture&&(e.videoTexture.image.muted=v)},r=()=>e.videoTexture?e.videoTexture.image.muted:!0,a=()=>{if(e.enabled||!e.videoTexture)return;e.enabled=!0,e.videoMeshes=c(),e.videoMeshes.forEach(y=>i.scene.add(y));const v=()=>{if(!e.videoTexture)return;const y=()=>{var w;!e.videoTexture||((w=e.videoTexture)==null||w.image.removeEventListener("timeupdate",y),e.videoTextureEnabled=!0,e.videoMeshes.forEach(P=>{P.material.map!==e.videoTexture&&(P.material.map=e.videoTexture)}),i.needsRender=!0)};e.videoTexture.image.addEventListener("timeupdate",y),e.videoTexture&&e.videoMeshes.length&&(e.videoTexture.image.play(),e.videoTexture.image.onplay=()=>{n.hide()},e.videoTexture.image.onpause=()=>{n.show()},e.videoTexture.image.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()})};if(i.model.loaded)v();else return i.once("modelLoaded",()=>v())},l=()=>{!e.enabled||(e.enabled=!1,e.videoMeshes.forEach(v=>{v.geometry.dispose(),v.material.dispose(),i.scene.remove(v),e.videoTexture&&e.videoTexture.image.pause()}),e.videoMeshes=[],i.needsRender=!0)},c=()=>e.rectPoints.map((v,y)=>{const w=new I.BufferGeometry,P=128,k=[];k.push(...v[0].toArray());for(let j=1;j<P;j++)k.push(v[0].x+(v[1].x-v[0].x)*j/P,v[0].y+(v[1].y-v[0].y)*j/P,v[0].z+(v[1].z-v[0].z)*j/P);k.push(...v[1].toArray()),k.push(...v[2].toArray());for(let j=1;j<P;j++)k.push(v[2].x+(v[3].x-v[2].x)*j/P,v[2].y+(v[3].y-v[2].y)*j/P,v[2].z+(v[3].z-v[2].z)*j/P);k.push(...v[3].toArray());const C=[];C.push(0,1);for(let j=1;j<P;j++)C.push(0,1-j/P);C.push(0,0),C.push(1,0);for(let j=1;j<P;j++)C.push(1,j/P);C.push(1,1);const S=[];for(let j=0;j<P;j++)S.push(j,j+1,P*2-j,j,P*2-j,P*2+1-j);w.setAttribute("position",new I.BufferAttribute(new Float32Array(k),3)),w.setAttribute("uv",new I.BufferAttribute(new Float32Array(C),2)),w.setIndex(new I.BufferAttribute(new Uint32Array(S),1));const x=new I.AxesHelper(10);i.scene.add(x);const Q=new I.MeshBasicMaterial({map:e.videoTextureEnabled?e.videoTexture:e.imageTexture,side:I.DoubleSide}),_=new I.Mesh(w,Q);_.renderOrder=1,_.name=`ModelTVVideoPlugin-${y}-${performance.now()}`;const R=[v[1],v[2],v[3],v[0]],U=n.create3DDomContainer(R);if(U!=null&&U.container){const j=document.createElement("div");j.classList.add("play-icon"),j.style.width="100%",j.style.height="100%",j.style.display="flex",j.style.justifyContent="center",j.style.alignItems="center",j.style.pointerEvents="none",U.container.appendChild(j);const F=document.createElement("img");F.src="//vrlab-static.ljcdn.com/release/web/play.2ada5b6f.png",F.style.width="200px",F.style.pointerEvents="auto",F.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()},j.appendChild(F),o.set(_,U)}return _}),u=v=>{const y=new I.TextureLoader().load(v);return y.minFilter=I.LinearFilter,y.magFilter=I.LinearFilter,y.format=I.RGBFormat,y},h=(v,y)=>new Promise((w,P)=>{const k=new XMLHttpRequest;k.onreadystatechange=()=>{if(k.readyState==4)if(k.status==200){const C=window.URL||window.webkitURL;y=y||document.createElement("video"),y.crossOrigin="anonymous",y.muted=!0,y.loop=!0,y.playsInline=!0,y.src=C.createObjectURL(k.response);const S=new I.VideoTexture(y);S.minFilter=I.LinearFilter,S.magFilter=I.LinearFilter,S.format=I.RGBFormat,w(Object.assign(S,{videoSource:v}))}else P(new Error("Video download Error: "+k.status))},k.onerror=C=>P(C),k.open("GET",v),k.responseType="blob",k.send()}),d=(v,y)=>H(exports,null,function*(){const{video_src:w,video_poster_src:P,points:k}=v;e.videoSource=w,e.rectPoints=Em(k).map(C=>C.map(({x:S,y:x,z:Q})=>new I.Vector3(S,x,Q))),e.imageTexture=u(P),y&&(e.videoElement=y),e.videoTexture=yield h(e.videoSource,e.videoElement),e.enabled=!!v.enable,e.enabled&&a()}),f=v=>{if(!e.enabled)return;const y=e.videoMeshes;if(!(!y||v.intersectObjects(y).length===0))return e.videoTexture&&(e.videoTexture.image.paused||e.videoTexture.image.pause()),!1},g=v=>{v==="Floorplan"?n.hide():n.show()},A=()=>{if(!e.enabled)return;const v=i.camera.position;if(o.forEach((y,w)=>{const P=y.css3DObject.position.clone(),k=P.clone().sub(v).normalize(),C=new I.Raycaster(v,k),S=i.model.intersectRaycaster(C)[0],x=P.distanceTo(v),Q=.01;S&&S.distance+Q<x?y.hide():y.show()}),!r()){const y=e.rectPoints.find(w=>{const P=w[0].clone().add(w[1]).add(w[2]).add(w[3]).divideScalar(4);return w.map(k=>k.clone().add(P).divideScalar(2)).filter(k=>{const C=k.distanceTo(v),S=new I.Raycaster(v,k.clone().sub(v).normalize()),x=i.model.intersectRaycaster(S)[0],Q=.01;return!(x&&x.distance+Q<C)}).length>=2});(!y||y.length===0)&&s(!0)}},p=()=>{l(),e.videoTexture=void 0,i.off("modeChange",g),i.off("wantsTapGesture",f),i.off("panoArrived",A),i.off("renderFrame",()=>{e.videoMeshes.forEach(v=>{v&&(v.needsRender=!0)})})};return i.on("modeChange",g),i.on("wantsTapGesture",f),i.on("panoArrived",A),i.on("renderFrame",()=>{e.videoMeshes.forEach(v=>{v&&(v.needsRender=!0)})}),{enable:a,disable:l,load:d,dispose:p,state:e,css3DRenderPlugin:n}};function km(i){ce(i,"svelte-gduhqw",`.item-label-item.svelte-gduhqw.svelte-gduhqw{position:absolute;z-index:0;transform:none;cursor:pointer;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;animation:svelte-gduhqw-fadeIn .3s ease-in}.item-label-item.fold.svelte-gduhqw>.item-label-item__text-wrap.svelte-gduhqw{visibility:hidden}.item-label-item.fold.svelte-gduhqw>.item-label-item__bar.anchor.svelte-gduhqw{visibility:hidden}.item-label-item.fold.svelte-gduhqw>.item-label-item__bar.anchor.svelte-gduhqw:after{visibility:visible}.item-label-item__text-wrap.svelte-gduhqw.svelte-gduhqw{height:-moz-fit-content;height:fit-content;padding:0.75rem 1.25rem 0.75rem 0.75rem;position:absolute;width:-moz-max-content;width:max-content;max-width:29.5625rem;min-height:5.75rem;background-image:linear-gradient(269deg, rgba(0, 0, 0, 0.50) 0%, rgba(0, 0, 0, 0.60) 49%, rgba(31, 38, 46, 0.70) 100%);border:0.09375rem solid rgba(255, 255, 255, .65);border-radius:0.1875rem;color:white;transform:translate(-50%, 0);display:flex;justify-content:flex-start;align-items:center;box-sizing:border-box;overflow:hidden;pointer-events:all}.item-label-item__custom.svelte-gduhqw.svelte-gduhqw{padding:0;max-width:unset;min-height:unset;background-image:unset;border:0;border-radius:0}.icon-wrap.svelte-gduhqw.svelte-gduhqw{width:4.25rem;height:100%;display:flex;justify-content:center;align-content:center}.icon.svelte-gduhqw.svelte-gduhqw{width:4.25rem;height:4.25rem;background-repeat:no-repeat;background-size:contain;background-position:center}.item-label-text.svelte-gduhqw.svelte-gduhqw{margin-left:0.75rem;padding-left:0.75rem;min-height:4.25rem;height:auto;display:flex;flex-flow:column;justify-content:space-around;align-content:flex-start;border-left:solid rgba(255, 255, 255, .2) 0.0625rem;border-top:solid rgba(255, 255, 255, .2) 0;border-right:solid rgba(255, 255, 255, .2) 0;border-bottom:solid rgba(255, 255, 255, .2) 0;pointer-events:auto}.item-model.svelte-gduhqw.svelte-gduhqw{white-space:nowrap;font-size:1.375rem;font-weight:bold;line-height:1.875rem}.item-name.svelte-gduhqw.svelte-gduhqw{height:auto;word-wrap:break-word;word-break:break-all;font-size:1.25rem;line-height:1.75rem}.item-label-item__bar.svelte-gduhqw.svelte-gduhqw{position:absolute;bottom:0;width:0.1875rem;background-image:linear-gradient(to bottom, white, rgba(255, 255, 255, 0));box-shadow:0 0.125rem 0.5rem 0 rgba(0, 0, 0, 0.20);pointer-events:none}.item-label-item__bar.anchor.svelte-gduhqw.svelte-gduhqw:after{content:'';position:absolute;bottom:0;width:1.5rem;height:1.5rem;background-image:url("//vrlab-public.ljcdn.com/common/file/web/67e7a198-28c9-47dc-879b-507bd3ae600c.png ");background-position:center;background-size:contain;transform:translate(-0.65625rem, 50%)}@keyframes svelte-gduhqw-fadeIn{from{opacity:0
522
522
  }to{opacity:1
523
- }}`)}function xm(i){let t,e,n,o=(i[0].code||i[0].id)+"",s,r,a,l=i[0].name+"",c,u=i[0].icon&&Os(i);return{c(){u&&u.c(),t=$(),e=z("div"),n=z("span"),s=ke(o),r=$(),a=z("span"),c=ke(l),b(n,"class","item-model svelte-gduhqw"),b(a,"class","item-name svelte-gduhqw"),b(e,"class","item-label-text svelte-gduhqw")},m(h,d){u&&u.m(h,d),T(h,t,d),T(h,e,d),B(e,n),B(n,s),B(e,r),B(e,a),B(a,c)},p(h,d){h[0].icon?u?u.p(h,d):(u=Os(h),u.c(),u.m(t.parentNode,t)):u&&(u.d(1),u=null),d&1&&o!==(o=(h[0].code||h[0].id)+"")&&Me(s,o),d&1&&l!==(l=h[0].name+"")&&Me(c,l)},d(h){u&&u.d(h),h&&M(t),h&&M(e)}}}function Dm(i){let t;return{c(){t=z("div")},m(e,n){T(e,t,n),i[6](t)},p:Y,d(e){e&&M(t),i[6](null)}}}function Os(i){let t,e,n,o,s;return{c(){t=z("div"),e=z("div"),b(e,"class","icon svelte-gduhqw"),b(e,"style",n=`background-image: url(${i[0].icon})`),b(t,"class","icon-wrap svelte-gduhqw")},m(r,a){T(r,t,a),B(t,e),o||(s=we(t,"click",i[7]),o=!0)},p(r,a){a&1&&n!==(n=`background-image: url(${r[0].icon})`)&&b(e,"style",n)},d(r){r&&M(t),o=!1,s()}}}function Lm(i){let t,e,n,o,s,r,a,l,c,u;function h(g,A){return A&1&&(n=null),n==null&&(n=!!Boolean(typeof g[0].render=="function")),n?Dm:xm}let d=h(i,-1),f=d(i);return{c(){t=z("div"),e=z("div"),f.c(),s=$(),r=z("div"),b(e,"class",o=Te(Ke.default("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof i[0].render=="function")}))+" svelte-gduhqw"),L(e,"bottom",`${i[0].strokeLength}px`),b(r,"class",a=Te(Ke.default("item-label-item__bar",{anchor:i[1]}))+" svelte-gduhqw"),L(r,"height",`${i[0].strokeLength}px`),b(t,"class",l=Te(Ke.default("item-label-item",{fold:i[0].isFold}))+" svelte-gduhqw"),L(t,"z-index",i[0].zIndex),L(t,"transform",i[0].transform)},m(g,A){T(g,t,A),B(t,e),f.m(e,null),B(t,s),B(t,r),c||(u=we(e,"click",i[4]),c=!0)},p(g,[A]){d===(d=h(g,A))&&f?f.p(g,A):(f.d(1),f=d(g),f&&(f.c(),f.m(e,null))),A&1&&o!==(o=Te(Ke.default("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof g[0].render=="function")}))+" svelte-gduhqw")&&b(e,"class",o),A&1&&L(e,"bottom",`${g[0].strokeLength}px`),A&2&&a!==(a=Te(Ke.default("item-label-item__bar",{anchor:g[1]}))+" svelte-gduhqw")&&b(r,"class",a),A&1&&L(r,"height",`${g[0].strokeLength}px`),A&1&&l!==(l=Te(Ke.default("item-label-item",{fold:g[0].isFold}))+" svelte-gduhqw")&&b(t,"class",l),A&1&&L(t,"z-index",g[0].zIndex),A&1&&L(t,"transform",g[0].transform)},i:Y,o:Y,d(g){g&&M(t),f.d(),c=!1,u()}}}function Sm(i,t,e){let{itemLabel:n}=t,{hooks:o}=t,{anchorEnabled:s}=t,{onIconClick:r}=t;function a(){o.emit("onLabelClick",n)}let l;function c(h){Qe[h?"unshift":"push"](()=>{l=h,e(3,l)})}const u=h=>r(n);return i.$$set=h=>{"itemLabel"in h&&e(0,n=h.itemLabel),"hooks"in h&&e(5,o=h.hooks),"anchorEnabled"in h&&e(1,s=h.anchorEnabled),"onIconClick"in h&&e(2,r=h.onIconClick)},i.$$.update=()=>{if(i.$$.dirty&9&&typeof n.render=="function"&&l&&l.children.length===0){const h=n.render(n);h&&l.appendChild(h)}},[n,s,r,l,a,o,c,u]}class Mm extends oe{constructor(t){super(),ie(this,t,Sm,Lm,ne,{itemLabel:0,hooks:5,anchorEnabled:1,onIconClick:2},km)}}const{Raycaster:Tm,Vector3:Db}=I,Rs=(i,t,e,n)=>{const o=t.clone().sub(e).normalize(),s=new Tm;s.set(e,o);const[r]=i.model.intersectRaycaster(s);return r&&r.distance+.01<n};var Dt=(i=>(i.SMALL="small",i.MIDLLE="middle",i.LARGE="large",i.EXTRA_LARGE="x-large",i))(Dt||{});const zm=(i,t)=>{switch(t){case Dt.SMALL:return Math.ceil(-27.78*i+85);case Dt.MIDLLE:return Math.ceil(-38.9*i+130);case Dt.LARGE:return Math.ceil(-44.44*i+140);case Dt.EXTRA_LARGE:return Math.ceil(-92.59*i+300)}},Bm=i=>`translate(${i[0]}px, ${i[1]}px)`;function Fs(i){return i.map(t=>O({observerIndex:void 0,visible:!1,isFold:!1},t))}function jm(i){ce(i,"svelte-gk8s47",".item-labels-container.svelte-gk8s47{width:100%;height:100%;position:relative}")}function Hs(i,t,e){const n=i.slice();return n[30]=t[e],n}function Gs(i){let t,e;return t=new Mm({props:{itemLabel:i[30],hooks:i[0],anchorEnabled:i[2],onIconClick:i[6]}}),{c(){K(t.$$.fragment)},m(n,o){J(t,n,o),e=!0},p(n,o){const s={};o[0]&2&&(s.itemLabel=n[30]),o[0]&1&&(s.hooks=n[0]),o[0]&4&&(s.anchorEnabled=n[2]),t.$set(s)},i(n){e||(E(t.$$.fragment,n),e=!0)},o(n){D(t.$$.fragment,n),e=!1},d(n){Z(t,n)}}}function Ws(i,t){let e,n,o,s=t[30].visible&&Gs(t);return{key:i,first:null,c(){e=fe(),s&&s.c(),n=fe(),this.first=e},m(r,a){T(r,e,a),s&&s.m(r,a),T(r,n,a),o=!0},p(r,a){t=r,t[30].visible?s?(s.p(t,a),a[0]&2&&E(s,1)):(s=Gs(t),s.c(),E(s,1),s.m(n.parentNode,n)):s&&(se(),D(s,1,1,()=>{s=null}),re())},i(r){o||(E(s),o=!0)},o(r){D(s),o=!1},d(r){r&&M(e),s&&s.d(r),r&&M(n)}}}function Vm(i){let t,e=[],n=new Map,o,s,r=i[1];const a=l=>l[30].id;for(let l=0;l<r.length;l+=1){let c=Hs(i,r,l),u=a(c);n.set(u,e[l]=Ws(u,c))}return{c(){t=z("div");for(let l=0;l<e.length;l+=1)e[l].c();b(t,"class","item-labels-container svelte-gk8s47"),xe(()=>i[12].call(t)),L(t,"opacity",i[5]?1:0)},m(l,c){T(l,t,c);for(let u=0;u<e.length;u+=1)e[u].m(t,null);o=tt(t,i[12].bind(t)),s=!0},p(l,c){c[0]&71&&(r=l[1],se(),e=qe(e,c,a,1,l,r,n,t,Et,Ws,null,Hs),re()),c[0]&32&&L(t,"opacity",l[5]?1:0)},i(l){if(!s){for(let c=0;c<r.length;c+=1)E(e[c]);s=!0}},o(l){for(let c=0;c<e.length;c+=1)D(e[c]);s=!1},d(l){l&&M(t);for(let c=0;c<e.length;c+=1)e[c].d();o()}}}let Qm=11;function Om(i,t,e){const{Raycaster:n,Vector3:o}=I;let{five:s}=t,{modelOcclusionEnable:r}=t,{itemLabels:a}=t,{hooks:l}=t,{displayStrategyType:c}=t,{maxVisibleDistance:u}=t,h=null,d=null,f=(s==null?void 0:s.currentMode)===Ce.Five.Mode.Panorama,g,A,p=[],v=!0;const y=(W,X)=>{const G=W.camera.position.clone(),ee=new o(X.modelPosition[0],X.modelPosition[1],X.modelPosition[2]),N=ee.distanceTo(G);return u!==void 0&&W.state.mode===Ce.Five.Mode.Panorama&&N>u?!1:Rs(W,ee.clone().sub(G).normalize(),G,N)},w=W=>{const{camera:X,model:G}=s,{x:ee,y:N,z:ae}=W.clone().project(X),he=(ee+1)/2,ue=(2-(N+1))/2,Le=Math.abs(ae)<1&&[he,ue].every(ze=>ze<1&&ze>=0);return Boolean(Le)},P=(W,X)=>{const G=new o(X.modelPosition[0],X.modelPosition[1],X.modelPosition[2]),ee=W.project2d(G),N=ee==null?void 0:ee.x,ae=ee==null?void 0:ee.y;return[N,ae]},k=(W,X)=>{const G=X.map(N=>{if(W.state.panoIndex!==N.panoIndex)return me(O({},N),{visible:!1});const ae=P(W,N);N.name.length*Qm;const he=zm(N.modelPosition[1],c),ue=W.currentMode===Ce.Five.Mode.Panorama?w(new o(N.position[0],N.position[1],N.position[2])):!0,pe=r?y(W,N):!1,Pe=ue&&!pe;if(!Pe)return me(O({},N),{visible:Pe});p.push(ae);const Le=Bm(ae);return me(O({},N),{visible:Pe,transform:Le,strokeLength:he})}),ee=G.filter(({visible:N})=>N).map(N=>({itemLabelItem:N,distance:new o(N.modelPosition[0],N.modelPosition[1],N.modelPosition[2]).clone().distanceTo(W.camera.position)})).sort((N,ae)=>N.distance-ae.distance);return G.map(N=>{const ae=ee.findIndex(he=>he.itemLabelItem.id===N.id);return ae!==void 0?me(O({},N),{zIndex:ae*10}):N})},C=()=>{p=[],e(1,d=k(s,d))},S=()=>{e(5,v=!1),x()},x=ol(()=>{e(5,v=!0),C()},300),Q=()=>{s.once("renderFrame",C)},_=()=>{window.addEventListener("resize",Q,!1)},R=()=>{h!==a&&(e(1,d=Fs(a)),h=a,C())},U=(W,X)=>{let G=[];for(let N=0;N<X.length;N++){const{position:ae,panoIndex:he}=X[N],ue=W.distanceTo(ae);(u===void 0||ue<=u||s.state.mode!==Ce.Five.Mode.Panorama)&&G.push({panoIndex:he,obVector:ae,distance:ue})}G=G.sort((N,ae)=>N.distance-ae.distance);let ee;for(let N=0;N<G.length;N++){const{obVector:ae,distance:he,panoIndex:ue}=G[N];if(!Rs(s,W,ae,he)){ee=ue;break}}return typeof ee=="number"?X[ee]:void 0},j=W=>{if(s.state.mode===Ce.Five.Mode.Panorama)return;const X=s.work.observers,G=new o().fromArray(W.position),ee=U(G,X);if(ee&&(W.observerIndex=ee.panoIndex),typeof W.observerIndex=="number"){const N=X[W.observerIndex],ae=G.clone().sub(N.position).normalize(),he={longitude:Math.PI+Math.atan2(ae.x,ae.z),latitude:Math.acos(ae.y/ae.length())-Math.PI/2};s.setState(me(O({},he),{mode:Ce.Five.Mode.Panorama,panoIndex:W.observerIndex})),s.once("initAnimationEnded",()=>{e(1,d=d.map(ue=>me(O({},ue),{isFold:ue.id!==W.id}))),s.once("cameraUpdate",()=>{e(1,d=d.map(ue=>me(O({},ue),{isFold:!1})))})})}};ka(()=>{R()}),Ue(()=>{e(1,d=Fs(a)),h=a,C(),_(),s.on("cameraUpdate",S)}),Pt(()=>{s.off("cameraUpdate",S),window.removeEventListener("resize",Q,!1)});function F(){g=this.clientWidth,A=this.clientHeight,e(3,g),e(4,A)}return i.$$set=W=>{"five"in W&&e(7,s=W.five),"modelOcclusionEnable"in W&&e(8,r=W.modelOcclusionEnable),"itemLabels"in W&&e(9,a=W.itemLabels),"hooks"in W&&e(0,l=W.hooks),"displayStrategyType"in W&&e(10,c=W.displayStrategyType),"maxVisibleDistance"in W&&e(11,u=W.maxVisibleDistance)},[l,d,f,g,A,v,j,s,r,a,c,u,F]}class Rm extends oe{constructor(t){super(),ie(this,t,Om,Vm,ne,{five:7,modelOcclusionEnable:8,itemLabels:9,hooks:0,displayStrategyType:10,maxVisibleDistance:11},jm,[-1,-1])}}function Fm(i){return i.item_labels.map(t=>me(O({},t),{modelPosition:[t.position[0],t.position[1],t.position[2]],observerIndex:void 0}))}const Hm=void 0,Gm=(i,t)=>{var d,f,g,A;const e={container:document.createElement("div"),data:null,enabled:!0,fiveModeEnabled:!0,itemLabels:[],wrapper:null,app:void 0,hooks:new Ce.Subscribe,modelOcclusionEnable:(d=t==null?void 0:t.modelOcclusionEnable)!=null?d:!0,onlyVisibleInPanorama:(f=t==null?void 0:t.onlyVisibleInPanorama)!=null?f:!0,displayStrategyType:(g=t==null?void 0:t.displayStrategyType)!=null?g:Dt.SMALL,maxVisibleDistance:(A=t==null?void 0:t.maxVisibleDistance)!=null?A:Hm};e.container.setAttribute("class","item-label-plugin-container"),e.container.style.cssText=`
523
+ }}`)}function xm(i){let t,e,n,o=(i[0].code||i[0].id)+"",s,r,a,l=i[0].name+"",c,u=i[0].icon&&Os(i);return{c(){u&&u.c(),t=$(),e=z("div"),n=z("span"),s=ke(o),r=$(),a=z("span"),c=ke(l),b(n,"class","item-model svelte-gduhqw"),b(a,"class","item-name svelte-gduhqw"),b(e,"class","item-label-text svelte-gduhqw")},m(h,d){u&&u.m(h,d),T(h,t,d),T(h,e,d),B(e,n),B(n,s),B(e,r),B(e,a),B(a,c)},p(h,d){h[0].icon?u?u.p(h,d):(u=Os(h),u.c(),u.m(t.parentNode,t)):u&&(u.d(1),u=null),d&1&&o!==(o=(h[0].code||h[0].id)+"")&&Me(s,o),d&1&&l!==(l=h[0].name+"")&&Me(c,l)},d(h){u&&u.d(h),h&&M(t),h&&M(e)}}}function Dm(i){let t;return{c(){t=z("div")},m(e,n){T(e,t,n),i[6](t)},p:Y,d(e){e&&M(t),i[6](null)}}}function Os(i){let t,e,n,o,s;return{c(){t=z("div"),e=z("div"),b(e,"class","icon svelte-gduhqw"),b(e,"style",n=`background-image: url(${i[0].icon})`),b(t,"class","icon-wrap svelte-gduhqw")},m(r,a){T(r,t,a),B(t,e),o||(s=we(t,"click",i[7]),o=!0)},p(r,a){a&1&&n!==(n=`background-image: url(${r[0].icon})`)&&b(e,"style",n)},d(r){r&&M(t),o=!1,s()}}}function Lm(i){let t,e,n,o,s,r,a,l,c,u;function h(g,A){return A&1&&(n=null),n==null&&(n=!!Boolean(typeof g[0].render=="function")),n?Dm:xm}let d=h(i,-1),f=d(i);return{c(){t=z("div"),e=z("div"),f.c(),s=$(),r=z("div"),b(e,"class",o=Te(Ke.default("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof i[0].render=="function")}))+" svelte-gduhqw"),L(e,"bottom",`${i[0].strokeLength}px`),b(r,"class",a=Te(Ke.default("item-label-item__bar",{anchor:i[1]}))+" svelte-gduhqw"),L(r,"height",`${i[0].strokeLength}px`),b(t,"class",l=Te(Ke.default("item-label-item",{fold:i[0].isFold}))+" svelte-gduhqw"),L(t,"z-index",i[0].zIndex),L(t,"transform",i[0].transform)},m(g,A){T(g,t,A),B(t,e),f.m(e,null),B(t,s),B(t,r),c||(u=we(e,"click",i[4]),c=!0)},p(g,[A]){d===(d=h(g,A))&&f?f.p(g,A):(f.d(1),f=d(g),f&&(f.c(),f.m(e,null))),A&1&&o!==(o=Te(Ke.default("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof g[0].render=="function")}))+" svelte-gduhqw")&&b(e,"class",o),A&1&&L(e,"bottom",`${g[0].strokeLength}px`),A&2&&a!==(a=Te(Ke.default("item-label-item__bar",{anchor:g[1]}))+" svelte-gduhqw")&&b(r,"class",a),A&1&&L(r,"height",`${g[0].strokeLength}px`),A&1&&l!==(l=Te(Ke.default("item-label-item",{fold:g[0].isFold}))+" svelte-gduhqw")&&b(t,"class",l),A&1&&L(t,"z-index",g[0].zIndex),A&1&&L(t,"transform",g[0].transform)},i:Y,o:Y,d(g){g&&M(t),f.d(),c=!1,u()}}}function Sm(i,t,e){let{itemLabel:n}=t,{hooks:o}=t,{anchorEnabled:s}=t,{onIconClick:r}=t;function a(){o.emit("onLabelClick",n)}let l;function c(h){Qe[h?"unshift":"push"](()=>{l=h,e(3,l)})}const u=h=>r(n);return i.$$set=h=>{"itemLabel"in h&&e(0,n=h.itemLabel),"hooks"in h&&e(5,o=h.hooks),"anchorEnabled"in h&&e(1,s=h.anchorEnabled),"onIconClick"in h&&e(2,r=h.onIconClick)},i.$$.update=()=>{if(i.$$.dirty&9&&typeof n.render=="function"&&l&&l.children.length===0){const h=n.render(n);h&&l.appendChild(h)}},[n,s,r,l,a,o,c,u]}class Mm extends oe{constructor(t){super(),ie(this,t,Sm,Lm,ne,{itemLabel:0,hooks:5,anchorEnabled:1,onIconClick:2},km)}}const{Raycaster:Tm,Vector3:Lb}=I,Rs=(i,t,e,n)=>{const o=t.clone().sub(e).normalize(),s=new Tm;s.set(e,o);const[r]=i.model.intersectRaycaster(s);return r&&r.distance+.01<n};var Dt=(i=>(i.SMALL="small",i.MIDLLE="middle",i.LARGE="large",i.EXTRA_LARGE="x-large",i))(Dt||{});const zm=(i,t)=>{switch(t){case Dt.SMALL:return Math.ceil(-27.78*i+85);case Dt.MIDLLE:return Math.ceil(-38.9*i+130);case Dt.LARGE:return Math.ceil(-44.44*i+140);case Dt.EXTRA_LARGE:return Math.ceil(-92.59*i+300)}},Bm=i=>`translate(${i[0]}px, ${i[1]}px)`;function Fs(i){return i.map(t=>O({observerIndex:void 0,visible:!1,isFold:!1},t))}function jm(i){ce(i,"svelte-gk8s47",".item-labels-container.svelte-gk8s47{width:100%;height:100%;position:relative}")}function Hs(i,t,e){const n=i.slice();return n[30]=t[e],n}function Gs(i){let t,e;return t=new Mm({props:{itemLabel:i[30],hooks:i[0],anchorEnabled:i[2],onIconClick:i[6]}}),{c(){K(t.$$.fragment)},m(n,o){J(t,n,o),e=!0},p(n,o){const s={};o[0]&2&&(s.itemLabel=n[30]),o[0]&1&&(s.hooks=n[0]),o[0]&4&&(s.anchorEnabled=n[2]),t.$set(s)},i(n){e||(E(t.$$.fragment,n),e=!0)},o(n){D(t.$$.fragment,n),e=!1},d(n){Z(t,n)}}}function Ws(i,t){let e,n,o,s=t[30].visible&&Gs(t);return{key:i,first:null,c(){e=fe(),s&&s.c(),n=fe(),this.first=e},m(r,a){T(r,e,a),s&&s.m(r,a),T(r,n,a),o=!0},p(r,a){t=r,t[30].visible?s?(s.p(t,a),a[0]&2&&E(s,1)):(s=Gs(t),s.c(),E(s,1),s.m(n.parentNode,n)):s&&(se(),D(s,1,1,()=>{s=null}),re())},i(r){o||(E(s),o=!0)},o(r){D(s),o=!1},d(r){r&&M(e),s&&s.d(r),r&&M(n)}}}function Vm(i){let t,e=[],n=new Map,o,s,r=i[1];const a=l=>l[30].id;for(let l=0;l<r.length;l+=1){let c=Hs(i,r,l),u=a(c);n.set(u,e[l]=Ws(u,c))}return{c(){t=z("div");for(let l=0;l<e.length;l+=1)e[l].c();b(t,"class","item-labels-container svelte-gk8s47"),xe(()=>i[12].call(t)),L(t,"opacity",i[5]?1:0)},m(l,c){T(l,t,c);for(let u=0;u<e.length;u+=1)e[u].m(t,null);o=tt(t,i[12].bind(t)),s=!0},p(l,c){c[0]&71&&(r=l[1],se(),e=qe(e,c,a,1,l,r,n,t,Et,Ws,null,Hs),re()),c[0]&32&&L(t,"opacity",l[5]?1:0)},i(l){if(!s){for(let c=0;c<r.length;c+=1)E(e[c]);s=!0}},o(l){for(let c=0;c<e.length;c+=1)D(e[c]);s=!1},d(l){l&&M(t);for(let c=0;c<e.length;c+=1)e[c].d();o()}}}let Qm=11;function Om(i,t,e){const{Raycaster:n,Vector3:o}=I;let{five:s}=t,{modelOcclusionEnable:r}=t,{itemLabels:a}=t,{hooks:l}=t,{displayStrategyType:c}=t,{maxVisibleDistance:u}=t,h=null,d=null,f=(s==null?void 0:s.currentMode)===Ce.Five.Mode.Panorama,g,A,p=[],v=!0;const y=(W,X)=>{const G=W.camera.position.clone(),ee=new o(X.modelPosition[0],X.modelPosition[1],X.modelPosition[2]),N=ee.distanceTo(G);return u!==void 0&&W.state.mode===Ce.Five.Mode.Panorama&&N>u?!1:Rs(W,ee.clone().sub(G).normalize(),G,N)},w=W=>{const{camera:X,model:G}=s,{x:ee,y:N,z:ae}=W.clone().project(X),he=(ee+1)/2,ue=(2-(N+1))/2,Le=Math.abs(ae)<1&&[he,ue].every(ze=>ze<1&&ze>=0);return Boolean(Le)},P=(W,X)=>{const G=new o(X.modelPosition[0],X.modelPosition[1],X.modelPosition[2]),ee=W.project2d(G),N=ee==null?void 0:ee.x,ae=ee==null?void 0:ee.y;return[N,ae]},k=(W,X)=>{const G=X.map(N=>{if(W.state.panoIndex!==N.panoIndex)return me(O({},N),{visible:!1});const ae=P(W,N);N.name.length*Qm;const he=zm(N.modelPosition[1],c),ue=W.currentMode===Ce.Five.Mode.Panorama?w(new o(N.position[0],N.position[1],N.position[2])):!0,pe=r?y(W,N):!1,Pe=ue&&!pe;if(!Pe)return me(O({},N),{visible:Pe});p.push(ae);const Le=Bm(ae);return me(O({},N),{visible:Pe,transform:Le,strokeLength:he})}),ee=G.filter(({visible:N})=>N).map(N=>({itemLabelItem:N,distance:new o(N.modelPosition[0],N.modelPosition[1],N.modelPosition[2]).clone().distanceTo(W.camera.position)})).sort((N,ae)=>N.distance-ae.distance);return G.map(N=>{const ae=ee.findIndex(he=>he.itemLabelItem.id===N.id);return ae!==void 0?me(O({},N),{zIndex:ae*10}):N})},C=()=>{p=[],e(1,d=k(s,d))},S=()=>{e(5,v=!1),x()},x=ol(()=>{e(5,v=!0),C()},300),Q=()=>{s.once("renderFrame",C)},_=()=>{window.addEventListener("resize",Q,!1)},R=()=>{h!==a&&(e(1,d=Fs(a)),h=a,C())},U=(W,X)=>{let G=[];for(let N=0;N<X.length;N++){const{position:ae,panoIndex:he}=X[N],ue=W.distanceTo(ae);(u===void 0||ue<=u||s.state.mode!==Ce.Five.Mode.Panorama)&&G.push({panoIndex:he,obVector:ae,distance:ue})}G=G.sort((N,ae)=>N.distance-ae.distance);let ee;for(let N=0;N<G.length;N++){const{obVector:ae,distance:he,panoIndex:ue}=G[N];if(!Rs(s,W,ae,he)){ee=ue;break}}return typeof ee=="number"?X[ee]:void 0},j=W=>{if(s.state.mode===Ce.Five.Mode.Panorama)return;const X=s.work.observers,G=new o().fromArray(W.position),ee=U(G,X);if(ee&&(W.observerIndex=ee.panoIndex),typeof W.observerIndex=="number"){const N=X[W.observerIndex],ae=G.clone().sub(N.position).normalize(),he={longitude:Math.PI+Math.atan2(ae.x,ae.z),latitude:Math.acos(ae.y/ae.length())-Math.PI/2};s.setState(me(O({},he),{mode:Ce.Five.Mode.Panorama,panoIndex:W.observerIndex})),s.once("initAnimationEnded",()=>{e(1,d=d.map(ue=>me(O({},ue),{isFold:ue.id!==W.id}))),s.once("cameraUpdate",()=>{e(1,d=d.map(ue=>me(O({},ue),{isFold:!1})))})})}};ka(()=>{R()}),Ue(()=>{e(1,d=Fs(a)),h=a,C(),_(),s.on("cameraUpdate",S)}),Pt(()=>{s.off("cameraUpdate",S),window.removeEventListener("resize",Q,!1)});function F(){g=this.clientWidth,A=this.clientHeight,e(3,g),e(4,A)}return i.$$set=W=>{"five"in W&&e(7,s=W.five),"modelOcclusionEnable"in W&&e(8,r=W.modelOcclusionEnable),"itemLabels"in W&&e(9,a=W.itemLabels),"hooks"in W&&e(0,l=W.hooks),"displayStrategyType"in W&&e(10,c=W.displayStrategyType),"maxVisibleDistance"in W&&e(11,u=W.maxVisibleDistance)},[l,d,f,g,A,v,j,s,r,a,c,u,F]}class Rm extends oe{constructor(t){super(),ie(this,t,Om,Vm,ne,{five:7,modelOcclusionEnable:8,itemLabels:9,hooks:0,displayStrategyType:10,maxVisibleDistance:11},jm,[-1,-1])}}function Fm(i){return i.item_labels.map(t=>me(O({},t),{modelPosition:[t.position[0],t.position[1],t.position[2]],observerIndex:void 0}))}const Hm=void 0,Gm=(i,t)=>{var d,f,g,A;const e={container:document.createElement("div"),data:null,enabled:!0,fiveModeEnabled:!0,itemLabels:[],wrapper:null,app:void 0,hooks:new Ce.Subscribe,modelOcclusionEnable:(d=t==null?void 0:t.modelOcclusionEnable)!=null?d:!0,onlyVisibleInPanorama:(f=t==null?void 0:t.onlyVisibleInPanorama)!=null?f:!0,displayStrategyType:(g=t==null?void 0:t.displayStrategyType)!=null?g:Dt.SMALL,maxVisibleDistance:(A=t==null?void 0:t.maxVisibleDistance)!=null?A:Hm};e.container.setAttribute("class","item-label-plugin-container"),e.container.style.cssText=`
524
524
  position: absolute;
525
525
  left: 0;
526
526
  top: 0;
@@ -579,4 +579,4 @@ void main() {
579
579
  float match = (1.0 - step(0.5, abs(uv.x - 0.5))) * (1.0 - step(0.5, abs(uv.y - 0.5))) * (transX < transY ? transX : transY);
580
580
  gl_FragColor = vec4(texture2D(map, uv).xyz, match);
581
581
  }
582
- `;class aa{constructor(t,e){m(this,"_id");m(this,"url");m(this,"five");m(this,"panoIndex");m(this,"origin");m(this,"video");m(this,"videoMesh");m(this,"_enabled",!0);m(this,"_disposed",!1);m(this,"hasVideoEverPlayed",!1);m(this,"renderFiveDisposer");m(this,"onFiveDataLoaded",()=>{var l;const t=(l=this.five.work)==null?void 0:l.observers[this.panoIndex];if(!t)return this.logWarning(`\u70B9\u4F4D ${this.panoIndex} \u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5 Five \u6570\u636E\u662F\u5426\u6B63\u5E38\u3002`);const{x:e,y:n,z:o,w:s}=t.quaternion,r=new V.Quaternion(e,n,o,s),a=t.position;this.videoMesh.position.fromArray([a.x,a.y,a.z]),this.videoMesh.quaternion.set(0,0,0,1),this.videoMesh.rotateOnAxis(new V.Vector3(0,1,0),Math.PI/2),this.videoMesh.applyQuaternion(r)});m(this,"onFiveWantsMoveToPano",t=>{t===this.panoIndex&&(this.hasVideoEverPlayed||this.video.play().catch(e=>{console.log("\u{1F436} ==> error:",e)}))});m(this,"onFivePanoArrived",t=>{if(this.disposed)return this.logWarning("\u5B9E\u4F8B\u5DF2\u88AB\u9500\u6BC1");!this.enabled||this.panoIndex===t&&this.mount()});m(this,"onFivePanoWillArrive",t=>{if(t!==this.panoIndex)return this.unmount();this.panoIndex!==t&&this.unmount()});m(this,"onFiveModeChange",t=>{t!=="Panorama"&&this.hide()});m(this,"onFiveInitAnimationEnded",()=>{const t=this.five.getCurrentState();t.mode==="Panorama"&&t.panoIndex===this.panoIndex&&this.mount()});m(this,"onVideoPlaying",()=>{this.hasVideoEverPlayed=!0,this.video.src!==""&&(this.renderFiveDisposer=Pn(()=>{this.five.needsRender=!0}),this.five.scene.add(this.videoMesh))});m(this,"onVideoPaused",()=>{var t;(t=this.renderFiveDisposer)==null||t.call(this)});var l,c;this.five=t,this.panoIndex=e.panoIndex,this._id=e.renderID,this.url=e.url,this.origin=e.origin.slice(),this._enabled=(c=(l=e.initialState)==null?void 0:l.enabled)!=null?c:!0;const n=document.createElement("video");n.crossOrigin="anonymous",n.autoplay=!1,n.muted=!0,n.loop=!0,n.playsInline=!0,this.video=n;const o=new V.VideoTexture(this.video);o.minFilter=V.LinearFilter,o.magFilter=V.LinearFilter;const s=new V.ShaderMaterial({vertexShader:Cb,fragmentShader:Pb,uniforms:{map:{value:o},size:{value:new V.Vector4(this.origin[0],1-this.origin[1]-this.origin[3],this.origin[2],this.origin[3])}},depthTest:!0,transparent:!0}),r=new V.SphereBufferGeometry(1,64,64);r.scale(-1,1,1);const a=new V.Mesh(r,s);a.name="pano-video",this.videoMesh=a,this.five.work&&this.onFiveDataLoaded(),this.enabled&&this.addEventListeners(),this.mountIfNeeded()}get renderID(){return this._id}get disposed(){return this._disposed}get enabled(){return this._enabled}dispose(){this.disposed||(this.disable(),this._disposed=!0)}enable(){this.disposed||this.enabled||(this._enabled=!0,this.addEventListeners(),this.mountIfNeeded())}disable(){this.disposed||!this.enabled||(this._enabled=!1,this.removeEventListeners(),this.unmount())}addEventListeners(){this.five.on("loaded",this.onFiveDataLoaded),this.five.on("modeChange",this.onFiveModeChange),this.five.on("panoArrived",this.onFivePanoArrived),this.five.on("panoWillArrive",this.onFivePanoWillArrive),this.five.on("wantsMoveToPano",this.onFiveWantsMoveToPano),this.five.on("initAnimationEnded",this.onFiveInitAnimationEnded),this.video.addEventListener("playing",this.onVideoPlaying)}removeEventListeners(){this.five.off("loaded",this.onFiveDataLoaded),this.five.off("modeChange",this.onFiveModeChange),this.five.off("panoArrived",this.onFivePanoArrived),this.five.off("panoWillArrive",this.onFivePanoWillArrive),this.five.off("wantsMoveToPano",this.onFiveWantsMoveToPano),this.five.off("initAnimationEnded",this.onFiveInitAnimationEnded),this.video.removeEventListener("playing",this.onVideoPlaying)}mountIfNeeded(){const t=this.five.getCurrentState();t.mode==="Panorama"&&t.panoIndex===this.panoIndex&&this.enabled&&this.mount()}mount(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u7ECF\u9500\u6BC1\uFF0C\u65E0\u6CD5\u6302\u8F7D\u3002");if(this.url==="")return this.logWarning("\u89C6\u9891\u8D44\u6E90\u4E0D\u5B58\u5728\u3002");this.video.src!==this.url&&(this.video.src=this.url),this.video.paused&&this.video.play().catch(t=>{this.logWarning(t instanceof Error?t.message:"\u89C6\u9891\u64AD\u653E\u5931\u8D25\u3002"),this.five.once("gesture",()=>{this.video.play().catch(e=>{this.logWarning(e instanceof Error?e.message:"\u81EA\u52A8\u64AD\u653E\u89C6\u9891\u5931\u8D25\u3002")})})})}unmount(){this.video.pause(),this.video.src!==""&&(this.video.src=""),this.five.scene.remove(this.videoMesh)}hide(){this.video.pause(),this.five.scene.remove(this.videoMesh)}logWarning(t){console.warn("\u26D4 ==> [VideoMeshController]:",t)}}class Eb extends Cn{constructor(e){super(e);m(this,"enabled",!0);m(this,"controllerMap",new Map);m(this,"_disposed",!1);this.five=e}get state(){return{enabled:this.enabled}}get disposed(){return this._disposed}load(e,n){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");e.list.forEach(o=>{const s=o.pano_index,r=o.render_id;o.video_list.forEach(a=>{this.controllerMap.set(a.render_id,new aa(this.five,me(O({},a),{panoIndex:s,renderID:r,initialState:n==null?void 0:n.initialState})))})})}enable(e){var o;if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");if(this.enabled)return;this.enabled=!0,Array.from(this.controllerMap.values()).forEach(s=>s.enable());const n=(o=e==null?void 0:e.userAction)!=null?o:!0;this.hooks.emit("enable",{userAction:n})}disable(e){var o;if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");if(!this.enabled)return;this.enabled=!1,Array.from(this.controllerMap.values()).forEach(s=>s.disable());const n=(o=e==null?void 0:e.userAction)!=null?o:!0;this.hooks.emit("disable",{userAction:n})}add(e,n){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");n.forEach(o=>{if(this.controllerMap.get(o.render_id))return this.logWarning(`ID \u4E3A ${o.render_id} \u7684\u70B9\u4F4D\u89C6\u9891\u5DF2\u5B58\u5728`);const s=o.render_id;this.controllerMap.set(o.render_id,new aa(this.five,me(O({},o),{panoIndex:e,renderID:s,initialState:{enabled:this.enabled}})))})}removeByRenderID(e){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");const n=this.controllerMap.get(e);if(!n)return this.logWarning(`ID \u4E3A ${e} \u7684\u70B9\u4F4D\u89C6\u9891\u4E0D\u5B58\u5728`);n.dispose(),this.controllerMap.delete(e)}clear(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");Array.from(this.controllerMap.values()).forEach(e=>e.dispose()),this.controllerMap.clear()}dispose(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");this._disposed=!0,Array.from(this.controllerMap.values()).forEach(e=>e.dispose()),this.controllerMap.clear()}logWarning(e){console.warn("\u26D4 ==> [PanoVideoPluginController]:",e)}}const Ib=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),kb=i=>new Eb(i);exports.CSS3DRender=Nt;exports.CSS3DRenderPlugin=Jt;exports.CameraMovementEffect=Ga;exports.CameraMovementPlugin=Th;exports.ContentType=dl;exports.CruisePlugin=Ap;exports.CruisePluginController=po;exports.DIRECTION=Ft;exports.DISPLAY_STRATEGY_TYPE=xt;exports.DimensionType=hl;exports.FLOOR_PLAN_ATTACHED_TO=pt;exports.FLOOR_TYPE_MAP=yh;exports.GuideLinePlugin=ll;exports.ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE=Dt;exports.ItemLabelPlugin=Gm;exports.Magnifier=Xa;exports.MapviewFloorplanPlugin=Kd;exports.ModelChassisCompassPlugin=Ph;exports.ModelEntryDoorGuidePlugin=kh;exports.ModelFloorplanPlugin=Ud;exports.ModelItemLabelPlugin=Cm;exports.ModelRoomLabelPlugin=au;exports.ModelTVVideoPlugin=Im;exports.ModelViewPlugin=mc;exports.Object3DHelperController=jl;exports.Object3DHelperPlugin=wb;exports.PLUGIN=Ai;exports.PaintBrush=fc;exports.PaintBrushTypeEnum=ot;exports.PanoCompassPlugin=$h;exports.PanoCursorRaycasterPlugin=zc;exports.PanoDoorLabelPlugin=tp;exports.PanoFloorplanRadarPlugin=vh;exports.PanoMeasurePlugin=Jf;exports.PanoMeasurePluginLine=Bt;exports.PanoMeasurePluginModel=fi;exports.PanoMeasurePluginPoint=Ye;exports.PanoMeasurePluginPolyline=hi;exports.PanoRulerPlugin=Qh;exports.PanoRulerProPlugin=Uh;exports.PanoSpatialTagPlugin=dm;exports.PanoTagPlugin=Fv;exports.PanoTagPluginController=Ml;exports.PanoVideoPlugin=kb;exports.PanoVideoPluginType=Ib;exports.PointType=fl;exports.ROOM_FETILE_TYPE_MAP=bh;exports.ROOM_TYPE_MAP=wh;exports.Rotation=$e;exports.TopviewFloorplanPlugin=eh;exports.Util=rA;exports.VERSION=Po;exports.itemLabelPluginServerParams=Wm;exports.modelItemLabelPluginServerParams=Pm;exports.modelRoomLabelPluginServerParams=lu;exports.pluginFlag=Rv;
582
+ `;function Eb(i){const t=Math.PI*2;let e=-Math.atan2(i.x,-i.z);e=(e%t+t)%t;const n=-Math.asin(i.y/1);return{longitude:e,latitude:n}}class aa{constructor(t,e){m(this,"_id");m(this,"url");m(this,"five");m(this,"panoIndex");m(this,"observer");m(this,"origin");m(this,"video");m(this,"videoMesh");m(this,"_enabled",!0);m(this,"_disposed",!1);m(this,"hasVideoEverPlayed",!1);m(this,"renderFiveDisposer");m(this,"uv2Position",(t,e)=>{var g;const o=Math.PI,s=Math.PI*2,r=-1*Math.cos(s*t)*Math.sin(o*e),a=1*Math.cos(o*e),l=1*Math.sin(s*t)*Math.sin(o*e),c=new V.Vector3(r,a,l),u=(g=this.five.work)==null?void 0:g.observers[this.panoIndex];if(!u)return this.logWarning(`\u70B9\u4F4D ${this.panoIndex} \u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5 Five \u6570\u636E\u662F\u5426\u6B63\u5E38\u3002`);const h=u.position.clone(),d=u.quaternion.clone(),f=c.clone();return f.add(h),f.applyAxisAngle(new V.Vector3(0,1,0),-Math.PI/2),f.applyQuaternion(d),f});m(this,"onFiveDataLoaded",()=>{var l;const t=(l=this.five.work)==null?void 0:l.observers[this.panoIndex];if(!t)return this.logWarning(`\u70B9\u4F4D ${this.panoIndex} \u4E0D\u5B58\u5728\uFF0C\u8BF7\u68C0\u67E5 Five \u6570\u636E\u662F\u5426\u6B63\u5E38\u3002`);this.observer=t;const{x:e,y:n,z:o,w:s}=t.quaternion,r=new V.Quaternion(e,n,o,s),a=t.position;this.videoMesh.position.fromArray([a.x,a.y,a.z]),this.videoMesh.quaternion.set(0,0,0,1),this.videoMesh.rotateOnAxis(new V.Vector3(0,1,0),Math.PI/2),this.videoMesh.applyQuaternion(r)});m(this,"onFiveWantsMoveToPano",t=>{t===this.panoIndex&&(this.hasVideoEverPlayed||this.video.play().catch(e=>{console.log("\u{1F436} ==> error:",e)}))});m(this,"onFivePanoArrived",t=>{if(this.disposed)return this.logWarning("\u5B9E\u4F8B\u5DF2\u88AB\u9500\u6BC1");!this.enabled||this.panoIndex===t&&this.mount()});m(this,"onFivePanoWillArrive",t=>{if(t!==this.panoIndex)return this.unmount();this.panoIndex!==t&&this.unmount()});m(this,"onFiveModeChange",t=>{t!=="Panorama"&&this.hide()});m(this,"onFiveInitAnimationEnded",()=>{const t=this.five.getCurrentState();t.mode==="Panorama"&&t.panoIndex===this.panoIndex&&this.mount()});m(this,"onFiveWantsTapGesture",t=>{if(!this.five.scene.children.includes(this.videoMesh))return;if(this.disposed)return this.logWarning("\u5B9E\u4F8B\u5DF2\u88AB\u9500\u6BC1");if(!this.enabled)return this.logWarning("\u5B9E\u4F8B\u5DF2\u88AB\u7981\u7528");const[e]=t.intersectObject(this.videoMesh);if(!e)return;if(this.checkIntersectionInBounding(this.origin,e))return this.video.muted=!this.video.muted,!1});m(this,"onVideoPlaying",()=>{this.hasVideoEverPlayed=!0,this.video.src!==""&&(this.renderFiveDisposer=Pn(()=>{this.five.needsRender=!0}),this.five.scene.add(this.videoMesh))});m(this,"onVideoPaused",()=>{var t;(t=this.renderFiveDisposer)==null||t.call(this)});var l,c;this.five=t,this.panoIndex=e.panoIndex,this._id=e.renderID,this.url=e.url,this.origin=e.origin.slice(),this._enabled=(c=(l=e.initialState)==null?void 0:l.enabled)!=null?c:!0;const n=document.createElement("video");n.crossOrigin="anonymous",n.autoplay=!1,n.muted=!0,n.loop=!0,n.playsInline=!0,this.video=n;const o=new V.VideoTexture(this.video);o.minFilter=V.LinearFilter,o.magFilter=V.LinearFilter;const s=new V.ShaderMaterial({vertexShader:Cb,fragmentShader:Pb,uniforms:{map:{value:o},size:{value:new V.Vector4(this.origin[0],1-this.origin[1]-this.origin[3],this.origin[2],this.origin[3])}},depthTest:!0,transparent:!0}),r=new V.SphereBufferGeometry(1,64,64);r.scale(-1,1,1);const a=new V.Mesh(r,s);a.name="pano-video",this.videoMesh=a,this.five.work&&this.onFiveDataLoaded(),this.enabled&&this.addEventListeners(),this.mountIfNeeded()}get renderID(){return this._id}get disposed(){return this._disposed}get enabled(){return this._enabled}dispose(){this.disposed||(this.disable(),this._disposed=!0)}enable(){this.disposed||this.enabled||(this._enabled=!0,this.addEventListeners(),this.mountIfNeeded())}disable(){this.disposed||!this.enabled||(this._enabled=!1,this.removeEventListeners(),this.unmount())}lookAtVideo(){if(!this.observer)return;const t=this.getUVCenter();if(!t)return;const e=this.uv2Position(t[0],t[1]);if(!e)return;const n=new V.Vector3().subVectors(e,this.observer.position).normalize(),{longitude:o,latitude:s}=Eb(n);this.five.setState({panoIndex:this.panoIndex,longitude:o,latitude:s}),this.onFiveWantsMoveToPano(this.panoIndex)}getUVCenter(){if(!this.origin)return;const t=this.origin[0]+this.origin[2]/2,e=this.origin[1]+this.origin[3]/2;return[t,e]}addEventListeners(){this.five.on("loaded",this.onFiveDataLoaded),this.five.on("modeChange",this.onFiveModeChange),this.five.on("panoArrived",this.onFivePanoArrived),this.five.on("panoWillArrive",this.onFivePanoWillArrive),this.five.on("wantsMoveToPano",this.onFiveWantsMoveToPano),this.five.on("wantsTapGesture",this.onFiveWantsTapGesture),this.five.on("initAnimationEnded",this.onFiveInitAnimationEnded),this.video.addEventListener("playing",this.onVideoPlaying),this.video.addEventListener("pause",this.onVideoPaused)}removeEventListeners(){this.five.off("loaded",this.onFiveDataLoaded),this.five.off("modeChange",this.onFiveModeChange),this.five.off("panoArrived",this.onFivePanoArrived),this.five.off("panoWillArrive",this.onFivePanoWillArrive),this.five.off("wantsMoveToPano",this.onFiveWantsMoveToPano),this.five.off("wantsTapGesture",this.onFiveWantsTapGesture),this.five.off("initAnimationEnded",this.onFiveInitAnimationEnded),this.video.removeEventListener("playing",this.onVideoPlaying),this.video.removeEventListener("pause",this.onVideoPaused)}mountIfNeeded(){const t=this.five.getCurrentState();t.mode==="Panorama"&&t.panoIndex===this.panoIndex&&this.enabled&&this.mount()}mount(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u7ECF\u9500\u6BC1\uFF0C\u65E0\u6CD5\u6302\u8F7D\u3002");if(this.url==="")return this.logWarning("\u89C6\u9891\u8D44\u6E90\u4E0D\u5B58\u5728\u3002");this.video.src!==this.url&&(this.video.src=this.url),this.video.paused&&this.video.play().catch(t=>{this.logWarning(t instanceof Error?t.message:"\u89C6\u9891\u64AD\u653E\u5931\u8D25\u3002"),this.five.once("gesture",()=>{this.video.play().catch(e=>{this.logWarning(e instanceof Error?e.message:"\u81EA\u52A8\u64AD\u653E\u89C6\u9891\u5931\u8D25\u3002")})})})}unmount(){this.video.pause(),this.video.src!==""&&(this.video.src=""),this.five.scene.remove(this.videoMesh)}hide(){this.video.pause(),this.five.scene.remove(this.videoMesh)}logWarning(t){console.warn("\u26D4 ==> [VideoMeshController]:",t)}checkIntersectionInBounding(t,e){if(!e.uv)return!1;const[n,o]=e.uv.toArray(),[s,r,a,l]=t,c=1-r-l,u=s+a,h=c+l;return n>=s&&n<=u&&o>=c&&o<=h}}class Ib extends Cn{constructor(e){super(e);m(this,"enabled",!0);m(this,"controllerMap",new Map);m(this,"_disposed",!1);this.five=e}get state(){return{enabled:this.enabled}}get disposed(){return this._disposed}load(e,n){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");e.list.forEach(o=>{const s=o.pano_index,r=o.render_id;o.video_list.forEach(a=>{this.controllerMap.set(a.render_id,new aa(this.five,me(O({},a),{panoIndex:s,renderID:r,initialState:n==null?void 0:n.initialState})))})})}enable(e){var o;if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");if(this.enabled)return;this.enabled=!0,Array.from(this.controllerMap.values()).forEach(s=>s.enable());const n=(o=e==null?void 0:e.userAction)!=null?o:!0;this.hooks.emit("enable",{userAction:n})}disable(e){var o;if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");if(!this.enabled)return;this.enabled=!1,Array.from(this.controllerMap.values()).forEach(s=>s.disable());const n=(o=e==null?void 0:e.userAction)!=null?o:!0;this.hooks.emit("disable",{userAction:n})}lookAtVideoItemByRenderID(e){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");const n=this.controllerMap.get(e);if(!n)return this.logWarning(`ID \u4E3A ${e} \u7684\u70B9\u4F4D\u89C6\u9891\u4E0D\u5B58\u5728`);n.lookAtVideo()}add(e,n){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");n.forEach(o=>{if(this.controllerMap.get(o.render_id))return this.logWarning(`ID \u4E3A ${o.render_id} \u7684\u70B9\u4F4D\u89C6\u9891\u5DF2\u5B58\u5728`);const s=o.render_id;this.controllerMap.set(o.render_id,new aa(this.five,me(O({},o),{panoIndex:e,renderID:s,initialState:{enabled:this.enabled}})))})}removeByRenderID(e){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");const n=this.controllerMap.get(e);if(!n)return this.logWarning(`ID \u4E3A ${e} \u7684\u70B9\u4F4D\u89C6\u9891\u4E0D\u5B58\u5728`);n.dispose(),this.controllerMap.delete(e)}clear(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");Array.from(this.controllerMap.values()).forEach(e=>e.dispose()),this.controllerMap.clear()}dispose(){if(this.disposed)return this.logWarning("\u63D2\u4EF6\u5DF2\u88AB\u9500\u6BC1");this._disposed=!0,Array.from(this.controllerMap.values()).forEach(e=>e.dispose()),this.controllerMap.clear()}logWarning(e){console.warn("\u26D4 ==> [PanoVideoPluginController]:",e)}}const kb=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"})),xb=i=>new Ib(i);exports.CSS3DRender=Nt;exports.CSS3DRenderPlugin=Jt;exports.CameraMovementEffect=Ga;exports.CameraMovementPlugin=Th;exports.ContentType=dl;exports.CruisePlugin=Ap;exports.CruisePluginController=po;exports.DIRECTION=Ft;exports.DISPLAY_STRATEGY_TYPE=xt;exports.DimensionType=hl;exports.FLOOR_PLAN_ATTACHED_TO=pt;exports.FLOOR_TYPE_MAP=yh;exports.GuideLinePlugin=ll;exports.ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE=Dt;exports.ItemLabelPlugin=Gm;exports.Magnifier=Xa;exports.MapviewFloorplanPlugin=Kd;exports.ModelChassisCompassPlugin=Ph;exports.ModelEntryDoorGuidePlugin=kh;exports.ModelFloorplanPlugin=Ud;exports.ModelItemLabelPlugin=Cm;exports.ModelRoomLabelPlugin=au;exports.ModelTVVideoPlugin=Im;exports.ModelViewPlugin=mc;exports.Object3DHelperController=jl;exports.Object3DHelperPlugin=wb;exports.PLUGIN=Ai;exports.PaintBrush=fc;exports.PaintBrushTypeEnum=ot;exports.PanoCompassPlugin=$h;exports.PanoCursorRaycasterPlugin=zc;exports.PanoDoorLabelPlugin=tp;exports.PanoFloorplanRadarPlugin=vh;exports.PanoMeasurePlugin=Jf;exports.PanoMeasurePluginLine=Bt;exports.PanoMeasurePluginModel=fi;exports.PanoMeasurePluginPoint=Ye;exports.PanoMeasurePluginPolyline=hi;exports.PanoRulerPlugin=Qh;exports.PanoRulerProPlugin=Uh;exports.PanoSpatialTagPlugin=dm;exports.PanoTagPlugin=Fv;exports.PanoTagPluginController=Ml;exports.PanoVideoPlugin=xb;exports.PanoVideoPluginType=kb;exports.PointType=fl;exports.ROOM_FETILE_TYPE_MAP=bh;exports.ROOM_TYPE_MAP=wh;exports.Rotation=$e;exports.TopviewFloorplanPlugin=eh;exports.Util=rA;exports.VERSION=Po;exports.itemLabelPluginServerParams=Wm;exports.modelItemLabelPluginServerParams=Pm;exports.modelRoomLabelPluginServerParams=lu;exports.pluginFlag=Rv;