@realsee/dnalogel 2.0.5-alpha.2 → 2.0.5-alpha.3

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 (94) hide show
  1. package/dist/index.cjs.js +1 -1
  2. package/dist/index.es.js +2 -2
  3. package/dist/index.js +2 -2
  4. package/dist/index.umd.js +1 -1
  5. package/docs/classes/CruisePluginController.html +14 -14
  6. package/docs/classes/Magnifier.html +4 -4
  7. package/docs/classes/ModelRoomLabelController.html +4 -4
  8. package/docs/classes/PaintBrush.html +3 -3
  9. package/docs/enums/CameraMovementEffect.html +2 -2
  10. package/docs/enums/DIRECTION.html +1 -1
  11. package/docs/enums/DISPLAY_STRATEGY_TYPE.html +1 -1
  12. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +1 -1
  13. package/docs/enums/ITEM_LABEL_PLUGIN_DISPLAY_STRATEGY_TYPE.html +1 -1
  14. package/docs/enums/PaintBrushTypeEnum.html +1 -1
  15. package/docs/enums/Rotation.html +2 -2
  16. package/docs/index.html +1 -1
  17. package/docs/interfaces/CSS3DRenderPluginEventMap.html +2 -2
  18. package/docs/interfaces/CSS3DRenderPluginState.html +2 -2
  19. package/docs/interfaces/CameraMovementPluginExportType.html +2 -2
  20. package/docs/interfaces/FloorplanBounding.html +4 -4
  21. package/docs/interfaces/FloorplanData.html +2 -2
  22. package/docs/interfaces/FloorplanEntrance.html +7 -7
  23. package/docs/interfaces/FloorplanExtraObject.html +3 -3
  24. package/docs/interfaces/FloorplanExtraObject3D.html +2 -2
  25. package/docs/interfaces/FloorplanFloorData.html +2 -2
  26. package/docs/interfaces/FloorplanImagePosition.html +2 -2
  27. package/docs/interfaces/FloorplanObserver.html +2 -2
  28. package/docs/interfaces/FloorplanOutlineItem.html +2 -2
  29. package/docs/interfaces/FloorplanPosition.html +2 -2
  30. package/docs/interfaces/FloorplanRoomItem.html +6 -6
  31. package/docs/interfaces/FloorplanRoomLabelItem.html +3 -3
  32. package/docs/interfaces/FloorplanServerBounding.html +4 -4
  33. package/docs/interfaces/FloorplanServerComputedData.html +1 -1
  34. package/docs/interfaces/FloorplanServerData.html +2 -2
  35. package/docs/interfaces/FloorplanServerDoorItem.html +1 -1
  36. package/docs/interfaces/FloorplanServerDoorPosition.html +1 -1
  37. package/docs/interfaces/FloorplanServerEntrance.html +7 -7
  38. package/docs/interfaces/FloorplanServerFloorData.html +2 -2
  39. package/docs/interfaces/FloorplanServerImagePosition.html +2 -2
  40. package/docs/interfaces/FloorplanServerObserver.html +2 -2
  41. package/docs/interfaces/FloorplanServerOutlineItem.html +2 -2
  42. package/docs/interfaces/FloorplanServerPosition.html +2 -2
  43. package/docs/interfaces/FloorplanServerRoomItem.html +7 -7
  44. package/docs/interfaces/FloorplanServerRoomLabelItem.html +3 -3
  45. package/docs/interfaces/ItemLabelPluginData.html +1 -1
  46. package/docs/interfaces/ItemLabelPluginExportReturnsType.html +1 -1
  47. package/docs/interfaces/ItemLabelPluginParametersType.html +1 -1
  48. package/docs/interfaces/LineJson.html +1 -1
  49. package/docs/interfaces/ModelChassisCompassPluginData.html +1 -1
  50. package/docs/interfaces/ModelChassisCompassPluginExportType.html +1 -1
  51. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +1 -1
  52. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +1 -1
  53. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +1 -1
  54. package/docs/interfaces/ModelItemLabelPluginData.html +1 -1
  55. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +1 -1
  56. package/docs/interfaces/ModelItemLabelPluginParametersType.html +1 -1
  57. package/docs/interfaces/ModelRoomLabelPluginData.html +1 -1
  58. package/docs/interfaces/ModelTVVideoPluginData.html +1 -1
  59. package/docs/interfaces/ModelTVVideoPluginExportType.html +1 -1
  60. package/docs/interfaces/ModelTVVideoPluginParameterType.html +1 -1
  61. package/docs/interfaces/ModelViewPluginExportType.html +1 -1
  62. package/docs/interfaces/OpenParameter.html +2 -2
  63. package/docs/interfaces/PaintBrushAction.html +7 -7
  64. package/docs/interfaces/PaintBrushConfigs.html +1 -1
  65. package/docs/interfaces/PaintBrushState.html +1 -1
  66. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +6 -6
  67. package/docs/interfaces/PanoCursorRaycasterPluginParameterType.html +1 -1
  68. package/docs/interfaces/PanoMeasureParameterType.html +2 -2
  69. package/docs/interfaces/PanoRulerPluginExportType.html +1 -1
  70. package/docs/interfaces/PanoRulerPluginOptions.html +1 -1
  71. package/docs/interfaces/PanoRulerPluginParameterType.html +1 -1
  72. package/docs/interfaces/PanoRulerProPluginExportType.html +1 -1
  73. package/docs/interfaces/PanoRulerProPluginOptions.html +1 -1
  74. package/docs/interfaces/PanoRulerProPluginParameterType.html +1 -1
  75. package/docs/interfaces/PanoRulerProPluginState.html +1 -1
  76. package/docs/interfaces/PanoSpatialTagPluginContentEvent.html +1 -1
  77. package/docs/interfaces/PanoSpatialTagPluginContentReplacement.html +1 -1
  78. package/docs/interfaces/PanoSpatialTagPluginData.html +1 -1
  79. package/docs/interfaces/PanoSpatialTagPluginDataElement.html +1 -1
  80. package/docs/interfaces/PanoSpatialTagPluginExportType.html +1 -1
  81. package/docs/interfaces/PanoSpatialTagPluginOriginElement.html +1 -1
  82. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +1 -1
  83. package/docs/interfaces/PanoSpatialTagPluginPointElement.html +1 -1
  84. package/docs/interfaces/PanoSpatialTagPluginTagElement.html +1 -1
  85. package/docs/interfaces/Point.html +1 -1
  86. package/docs/interfaces/PointJson.html +1 -1
  87. package/docs/interfaces/Room.html +1 -1
  88. package/docs/interfaces/RoomInfo.html +1 -1
  89. package/docs/interfaces/RoomLabel.html +7 -7
  90. package/docs/interfaces/RoomRules.html +1 -1
  91. package/docs/interfaces/Rooms.html +1 -1
  92. package/docs/modules.html +17 -17
  93. package/libs/ModelTVVideoPlugin/Plugin.js +2 -2
  94. package/package.json +1 -1
package/dist/index.cjs.js CHANGED
@@ -526,7 +526,7 @@ void main() {
526
526
  width: 100%;
527
527
  height: 100%;
528
528
  z-index: 5;
529
- `,e.container.style.pointerEvents="none";const n=v=>(e.wrapper=v,v.appendChild(e.container),l(),!0),o=v=>{e.itemLabels=ud(v),l()},s=()=>(e.enabled||(e.enabled=!0,l()),!0),r=()=>(e.enabled&&(e.enabled=!1,l()),!0),a=()=>{h(),e.container.remove()},l=()=>{var v;if(!!e.wrapper){if(!e.enabled||!e.fiveModeEnabled){(v=e.app)==null||v.$destroy(),e.app=void 0;return}e.app?e.app.$set({five:i,itemLabels:e.itemLabels}):e.app=new hd({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",f),i.once("dispose",a)},h=()=>{i.off("modeChange",f)},f=v=>{if(!!e.enabled){if(v!==ye.Five.Mode.Floorplan){e.fiveModeEnabled=!1,l();return}i.once("initAnimationEnded",()=>{e.fiveModeEnabled=i.currentMode===ye.Five.Mode.Floorplan,l()})}};return c(),{appendTo:n,load:o,enable:s,disable:r,dispose:a,hooks:e.hooks}},fd={name:"ModelItemLabelPlugin",version:0};var jt=(i=>(i.TOP_LEFT="topLeft",i.TOP_RIGHT="topRight",i.BOTTOM_LEFT="bottomLeft",i.BOTTOM_RIGHT="bottomRight",i))(jt||{});function md(i){if(i.length===0)return[];if(Array.isArray(i[0]))return i;let t=[];return i.forEach(e=>{const n=[e[jt.TOP_LEFT],e[jt.BOTTOM_LEFT],e[jt.BOTTOM_RIGHT],e[jt.TOP_RIGHT]];t.push(n)}),t}const pd=(i,{videoElement:t})=>{const e={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:t},n=Xn(i),o=new Map,s=g=>{e.videoTexture&&(e.videoTexture.image.muted=g)},r=()=>e.videoTexture?e.videoTexture.image.muted:!0,a=()=>{if(e.enabled||!e.videoTexture)return;e.enabled=!0,e.videoMeshes=c(),e.videoMeshes.forEach(w=>i.scene.add(w));const g=()=>{if(!e.videoTexture)return;const w=()=>{var E;!e.videoTexture||((E=e.videoTexture)==null||E.image.removeEventListener("timeupdate",w),e.videoTextureEnabled=!0,e.videoMeshes.forEach(k=>{k.material.map!==e.videoTexture&&(k.material.map=e.videoTexture)}),i.needsRender=!0)};e.videoTexture.image.addEventListener("timeupdate",w),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)g();else return i.once("modelLoaded",()=>g())},l=()=>{!e.enabled||(e.enabled=!1,e.videoMeshes.forEach(g=>{g.geometry.dispose(),g.material.dispose(),i.scene.remove(g),e.videoTexture&&e.videoTexture.image.pause()}),e.videoMeshes=[],i.needsRender=!0)},c=()=>e.rectPoints.map((g,w)=>{const E=new O.BufferGeometry,k=128,z=[];z.push(...g[0].toArray());for(let T=1;T<k;T++)z.push(g[0].x+(g[1].x-g[0].x)*T/k,g[0].y+(g[1].y-g[0].y)*T/k,g[0].z+(g[1].z-g[0].z)*T/k);z.push(...g[1].toArray()),z.push(...g[2].toArray());for(let T=1;T<k;T++)z.push(g[2].x+(g[3].x-g[2].x)*T/k,g[2].y+(g[3].y-g[2].y)*T/k,g[2].z+(g[3].z-g[2].z)*T/k);z.push(...g[3].toArray());const I=[];I.push(0,1);for(let T=1;T<k;T++)I.push(0,1-T/k);I.push(0,0),I.push(1,0);for(let T=1;T<k;T++)I.push(1,T/k);I.push(1,1);const D=[];for(let T=0;T<k;T++)D.push(T,T+1,k*2-T,T,k*2-T,k*2+1-T);E.setAttribute("position",new O.BufferAttribute(new Float32Array(z),3)),E.setAttribute("uv",new O.BufferAttribute(new Float32Array(I),2)),E.setIndex(new O.BufferAttribute(new Uint32Array(D),1));const L=new O.AxesHelper(10);i.scene.add(L);const S=new O.MeshBasicMaterial({map:e.videoTextureEnabled?e.videoTexture:e.imageTexture,side:O.DoubleSide}),N=new O.Mesh(E,S);N.renderOrder=1,N.name=`ModelTVVideoPlugin-${w}-${performance.now()}`;const H=[g[1],g[2],g[3],g[0]],_=n.create3DDomContainer(H);if(_!=null&&_.container){const T=document.createElement("div");T.classList.add("play-icon"),T.style.width="100%",T.style.height="100%",T.style.display="flex",T.style.justifyContent="center",T.style.alignItems="center",T.style.pointerEvents="none",_.container.appendChild(T);const J=document.createElement("img");J.src="//vrlab-static.ljcdn.com/release/web/play.2ada5b6f.png",J.style.width="200px",J.style.pointerEvents="auto",J.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()},T.appendChild(J),o.set(N,_)}return N}),h=g=>{const w=new O.TextureLoader().load(g);return w.minFilter=O.LinearFilter,w.magFilter=O.LinearFilter,w.format=O.RGBFormat,w},f=(g,w)=>new Promise((E,k)=>{const z=new XMLHttpRequest;z.onreadystatechange=()=>{if(z.readyState==4)if(z.status==200){const I=window.URL||window.webkitURL;w=w||document.createElement("video"),w.crossOrigin="anonymous",w.muted=!0,w.loop=!0,w.playsInline=!0,w.src=I.createObjectURL(z.response);const D=new O.VideoTexture(w);D.minFilter=O.LinearFilter,D.magFilter=O.LinearFilter,D.format=O.RGBFormat,E(Object.assign(D,{videoSource:g}))}else k(new Error("Video download Error: "+z.status))},z.onerror=I=>k(I),z.open("GET",g),z.responseType="blob",z.send()}),u=async(g,w)=>{const{video_src:E,video_poster_src:k,points:z}=g;e.videoSource=E,e.rectPoints=md(z).map(I=>I.map(({x:D,y:L,z:S})=>new O.Vector3(D,L,S))),e.imageTexture=h(k),w&&(e.videoElement=w),e.videoTexture=await f(e.videoSource,e.videoElement),e.enabled=!!g.enable,e.enabled&&a()},m=g=>{if(!e.enabled)return;const w=e.videoMeshes;if(!(!w||g.intersectObjects(w).length===0))return e.videoTexture&&(e.videoTexture.image.paused||e.videoTexture.image.pause()),!1},v=g=>{g==="Floorplan"||e.videoTexture.image.played?n.hide():n.show()},b=()=>{if(!e.enabled)return;const g=i.camera.position;if(o.forEach((w,E)=>{const k=w.css3DObject.position.clone(),z=k.clone().sub(g).normalize(),I=new O.Raycaster(g,z),D=i.model.intersectRaycaster(I)[0],L=k.distanceTo(g),S=.01;D&&D.distance+S<L?w.hide():w.show()}),!r()){const w=e.rectPoints.find(E=>{const k=E[0].clone().add(E[1]).add(E[2]).add(E[3]).divideScalar(4);return E.map(z=>z.clone().add(k).divideScalar(2)).filter(z=>{const I=z.distanceTo(g),D=new O.Raycaster(g,z.clone().sub(g).normalize()),L=i.model.intersectRaycaster(D)[0],S=.01;return!(L&&L.distance+S<I)}).length>=2});(!w||w.length===0)&&s(!0)}},A=()=>{l(),e.videoTexture=void 0,i.off("modeChange",v),i.off("wantsTapGesture",m),i.off("panoArrived",b),i.off("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})})};return i.on("modeChange",v),i.on("wantsTapGesture",m),i.on("panoArrived",b),i.on("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),{enable:a,disable:l,load:u,dispose:A,state:e,css3DRenderPlugin:n}};function gd(i){ge(i,"svelte-1q3t254",`.item-label-item.svelte-1q3t254.svelte-1q3t254{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-1q3t254-fadeIn .3s ease-in}.item-label-item.fold.svelte-1q3t254>.item-label-item__text-wrap.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254:after{visibility:visible}.item-label-item__text-wrap.svelte-1q3t254.svelte-1q3t254{height:-moz-fit-content;height:fit-content;padding:0.625rem 1.04167rem 0.625rem 0.625rem;position:absolute;width:-moz-max-content;width:max-content;max-width:24.63542rem;min-height:4.79167rem;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:1.5px solid rgba(255, 255, 255, .65);border-radius:0.15625rem;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-1q3t254.svelte-1q3t254{padding:0;max-width:unset;min-height:unset;background-image:unset;border:0;border-radius:0}.icon-wrap.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:100%;display:flex;justify-content:center;align-content:center}.icon.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:3.54167rem;background-repeat:no-repeat;background-size:contain;background-position:center}.item-label-text.svelte-1q3t254.svelte-1q3t254{margin-left:0.625rem;padding-left:0.625rem;min-height:3.54167rem;height:auto;display:flex;flex-flow:column;justify-content:space-around;align-content:flex-start;border-left:solid rgba(255, 255, 255, .2) 1px;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-1q3t254.svelte-1q3t254{white-space:nowrap;font-size:1.14583rem;font-weight:bold;line-height:1.5625rem}.item-name.svelte-1q3t254.svelte-1q3t254{height:auto;word-wrap:break-word;word-break:break-all;font-size:1.04167rem;line-height:1.45833rem}.item-label-item__bar.svelte-1q3t254.svelte-1q3t254{position:absolute;bottom:0;width:0.15625rem;background-image:linear-gradient(to bottom, white, rgba(255, 255, 255, 0));box-shadow:0 2px 0.41667rem 0 rgba(0, 0, 0, 0.20);pointer-events:none}.item-label-item__bar.anchor.svelte-1q3t254.svelte-1q3t254:after{content:'';position:absolute;bottom:0;width:1.25rem;height:1.25rem;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.54688rem, 50%)}@keyframes svelte-1q3t254-fadeIn{from{opacity:0
529
+ `,e.container.style.pointerEvents="none";const n=v=>(e.wrapper=v,v.appendChild(e.container),l(),!0),o=v=>{e.itemLabels=ud(v),l()},s=()=>(e.enabled||(e.enabled=!0,l()),!0),r=()=>(e.enabled&&(e.enabled=!1,l()),!0),a=()=>{h(),e.container.remove()},l=()=>{var v;if(!!e.wrapper){if(!e.enabled||!e.fiveModeEnabled){(v=e.app)==null||v.$destroy(),e.app=void 0;return}e.app?e.app.$set({five:i,itemLabels:e.itemLabels}):e.app=new hd({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",f),i.once("dispose",a)},h=()=>{i.off("modeChange",f)},f=v=>{if(!!e.enabled){if(v!==ye.Five.Mode.Floorplan){e.fiveModeEnabled=!1,l();return}i.once("initAnimationEnded",()=>{e.fiveModeEnabled=i.currentMode===ye.Five.Mode.Floorplan,l()})}};return c(),{appendTo:n,load:o,enable:s,disable:r,dispose:a,hooks:e.hooks}},fd={name:"ModelItemLabelPlugin",version:0};var jt=(i=>(i.TOP_LEFT="topLeft",i.TOP_RIGHT="topRight",i.BOTTOM_LEFT="bottomLeft",i.BOTTOM_RIGHT="bottomRight",i))(jt||{});function md(i){if(i.length===0)return[];if(Array.isArray(i[0]))return i;let t=[];return i.forEach(e=>{const n=[e[jt.TOP_LEFT],e[jt.BOTTOM_LEFT],e[jt.BOTTOM_RIGHT],e[jt.TOP_RIGHT]];t.push(n)}),t}const pd=(i,{videoElement:t})=>{const e={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:t},n=Xn(i),o=new Map,s=g=>{e.videoTexture&&(e.videoTexture.image.muted=g)},r=()=>e.videoTexture?e.videoTexture.image.muted:!0,a=()=>{if(e.enabled||!e.videoTexture)return;e.enabled=!0,e.videoMeshes=c(),e.videoMeshes.forEach(w=>i.scene.add(w));const g=()=>{if(!e.videoTexture)return;const w=()=>{var E;!e.videoTexture||((E=e.videoTexture)==null||E.image.removeEventListener("timeupdate",w),e.videoTextureEnabled=!0,e.videoMeshes.forEach(k=>{k.material.map!==e.videoTexture&&(k.material.map=e.videoTexture)}),i.needsRender=!0)};e.videoTexture.image.addEventListener("timeupdate",w),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)g();else return i.once("modelLoaded",()=>g())},l=()=>{!e.enabled||(e.enabled=!1,e.videoMeshes.forEach(g=>{g.geometry.dispose(),g.material.dispose(),i.scene.remove(g),e.videoTexture&&e.videoTexture.image.pause()}),e.videoMeshes=[],i.needsRender=!0)},c=()=>e.rectPoints.map((g,w)=>{const E=new O.BufferGeometry,k=128,z=[];z.push(...g[0].toArray());for(let T=1;T<k;T++)z.push(g[0].x+(g[1].x-g[0].x)*T/k,g[0].y+(g[1].y-g[0].y)*T/k,g[0].z+(g[1].z-g[0].z)*T/k);z.push(...g[1].toArray()),z.push(...g[2].toArray());for(let T=1;T<k;T++)z.push(g[2].x+(g[3].x-g[2].x)*T/k,g[2].y+(g[3].y-g[2].y)*T/k,g[2].z+(g[3].z-g[2].z)*T/k);z.push(...g[3].toArray());const I=[];I.push(0,1);for(let T=1;T<k;T++)I.push(0,1-T/k);I.push(0,0),I.push(1,0);for(let T=1;T<k;T++)I.push(1,T/k);I.push(1,1);const D=[];for(let T=0;T<k;T++)D.push(T,T+1,k*2-T,T,k*2-T,k*2+1-T);E.setAttribute("position",new O.BufferAttribute(new Float32Array(z),3)),E.setAttribute("uv",new O.BufferAttribute(new Float32Array(I),2)),E.setIndex(new O.BufferAttribute(new Uint32Array(D),1));const L=new O.AxesHelper(10);i.scene.add(L);const S=new O.MeshBasicMaterial({map:e.videoTextureEnabled?e.videoTexture:e.imageTexture,side:O.DoubleSide}),N=new O.Mesh(E,S);N.renderOrder=1,N.name=`ModelTVVideoPlugin-${w}-${performance.now()}`;const H=[g[1],g[2],g[3],g[0]],_=n.create3DDomContainer(H);if(_!=null&&_.container){const T=document.createElement("div");T.classList.add("play-icon"),T.style.width="100%",T.style.height="100%",T.style.display="flex",T.style.justifyContent="center",T.style.alignItems="center",T.style.pointerEvents="none",_.container.appendChild(T);const J=document.createElement("img");J.src="//vrlab-static.ljcdn.com/release/web/play.2ada5b6f.png",J.style.width="200px",J.style.pointerEvents="auto",J.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()},T.appendChild(J),o.set(N,_)}return N}),h=g=>{const w=new O.TextureLoader().load(g);return w.minFilter=O.LinearFilter,w.magFilter=O.LinearFilter,w.format=O.RGBFormat,w},f=(g,w)=>new Promise((E,k)=>{const z=new XMLHttpRequest;z.onreadystatechange=()=>{if(z.readyState==4)if(z.status==200){const I=window.URL||window.webkitURL;w=w||document.createElement("video"),w.crossOrigin="anonymous",w.muted=!0,w.loop=!0,w.playsInline=!0,w.src=I.createObjectURL(z.response);const D=new O.VideoTexture(w);D.minFilter=O.LinearFilter,D.magFilter=O.LinearFilter,D.format=O.RGBFormat,E(Object.assign(D,{videoSource:g}))}else k(new Error("Video download Error: "+z.status))},z.onerror=I=>k(I),z.open("GET",g),z.responseType="blob",z.send()}),u=async(g,w)=>{const{video_src:E,video_poster_src:k,points:z}=g;e.videoSource=E,e.rectPoints=md(z).map(I=>I.map(({x:D,y:L,z:S})=>new O.Vector3(D,L,S))),e.imageTexture=h(k),w&&(e.videoElement=w),e.videoTexture=await f(e.videoSource,e.videoElement),e.enabled=!!g.enable,e.enabled&&a()},m=g=>{if(!e.enabled)return;const w=e.videoMeshes;if(!(!w||g.intersectObjects(w).length===0))return e.videoTexture&&(e.videoTexture.image.paused||e.videoTexture.image.pause()),!1},v=g=>{g==="Floorplan"?n.hide():e.videoTexture.image.paused?n.show():n.hide()},b=()=>{if(!e.enabled)return;const g=i.camera.position;if(o.forEach((w,E)=>{const k=w.css3DObject.position.clone(),z=k.clone().sub(g).normalize(),I=new O.Raycaster(g,z),D=i.model.intersectRaycaster(I)[0],L=k.distanceTo(g),S=.01;D&&D.distance+S<L?w.hide():w.show()}),!r()){const w=e.rectPoints.find(E=>{const k=E[0].clone().add(E[1]).add(E[2]).add(E[3]).divideScalar(4);return E.map(z=>z.clone().add(k).divideScalar(2)).filter(z=>{const I=z.distanceTo(g),D=new O.Raycaster(g,z.clone().sub(g).normalize()),L=i.model.intersectRaycaster(D)[0],S=.01;return!(L&&L.distance+S<I)}).length>=2});(!w||w.length===0)&&s(!0)}},A=()=>{l(),e.videoTexture=void 0,i.off("modeChange",v),i.off("wantsTapGesture",m),i.off("panoArrived",b),i.off("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),o.clear()};return i.on("modeChange",v),i.on("wantsTapGesture",m),i.on("panoArrived",b),i.on("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),{enable:a,disable:l,load:u,dispose:A,state:e,css3DRenderPlugin:n}};function gd(i){ge(i,"svelte-1q3t254",`.item-label-item.svelte-1q3t254.svelte-1q3t254{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-1q3t254-fadeIn .3s ease-in}.item-label-item.fold.svelte-1q3t254>.item-label-item__text-wrap.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254:after{visibility:visible}.item-label-item__text-wrap.svelte-1q3t254.svelte-1q3t254{height:-moz-fit-content;height:fit-content;padding:0.625rem 1.04167rem 0.625rem 0.625rem;position:absolute;width:-moz-max-content;width:max-content;max-width:24.63542rem;min-height:4.79167rem;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:1.5px solid rgba(255, 255, 255, .65);border-radius:0.15625rem;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-1q3t254.svelte-1q3t254{padding:0;max-width:unset;min-height:unset;background-image:unset;border:0;border-radius:0}.icon-wrap.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:100%;display:flex;justify-content:center;align-content:center}.icon.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:3.54167rem;background-repeat:no-repeat;background-size:contain;background-position:center}.item-label-text.svelte-1q3t254.svelte-1q3t254{margin-left:0.625rem;padding-left:0.625rem;min-height:3.54167rem;height:auto;display:flex;flex-flow:column;justify-content:space-around;align-content:flex-start;border-left:solid rgba(255, 255, 255, .2) 1px;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-1q3t254.svelte-1q3t254{white-space:nowrap;font-size:1.14583rem;font-weight:bold;line-height:1.5625rem}.item-name.svelte-1q3t254.svelte-1q3t254{height:auto;word-wrap:break-word;word-break:break-all;font-size:1.04167rem;line-height:1.45833rem}.item-label-item__bar.svelte-1q3t254.svelte-1q3t254{position:absolute;bottom:0;width:0.15625rem;background-image:linear-gradient(to bottom, white, rgba(255, 255, 255, 0));box-shadow:0 2px 0.41667rem 0 rgba(0, 0, 0, 0.20);pointer-events:none}.item-label-item__bar.anchor.svelte-1q3t254.svelte-1q3t254:after{content:'';position:absolute;bottom:0;width:1.25rem;height:1.25rem;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.54688rem, 50%)}@keyframes svelte-1q3t254-fadeIn{from{opacity:0
530
530
  }to{opacity:1
531
531
  }}`)}function vd(i){let t,e,n,o=(i[0].code||i[0].id)+"",s,r,a,l=i[0].name+"",c,h=i[0].icon&&ds(i);return{c(){h&&h.c(),t=fe(),e=G("div"),n=G("span"),s=Ue(o),r=fe(),a=G("span"),c=Ue(l),x(n,"class","item-model svelte-1q3t254"),x(a,"class","item-name svelte-1q3t254"),x(e,"class","item-label-text svelte-1q3t254")},m(f,u){h&&h.m(f,u),Y(f,t,u),Y(f,e,u),X(e,n),X(n,s),X(e,r),X(e,a),X(a,c)},p(f,u){f[0].icon?h?h.p(f,u):(h=ds(f),h.c(),h.m(t.parentNode,t)):h&&(h.d(1),h=null),u&1&&o!==(o=(f[0].code||f[0].id)+"")&&dt(s,o),u&1&&l!==(l=f[0].name+"")&&dt(c,l)},d(f){h&&h.d(f),f&&Q(t),f&&Q(e)}}}function bd(i){let t;return{c(){t=G("div")},m(e,n){Y(e,t,n),i[6](t)},p:ne,d(e){e&&Q(t),i[6](null)}}}function ds(i){let t,e,n,o,s;return{c(){t=G("div"),e=G("div"),x(e,"class","icon svelte-1q3t254"),x(e,"style",n=`background-image: url(${i[0].icon})`),x(t,"class","icon-wrap svelte-1q3t254")},m(r,a){Y(r,t,a),X(t,e),o||(s=qe(t,"click",i[7]),o=!0)},p(r,a){a&1&&n!==(n=`background-image: url(${r[0].icon})`)&&x(e,"style",n)},d(r){r&&Q(t),o=!1,s()}}}function Ad(i){let t,e,n,o,s,r,a,l,c,h;function f(v,b){return b&1&&(n=null),n==null&&(n=!!Boolean(typeof v[0].render=="function")),n?bd:vd}let u=f(i,-1),m=u(i);return{c(){t=G("div"),e=G("div"),m.c(),s=fe(),r=G("div"),x(e,"class",o=je(tt("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof i[0].render=="function")}))+" svelte-1q3t254"),j(e,"bottom",`${i[0].strokeLength}px`),x(r,"class",a=je(tt("item-label-item__bar",{anchor:i[1]}))+" svelte-1q3t254"),j(r,"height",`${i[0].strokeLength}px`),x(t,"class",l=je(tt("item-label-item",{fold:i[0].isFold}))+" svelte-1q3t254"),j(t,"z-index",i[0].zIndex),j(t,"transform",i[0].transform)},m(v,b){Y(v,t,b),X(t,e),m.m(e,null),X(t,s),X(t,r),c||(h=qe(e,"click",i[4]),c=!0)},p(v,[b]){u===(u=f(v,b))&&m?m.p(v,b):(m.d(1),m=u(v),m&&(m.c(),m.m(e,null))),b&1&&o!==(o=je(tt("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof v[0].render=="function")}))+" svelte-1q3t254")&&x(e,"class",o),b&1&&j(e,"bottom",`${v[0].strokeLength}px`),b&2&&a!==(a=je(tt("item-label-item__bar",{anchor:v[1]}))+" svelte-1q3t254")&&x(r,"class",a),b&1&&j(r,"height",`${v[0].strokeLength}px`),b&1&&l!==(l=je(tt("item-label-item",{fold:v[0].isFold}))+" svelte-1q3t254")&&x(t,"class",l),b&1&&j(t,"z-index",v[0].zIndex),b&1&&j(t,"transform",v[0].transform)},i:ne,o:ne,d(v){v&&Q(t),m.d(),c=!1,h()}}}function yd(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(f){Rt[f?"unshift":"push"](()=>{l=f,e(3,l)})}const h=f=>r(n);return i.$$set=f=>{"itemLabel"in f&&e(0,n=f.itemLabel),"hooks"in f&&e(5,o=f.hooks),"anchorEnabled"in f&&e(1,s=f.anchorEnabled),"onIconClick"in f&&e(2,r=f.onIconClick)},i.$$.update=()=>{if(i.$$.dirty&9&&typeof n.render=="function"&&l&&l.children.length===0){const f=n.render(n);f&&l.appendChild(f)}},[n,s,r,l,a,o,c,h]}class Pd extends de{constructor(t){super(),ue(this,t,yd,Ad,he,{itemLabel:0,hooks:5,anchorEnabled:1,onIconClick:2},gd)}}const{Raycaster:wd,Vector3:Ef}=O,fs=(i,t,e,n)=>{const o=t.clone().sub(e).normalize(),s=new wd;s.set(e,o);const[r]=i.model.intersectRaycaster(s);return r&&r.distance+.01<n};var It=(i=>(i.SMALL="small",i.MIDLLE="middle",i.LARGE="large",i.EXTRA_LARGE="x-large",i))(It||{});const Ed=(i,t)=>{switch(t){case It.SMALL:return Math.ceil(-27.78*i+85);case It.MIDLLE:return Math.ceil(-38.9*i+130);case It.LARGE:return Math.ceil(-44.44*i+140);case It.EXTRA_LARGE:return Math.ceil(-92.59*i+300)}},Id=i=>`translate(${i[0]}px, ${i[1]}px)`;function ms(i){return i.map(t=>({observerIndex:void 0,visible:!1,isFold:!1,...t}))}function xd(i){ge(i,"svelte-gk8s47",".item-labels-container.svelte-gk8s47{width:100%;height:100%;position:relative}")}function ps(i,t,e){const n=i.slice();return n[30]=t[e],n}function gs(i){let t,e;return t=new Pd({props:{itemLabel:i[30],hooks:i[0],anchorEnabled:i[2],onIconClick:i[6]}}),{c(){Pe(t.$$.fragment)},m(n,o){ve(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||(F(t.$$.fragment,n),e=!0)},o(n){K(t.$$.fragment,n),e=!1},d(n){be(t,n)}}}function vs(i,t){let e,n,o,s=t[30].visible&&gs(t);return{key:i,first:null,c(){e=Ge(),s&&s.c(),n=Ge(),this.first=e},m(r,a){Y(r,e,a),s&&s.m(r,a),Y(r,n,a),o=!0},p(r,a){t=r,t[30].visible?s?(s.p(t,a),a[0]&2&&F(s,1)):(s=gs(t),s.c(),F(s,1),s.m(n.parentNode,n)):s&&(Ie(),K(s,1,1,()=>{s=null}),xe())},i(r){o||(F(s),o=!0)},o(r){K(s),o=!1},d(r){r&&Q(e),s&&s.d(r),r&&Q(n)}}}function Cd(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=ps(i,r,l),h=a(c);n.set(h,e[l]=vs(h,c))}return{c(){t=G("div");for(let l=0;l<e.length;l+=1)e[l].c();x(t,"class","item-labels-container svelte-gk8s47"),Ke(()=>i[12].call(t)),j(t,"opacity",i[5]?1:0)},m(l,c){Y(l,t,c);for(let h=0;h<e.length;h+=1)e[h].m(t,null);o=Ft(t,i[12].bind(t)),s=!0},p(l,c){c[0]&71&&(r=l[1],Ie(),e=At(e,c,a,1,l,r,n,t,Gt,vs,null,ps),xe()),c[0]&32&&j(t,"opacity",l[5]?1:0)},i(l){if(!s){for(let c=0;c<r.length;c+=1)F(e[c]);s=!0}},o(l){for(let c=0;c<e.length;c+=1)K(e[c]);s=!1},d(l){l&&Q(t);for(let c=0;c<e.length;c+=1)e[c].d();o()}}}let Ld=11;function kd(i,t,e){const{Raycaster:n,Vector3:o}=O;let{five:s}=t,{modelOcclusionEnable:r}=t,{itemLabels:a}=t,{hooks:l}=t,{displayStrategyType:c}=t,{maxVisibleDistance:h}=t,f=null,u=null,m=(s==null?void 0:s.currentMode)===ye.Five.Mode.Panorama,v,b,A=[],g=!0;const w=(B,$)=>{const U=B.camera.position.clone(),te=new o($.modelPosition[0],$.modelPosition[1],$.modelPosition[2]),W=te.distanceTo(U);return h!==void 0&&B.state.mode===ye.Five.Mode.Panorama&&W>h?!1:fs(B,te.clone().sub(U).normalize(),U,W)},E=B=>{const{camera:$,model:U}=s,{x:te,y:W,z:ee}=B.clone().project($),se=(te+1)/2,ie=(2-(W+1))/2,Ce=Math.abs(ee)<1&&[se,ie].every(Me=>Me<1&&Me>=0);return Boolean(Ce)},k=(B,$)=>{const U=new o($.modelPosition[0],$.modelPosition[1],$.modelPosition[2]),te=B.project2d(U),W=te==null?void 0:te.x,ee=te==null?void 0:te.y;return[W,ee]},z=(B,$)=>{const U=$.map(W=>{if(B.state.panoIndex!==W.panoIndex)return Object.assign(Object.assign({},W),{visible:!1});const ee=k(B,W);W.name.length*Ld;const se=Ed(W.modelPosition[1],c),ie=B.currentMode===ye.Five.Mode.Panorama?E(new o(W.position[0],W.position[1],W.position[2])):!0,ce=r?w(B,W):!1,Ae=ie&&!ce;if(!Ae)return Object.assign(Object.assign({},W),{visible:Ae});A.push(ee);const Ce=Id(ee);return Object.assign(Object.assign({},W),{visible:Ae,transform:Ce,strokeLength:se})}),te=U.filter(({visible:W})=>W).map(W=>({itemLabelItem:W,distance:new o(W.modelPosition[0],W.modelPosition[1],W.modelPosition[2]).clone().distanceTo(B.camera.position)})).sort((W,ee)=>W.distance-ee.distance);return U.map(W=>{const ee=te.findIndex(se=>se.itemLabelItem.id===W.id);return ee!==void 0?Object.assign(Object.assign({},W),{zIndex:ee*10}):W})},I=()=>{A=[],e(1,u=z(s,u))},D=()=>{e(5,g=!1),L()},L=hr(()=>{e(5,g=!0),I()},300),S=()=>{s.once("renderFrame",I)},N=()=>{window.addEventListener("resize",S,!1)},H=()=>{f!==a&&(e(1,u=ms(a)),f=a,I())},_=(B,$)=>{let U=[];for(let W=0;W<$.length;W++){const{position:ee,panoIndex:se}=$[W],ie=B.distanceTo(ee);(h===void 0||ie<=h||s.state.mode!==ye.Five.Mode.Panorama)&&U.push({panoIndex:se,obVector:ee,distance:ie})}U=U.sort((W,ee)=>W.distance-ee.distance);let te;for(let W=0;W<U.length;W++){const{obVector:ee,distance:se,panoIndex:ie}=U[W];if(!fs(s,B,ee,se)){te=ie;break}}return typeof te=="number"?$[te]:void 0},T=B=>{if(s.state.mode===ye.Five.Mode.Panorama)return;const $=s.work.observers,U=new o().fromArray(B.position),te=_(U,$);if(te&&(B.observerIndex=te.panoIndex),typeof B.observerIndex=="number"){const W=$[B.observerIndex],ee=U.clone().sub(W.position).normalize(),se={longitude:Math.PI+Math.atan2(ee.x,ee.z),latitude:Math.acos(ee.y/ee.length())-Math.PI/2};s.setState(Object.assign(Object.assign({},se),{mode:ye.Five.Mode.Panorama,panoIndex:B.observerIndex})),s.once("initAnimationEnded",()=>{e(1,u=u.map(ie=>Object.assign(Object.assign({},ie),{isFold:ie.id!==B.id}))),s.once("cameraUpdate",()=>{e(1,u=u.map(ie=>Object.assign(Object.assign({},ie),{isFold:!1})))})})}};Rs(()=>{H()}),Ct(()=>{e(1,u=ms(a)),f=a,I(),N(),s.on("cameraUpdate",D)}),nn(()=>{s.off("cameraUpdate",D),window.removeEventListener("resize",S,!1)});function J(){v=this.clientWidth,b=this.clientHeight,e(3,v),e(4,b)}return i.$$set=B=>{"five"in B&&e(7,s=B.five),"modelOcclusionEnable"in B&&e(8,r=B.modelOcclusionEnable),"itemLabels"in B&&e(9,a=B.itemLabels),"hooks"in B&&e(0,l=B.hooks),"displayStrategyType"in B&&e(10,c=B.displayStrategyType),"maxVisibleDistance"in B&&e(11,h=B.maxVisibleDistance)},[l,u,m,v,b,g,T,s,r,a,c,h,J]}class Td extends de{constructor(t){super(),ue(this,t,kd,Cd,he,{five:7,modelOcclusionEnable:8,itemLabels:9,hooks:0,displayStrategyType:10,maxVisibleDistance:11},xd,[-1,-1])}}function Dd(i){return i.item_labels.map(t=>({...t,modelPosition:[t.position[0],t.position[1],t.position[2]],observerIndex:void 0}))}const zd=void 0,Md=(i,t)=>{var u,m,v,b;const e={container:document.createElement("div"),data:null,enabled:!0,fiveModeEnabled:!0,itemLabels:[],wrapper:null,app:void 0,hooks:new ye.Subscribe,modelOcclusionEnable:(u=t==null?void 0:t.modelOcclusionEnable)!=null?u:!0,onlyVisibleInPanorama:(m=t==null?void 0:t.onlyVisibleInPanorama)!=null?m:!0,displayStrategyType:(v=t==null?void 0:t.displayStrategyType)!=null?v:It.SMALL,maxVisibleDistance:(b=t==null?void 0:t.maxVisibleDistance)!=null?b:zd};e.container.setAttribute("class","item-label-plugin-container"),e.container.style.cssText=`
532
532
  position: absolute;
package/dist/index.es.js CHANGED
@@ -10162,7 +10162,7 @@ const Wf = (i, { videoElement: t }) => {
10162
10162
  if (!(!w || g.intersectObjects(w).length === 0))
10163
10163
  return e.videoTexture && (e.videoTexture.image.paused || e.videoTexture.image.pause()), !1;
10164
10164
  }, v = (g) => {
10165
- g === "Floorplan" || e.videoTexture.image.played ? n.hide() : n.show();
10165
+ g === "Floorplan" ? n.hide() : e.videoTexture.image.paused ? n.show() : n.hide();
10166
10166
  }, b = () => {
10167
10167
  if (!e.enabled)
10168
10168
  return;
@@ -10185,7 +10185,7 @@ const Wf = (i, { videoElement: t }) => {
10185
10185
  e.videoMeshes.forEach((g) => {
10186
10186
  g && (g.needsRender = !0);
10187
10187
  });
10188
- });
10188
+ }), o.clear();
10189
10189
  };
10190
10190
  return i.on("modeChange", v), i.on("wantsTapGesture", m), i.on("panoArrived", b), i.on("renderFrame", () => {
10191
10191
  e.videoMeshes.forEach((g) => {
package/dist/index.js CHANGED
@@ -10162,7 +10162,7 @@ const Wf = (i, { videoElement: t }) => {
10162
10162
  if (!(!w || g.intersectObjects(w).length === 0))
10163
10163
  return e.videoTexture && (e.videoTexture.image.paused || e.videoTexture.image.pause()), !1;
10164
10164
  }, v = (g) => {
10165
- g === "Floorplan" || e.videoTexture.image.played ? n.hide() : n.show();
10165
+ g === "Floorplan" ? n.hide() : e.videoTexture.image.paused ? n.show() : n.hide();
10166
10166
  }, b = () => {
10167
10167
  if (!e.enabled)
10168
10168
  return;
@@ -10185,7 +10185,7 @@ const Wf = (i, { videoElement: t }) => {
10185
10185
  e.videoMeshes.forEach((g) => {
10186
10186
  g && (g.needsRender = !0);
10187
10187
  });
10188
- });
10188
+ }), o.clear();
10189
10189
  };
10190
10190
  return i.on("modeChange", v), i.on("wantsTapGesture", m), i.on("panoArrived", b), i.on("renderFrame", () => {
10191
10191
  e.videoMeshes.forEach((g) => {
package/dist/index.umd.js CHANGED
@@ -526,7 +526,7 @@ void main() {
526
526
  width: 100%;
527
527
  height: 100%;
528
528
  z-index: 5;
529
- `,e.container.style.pointerEvents="none";const n=v=>(e.wrapper=v,v.appendChild(e.container),l(),!0),o=v=>{e.itemLabels=Nu(v),l()},s=()=>(e.enabled||(e.enabled=!0,l()),!0),r=()=>(e.enabled&&(e.enabled=!1,l()),!0),a=()=>{h(),e.container.remove()},l=()=>{var v;if(!!e.wrapper){if(!e.enabled||!e.fiveModeEnabled){(v=e.app)==null||v.$destroy(),e.app=void 0;return}e.app?e.app.$set({five:i,itemLabels:e.itemLabels}):e.app=new Ou({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",f),i.once("dispose",a)},h=()=>{i.off("modeChange",f)},f=v=>{if(!!e.enabled){if(v!==me.Five.Mode.Floorplan){e.fiveModeEnabled=!1,l();return}i.once("initAnimationEnded",()=>{e.fiveModeEnabled=i.currentMode===me.Five.Mode.Floorplan,l()})}};return c(),{appendTo:n,load:o,enable:s,disable:r,dispose:a,hooks:e.hooks}},Fu={name:"ModelItemLabelPlugin",version:0};var Xt=(i=>(i.TOP_LEFT="topLeft",i.TOP_RIGHT="topRight",i.BOTTOM_LEFT="bottomLeft",i.BOTTOM_RIGHT="bottomRight",i))(Xt||{});function Gu(i){if(i.length===0)return[];if(Array.isArray(i[0]))return i;let t=[];return i.forEach(e=>{const n=[e[Xt.TOP_LEFT],e[Xt.BOTTOM_LEFT],e[Xt.BOTTOM_RIGHT],e[Xt.TOP_RIGHT]];t.push(n)}),t}const Ru=(i,{videoElement:t})=>{const e={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:t},n=fn(i),o=new Map,s=g=>{e.videoTexture&&(e.videoTexture.image.muted=g)},r=()=>e.videoTexture?e.videoTexture.image.muted:!0,a=()=>{if(e.enabled||!e.videoTexture)return;e.enabled=!0,e.videoMeshes=c(),e.videoMeshes.forEach(w=>i.scene.add(w));const g=()=>{if(!e.videoTexture)return;const w=()=>{var I;!e.videoTexture||((I=e.videoTexture)==null||I.image.removeEventListener("timeupdate",w),e.videoTextureEnabled=!0,e.videoMeshes.forEach(k=>{k.material.map!==e.videoTexture&&(k.material.map=e.videoTexture)}),i.needsRender=!0)};e.videoTexture.image.addEventListener("timeupdate",w),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)g();else return i.once("modelLoaded",()=>g())},l=()=>{!e.enabled||(e.enabled=!1,e.videoMeshes.forEach(g=>{g.geometry.dispose(),g.material.dispose(),i.scene.remove(g),e.videoTexture&&e.videoTexture.image.pause()}),e.videoMeshes=[],i.needsRender=!0)},c=()=>e.rectPoints.map((g,w)=>{const I=new O.BufferGeometry,k=128,z=[];z.push(...g[0].toArray());for(let D=1;D<k;D++)z.push(g[0].x+(g[1].x-g[0].x)*D/k,g[0].y+(g[1].y-g[0].y)*D/k,g[0].z+(g[1].z-g[0].z)*D/k);z.push(...g[1].toArray()),z.push(...g[2].toArray());for(let D=1;D<k;D++)z.push(g[2].x+(g[3].x-g[2].x)*D/k,g[2].y+(g[3].y-g[2].y)*D/k,g[2].z+(g[3].z-g[2].z)*D/k);z.push(...g[3].toArray());const x=[];x.push(0,1);for(let D=1;D<k;D++)x.push(0,1-D/k);x.push(0,0),x.push(1,0);for(let D=1;D<k;D++)x.push(1,D/k);x.push(1,1);const T=[];for(let D=0;D<k;D++)T.push(D,D+1,k*2-D,D,k*2-D,k*2+1-D);I.setAttribute("position",new O.BufferAttribute(new Float32Array(z),3)),I.setAttribute("uv",new O.BufferAttribute(new Float32Array(x),2)),I.setIndex(new O.BufferAttribute(new Uint32Array(T),1));const L=new O.AxesHelper(10);i.scene.add(L);const S=new O.MeshBasicMaterial({map:e.videoTextureEnabled?e.videoTexture:e.imageTexture,side:O.DoubleSide}),B=new O.Mesh(I,S);B.renderOrder=1,B.name=`ModelTVVideoPlugin-${w}-${performance.now()}`;const G=[g[1],g[2],g[3],g[0]],_=n.create3DDomContainer(G);if(_!=null&&_.container){const D=document.createElement("div");D.classList.add("play-icon"),D.style.width="100%",D.style.height="100%",D.style.display="flex",D.style.justifyContent="center",D.style.alignItems="center",D.style.pointerEvents="none",_.container.appendChild(D);const J=document.createElement("img");J.src="//vrlab-static.ljcdn.com/release/web/play.2ada5b6f.png",J.style.width="200px",J.style.pointerEvents="auto",J.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()},D.appendChild(J),o.set(B,_)}return B}),h=g=>{const w=new O.TextureLoader().load(g);return w.minFilter=O.LinearFilter,w.magFilter=O.LinearFilter,w.format=O.RGBFormat,w},f=(g,w)=>new Promise((I,k)=>{const z=new XMLHttpRequest;z.onreadystatechange=()=>{if(z.readyState==4)if(z.status==200){const x=window.URL||window.webkitURL;w=w||document.createElement("video"),w.crossOrigin="anonymous",w.muted=!0,w.loop=!0,w.playsInline=!0,w.src=x.createObjectURL(z.response);const T=new O.VideoTexture(w);T.minFilter=O.LinearFilter,T.magFilter=O.LinearFilter,T.format=O.RGBFormat,I(Object.assign(T,{videoSource:g}))}else k(new Error("Video download Error: "+z.status))},z.onerror=x=>k(x),z.open("GET",g),z.responseType="blob",z.send()}),u=async(g,w)=>{const{video_src:I,video_poster_src:k,points:z}=g;e.videoSource=I,e.rectPoints=Gu(z).map(x=>x.map(({x:T,y:L,z:S})=>new O.Vector3(T,L,S))),e.imageTexture=h(k),w&&(e.videoElement=w),e.videoTexture=await f(e.videoSource,e.videoElement),e.enabled=!!g.enable,e.enabled&&a()},m=g=>{if(!e.enabled)return;const w=e.videoMeshes;if(!(!w||g.intersectObjects(w).length===0))return e.videoTexture&&(e.videoTexture.image.paused||e.videoTexture.image.pause()),!1},v=g=>{g==="Floorplan"||e.videoTexture.image.played?n.hide():n.show()},b=()=>{if(!e.enabled)return;const g=i.camera.position;if(o.forEach((w,I)=>{const k=w.css3DObject.position.clone(),z=k.clone().sub(g).normalize(),x=new O.Raycaster(g,z),T=i.model.intersectRaycaster(x)[0],L=k.distanceTo(g),S=.01;T&&T.distance+S<L?w.hide():w.show()}),!r()){const w=e.rectPoints.find(I=>{const k=I[0].clone().add(I[1]).add(I[2]).add(I[3]).divideScalar(4);return I.map(z=>z.clone().add(k).divideScalar(2)).filter(z=>{const x=z.distanceTo(g),T=new O.Raycaster(g,z.clone().sub(g).normalize()),L=i.model.intersectRaycaster(T)[0],S=.01;return!(L&&L.distance+S<x)}).length>=2});(!w||w.length===0)&&s(!0)}},A=()=>{l(),e.videoTexture=void 0,i.off("modeChange",v),i.off("wantsTapGesture",m),i.off("panoArrived",b),i.off("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})})};return i.on("modeChange",v),i.on("wantsTapGesture",m),i.on("panoArrived",b),i.on("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),{enable:a,disable:l,load:u,dispose:A,state:e,css3DRenderPlugin:n}};function Xu(i){be(i,"svelte-1q3t254",`.item-label-item.svelte-1q3t254.svelte-1q3t254{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-1q3t254-fadeIn .3s ease-in}.item-label-item.fold.svelte-1q3t254>.item-label-item__text-wrap.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254:after{visibility:visible}.item-label-item__text-wrap.svelte-1q3t254.svelte-1q3t254{height:-moz-fit-content;height:fit-content;padding:0.625rem 1.04167rem 0.625rem 0.625rem;position:absolute;width:-moz-max-content;width:max-content;max-width:24.63542rem;min-height:4.79167rem;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:1.5px solid rgba(255, 255, 255, .65);border-radius:0.15625rem;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-1q3t254.svelte-1q3t254{padding:0;max-width:unset;min-height:unset;background-image:unset;border:0;border-radius:0}.icon-wrap.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:100%;display:flex;justify-content:center;align-content:center}.icon.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:3.54167rem;background-repeat:no-repeat;background-size:contain;background-position:center}.item-label-text.svelte-1q3t254.svelte-1q3t254{margin-left:0.625rem;padding-left:0.625rem;min-height:3.54167rem;height:auto;display:flex;flex-flow:column;justify-content:space-around;align-content:flex-start;border-left:solid rgba(255, 255, 255, .2) 1px;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-1q3t254.svelte-1q3t254{white-space:nowrap;font-size:1.14583rem;font-weight:bold;line-height:1.5625rem}.item-name.svelte-1q3t254.svelte-1q3t254{height:auto;word-wrap:break-word;word-break:break-all;font-size:1.04167rem;line-height:1.45833rem}.item-label-item__bar.svelte-1q3t254.svelte-1q3t254{position:absolute;bottom:0;width:0.15625rem;background-image:linear-gradient(to bottom, white, rgba(255, 255, 255, 0));box-shadow:0 2px 0.41667rem 0 rgba(0, 0, 0, 0.20);pointer-events:none}.item-label-item__bar.anchor.svelte-1q3t254.svelte-1q3t254:after{content:'';position:absolute;bottom:0;width:1.25rem;height:1.25rem;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.54688rem, 50%)}@keyframes svelte-1q3t254-fadeIn{from{opacity:0
529
+ `,e.container.style.pointerEvents="none";const n=v=>(e.wrapper=v,v.appendChild(e.container),l(),!0),o=v=>{e.itemLabels=Nu(v),l()},s=()=>(e.enabled||(e.enabled=!0,l()),!0),r=()=>(e.enabled&&(e.enabled=!1,l()),!0),a=()=>{h(),e.container.remove()},l=()=>{var v;if(!!e.wrapper){if(!e.enabled||!e.fiveModeEnabled){(v=e.app)==null||v.$destroy(),e.app=void 0;return}e.app?e.app.$set({five:i,itemLabels:e.itemLabels}):e.app=new Ou({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",f),i.once("dispose",a)},h=()=>{i.off("modeChange",f)},f=v=>{if(!!e.enabled){if(v!==me.Five.Mode.Floorplan){e.fiveModeEnabled=!1,l();return}i.once("initAnimationEnded",()=>{e.fiveModeEnabled=i.currentMode===me.Five.Mode.Floorplan,l()})}};return c(),{appendTo:n,load:o,enable:s,disable:r,dispose:a,hooks:e.hooks}},Fu={name:"ModelItemLabelPlugin",version:0};var Xt=(i=>(i.TOP_LEFT="topLeft",i.TOP_RIGHT="topRight",i.BOTTOM_LEFT="bottomLeft",i.BOTTOM_RIGHT="bottomRight",i))(Xt||{});function Gu(i){if(i.length===0)return[];if(Array.isArray(i[0]))return i;let t=[];return i.forEach(e=>{const n=[e[Xt.TOP_LEFT],e[Xt.BOTTOM_LEFT],e[Xt.BOTTOM_RIGHT],e[Xt.TOP_RIGHT]];t.push(n)}),t}const Ru=(i,{videoElement:t})=>{const e={videoMeshes:[],videoTextureEnabled:!1,videoSource:"",rectPoints:[],enabled:!1,videoElement:t},n=fn(i),o=new Map,s=g=>{e.videoTexture&&(e.videoTexture.image.muted=g)},r=()=>e.videoTexture?e.videoTexture.image.muted:!0,a=()=>{if(e.enabled||!e.videoTexture)return;e.enabled=!0,e.videoMeshes=c(),e.videoMeshes.forEach(w=>i.scene.add(w));const g=()=>{if(!e.videoTexture)return;const w=()=>{var I;!e.videoTexture||((I=e.videoTexture)==null||I.image.removeEventListener("timeupdate",w),e.videoTextureEnabled=!0,e.videoMeshes.forEach(k=>{k.material.map!==e.videoTexture&&(k.material.map=e.videoTexture)}),i.needsRender=!0)};e.videoTexture.image.addEventListener("timeupdate",w),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)g();else return i.once("modelLoaded",()=>g())},l=()=>{!e.enabled||(e.enabled=!1,e.videoMeshes.forEach(g=>{g.geometry.dispose(),g.material.dispose(),i.scene.remove(g),e.videoTexture&&e.videoTexture.image.pause()}),e.videoMeshes=[],i.needsRender=!0)},c=()=>e.rectPoints.map((g,w)=>{const I=new O.BufferGeometry,k=128,z=[];z.push(...g[0].toArray());for(let D=1;D<k;D++)z.push(g[0].x+(g[1].x-g[0].x)*D/k,g[0].y+(g[1].y-g[0].y)*D/k,g[0].z+(g[1].z-g[0].z)*D/k);z.push(...g[1].toArray()),z.push(...g[2].toArray());for(let D=1;D<k;D++)z.push(g[2].x+(g[3].x-g[2].x)*D/k,g[2].y+(g[3].y-g[2].y)*D/k,g[2].z+(g[3].z-g[2].z)*D/k);z.push(...g[3].toArray());const x=[];x.push(0,1);for(let D=1;D<k;D++)x.push(0,1-D/k);x.push(0,0),x.push(1,0);for(let D=1;D<k;D++)x.push(1,D/k);x.push(1,1);const T=[];for(let D=0;D<k;D++)T.push(D,D+1,k*2-D,D,k*2-D,k*2+1-D);I.setAttribute("position",new O.BufferAttribute(new Float32Array(z),3)),I.setAttribute("uv",new O.BufferAttribute(new Float32Array(x),2)),I.setIndex(new O.BufferAttribute(new Uint32Array(T),1));const L=new O.AxesHelper(10);i.scene.add(L);const S=new O.MeshBasicMaterial({map:e.videoTextureEnabled?e.videoTexture:e.imageTexture,side:O.DoubleSide}),B=new O.Mesh(I,S);B.renderOrder=1,B.name=`ModelTVVideoPlugin-${w}-${performance.now()}`;const G=[g[1],g[2],g[3],g[0]],_=n.create3DDomContainer(G);if(_!=null&&_.container){const D=document.createElement("div");D.classList.add("play-icon"),D.style.width="100%",D.style.height="100%",D.style.display="flex",D.style.justifyContent="center",D.style.alignItems="center",D.style.pointerEvents="none",_.container.appendChild(D);const J=document.createElement("img");J.src="//vrlab-static.ljcdn.com/release/web/play.2ada5b6f.png",J.style.width="200px",J.style.pointerEvents="auto",J.onclick=()=>{e.videoTexture.image.muted=!1,e.videoTexture.image.play()},D.appendChild(J),o.set(B,_)}return B}),h=g=>{const w=new O.TextureLoader().load(g);return w.minFilter=O.LinearFilter,w.magFilter=O.LinearFilter,w.format=O.RGBFormat,w},f=(g,w)=>new Promise((I,k)=>{const z=new XMLHttpRequest;z.onreadystatechange=()=>{if(z.readyState==4)if(z.status==200){const x=window.URL||window.webkitURL;w=w||document.createElement("video"),w.crossOrigin="anonymous",w.muted=!0,w.loop=!0,w.playsInline=!0,w.src=x.createObjectURL(z.response);const T=new O.VideoTexture(w);T.minFilter=O.LinearFilter,T.magFilter=O.LinearFilter,T.format=O.RGBFormat,I(Object.assign(T,{videoSource:g}))}else k(new Error("Video download Error: "+z.status))},z.onerror=x=>k(x),z.open("GET",g),z.responseType="blob",z.send()}),u=async(g,w)=>{const{video_src:I,video_poster_src:k,points:z}=g;e.videoSource=I,e.rectPoints=Gu(z).map(x=>x.map(({x:T,y:L,z:S})=>new O.Vector3(T,L,S))),e.imageTexture=h(k),w&&(e.videoElement=w),e.videoTexture=await f(e.videoSource,e.videoElement),e.enabled=!!g.enable,e.enabled&&a()},m=g=>{if(!e.enabled)return;const w=e.videoMeshes;if(!(!w||g.intersectObjects(w).length===0))return e.videoTexture&&(e.videoTexture.image.paused||e.videoTexture.image.pause()),!1},v=g=>{g==="Floorplan"?n.hide():e.videoTexture.image.paused?n.show():n.hide()},b=()=>{if(!e.enabled)return;const g=i.camera.position;if(o.forEach((w,I)=>{const k=w.css3DObject.position.clone(),z=k.clone().sub(g).normalize(),x=new O.Raycaster(g,z),T=i.model.intersectRaycaster(x)[0],L=k.distanceTo(g),S=.01;T&&T.distance+S<L?w.hide():w.show()}),!r()){const w=e.rectPoints.find(I=>{const k=I[0].clone().add(I[1]).add(I[2]).add(I[3]).divideScalar(4);return I.map(z=>z.clone().add(k).divideScalar(2)).filter(z=>{const x=z.distanceTo(g),T=new O.Raycaster(g,z.clone().sub(g).normalize()),L=i.model.intersectRaycaster(T)[0],S=.01;return!(L&&L.distance+S<x)}).length>=2});(!w||w.length===0)&&s(!0)}},A=()=>{l(),e.videoTexture=void 0,i.off("modeChange",v),i.off("wantsTapGesture",m),i.off("panoArrived",b),i.off("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),o.clear()};return i.on("modeChange",v),i.on("wantsTapGesture",m),i.on("panoArrived",b),i.on("renderFrame",()=>{e.videoMeshes.forEach(g=>{g&&(g.needsRender=!0)})}),{enable:a,disable:l,load:u,dispose:A,state:e,css3DRenderPlugin:n}};function Xu(i){be(i,"svelte-1q3t254",`.item-label-item.svelte-1q3t254.svelte-1q3t254{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-1q3t254-fadeIn .3s ease-in}.item-label-item.fold.svelte-1q3t254>.item-label-item__text-wrap.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254{visibility:hidden}.item-label-item.fold.svelte-1q3t254>.item-label-item__bar.anchor.svelte-1q3t254:after{visibility:visible}.item-label-item__text-wrap.svelte-1q3t254.svelte-1q3t254{height:-moz-fit-content;height:fit-content;padding:0.625rem 1.04167rem 0.625rem 0.625rem;position:absolute;width:-moz-max-content;width:max-content;max-width:24.63542rem;min-height:4.79167rem;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:1.5px solid rgba(255, 255, 255, .65);border-radius:0.15625rem;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-1q3t254.svelte-1q3t254{padding:0;max-width:unset;min-height:unset;background-image:unset;border:0;border-radius:0}.icon-wrap.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:100%;display:flex;justify-content:center;align-content:center}.icon.svelte-1q3t254.svelte-1q3t254{width:3.54167rem;height:3.54167rem;background-repeat:no-repeat;background-size:contain;background-position:center}.item-label-text.svelte-1q3t254.svelte-1q3t254{margin-left:0.625rem;padding-left:0.625rem;min-height:3.54167rem;height:auto;display:flex;flex-flow:column;justify-content:space-around;align-content:flex-start;border-left:solid rgba(255, 255, 255, .2) 1px;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-1q3t254.svelte-1q3t254{white-space:nowrap;font-size:1.14583rem;font-weight:bold;line-height:1.5625rem}.item-name.svelte-1q3t254.svelte-1q3t254{height:auto;word-wrap:break-word;word-break:break-all;font-size:1.04167rem;line-height:1.45833rem}.item-label-item__bar.svelte-1q3t254.svelte-1q3t254{position:absolute;bottom:0;width:0.15625rem;background-image:linear-gradient(to bottom, white, rgba(255, 255, 255, 0));box-shadow:0 2px 0.41667rem 0 rgba(0, 0, 0, 0.20);pointer-events:none}.item-label-item__bar.anchor.svelte-1q3t254.svelte-1q3t254:after{content:'';position:absolute;bottom:0;width:1.25rem;height:1.25rem;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.54688rem, 50%)}@keyframes svelte-1q3t254-fadeIn{from{opacity:0
530
530
  }to{opacity:1
531
531
  }}`)}function Qu(i){let t,e,n,o=(i[0].code||i[0].id)+"",s,r,a,l=i[0].name+"",c,h=i[0].icon&&Rs(i);return{c(){h&&h.c(),t=pe(),e=X("div"),n=X("span"),s=Ue(o),r=pe(),a=X("span"),c=Ue(l),C(n,"class","item-model svelte-1q3t254"),C(a,"class","item-name svelte-1q3t254"),C(e,"class","item-label-text svelte-1q3t254")},m(f,u){h&&h.m(f,u),Y(f,t,u),Y(f,e,u),Q(e,n),Q(n,s),Q(e,r),Q(e,a),Q(a,c)},p(f,u){f[0].icon?h?h.p(f,u):(h=Rs(f),h.c(),h.m(t.parentNode,t)):h&&(h.d(1),h=null),u&1&&o!==(o=(f[0].code||f[0].id)+"")&&ct(s,o),u&1&&l!==(l=f[0].name+"")&&ct(c,l)},d(f){h&&h.d(f),f&&H(t),f&&H(e)}}}function Hu(i){let t;return{c(){t=X("div")},m(e,n){Y(e,t,n),i[6](t)},p:ne,d(e){e&&H(t),i[6](null)}}}function Rs(i){let t,e,n,o,s;return{c(){t=X("div"),e=X("div"),C(e,"class","icon svelte-1q3t254"),C(e,"style",n=`background-image: url(${i[0].icon})`),C(t,"class","icon-wrap svelte-1q3t254")},m(r,a){Y(r,t,a),Q(t,e),o||(s=qe(t,"click",i[7]),o=!0)},p(r,a){a&1&&n!==(n=`background-image: url(${r[0].icon})`)&&C(e,"style",n)},d(r){r&&H(t),o=!1,s()}}}function Wu(i){let t,e,n,o,s,r,a,l,c,h;function f(v,b){return b&1&&(n=null),n==null&&(n=!!Boolean(typeof v[0].render=="function")),n?Hu:Qu}let u=f(i,-1),m=u(i);return{c(){t=X("div"),e=X("div"),m.c(),s=pe(),r=X("div"),C(e,"class",o=Se(ot("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof i[0].render=="function")}))+" svelte-1q3t254"),j(e,"bottom",`${i[0].strokeLength}px`),C(r,"class",a=Se(ot("item-label-item__bar",{anchor:i[1]}))+" svelte-1q3t254"),j(r,"height",`${i[0].strokeLength}px`),C(t,"class",l=Se(ot("item-label-item",{fold:i[0].isFold}))+" svelte-1q3t254"),j(t,"z-index",i[0].zIndex),j(t,"transform",i[0].transform)},m(v,b){Y(v,t,b),Q(t,e),m.m(e,null),Q(t,s),Q(t,r),c||(h=qe(e,"click",i[4]),c=!0)},p(v,[b]){u===(u=f(v,b))&&m?m.p(v,b):(m.d(1),m=u(v),m&&(m.c(),m.m(e,null))),b&1&&o!==(o=Se(ot("item-label-item__text-wrap",{"item-label-item__custom":Boolean(typeof v[0].render=="function")}))+" svelte-1q3t254")&&C(e,"class",o),b&1&&j(e,"bottom",`${v[0].strokeLength}px`),b&2&&a!==(a=Se(ot("item-label-item__bar",{anchor:v[1]}))+" svelte-1q3t254")&&C(r,"class",a),b&1&&j(r,"height",`${v[0].strokeLength}px`),b&1&&l!==(l=Se(ot("item-label-item",{fold:v[0].isFold}))+" svelte-1q3t254")&&C(t,"class",l),b&1&&j(t,"z-index",v[0].zIndex),b&1&&j(t,"transform",v[0].transform)},i:ne,o:ne,d(v){v&&H(t),m.d(),c=!1,h()}}}function Yu(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(f){jt[f?"unshift":"push"](()=>{l=f,e(3,l)})}const h=f=>r(n);return i.$$set=f=>{"itemLabel"in f&&e(0,n=f.itemLabel),"hooks"in f&&e(5,o=f.hooks),"anchorEnabled"in f&&e(1,s=f.anchorEnabled),"onIconClick"in f&&e(2,r=f.onIconClick)},i.$$.update=()=>{if(i.$$.dirty&9&&typeof n.render=="function"&&l&&l.children.length===0){const f=n.render(n);f&&l.appendChild(f)}},[n,s,r,l,a,o,c,h]}class Vu extends fe{constructor(t){super(),de(this,t,Yu,Wu,ue,{itemLabel:0,hooks:5,anchorEnabled:1,onIconClick:2},Xu)}}const{Raycaster:Zu,Vector3:If}=O,Xs=(i,t,e,n)=>{const o=t.clone().sub(e).normalize(),s=new Zu;s.set(e,o);const[r]=i.model.intersectRaycaster(s);return r&&r.distance+.01<n};var Lt=(i=>(i.SMALL="small",i.MIDLLE="middle",i.LARGE="large",i.EXTRA_LARGE="x-large",i))(Lt||{});const Ju=(i,t)=>{switch(t){case Lt.SMALL:return Math.ceil(-27.78*i+85);case Lt.MIDLLE:return Math.ceil(-38.9*i+130);case Lt.LARGE:return Math.ceil(-44.44*i+140);case Lt.EXTRA_LARGE:return Math.ceil(-92.59*i+300)}},Uu=i=>`translate(${i[0]}px, ${i[1]}px)`;function Qs(i){return i.map(t=>({observerIndex:void 0,visible:!1,isFold:!1,...t}))}function qu(i){be(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 Ws(i){let t,e;return t=new Vu({props:{itemLabel:i[30],hooks:i[0],anchorEnabled:i[2],onIconClick:i[6]}}),{c(){Pe(t.$$.fragment)},m(n,o){Ae(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||(R(t.$$.fragment,n),e=!0)},o(n){K(t.$$.fragment,n),e=!1},d(n){ye(t,n)}}}function Ys(i,t){let e,n,o,s=t[30].visible&&Ws(t);return{key:i,first:null,c(){e=Re(),s&&s.c(),n=Re(),this.first=e},m(r,a){Y(r,e,a),s&&s.m(r,a),Y(r,n,a),o=!0},p(r,a){t=r,t[30].visible?s?(s.p(t,a),a[0]&2&&R(s,1)):(s=Ws(t),s.c(),R(s,1),s.m(n.parentNode,n)):s&&(Ce(),K(s,1,1,()=>{s=null}),Ee())},i(r){o||(R(s),o=!0)},o(r){K(s),o=!1},d(r){r&&H(e),s&&s.d(r),r&&H(n)}}}function Ku(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),h=a(c);n.set(h,e[l]=Ys(h,c))}return{c(){t=X("div");for(let l=0;l<e.length;l+=1)e[l].c();C(t,"class","item-labels-container svelte-gk8s47"),Ke(()=>i[12].call(t)),j(t,"opacity",i[5]?1:0)},m(l,c){Y(l,t,c);for(let h=0;h<e.length;h+=1)e[h].m(t,null);o=St(t,i[12].bind(t)),s=!0},p(l,c){c[0]&71&&(r=l[1],Ce(),e=gt(e,c,a,1,l,r,n,t,Ot,Ys,null,Hs),Ee()),c[0]&32&&j(t,"opacity",l[5]?1:0)},i(l){if(!s){for(let c=0;c<r.length;c+=1)R(e[c]);s=!0}},o(l){for(let c=0;c<e.length;c+=1)K(e[c]);s=!1},d(l){l&&H(t);for(let c=0;c<e.length;c+=1)e[c].d();o()}}}let _u=11;function $u(i,t,e){const{Raycaster:n,Vector3:o}=O;let{five:s}=t,{modelOcclusionEnable:r}=t,{itemLabels:a}=t,{hooks:l}=t,{displayStrategyType:c}=t,{maxVisibleDistance:h}=t,f=null,u=null,m=(s==null?void 0:s.currentMode)===me.Five.Mode.Panorama,v,b,A=[],g=!0;const w=(F,$)=>{const U=F.camera.position.clone(),ie=new o($.modelPosition[0],$.modelPosition[1],$.modelPosition[2]),W=ie.distanceTo(U);return h!==void 0&&F.state.mode===me.Five.Mode.Panorama&&W>h?!1:Xs(F,ie.clone().sub(U).normalize(),U,W)},I=F=>{const{camera:$,model:U}=s,{x:ie,y:W,z:te}=F.clone().project($),re=(ie+1)/2,oe=(2-(W+1))/2,Le=Math.abs(te)<1&&[re,oe].every(Oe=>Oe<1&&Oe>=0);return Boolean(Le)},k=(F,$)=>{const U=new o($.modelPosition[0],$.modelPosition[1],$.modelPosition[2]),ie=F.project2d(U),W=ie==null?void 0:ie.x,te=ie==null?void 0:ie.y;return[W,te]},z=(F,$)=>{const U=$.map(W=>{if(F.state.panoIndex!==W.panoIndex)return Object.assign(Object.assign({},W),{visible:!1});const te=k(F,W);W.name.length*_u;const re=Ju(W.modelPosition[1],c),oe=F.currentMode===me.Five.Mode.Panorama?I(new o(W.position[0],W.position[1],W.position[2])):!0,he=r?w(F,W):!1,we=oe&&!he;if(!we)return Object.assign(Object.assign({},W),{visible:we});A.push(te);const Le=Uu(te);return Object.assign(Object.assign({},W),{visible:we,transform:Le,strokeLength:re})}),ie=U.filter(({visible:W})=>W).map(W=>({itemLabelItem:W,distance:new o(W.modelPosition[0],W.modelPosition[1],W.modelPosition[2]).clone().distanceTo(F.camera.position)})).sort((W,te)=>W.distance-te.distance);return U.map(W=>{const te=ie.findIndex(re=>re.itemLabelItem.id===W.id);return te!==void 0?Object.assign(Object.assign({},W),{zIndex:te*10}):W})},x=()=>{A=[],e(1,u=z(s,u))},T=()=>{e(5,g=!1),L()},L=Ns(()=>{e(5,g=!0),x()},300),S=()=>{s.once("renderFrame",x)},B=()=>{window.addEventListener("resize",S,!1)},G=()=>{f!==a&&(e(1,u=Qs(a)),f=a,x())},_=(F,$)=>{let U=[];for(let W=0;W<$.length;W++){const{position:te,panoIndex:re}=$[W],oe=F.distanceTo(te);(h===void 0||oe<=h||s.state.mode!==me.Five.Mode.Panorama)&&U.push({panoIndex:re,obVector:te,distance:oe})}U=U.sort((W,te)=>W.distance-te.distance);let ie;for(let W=0;W<U.length;W++){const{obVector:te,distance:re,panoIndex:oe}=U[W];if(!Xs(s,F,te,re)){ie=oe;break}}return typeof ie=="number"?$[ie]:void 0},D=F=>{if(s.state.mode===me.Five.Mode.Panorama)return;const $=s.work.observers,U=new o().fromArray(F.position),ie=_(U,$);if(ie&&(F.observerIndex=ie.panoIndex),typeof F.observerIndex=="number"){const W=$[F.observerIndex],te=U.clone().sub(W.position).normalize(),re={longitude:Math.PI+Math.atan2(te.x,te.z),latitude:Math.acos(te.y/te.length())-Math.PI/2};s.setState(Object.assign(Object.assign({},re),{mode:me.Five.Mode.Panorama,panoIndex:F.observerIndex})),s.once("initAnimationEnded",()=>{e(1,u=u.map(oe=>Object.assign(Object.assign({},oe),{isFold:oe.id!==F.id}))),s.once("cameraUpdate",()=>{e(1,u=u.map(oe=>Object.assign(Object.assign({},oe),{isFold:!1})))})})}};co(()=>{G()}),It(()=>{e(1,u=Qs(a)),f=a,x(),B(),s.on("cameraUpdate",T)}),Ut(()=>{s.off("cameraUpdate",T),window.removeEventListener("resize",S,!1)});function J(){v=this.clientWidth,b=this.clientHeight,e(3,v),e(4,b)}return i.$$set=F=>{"five"in F&&e(7,s=F.five),"modelOcclusionEnable"in F&&e(8,r=F.modelOcclusionEnable),"itemLabels"in F&&e(9,a=F.itemLabels),"hooks"in F&&e(0,l=F.hooks),"displayStrategyType"in F&&e(10,c=F.displayStrategyType),"maxVisibleDistance"in F&&e(11,h=F.maxVisibleDistance)},[l,u,m,v,b,g,D,s,r,a,c,h,J]}class ed extends fe{constructor(t){super(),de(this,t,$u,Ku,ue,{five:7,modelOcclusionEnable:8,itemLabels:9,hooks:0,displayStrategyType:10,maxVisibleDistance:11},qu,[-1,-1])}}function td(i){return i.item_labels.map(t=>({...t,modelPosition:[t.position[0],t.position[1],t.position[2]],observerIndex:void 0}))}const nd=void 0,id=(i,t)=>{var u,m,v,b;const e={container:document.createElement("div"),data:null,enabled:!0,fiveModeEnabled:!0,itemLabels:[],wrapper:null,app:void 0,hooks:new me.Subscribe,modelOcclusionEnable:(u=t==null?void 0:t.modelOcclusionEnable)!=null?u:!0,onlyVisibleInPanorama:(m=t==null?void 0:t.onlyVisibleInPanorama)!=null?m:!0,displayStrategyType:(v=t==null?void 0:t.displayStrategyType)!=null?v:Lt.SMALL,maxVisibleDistance:(b=t==null?void 0:t.maxVisibleDistance)!=null?b:nd};e.container.setAttribute("class","item-label-plugin-container"),e.container.style.cssText=`
532
532
  position: absolute;