@aibee/crc-bmap 0.0.94 → 0.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/src/main.ts +376 -331
- package/lib/bmap.cjs.min.js +3 -3
- package/lib/bmap.cjs.min.js.map +4 -4
- package/lib/bmap.esm.js +234 -150
- package/lib/bmap.esm.js.map +4 -4
- package/lib/bmap.esm.min.js +3 -3
- package/lib/bmap.esm.min.js.map +4 -4
- package/lib/bmap.min.js +3 -3
- package/lib/bmap.min.js.map +4 -4
- package/lib/src/api/floor.d.ts +15 -0
- package/lib/src/api/index.d.ts +1 -0
- package/lib/src/bmap.d.ts +13 -19
- package/lib/src/elements/floor.d.ts +1 -0
- package/lib/src/elements/poi.d.ts +1 -0
- package/lib/src/index.d.ts +1 -0
- package/lib/src/plugins/base.d.ts +1 -1
- package/lib/src/plugins/index.d.ts +1 -0
- package/lib/src/plugins/split-load/index.d.ts +1 -0
- package/lib/src/plugins/split-load/split-load.d.ts +14 -0
- package/lib/src/types/index.d.ts +7 -0
- package/lib/src/utils/coordinate.d.ts +2 -2
- package/lib/src/utils/event-name.d.ts +1 -1
- package/lib/src/utils/index.d.ts +1 -0
- package/lib/src/utils/obj-utils.d.ts +6 -0
- package/package.json +1 -1
package/lib/bmap.cjs.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Bt=Object.defineProperty;var Ee=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Ce=Object.prototype.hasOwnProperty;var Le=(r,o)=>{for(var t in o)Bt(r,t,{get:o[t],enumerable:!0})},Ge=(r,o,t,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of Me(o))!Ce.call(r,i)&&i!==t&&Bt(r,i,{get:()=>o[i],enumerable:!(e=Ee(o,i))||e.enumerable});return r};var Se=r=>Ge(Bt({},"__esModule",{value:!0}),r);var He={};Le(He,{BMap:()=>Yt,BaseSvg:()=>z,Context:()=>ut,Equipment:()=>gt,EventName:()=>Et,Events:()=>it,Floor:()=>ht,Graphic:()=>O,GraphicLayer:()=>rt,HeatmapElement:()=>at,HoverHelper:()=>dt,Layer:()=>I,MapTypePolar:()=>xe,Model:()=>ct,Navigation:()=>ft,Overlay:()=>nt,Poi:()=>Z,PoiLayer:()=>st,SelectBox:()=>Xt,Selection:()=>mt,Shadow:()=>ot,SvgLine:()=>lt,SvgPolygon:()=>pt,Timer:()=>B,addAlphaToHexColor:()=>Fe,clearCanvas:()=>$t,clearTextTexture:()=>It,createCanvas:()=>oe,createCircle:()=>K,createLine:()=>J,createRect:()=>V,createSvg:()=>Ut,createSvgElement:()=>Q,darkenColor:()=>tt,defaultConfig:()=>ge,dispose:()=>F,disposeLoader:()=>Kt,getCenter:()=>yt,getConfig:()=>Wt,getLongestSideDir:()=>De,getTextureByText:()=>Oe,hasChinese:()=>Ht,initCamera:()=>Tt,initCanvas:()=>ie,initControl:()=>kt,initDirectionalLight:()=>_t,initLight:()=>At,initRenderer:()=>Ft,initScene:()=>zt,initShape:()=>Rt,isContain:()=>Y,isControl:()=>Pt,isMac:()=>et,loadModel:()=>qt,proxyOptions:()=>N,setCirclePosition:()=>k,setLineStartEnd:()=>G,setRectPosition:()=>S,sleepOnePromise:()=>jt,sleepOneRf:()=>Be,strToNumber:()=>ze,timeoutPromise:()=>A,vector3ToDevice:()=>g});module.exports=Se(He);var Dt=require("three");var B=class{tasks={requestAnimation:new Set,timeout:new Set,interval:new Set};requestAnimationFrame(o){let t=window.requestAnimationFrame(()=>{this.tasks.requestAnimation.delete(t),o()});return this.tasks.requestAnimation.add(t),t}cancelAnimationFrame(o){this.tasks.requestAnimation.delete(o),window.cancelAnimationFrame(o)}setTimeout(o,t){let e=window.setTimeout(()=>{this.tasks.timeout.delete(e),o()},t);return this.tasks.timeout.add(e),e}clearTimeout(o){this.tasks.timeout.delete(o),window.clearTimeout(o)}setInterval(o,t){let e=window.setInterval(()=>{this.tasks.interval.delete(e),o()},t);return this.tasks.interval.add(e),e}clearInterval(o){this.tasks.interval.delete(o),window.clearInterval(o)}dispose(){this.tasks.requestAnimation.forEach(o=>{window.cancelAnimationFrame(o)}),this.tasks.requestAnimation.clear(),this.tasks.timeout.forEach(o=>{window.clearTimeout(o)}),this.tasks.timeout.clear(),this.tasks.interval.forEach(o=>{window.clearInterval(o)}),this.tasks.interval.clear()}};var w=require("three"),ee=require("three/examples/jsm/controls/MapControls");function zt(){let r=new w.Scene;return r.background=new w.Color(16777215),r}function Ft(){let r=new w.WebGLRenderer({antialias:!0});return r.autoClear=!0,r.setClearAlpha(1),r.setClearColor(16777215),r.setPixelRatio(window.devicePixelRatio),r.shadowMap.enabled=!0,r.shadowMap.autoUpdate=!0,r.shadowMap.type=w.PCFSoftShadowMap,r}function Tt(r,o){let t=new w.OrthographicCamera(-r/2,r/2,o/2,-o/2,-1e3,5e3);return t.up.set(0,0,1),t.position.set(0,0,100),t.lookAt(0,0,0),t}function At(){let r=new w.Group,o=new w.AmbientLight(16777215,2.6);return r.add(o),r}function kt(r,o){let t=new ee.MapControls(r,o);return t.enableDamping=!1,t.zoomSpeed=2,t}function Rt(r,o=[]){let t=new w.Shape(r.map(e=>new w.Vector2(...e)));return o.length&&o.forEach(e=>{var i=new w.Path(e.map(n=>new w.Vector2(...n)));t.holes.push(i)}),t}function _t(r=16777215,o=1){let t=new w.DirectionalLight(r,o);return t.castShadow=!0,t.shadow.radius=8,t.shadow.bias=-.001,t.shadow.mapSize.set(256,256),t.shadow.camera.left=-200,t.shadow.camera.right=200,t.shadow.camera.top=200,t.shadow.camera.bottom=-200,t}function F(r,o){if(o&&r.children&&r.children.length&&r.children.forEach(t=>{F(t,o)}),r.isMesh){let t=r;t.geometry&&t.geometry.dispose(),t.material&&(Array.isArray(t.material)?t.material.forEach(e=>{e.dispose()}):t.material.dispose())}r.isLight&&r.dispose?.()}function Ht(r){return/[\u4E00-\u9FA5]+/g.test(r)}var H=require("three");var vt=new Map;function ie(){let r=document.createElement("canvas");r.width=1024,r.height=64;let o=r.getContext("2d",{willReadFrequently:!0});return o.font="54px sans-serif",o.textBaseline="hanging",o.lineWidth=12,o.fillStyle="rgba(0,0,0,1)",o.strokeStyle="white",{canvas:r,ctx:o}}var Vt,_;function oe(){if(!Vt){let{canvas:r,ctx:o}=ie();Vt=r,_=o}}function Oe(r){if(vt.has(r))return vt.get(r);oe(),_.clearRect(0,0,1024,64);let o=Ht(r)?4:8;_.strokeText(r,2,o),_.fillText(r,2,o);let t=Math.ceil(_.measureText(r).width);t=t%2===0?t:t+1,t+=2;let e=_.getImageData(0,0,t,64),i=new H.DataTexture(Uint8Array.from(e.data),t,64,H.RGBAFormat);return i.flipY=!0,i.minFilter=H.LinearFilter,i.magFilter=H.LinearFilter,vt.set(r,i),i}function It(){vt.clear()}function $t(){_=null,Vt=null}var xt=require("three"),q=require("@turf/turf");function g(r,o,t,e){let i=r.clone().project(o),n=t/2,s=e/2,c=Math.round(i.x*n+n),a=Math.round(-i.y*s+s);return{x:c,y:a}}function yt(r){let o=(0,q.featureCollection)(r.map(e=>(0,q.point)(e)));return(0,q.center)(o).geometry.coordinates}function Y(r,o,t){return r.x>=o.x&&r.x<=t.x&&r.y>=o.y&&r.y<=t.y}function De(r){let o=0,t=new xt.Vector3;for(let e=1;e<r.length;e++){let i=new xt.Vector3(r[e-1][0],r[e-1][1],0),n=new xt.Vector3(r[e][0],r[e][1],0),s=n.distanceTo(i);s>o&&(o=s,t=n.clone().sub(i).normalize())}return t}function N(r,o){return new Proxy(r,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let s=Reflect.get(t,e,n),c=Reflect.set(t,e,i,n);return s!==i&&o.dispatchEvent({type:`change-${e}`,value:i}),c}})}function A(r,o){return Promise.race([r,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),o)})])}function Q(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function Ut(r,o){let t=Q("svg");return t.setAttribute("width",r),t.setAttribute("height",o),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function K(r="2",o){let t=Q("circle");return t.setAttribute("r",r),t.setAttribute("fill",o),t}function J(r){let o=Q("line");return o.setAttribute("stroke",r),o}function V(r,o){let t=Q("rect");return t.setAttribute("stroke",r),t.setAttribute("fill",o),t}function k(r,o,t){r.setAttribute("cx",`${o}`),r.setAttribute("cy",`${t}`)}function G(r,o,t){o&&(r.setAttribute("x1",`${o.x}`),r.setAttribute("y1",`${o.y}`)),t&&(r.setAttribute("x2",`${t.x}`),r.setAttribute("y2",`${t.y}`))}function S(r,o,t,e,i){r.setAttribute("x",`${o}`),r.setAttribute("y",`${t}`),r.setAttribute("width",`${e}`),r.setAttribute("height",`${i}`)}function jt(){return Promise.resolve()}function Be(){return new Promise(r=>{requestAnimationFrame(r)})}function ze(r){return parseInt(r.replace("#","0x"),16)}function Fe(r,o){let t=parseInt(r.substring(1,3),16),e=parseInt(r.substring(3,5),16),i=parseInt(r.substring(5,7),16),n=Math.round(t*o),s=Math.round(e*o),c=Math.round(i*o);return`#${(1<<24|n<<16|s<<8|c).toString(16).slice(1)}`}function tt(r,o=.85){let t,e,i;if(r.startsWith("#"))t=parseInt(r.substring(1,3),16),e=parseInt(r.substring(3,5),16),i=parseInt(r.substring(5,7),16);else{let s=r.slice(4,-1).split(",");t=parseInt(s[0].trim()),e=parseInt(s[1].trim()),i=parseInt(s[2].trim())}return t=Math.min(Math.floor(t*o),255),e=Math.min(Math.floor(e*o),255),i=Math.min(Math.floor(i*o),255),"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)}var ne=require("three/examples/jsm/loaders/GLTFLoader");function Te(){return new ne.GLTFLoader}var bt=null,wt=new Map;function qt(r){if(wt.has(r)){let t=wt.get(r).then(e=>(e.scene=e.scene.clone(),e))}bt||(bt=Te());let o=new Promise((t,e)=>{bt.load(r,i=>{t(i)},void 0,e)});return wt.set(r,o),o.then(t=>(t.scene=t.scene.clone(),t))}function Kt(){bt=null,wt.clear()}var et=navigator.userAgent.toUpperCase().indexOf("MAC")>=0;function Pt(r){return et?r==="Meta":r==="Control"}var Zt="__once__",it=class{events=new Map;on(o,t){if(typeof t!="function")return;let e=this.events.get(o);return e?e.add(t):this.events.set(o,new Set([t]))}once(o,t){if(typeof t!="function")return;let e=`${Zt}${o}`,i=this.events.get(e);return i?i.add(t):this.events.set(e,new Set([t]))}off(o,t){let e=this.events.get(o),i=this.events.get(`${Zt}${o}`);!e&&!i||(t===void 0&&(e?.clear(),i?.clear()),e?.has(t)&&e.delete(t),i?.has(t)&&i.delete(t))}offAll(){this.events.clear()}emit(o,...t){let e=this.events.get(o),i=this.events.get(`${Zt}${o}`);!e&&!i||(e?.forEach(n=>{typeof n=="function"&&n(...t)}),i?.forEach(n=>{typeof n=="function"&&n(...t)}),i?.clear())}};var Et=(t=>(t.SWITCH_FLOOR_BEFORE="switch_floor_before",t.SWITCH_FLOOR_AFTER="switch_floor_after",t))(Et||{});var v=require("three"),j=require("@tweenjs/tween.js");var pe=require("three");var f=require("three");var Ae={id:"",height:.1,airHeight:0,area:0,group:"",fillColor:"#EFF4FB",strokeColor:"#ffffff",fillOpacity:1,strokeOpacity:1,strokeWidth:1,doors:[],locked:!1,visible:!0,geometry:{type:"polygon",cds:[],coords:[],curveCpt:[],curveIndex:[]},layerType:"",zIndex:0,stroke:!0,deltaHeight:0,userData:{},gradualColor:[],renderType:"single",colorFactor:.9},O=class extends f.Object3D{constructor(t,e){super();this.context=t;if(this.options=N({...Ae,...e},this),this.options.geometry.type==="point"){let[i,n]=this.options.geometry.coords;return this.position.set(i,n,this.options.height+this.options.airHeight),this}this.init(),this.visible=this.options.visible,this.addEventListener("change-fillColor",({value:i})=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-fillOpacity",({value:i})=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-height",({value:i})=>{this.dispose(),this.init()}),this.addEventListener("change-strokeColor",({value:i})=>{this.options.stroke&&(this.initLineMaterial(),this.createBorder())}),this.addEventListener("change-strokeOpacity",({value:i})=>{this.options.stroke&&(this.initLineMaterial(),this.createBorder())}),this.addEventListener("change-airHeight",({value:i})=>{this.position.z=i}),this.addEventListener("change-visible",({value:i})=>{this.visible=i}),this.addEventListener("change-stroke",({value:i})=>{if(i){if(this.line)return;this.initLineGeometry(),this.initLineMaterial(),this.createBorder()}else this.line&&(this.remove(this.line),this.lineGeometry?.dispose())}),this.addEventListener("change-renderType",()=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-gradualColor",()=>{this.initMaterial(),this.initMesh()})}geometry;material;mesh;line;lineMaterial;lineGeometry;options;getCenter(){if(this.options.geometry.type==="point")return this.position.clone();let t=new f.Vector3,e=new f.Box3;return e.setFromObject(this),e.getCenter(t),t}getSize(){if(this.options.geometry.type==="point")return new f.Vector3(0,0,0);let t=new f.Box3,e=new f.Vector3;return t.setFromObject(this),t.getSize(e),e}getPosition(){let t=this.getCenter();return t.setZ(t.z+this.options.height/2),t}init(){this.geometry=this.initGeometry(),this.initMaterial(),this.initMesh(),this.mesh.position.z=this.options.airHeight+this.options.deltaHeight,this.options.stroke&&(this.initLineMaterial(),this.initLineGeometry(),this.createBorder())}initGeometry(){let t=Rt(this.options.geometry.coords[0],this.options.geometry.coords.slice(1));return new f.ExtrudeGeometry(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initSingleMaterial(){let t=this.context.materialFactory.createMeshBasicMaterial({color:this.options.fillColor,opacity:this.options.fillOpacity});if(this.options.height<=.1)return this.material=t,t;let e=this.context.materialFactory.createMeshBasicMaterial({color:tt(this.options.fillColor),opacity:this.options.fillOpacity});return this.material=[t,e],[t,e]}getMaxAndMin(t,e){let i=new f.Box3().setFromObject(this),n=t.clone().add(e.clone().multiplyScalar(1e3)),s=new f.Ray(n,e.clone().multiplyScalar(-1)),c=new f.Vector3;s.intersectBox(i,c);let a=t.clone().add(e.clone().multiplyScalar(-1e3)),h=new f.Ray(a,e.clone()),l=new f.Vector3;return h.intersectBox(i,l),{max:l,min:c}}initGradualMaterial(){let{max:t,min:e}=new f.Box3().setFromObject(this),i=t.clone().sub(e),n=Math.max(i.x,i.y,i.z)/2,s=this.getPosition(),c=new f.Vector3(-1,.2,0).normalize(),{max:a,min:h}=this.getMaxAndMin(s,c),l=this.context.materialFactory.createShaderMaterial({gradualColor:this.options.gradualColor,center:this.getPosition(),maxValue:n,opacity:this.options.fillOpacity,direction:new f.Vector3(-1,.2,0),max:a,min:h});if(this.options.height<=.1)return this.material=l,l;let m=this.getCenter(),d=new f.Vector3(-1,.2,1).normalize(),{max:x,min:p}=this.getMaxAndMin(m,d),b=this.context.materialFactory.createShaderMaterial({gradualColor:[tt(this.options.gradualColor[0],this.options.colorFactor),tt(this.options.gradualColor[1],this.options.colorFactor)],center:this.getCenter(),maxValue:n,opacity:this.options.fillOpacity,direction:new f.Vector3(-1,.2,1),max:x,min:p});return this.material=[l,b],[l,b]}initMaterial(){return this.options.renderType==="gradual"?this.initGradualMaterial():this.initSingleMaterial()}initLineMaterial(){let t=this.context.materialFactory.createLineMaterial({color:this.options.strokeColor,opacity:this.options.strokeOpacity});return this.lineMaterial=t,t}initMesh(){this.mesh&&this.remove(this.mesh),this.mesh=new f.Mesh(this.geometry,this.material),this.add(this.mesh)}getBorderPoints(){let t=[],e=this.options.height+this.options.deltaHeight,{coords:i}=this.options.geometry;for(let n=0;n<i.length;n++){let s=i[n];for(let c=0;c<s.length;c++){let a=s[c],h=c+1===s.length?s[0]:s[c+1];t.push(new f.Vector3(a[0],a[1],e)),t.push(new f.Vector3(h[0],h[1],e))}}return t}initLineGeometry(){this.lineGeometry&&this.lineGeometry.dispose();let t=this.getBorderPoints(),e=new f.BufferGeometry().setFromPoints(t);this.lineGeometry=e}createBorder(){this.line&&this.remove(this.line);let t=new f.LineSegments(this.lineGeometry,this.lineMaterial);return t.position.z=this.options.airHeight+.01,this.line=t,this.add(t),t}raycast(t){if(!this.visible||this.options.geometry.type==="point")return!1;let e=t.intersectObject(this.mesh);if(e[0]){let{point:i,distance:n}=e[0];return{position:i,distance:n}}return!1}dispose(){this.geometry.dispose(),this.line?.geometry.dispose(),this.clear()}};var D=require("three");var ot=class extends D.Object3D{directionalLight;plane;basicOpacity=.07;constructor(){super(),this.directionalLight=this.initLight(),this.initPlane()}initLight(){let o=_t(16777215,.5);return o.position.set(0,0,100),this.add(o),o}changeLightCamera(o){let t=o.x,e=o.y;this.directionalLight.shadow.camera.left=-t,this.directionalLight.shadow.camera.right=t,this.directionalLight.shadow.camera.top=e,this.directionalLight.shadow.camera.bottom=-e,this.directionalLight.shadow.camera.near=.5,this.directionalLight.shadow.camera.far=Math.max(t,e)}changeLightColor(o){this.directionalLight.color=new D.Color(o)}setPosition(o){this.position.copy(o),this.directionalLight.position.set(-o.x/2,-o.y/2,100)}initPlane(o=1e3,t=1e3){let e=new D.PlaneGeometry(o,t),i=new D.ShadowMaterial({transparent:!0,opacity:0,side:D.DoubleSide}),n=new D.Mesh(e,i);return n.receiveShadow=!0,n.position.z=-10,this.add(n),this.plane=n,n}setTarget(o){this.directionalLight.target=o}transformOpacity(o){return o*this.basicOpacity}setOpacity(o){this.plane.material.opacity=this.transformOpacity(o)}dispose(){F(this,!0)}};var Mt=require("three");var P=require("three");var re=require("lodash"),ke={autoUpdate:!0,appendToBody:!1,autoChangePlacement:!1},nt=class extends P.EventDispatcher{constructor(t,e={}){super();this.context=t;this.options={...ke,...e},this.registryEvent(),this.div=this.initDiv(),this.options.appendToBody?document.body.appendChild(this.div):this.context.container.appendChild(this.div)}div;element;position=new P.Vector3;clientPos={x:0,y:0};visible=!0;options;placement="top";observer=null;initObserver(){let t=new MutationObserver((0,re.debounce)(()=>{this.div&&this.usePlacement()},100));t.observe(this.div,{childList:!0,subtree:!0,attributes:!0}),this.observer=t}getPlacementPosition(){let{max:t,min:e}=new P.Box3().setFromObject(this.element),i=(t.x+e.x)/2,n=(t.y+e.y)/2;return{left:new P.Vector3(e.x,n,t.z),leftTop:new P.Vector3(e.x,t.y,t.z),top:new P.Vector3(i,t.y,t.z),rightTop:new P.Vector3(t.x,t.y,t.z),right:new P.Vector3(t.x,n,t.z),rightBottom:new P.Vector3(t.x,e.y,t.z),bottom:new P.Vector3(i,e.y,t.z),leftBottom:new P.Vector3(e.x,e.y,t.z),center:new P.Vector3(i,n,t.z)}}getPlacementScreenPosition(){let{width:t,height:e}=this.context.clientSize,i=this.getPlacementPosition();return Object.keys(i).reduce((n,s)=>{let{x:c,y:a}=g(i[s],this.context.camera,t,e);return n[s]={x:c,y:a},n},{})}checkOverflow(t,e){let{width:i,height:n}=this.context.clientSize;return e.x>0&&t.x<i&&e.y<n&&t.y>0}getPlacement(){let{clientWidth:t,clientHeight:e}=this.div,i=this.getPlacementScreenPosition(),n=t/2,s=e/2,c=[{type:"center",getBox(a,h){return{max:{x:n+a,y:h-e},min:{x:a-n,y:h}}}},{type:"left",getBox(a,h){return{max:{x:a,y:h-s},min:{x:a-t,y:h+s}}}},{type:"leftTop",getBox(a,h){return{max:{x:a,y:h-e},min:{x:a-t,y:h}}}},{type:"top",getBox(a,h){return{max:{x:a+n,y:h-e},min:{x:a-n,y:h}}}},{type:"rightTop",getBox(a,h){return{max:{x:a+t,y:h-e},min:{x:a,y:h}}}},{type:"right",getBox(a,h){return{max:{x:a+t,y:h-s},min:{x:a,y:h+s}}}},{type:"rightBottom",getBox(a,h){return{max:{x:a+t,y:h},min:{x:a,y:h+e}}}},{type:"bottom",getBox(a,h){return{max:{x:a+n,y:h},min:{x:a-n,y:h+e}}}},{type:"leftBottom",getBox(a,h){return{max:{x:a,y:h},min:{x:a-t,y:h+s}}}}];for(let a=0;a<c.length;a++){let h=c[a],l=i[h.type],{max:m,min:d}=h.getBox(l.x,l.y);if(this.checkOverflow(m,d))return{type:h.type,position:l}}return{type:"center",position:i.center}}initDiv(){let t=document.createElement("div");return t.style.position="absolute",t}usePlacement(){let t=this.getPlacement();this.div.className=`overlay_${t.type}`,this._updatePosition(t.position.x,t.position.y)}bindElement(t){this.element=t,this.options.autoChangePlacement&&this.initObserver(),this.onUpdate()}unBindElement(){this.element=void 0}setVisible(t,e="block"){t!==this.visible&&(this.div.style.display=t?e:"none",this.visible=t)}setOpacity(t){this.div.style.opacity=`${t}`}getPosition(){return this.element?typeof this.element.getPosition=="function"?this.element.getPosition():new P.Box3().setFromObject(this.element).getCenter(new P.Vector3):this.position}get withinDisplayRange(){let{x:t,y:e}=this.clientPos,{width:i,height:n}=this.context.clientSize;return t>=0&&t<=i&&e>=0&&e<=n}_updatePosition(t,e){this.clientPos={x:t,y:e};let{width:i,height:n,x:s,y:c}=this.context.clientSize;this.options.appendToBody&&(this.div.style.left=`${s}px`,this.div.style.top=`${c+n}px`),this.options.autoUpdate?this.div.style.transform=`translate3d(${t}px, ${-n+e}px, 0)`:this.dispatchEvent({type:"update-position",x:t,y:e,width:i,height:n})}updatePosition(t=!1){let e=this.getPosition(),{width:i,height:n,x:s,y:c}=this.context.clientSize,{x:a,y:h}=g(e,this.context.camera,i,n);this.clientPos.x===a&&this.clientPos.y===h&&!t||this._updatePosition(a,h)}onUpdate=()=>{this.options.autoChangePlacement?this.usePlacement():this.updatePosition()};registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.unRegistryEvent(),this.unBindElement(),this.observer?.disconnect(),this.div?.remove(),this.div=null}};var Re={texts:[{text:""}],level:1,icon_position:"bottom",collision_enable:!0,opacity:1,id:"",position:{x:0,y:0,z:0},icon_opacity:1,icon_border:{color:"#586EE0",width:0},background:"",collision_hide_icon:!0,built_in:!1,box_only_icon:!1},Z=class extends Mt.EventDispatcher{constructor(t,e){super();this.context=t;this.options=N({...Re,...e},this),this.position.set(e.position?.x||0,e.position?.y||0,e.position?.z||0),this.overlay=new nt(this.context,{autoUpdate:!1}),this.overlay.addEventListener("update-position",({x:i,y:n,height:s})=>{this.overlay.div.style.transform=`translate3d(calc(${i}px - 50%), calc(${-s+n}px - ${this.options.icon?"100%":"50%"}), 0)`}),this.overlay.bindElement(this),this.registryEvent(),this.initDiv(),this.addEventListener("change-icon",({value:i})=>{i?this.img?this.img.setAttribute("src",i):(this.addIcon(),this._changePosition()):(this.img&&this.div.removeChild(this.img),this.img=void 0,this._changePosition(),this.resetSize())}),this.addEventListener("change-texts",({value:i})=>{this.div.removeChild(this.textDiv),this.addText(),this.resetSize()}),this.addEventListener("change-opacity",({value:i})=>{this.overlay.setOpacity(i)}),this.addEventListener("change-icon_size",({value:i})=>{this.img&&(this.img.style.width=`${i?.[0]||32}px`,this.img.style.height=`${i?.[1]||32}px`,this.resetSize())}),this.addEventListener("change-icon_opacity",({value:i})=>{this.img&&(this.img.style.opacity=`${i}`)}),this.addEventListener("change-icon_border",({value:i})=>{this.img&&(this.img.style.border=`${i.width}px solid ${i.color}`)}),this.addEventListener("change-background",({value:i})=>{this.div.style.background=i})}div;textDiv;img;overlay;options;visible=!0;size={width:0,height:0};position=new Mt.Vector3;userData={};showTextStatus=!0;get withinDisplayRange(){return this.overlay.withinDisplayRange}async resetSize(){if(await jt(),this.options.box_only_icon){if(!this.img)return;let{width:t,height:e}=this.img.getBoundingClientRect();this.size={width:t+2,height:e+2}}else{let{width:t,height:e}=this.div.getBoundingClientRect();this.size={width:t+2,height:e+2}}}renderHelperBox(){}get clientPos(){return this.overlay.clientPos}initDiv(){let t=document.createElement("div");return this.div=t,this.addText(),this.options.icon&&this.addIcon(),t.style.fontSize="12px",t.style.textShadow="#fff 1px 0 0, #fff 0 1px 0, #fff -1px 0 0, #fff 0 -1px 0",t.style.display="flex",t.style.flexDirection="column",t.style.justifyContent="center",t.style.alignItems="center",t.style.padding="4px",this.overlay.setOpacity(this.options.opacity),this.overlay.div.style.pointerEvents="none",this.overlay.div.style.userSelect="none",this.overlay.div.appendChild(t),this.resetSize(),t}addIcon(){if(!this.img){let t=this.initIcon();this.options.icon_position==="top"?this.div.firstChild?this.div.insertBefore(t,this.div.firstChild):this.div.appendChild(t):this.div.appendChild(t)}}addText(){let t=this.initText();this.options.icon_position==="top"?this.div.appendChild(t):this.div.firstChild?this.div.insertBefore(t,this.div.firstChild):this.div.appendChild(t)}getPosition(){return this.position}initText(){let t=document.createElement("div");return t.appendChild(this.createTextFragment()),t.style.textAlign="center",this.textDiv=t,t}createTextFragment(){let t=document.createDocumentFragment();return this.options.texts.forEach(e=>{let i=document.createElement("div");if(i.style.whiteSpace="nowrap",e.styles)for(let[n,s]of Object.entries(e.styles))i.style[n]=s;i.textContent=e.text,t.appendChild(i)}),t}initIcon(){let t=document.createElement("img");return t.setAttribute("src",this.options.icon),t.style.width=`${this.options.icon_size?.[0]||32}px`,t.style.height=`${this.options.icon_size?.[1]||32}px`,t.style.opacity=`${this.options.icon_opacity}px`,t.style.borderRadius="50%",this.options.icon_border.width&&(t.style.border=`${this.options.icon_border.width}px solid ${this.options.icon_border.color}`),t.onload=()=>{this.resetSize()},this.img=t,t}_changePosition=()=>{this.overlay.updatePosition(!0)};registryEvent(){}unRegistryEvent(){}setVisible(t){t!==this.visible&&(this.visible=t,this.changeOverlayVisible(t))}changeOverlayVisible(t){if(!(t===this.overlay.visible&&this.options.collision_hide_icon))if(this.options.collision_hide_icon)this.overlay.visible=t,this.overlay.div.style.visibility=t?"visible":"hidden";else{if(this.showTextStatus===t)return;this.textDiv.style.visibility=t?"visible":"hidden",this.showTextStatus=t}}parentSetVisible(t){this.visible&&this.changeOverlayVisible(t)}getBox(t=this.context.config.poi.boxScale){let{width:e,height:i}=this.size,n=e*t,s=i*t,{x:c,y:a}=this.overlay.clientPos;return{left:c-n/2,right:c+n/2,top:this.options.icon?a-s:a-s/2,bottom:this.options.icon?a:a+s/2}}getOriginBox(){return this.getBox(1)}isContain(t,e){if(!this.overlay.visible||!this.visible)return!1;let i=this.getOriginBox();return t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}dispose(){this.unRegistryEvent(),this.div=null,this.textDiv=null,this.img=void 0,this.overlay.dispose()}};var L=require("three");var Ct=require("three");var se=require("three");var I=class extends se.Object3D{constructor(t){super();this.context=t}dispose(){F(this),this.clear()}};var rt=class extends I{graphicMap=new Map;constructor(o){super(o)}getCenter(){return new Ct.Box3().setFromObject(this).getCenter(new Ct.Vector3)}createGraphic(o){let t=new O(this.context,o);return this.add(t),this.graphicMap.set(o.id,t),t}removeGraphic(o){this.remove(o),this.graphicMap.delete(o.options.id),o.dispose()}removeGraphicById(o){this.graphicMap.has(o)&&this.removeGraphic(this.graphicMap.get(o))}getGraphicByNodeId(o){return this.graphicMap.get(o)||null}getGraphicByRaycaster(o){let t={distance:1e4,graphic:null,position:null},e=this.children.reduce((i,n)=>{if(n instanceof O){let s=n.raycast(o);if(s){let{distance:c}=s;if(c<i.distance)return{distance:i.distance,position:i.position,graphic:n}}return i}else return i},t);return e===t?{graphics:[],position:null}:{graphics:[e.graphic],position:e.position}}};var ae=require("lodash");var st=class extends I{pois=[];debounceCollisionDetection;timer=new B;constructor(o){super(o),this.registryEvent(),this.debounceCollisionDetection=(0,ae.debounce)(this.collisionDetection,10)}clear(o=!1){return this.pois.forEach(t=>{t.options.built_in&&!o||t.dispose()}),this.pois=o?[]:this.pois.filter(t=>t.options.built_in),this}createPoi(o){let t=new Z(this.context,o);return this.pushPoi(t),t.addEventListener("change-level",()=>this.changePoiLevelOrCollisionEnable(t)),t.addEventListener("change-collision_enable",()=>this.changePoiLevelOrCollisionEnable(t)),Promise.resolve().then(()=>{this.debounceCollisionDetection()}),t}changePoiLevelOrCollisionEnable(o){let t=this.pois.findIndex(e=>e===o);t!==-1&&(this.pois.splice(t,1),this.pushPoi(o))}removePoi(o){let t=this.pois.findIndex(e=>e===o);t!==-1&&(this.pois.splice(t,1),o.dispose())}removePoiById(o){let t=this.pois.find(e=>e.options.id===o);t&&this.removePoi(t)}getPoiById(o){return this.pois.find(e=>e.options.id===o)||null}pushPoi(o){if(!o.options.collision_enable){this.pois.unshift(o);return}if(o.options.level===0){this.pois.push(o);return}for(let t=0;t<this.pois.length;t++){let e=this.pois[t];if(e.options.collision_enable&&e.options.level<=o.options.level){this.pois.splice(t,0,o);return}}this.pois.push(o)}getPoiByDeviceXy(o,t){return this.pois.filter(i=>i instanceof Z&&i.isContain(o,t))}onUpdate=()=>{this.timer.requestAnimationFrame(()=>{this.collisionDetection()})};collisionDetection(){let o=[];this.pois.filter(e=>e.visible&&e.withinDisplayRange).forEach((e,i)=>{let{left:n,right:s,top:c,bottom:a}=e.getBox();if(i===0||!e.options.collision_enable){o.push({left:n,right:s,top:c,bottom:a}),e.parentSetVisible(!0);return}let h=o.some(l=>l.left<s&&l.right>n&&l.top<a&&l.bottom>c);e.parentSetVisible(!h),h||o.push({left:n,right:s,top:c,bottom:a})})}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.timer.dispose(),this.pois.forEach(o=>o.dispose()),this.pois.length=0,this.debounceCollisionDetection=()=>{},super.dispose(),this.unRegistryEvent()}};var E=require("three"),ce=require("@mars3d/heatmap.js"),R=require("@turf/turf"),at=class extends E.Object3D{constructor(t){super();this.context=t;this.div=document.createElement("div")}heatmap;div;plane;clearHeatmap(){this.div.firstChild&&this.div.removeChild(this.div.firstChild),this.heatmap=void 0}loadData(t){this.clearHeatmap();let{width:e,height:i,leftTop:n,center:s}=this.getBox(t);this.heatmap=(0,ce.create)({width:e,height:i,container:this.div,...this.context.config.heatMap}),this.heatmap.setData(this.transformData(t,n)),this.initPlane(e,i),this.position.set(s[0],s[1],this.position.z)}initPlane(t,e){this.plane&&this.remove(this.plane);let i=new E.PlaneGeometry(t,e),n=new E.Texture(this.div.firstChild);n.needsUpdate=!0;let s=new E.MeshBasicMaterial({transparent:!0,side:E.DoubleSide,map:n});s.needsUpdate=!0,this.plane=new E.Mesh(i,s),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new E.Matrix3().makeScale(1,-1).multiply(new E.Matrix3().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(s=>{let c=new E.Vector2(s.x,s.y).applyMatrix3(i);return{x:c.x,y:c.y,value:s.value}}),max:t.max,min:t.min}}getBox(t){let e=(0,R.featureCollection)(t.data.map(h=>(0,R.point)([h.x,h.y]))),i=(0,R.bbox)(e),n=i[2]-i[0],s=i[3]-i[1],c={x:i[0],y:i[3]},a=(0,R.center)(e);return{width:n,height:s,leftTop:c,center:a.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var $=require("three");var ct=class extends $.Object3D{constructor(t,e){super();this.context=t;this.options=e;this.position.copy(e.position||new $.Vector3(0,0,0)),this.loadModel()}poi=null;model=null;async loadModel(){let t=await qt(this.options.modelUrl);t.scene.rotation.set(Math.PI/2,Math.PI/2,0),this.add(t.scene),this.model=t,this.initPoi()}initPoi(){if(!this.options.icon)return;let t=this.context.currentFloor?.addPoi({icon:this.options.icon,icon_size:this.options.icon_size,built_in:!0,level:0});this.poi=t||null,this.model&&t&&(t.position=new $.Box3().setFromObject(this).getCenter(new $.Vector3))}dispose(){F(this),this.model=null,this.poi&&(this.context.currentFloor?.poiLayer.removePoi(this.poi),this.poi=null)}};var ht=class extends L.Object3D{constructor(t){super();this.context=t;this.graphicLayer=new rt(this.context),this.poiLayer=new st(this.context),this.groundUpper.add(this.graphicLayer),this.groundUpper.add(this.poiLayer),this.add(this.groundUpper),this.add(this.models)}graphicLayer;poiLayer;grounds=new Set;shadow=new ot;heatmap;groundUpper=new L.Object3D;models=new L.Object3D;modelMap=new Map;groundMaxHeight=0;getPosition(){return new L.Box3().setFromObject(this.groundUpper).getCenter(new L.Vector3)}createGround(t){let e=new O(this.context,t);this.addGrounds([e])}addGrounds(t){t.forEach(e=>{this.grounds.has(e)||(e.mesh.castShadow=!0,this.grounds.add(e),this.groundUpper.add(e))}),this.changeGroundMaxHeight()}changeGroundMaxHeight(){let t=Array.from(this.grounds);this.groundMaxHeight=this.grounds.size>0?Math.max(...t.map(e=>e.options.height+e.options.airHeight+e.options.deltaHeight)):0,this.graphicLayer.position.z=this.groundMaxHeight,this.models.position.z=this.groundMaxHeight}get hasElement(){return!!(this.grounds.size||this.graphicLayer.children.length)}getCenter(){return new L.Box3().setFromObject(this.groundUpper).getCenter(new L.Vector3)}addModel(t){let e=new ct(this.context,t);return this.models.add(e),this.modelMap.set(t.id,e),e}addShadow(){let t=new L.Box3().setFromObject(this.groundUpper),e=t.getCenter(new L.Vector3),i=t.getSize(new L.Vector3);this.shadow.setPosition(e),this.shadow.changeLightCamera(i)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){this.heatmap||(this.heatmap=new at(this.context),this.add(this.heatmap)),this.heatmap.loadData(t);let e=new L.Box3().setFromObject(this.graphicLayer);return this.heatmap.position.setZ(e.max.z),this.heatmap}removeHeatMap(){this.heatmap&&(this.remove(this.heatmap),this.heatmap.dispose(),this.heatmap=void 0)}setShadowOpacity(t){this.shadow.setOpacity(t)}setShadowVisible(t){this.shadow.visible=t}dispose(){this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),this.grounds.forEach(t=>t.dispose()),this.heatmap?.dispose(),this.groundUpper.clear(),this.models.children.forEach(t=>t.dispose()),this.models.clear(),this.modelMap.clear(),this.clear()}};var Lt=require("three");var z=class extends Lt.EventDispatcher{constructor(t){super();this.context=t;this.svg=Ut(`${t.container.clientWidth}`,`${t.container.clientHeight}`),t.container.appendChild(this.svg),this._registryEvent()}points=[];svg;enable=!0;_onResize=({width:t,height:e})=>{this.svg&&(this.svg.setAttribute("width",`${t}`),this.svg.setAttribute("height",`${e}`))};_registryEvent(){this.context.addEventListener("resize",this._onResize)}_unRegistryEvent(){this.context.removeEventListener("resize",this._onResize)}setEnable(t){this.enable=t,t?this.svg.style.display="block":this.svg.style.display="none"}getIntersectByPointerEvent(t){let{camera:e,renderer:i}=this.context,{offsetX:n,offsetY:s}=t,{clientWidth:c,clientHeight:a}=i.domElement,h=n/c*2-1,l=1-s/a*2;return new Lt.Vector3(h,l,0).unproject(e)}getSvgCoordinate(t){let{camera:e,container:i}=this.context;return g(t,e,i.clientWidth,i.clientHeight)}dispose(){this._unRegistryEvent(),this.context.container.removeChild(this.svg),this.svg=null}};var lt=class extends z{constructor(t){super(t);this.context=t;let{config:{svg:{circle:e,line:i}}}=t;this.circles=[K(e.radius,e.fill),K(e.radius,e.fill)],this.line=J(i.stroke),this.svg.appendChild(this.circles[0]),this.svg.appendChild(this.circles[1]),this.svg.appendChild(this.line),this.registryEvent()}circles;line;setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}registryEvent(){this.context.container.addEventListener("pointerenter",this.onPointermove),this.context.container.addEventListener("pointermove",this.onPointermove),this.context.container.addEventListener("pointerleave",this.onPointerleave),this.context.container.addEventListener("pointerdown",this.onPointerdown),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerenter",this.onPointermove),this.context.container.removeEventListener("pointermove",this.onPointermove),this.context.container.removeEventListener("pointerleave",this.onPointerleave),this.context.container.removeEventListener("pointerdown",this.onPointerdown),this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{if(this.points[0]){let t=this.getSvgCoordinate(this.points[0]);k(this.circles[0],t.x,t.y),G(this.line,t)}if(this.points[1]){let t=this.getSvgCoordinate(this.points[1]);k(this.circles[1],t.x,t.y),G(this.line,void 0,t)}};onPointermove=t=>{this.points.length===1&&(this.line.style.display="block",G(this.line,void 0,{x:t.offsetX,y:t.offsetY}))};onPointerleave=()=>{this.points[1]||(this.line.style.display="none")};onPointerdown=t=>{if(this.points[1])return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t,s=this.circles[this.points.length];k(s,i,n),this.points.length||G(this.line,{x:i,y:n},{x:i,y:n}),this.addPoint(e)}};addPoint(t){if(this.points.push(t),this.points.length>=2){let e=this.calculatedDistance();this.dispatchEvent({type:"distance",distance:e})}}calculatedDistance(){let[{x:t,y:e},{x:i,y:n}]=this.points;return Math.sqrt((i-t)**2+(n-e)**2)}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var pt=class extends z{circles=[];lines=[];isClose=!1;constructor(o){super(o),this.registryEvent()}setEnable(o){super.setEnable(o),o?this.registryEvent():this.unRegistryEvent()}get lastLine(){return this.lines.slice(-1)[0]}addCircle(o){this.circles.push(o),this.svg.appendChild(o)}addLine(o){this.lines.push(o),this.svg.appendChild(o)}registryEvent(){this.context.container.addEventListener("pointerenter",this.onPointermove),this.context.container.addEventListener("pointermove",this.onPointermove),this.context.container.addEventListener("pointerleave",this.onPointerleave),this.context.container.addEventListener("pointerdown",this.onPointerdown),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerenter",this.onPointermove),this.context.container.removeEventListener("pointermove",this.onPointermove),this.context.container.removeEventListener("pointerleave",this.onPointerleave),this.context.container.removeEventListener("pointerdown",this.onPointerdown),this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{this.points.length&&this.points.forEach((o,t)=>{let e=this.getSvgCoordinate(o);this.circles[t]&&k(this.circles[t],e.x,e.y),t!==0&&G(this.lines[t-1],void 0,e),this.lines[t]&&G(this.lines[t],e)})};onPointermove=o=>{!this.lastLine||this.isClose||(this.lastLine.style.display="block",G(this.lastLine,void 0,{x:o.offsetX,y:o.offsetY}))};onPointerleave=()=>{this.isClose||(this.lastLine.style.display="none")};onPointerdown=o=>{if(this.isClose)return;let t=this.getIntersectByPointerEvent(o);if(t){let{offsetX:e,offsetY:i}=o;this.checkAdsorb(e,i)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(t);let{circle:{fill:n,radius:s},line:{stroke:c}}=this.context.config.svg;if(!this.isClose){let a=K(s,n);k(a,e,i),this.addCircle(a)}if(this.lines.length&&G(this.lastLine,void 0,{x:e,y:i}),!this.isClose){let a=J(c);G(a,{x:e,y:i},{x:e,y:i}),this.addLine(a)}}};checkAdsorb(o,t){if(this.points.length<3)return!1;let e=this.circles[0],i=+e.getAttribute("cx"),n=+e.getAttribute("cy");return Math.sqrt((o-i)**2+(t-n)**2)<=5}addPoint(o){if(this.points.push(o),this.isClose){let t=this.calculatedArea();this.dispatchEvent({type:"area",area:t})}}calculatedArea(){let o=this.points.map(i=>[i.x,i.y]),t=0,e=o.length;for(let i=0;i<e;i++){let n=(i+1)%e;t+=o[i][0]*o[n][1]-o[n][0]*o[i][1]}return Math.abs(t/2)}dispose(){super.dispose(),this.unRegistryEvent(),this.lines=[],this.circles=[]}};var he=require("three");var Xt=class extends z{constructor(t){super(t);this.context=t;let{config:{svg:{line:e}}}=t;this.rect=V(e.stroke,"transparent"),this.svg.appendChild(this.rect);for(let i=0;i<4;i++)this.cornerRect[i]=V(e.stroke,"#ffffff"),this.centerRect[i]=V(e.stroke,"#ffffff"),this.svg.appendChild(this.cornerRect[i]),this.svg.appendChild(this.centerRect[i]);this.registryEvent()}rect;cornerRect=[];centerRect=[];graphic;setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{if(this.graphic){let t=new he.Box3().setFromObject(this.graphic),{camera:e,container:{clientWidth:i,clientHeight:n}}=this.context,{min:s,max:c}=t,a=g(s,e,i,n),h=g(c,e,i,n);S(this.rect,a.x,h.y,Math.abs(h.x-a.x),Math.abs(h.y-a.y));let{x:l,y:m}=a,{x:d,y:x}=h,p=5,b=[{x:l-p,y:x-p},{x:d-p,y:x-p},{x:l-p,y:m-p},{x:d-p,y:m-p}];for(let C=0;C<b.length;C++)S(this.cornerRect[C],b[C].x,b[C].y,p*2,p*2);let y=4,u=(l+d)/2,T=(m+x)/2,W=[{x:u-y,y:x-y},{x:l-y,y:T-y},{x:d-y,y:T-y},{x:u-y,y:m-y}];for(let C=0;C<W.length;C++)S(this.centerRect[C],W[C].x,W[C].y,y*2,y*2)}else{S(this.rect,0,0,0,0);for(let t=0;t<this.cornerRect.length;t++)S(this.cornerRect[t],0,0,0,0),S(this.centerRect[t],0,0,0,0)}};selectGraphic(t){this.graphic=t}dispose(){super.dispose(),this.unRegistryEvent(),this.rect=null,this.cornerRect=[],this.centerRect=[]}};var le=require("three"),Gt=class extends z{startPoint;endPoint;rect;frustum=new le.Frustum;constructor(o){super(o);let{config:{selectBox:{fill:t,stroke:e}}}=o;this.rect=V(e,t),this.svg.appendChild(this.rect),this.registryEvent()}setEnable(o){super.setEnable(o),S(this.rect,0,0,0,0),o?this.registryEvent():(this.startPoint=void 0,this.unRegistryEvent())}onPointerDown=o=>{if(!this.enable)return;let t=this.getIntersectByPointerEvent(o);t&&(this.startPoint=t),this.endPoint=void 0};onPointerMove=o=>{if(!this.enable||!this.startPoint)return;let t=this.getIntersectByPointerEvent(o);t&&(this.endPoint=t)};onPointerUp=o=>{if(!this.enable)return;let t=this.getIntersectByPointerEvent(o);t&&(this.endPoint=t),this.doSelect(),this.startPoint=void 0};onUpdate=()=>{if(this.startPoint){let o=this.getSvgCoordinate(this.startPoint),t={...o};this.endPoint&&(t=this.getSvgCoordinate(this.endPoint));let e={x:Math.min(o.x,t.x),y:Math.min(o.y,t.y)},i=Math.abs(t.x-o.x),n=Math.abs(t.y-o.y);S(this.rect,e.x,e.y,i,n)}else S(this.rect,0,0,0,0)};registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),this.context.container.addEventListener("pointermove",this.onPointerMove),this.context.container.addEventListener("pointerup",this.onPointerUp),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),this.context.container.removeEventListener("pointermove",this.onPointerMove),this.context.container.removeEventListener("pointerup",this.onPointerUp),this.context.removeEventListener("update",this.onUpdate)}doSelect(){if(this.startPoint&&this.endPoint){if(this.startPoint.distanceTo(this.endPoint)<.1)return;let{context:{camera:t,container:{clientWidth:e,clientHeight:i}}}=this,n=g(this.startPoint,t,e,i),s=g(this.endPoint,t,e,i),c={x:Math.min(n.x,s.x),y:Math.min(n.y,s.y)},a={x:Math.max(n.x,s.x),y:Math.max(n.y,s.y)},h=this.searchMapInFrustum(c,a);this.dispatchEvent({type:"selected",list:h})}}searchMapInFrustum(o,t){let{context:e}=this;return e.currentFloor?.graphicLayer.children.filter(i=>i instanceof O&&this.searchChildInFrustum(i,o,t))||[]}searchChildInFrustum(o,t,e){let{context:{camera:i,container:{clientWidth:n,clientHeight:s}}}=this;if(!o)return!1;if(!o.mesh){let d=o.getPosition();if(d){let x=g(d,i,n,s);return Y(x,t,e)}return!1}o.mesh.geometry.boundingBox||o.mesh.geometry.computeBoundingBox();let c=o.mesh.geometry.boundingBox;if(!c)return!1;let{min:a,max:h}=c,l=g(a,i,n,s),m=g(h,i,n,s);return!(!Y(l,t,e)||!Y(m,t,e))}dispose(){this.unRegistryEvent()}};var mt=class extends pe.EventDispatcher{constructor(t){super();this.context=t;this.boxSelection=new Gt(t),this.boxSelection.setEnable(!1),this.registryEvent()}_list=new Set;boxSelection;prevPanStatus;prevRotateStatus;downPoint=null;isMultipleSelect=!1;get list(){return this._list}enableBoxSelection(){this.isMultipleSelect||(this.isMultipleSelect=!0,this.boxSelection.setEnable(!0),this.prevPanStatus=this.context.control.enablePan,this.prevRotateStatus=this.context.control.enableRotate,this.context.control.enablePan=!1,this.context.control.enableRotate=!1)}disableBoxSelection(){this.isMultipleSelect&&(this.isMultipleSelect=!1,this.boxSelection.setEnable(!1),this.context.control.enablePan=!!this.prevPanStatus,this.context.control.enableRotate=!!this.prevRotateStatus)}onPointerDown=t=>{this.downPoint={x:t.offsetX,y:t.offsetY}};onPointerUp=t=>{if(!this.downPoint)return;let{offsetX:e,offsetY:i}=t,{x:n,y:s}=this.downPoint;if(Math.sqrt((n-e)**2+(s-i)**2)>3)return;let{graphics:c}=this.context.getGraphicsByDeviceXy(e,i),a=new Set(c.map(l=>l.options.id));this.context.getPoisByDeviceXy(e,i).forEach(l=>{if(!a.has(l.options.id)){let m=this.context.currentFloor?.graphicLayer.graphicMap.get(l.options.id)||null;m&&m.options.geometry.type==="point"&&(c.push(m),a.add(l.options.id))}}),(et?t.metaKey:t.ctrlKey)||this._list.clear(),c.forEach(l=>this._list.add(l)),this.selectEnd(),this.downPoint=null};onPointerOut=t=>{this.disableBoxSelection()};onKeyDown=t=>{Pt(t.key)&&this.enableBoxSelection()};onKeyUp=t=>{Pt(t.key)&&this.disableBoxSelection()};onBoxSelected=({list:t})=>{this._list.clear(),t.forEach(e=>{this._list.add(e)}),this.selectEnd()};selectEnd(){this.dispatchEvent({type:"select",graphics:[...this._list],isMultipleSelect:this.isMultipleSelect})}registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),this.context.container.addEventListener("pointerup",this.onPointerUp),this.context.container.addEventListener("pointerout",this.onPointerOut),this.context.container.addEventListener("pointercancel",this.onPointerOut),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),this.boxSelection.addEventListener("selected",this.onBoxSelected)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),this.context.container.removeEventListener("pointerup",this.onPointerUp),this.context.container.removeEventListener("pointerout",this.onPointerOut),this.context.container.removeEventListener("pointercancel",this.onPointerOut),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),this.boxSelection.removeEventListener("selected",this.onBoxSelected)}clear(){this._list.clear()}remove(t){this._list.delete(t)}dispose(){this.unRegistryEvent()}};var me=require("three");var dt=class extends me.EventDispatcher{constructor(t){super();this.context=t;this.registryEvent()}curGraphics=new Set;timer=new B;graphicTimerMap=new Map;onPointerMove=({graphics:t,pois:e,e:i})=>{let n=e.map(h=>this.context.currentFloor?.graphicLayer.graphicMap.get(h.options.id)).filter(h=>h&&h.options.geometry.type==="point");if(!t.length&&!n.length&&this.curGraphics.size){this.curGraphics.clear(),this.handleHoverGraphicsChange();return}let{time:s}=this.context.config.hover,c=new Set;if(n.length){let h,l=1e4;n.forEach(m=>{let d=e.find(y=>y.options.id===m.options.id),{x,y:p}=d.clientPos,b=Math.sqrt((x-i.offsetX)**2+(p-i.offsetY)**2);b<l&&(l=b,h=m)}),c.add(h)}c.size||t.forEach(h=>c.add(h)),c.forEach(h=>{if(this.graphicTimerMap.get(h)||this.curGraphics.has(h))return;let l=this.timer.setTimeout(()=>{this.curGraphics.add(h),this.graphicTimerMap.delete(h),this.timer.clearTimeout(l),this.handleHoverGraphicsChange()},s);this.graphicTimerMap.set(h,l)}),this.graphicTimerMap.forEach((h,l)=>{c.has(l)||(this.timer.clearTimeout(h),this.graphicTimerMap.delete(l))});let a=this.curGraphics.size;this.curGraphics.forEach(h=>{c.has(h)||this.curGraphics.delete(h)}),a!==this.curGraphics.size&&this.handleHoverGraphicsChange()};onPointerLevel=()=>{this.curGraphics.clear(),this.handleHoverGraphicsChange()};handleHoverGraphicsChange(t=this.curGraphics){this.dispatchEvent({type:"hover-change",graphics:Array.from(t)})}registryEvent(){this.context.addEventListener("pointer-over",this.onPointerMove),this.context.addEventListener("pointer-move",this.onPointerMove),this.context.addEventListener("pointer-level",this.onPointerLevel)}unRegistryEvent(){this.context.removeEventListener("pointer-over",this.onPointerMove),this.context.removeEventListener("pointer-move",this.onPointerMove),this.context.removeEventListener("pointer-level",this.onPointerLevel)}dispose(){this.unRegistryEvent(),this.timer.dispose()}};var M=require("three");function de(r){return`${r.x}-${r.y}-${r.z}`}var St=class{constructor(o){this.context=o}lineMaterialMap=new Map;meshStandardMaterialMap=new Map;meshBasicMaterialMap=new Map;shaderMaterialMap=new Map;generateLineMaterialKey({color:o,opacity:t}){return`${o}-${t}`}createLineMaterial({color:o,opacity:t}){let e=this.generateLineMaterialKey({color:o,opacity:t});if(this.lineMaterialMap.has(e))return this.lineMaterialMap.get(e);let i=new M.LineBasicMaterial({color:new M.Color(o).convertLinearToSRGB(),transparent:!0,opacity:t});return this.lineMaterialMap.set(e,i),i}createMeshStandardMaterial({color:o,opacity:t}){let e=`${o}-${t}`;if(this.meshStandardMaterialMap.has(e))return this.meshStandardMaterialMap.get(e);let i=new M.MeshStandardMaterial({color:new M.Color(o).convertLinearToSRGB(),roughness:1,transparent:!0,opacity:t,depthWrite:!0});return this.meshStandardMaterialMap.set(e,i),i}createMeshBasicMaterial({color:o,opacity:t}){let e=`${o}-${t}`;if(this.meshBasicMaterialMap.has(e))return this.meshBasicMaterialMap.get(e);let i=new M.MeshBasicMaterial({color:o,transparent:!0,opacity:t,depthWrite:!0});return this.meshBasicMaterialMap.set(e,i),i}createShaderMaterial({gradualColor:o,center:t,maxValue:e,opacity:i,direction:n,max:s,min:c}){let a=`${o.toString()}-${de(t)}-${e}-${i}-${de(n)}`;if(this.shaderMaterialMap.has(a))return this.shaderMaterialMap.get(a);let h=`
|
|
1
|
+
"use strict";var Bt=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var Se=Object.getOwnPropertyNames;var De=Object.prototype.hasOwnProperty;var Oe=(r,o)=>{for(var t in o)Bt(r,t,{get:o[t],enumerable:!0})},Fe=(r,o,t,e)=>{if(o&&typeof o=="object"||typeof o=="function")for(let i of Se(o))!De.call(r,i)&&i!==t&&Bt(r,i,{get:()=>o[i],enumerable:!(e=Ge(o,i))||e.enumerable});return r};var Be=r=>Fe(Bt({},"__esModule",{value:!0}),r);var Ue={};Oe(Ue,{BMap:()=>Nt,BaseSvg:()=>F,Context:()=>ut,Equipment:()=>gt,Events:()=>et,Floor:()=>ht,Graphic:()=>S,GraphicLayer:()=>rt,HeatmapElement:()=>at,HooksName:()=>it,HoverHelper:()=>dt,Layer:()=>V,MapTypePolar:()=>we,Model:()=>ct,Navigation:()=>Jt,Overlay:()=>nt,Poi:()=>Z,PoiLayer:()=>st,SelectBox:()=>Xt,Selection:()=>mt,Shadow:()=>ot,SplitLoad:()=>te,SvgLine:()=>lt,SvgPolygon:()=>pt,Timer:()=>O,addAlphaToHexColor:()=>Re,clearCanvas:()=>Ut,clearTextTexture:()=>$t,createCanvas:()=>ae,createCircle:()=>q,createLine:()=>N,createRect:()=>I,createSvg:()=>jt,createSvgElement:()=>Q,darkenColor:()=>J,defaultConfig:()=>ye,dispose:()=>B,disposeLoader:()=>Zt,generatorKeyByObj:()=>T,getCenter:()=>wt,getConfig:()=>Yt,getLongestSideDir:()=>ze,getTextureByText:()=>Te,hasChinese:()=>It,initCamera:()=>At,initCanvas:()=>se,initControl:()=>Rt,initDirectionalLight:()=>Ht,initLight:()=>kt,initRenderer:()=>zt,initScene:()=>Tt,initShape:()=>_t,isContain:()=>X,isControl:()=>Mt,isMac:()=>tt,loadBuildingGround:()=>Qt,loadGraphics:()=>ft,loadModel:()=>qt,proxyOptions:()=>Y,setCirclePosition:()=>A,setLineStartEnd:()=>L,setRectPosition:()=>G,sleepOnePromise:()=>Kt,sleepOneRf:()=>Ae,strToNumber:()=>ke,timeoutPromise:()=>z,vector3ToDevice:()=>m});module.exports=Be(Ue);var Ft=require("three");var O=class{tasks={requestAnimation:new Set,timeout:new Set,interval:new Set};requestAnimationFrame(o){let t=window.requestAnimationFrame(()=>{this.tasks.requestAnimation.delete(t),o()});return this.tasks.requestAnimation.add(t),t}cancelAnimationFrame(o){this.tasks.requestAnimation.delete(o),window.cancelAnimationFrame(o)}setTimeout(o,t){let e=window.setTimeout(()=>{this.tasks.timeout.delete(e),o()},t);return this.tasks.timeout.add(e),e}clearTimeout(o){this.tasks.timeout.delete(o),window.clearTimeout(o)}setInterval(o,t){let e=window.setInterval(()=>{this.tasks.interval.delete(e),o()},t);return this.tasks.interval.add(e),e}clearInterval(o){this.tasks.interval.delete(o),window.clearInterval(o)}dispose(){this.tasks.requestAnimation.forEach(o=>{window.cancelAnimationFrame(o)}),this.tasks.requestAnimation.clear(),this.tasks.timeout.forEach(o=>{window.clearTimeout(o)}),this.tasks.timeout.clear(),this.tasks.interval.forEach(o=>{window.clearInterval(o)}),this.tasks.interval.clear()}};var v=require("three"),re=require("three/examples/jsm/controls/MapControls");function Tt(){let r=new v.Scene;return r.background=new v.Color(16777215),r}function zt(){let r=new v.WebGLRenderer({antialias:!0});return r.autoClear=!0,r.setClearAlpha(1),r.setClearColor(16777215),r.setPixelRatio(window.devicePixelRatio),r.shadowMap.enabled=!0,r.shadowMap.autoUpdate=!0,r.shadowMap.type=v.PCFSoftShadowMap,r}function At(r,o){let t=new v.OrthographicCamera(-r/2,r/2,o/2,-o/2,-1e3,5e3);return t.up.set(0,0,1),t.position.set(0,0,100),t.lookAt(0,0,0),t}function kt(){let r=new v.Group,o=new v.AmbientLight(16777215,2.6);return r.add(o),r}function Rt(r,o){let t=new re.MapControls(r,o);return t.enableDamping=!1,t.zoomSpeed=2,t}function _t(r,o=[]){let t=new v.Shape(r.map(e=>new v.Vector2(...e)));return o.length&&o.forEach(e=>{var i=new v.Path(e.map(n=>new v.Vector2(...n)));t.holes.push(i)}),t}function Ht(r=16777215,o=1){let t=new v.DirectionalLight(r,o);return t.castShadow=!0,t.shadow.radius=8,t.shadow.bias=-.001,t.shadow.mapSize.set(256,256),t.shadow.camera.left=-200,t.shadow.camera.right=200,t.shadow.camera.top=200,t.shadow.camera.bottom=-200,t}function B(r,o){if(o&&r.children&&r.children.length&&r.children.forEach(t=>{B(t,o)}),r.isMesh){let t=r;t.geometry&&t.geometry.dispose(),t.material&&(Array.isArray(t.material)?t.material.forEach(e=>{e.dispose()}):t.material.dispose())}r.isLight&&r.dispose?.()}function It(r){return/[\u4E00-\u9FA5]+/g.test(r)}var H=require("three");var yt=new Map;function se(){let r=document.createElement("canvas");r.width=1024,r.height=64;let o=r.getContext("2d",{willReadFrequently:!0});return o.font="54px sans-serif",o.textBaseline="hanging",o.lineWidth=12,o.fillStyle="rgba(0,0,0,1)",o.strokeStyle="white",{canvas:r,ctx:o}}var Vt,_;function ae(){if(!Vt){let{canvas:r,ctx:o}=se();Vt=r,_=o}}function Te(r){if(yt.has(r))return yt.get(r);ae(),_.clearRect(0,0,1024,64);let o=It(r)?4:8;_.strokeText(r,2,o),_.fillText(r,2,o);let t=Math.ceil(_.measureText(r).width);t=t%2===0?t:t+1,t+=2;let e=_.getImageData(0,0,t,64),i=new H.DataTexture(Uint8Array.from(e.data),t,64,H.RGBAFormat);return i.flipY=!0,i.minFilter=H.LinearFilter,i.magFilter=H.LinearFilter,yt.set(r,i),i}function $t(){yt.clear()}function Ut(){_=null,Vt=null}var bt=require("three"),K=require("@turf/turf");function m(r,o,t,e){let i=r.clone().project(o),n=t/2,s=e/2,c=Math.round(i.x*n+n),a=Math.round(-i.y*s+s);return{x:c,y:a}}function wt(r){let o=(0,K.featureCollection)(r.map(e=>(0,K.point)(e)));return(0,K.center)(o).geometry.coordinates}function X(r,o,t){return r.x>=o.x&&r.x<=t.x&&r.y>=o.y&&r.y<=t.y}function ze(r){let o=0,t=new bt.Vector3;for(let e=1;e<r.length;e++){let i=new bt.Vector3(r[e-1][0],r[e-1][1],0),n=new bt.Vector3(r[e][0],r[e][1],0),s=n.distanceTo(i);s>o&&(o=s,t=n.clone().sub(i).normalize())}return t}function Y(r,o){return new Proxy(r,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let s=Reflect.get(t,e,n),c=Reflect.set(t,e,i,n);return s!==i&&o.dispatchEvent({type:`change-${e}`,value:i}),c}})}function z(r,o){return Promise.race([r,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),o)})])}function Q(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function jt(r,o){let t=Q("svg");return t.setAttribute("width",r),t.setAttribute("height",o),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function q(r="2",o){let t=Q("circle");return t.setAttribute("r",r),t.setAttribute("fill",o),t}function N(r){let o=Q("line");return o.setAttribute("stroke",r),o}function I(r,o){let t=Q("rect");return t.setAttribute("stroke",r),t.setAttribute("fill",o),t}function A(r,o,t){r.setAttribute("cx",`${o}`),r.setAttribute("cy",`${t}`)}function L(r,o,t){o&&(r.setAttribute("x1",`${o.x}`),r.setAttribute("y1",`${o.y}`)),t&&(r.setAttribute("x2",`${t.x}`),r.setAttribute("y2",`${t.y}`))}function G(r,o,t,e,i){r.setAttribute("x",`${o}`),r.setAttribute("y",`${t}`),r.setAttribute("width",`${e}`),r.setAttribute("height",`${i}`)}function Kt(){return Promise.resolve()}function Ae(){return new Promise(r=>{requestAnimationFrame(r)})}function ke(r){return parseInt(r.replace("#","0x"),16)}function Re(r,o){let t=parseInt(r.substring(1,3),16),e=parseInt(r.substring(3,5),16),i=parseInt(r.substring(5,7),16),n=Math.round(t*o),s=Math.round(e*o),c=Math.round(i*o);return`#${(1<<24|n<<16|s<<8|c).toString(16).slice(1)}`}function J(r,o=.85){let t,e,i;if(r.startsWith("#"))t=parseInt(r.substring(1,3),16),e=parseInt(r.substring(3,5),16),i=parseInt(r.substring(5,7),16);else{let s=r.slice(4,-1).split(",");t=parseInt(s[0].trim()),e=parseInt(s[1].trim()),i=parseInt(s[2].trim())}return t=Math.min(Math.floor(t*o),255),e=Math.min(Math.floor(e*o),255),i=Math.min(Math.floor(i*o),255),"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)}var ce=require("three/examples/jsm/loaders/GLTFLoader");function _e(){return new ce.GLTFLoader}var Pt=null,Et=new Map;function qt(r){if(Et.has(r)){let t=Et.get(r).then(e=>(e.scene=e.scene.clone(),e))}Pt||(Pt=_e());let o=new Promise((t,e)=>{Pt.load(r,i=>{t(i)},void 0,e)});return Et.set(r,o),o.then(t=>(t.scene=t.scene.clone(),t))}function Zt(){Pt=null,Et.clear()}var tt=navigator.userAgent.toUpperCase().indexOf("MAC")>=0;function Mt(r){return tt?r==="Meta":r==="Control"}var Wt="__once__",et=class{events=new Map;on(o,t){if(typeof t!="function")return;let e=this.events.get(o);return e?e.add(t):this.events.set(o,new Set([t]))}once(o,t){if(typeof t!="function")return;let e=`${Wt}${o}`,i=this.events.get(e);return i?i.add(t):this.events.set(e,new Set([t]))}off(o,t){let e=this.events.get(o),i=this.events.get(`${Wt}${o}`);!e&&!i||(t===void 0&&(e?.clear(),i?.clear()),e?.has(t)&&e.delete(t),i?.has(t)&&i.delete(t))}offAll(){this.events.clear()}emit(o,...t){let e=this.events.get(o),i=this.events.get(`${Wt}${o}`);!e&&!i||(e?.forEach(n=>{typeof n=="function"&&n(...t)}),i?.forEach(n=>{typeof n=="function"&&n(...t)}),i?.clear())}};var it=(t=>(t.SWITCH_FLOOR_BEFORE="switch_floor_before",t.SWITCH_FLOOR_AFTER="switch_floor_after",t))(it||{});function T(r){return Object.keys(r).sort().map(o=>`${o}=${r[o]}`).join("&")}var u=require("three"),j=require("@tweenjs/tween.js");var ge=require("three");var d=require("three");var He={id:"",height:.1,airHeight:0,area:0,group:"",fillColor:"#EFF4FB",strokeColor:"#ffffff",fillOpacity:1,strokeOpacity:1,strokeWidth:1,doors:[],locked:!1,visible:!0,geometry:{type:"polygon",cds:[],coords:[],curveCpt:[],curveIndex:[]},layerType:"",zIndex:0,stroke:!0,deltaHeight:0,userData:{},gradualColor:[],renderType:"single",colorFactor:.9},S=class extends d.Object3D{constructor(t,e){super();this.context=t;if(this.options=Y({...He,...e},this),this.options.geometry.type==="point"){let[i,n]=this.options.geometry.coords;return this.position.set(i,n,this.options.height+this.options.airHeight),this}this.init(),this.visible=this.options.visible,this.addEventListener("change-fillColor",({value:i})=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-fillOpacity",({value:i})=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-height",({value:i})=>{this.dispose(),this.init()}),this.addEventListener("change-strokeColor",({value:i})=>{this.options.stroke&&(this.initLineMaterial(),this.createBorder())}),this.addEventListener("change-strokeOpacity",({value:i})=>{this.options.stroke&&(this.initLineMaterial(),this.createBorder())}),this.addEventListener("change-airHeight",({value:i})=>{this.position.z=i}),this.addEventListener("change-visible",({value:i})=>{this.visible=i}),this.addEventListener("change-stroke",({value:i})=>{if(i){if(this.line)return;this.initLineGeometry(),this.initLineMaterial(),this.createBorder()}else this.line&&(this.remove(this.line),this.lineGeometry?.dispose())}),this.addEventListener("change-renderType",()=>{this.initMaterial(),this.initMesh()}),this.addEventListener("change-gradualColor",()=>{this.initMaterial(),this.initMesh()})}geometry;material;mesh;line;lineMaterial;lineGeometry;options;getCenter(){if(this.options.geometry.type==="point")return this.position.clone();let t=new d.Vector3,e=new d.Box3;return e.setFromObject(this),e.getCenter(t),t}getSize(){if(this.options.geometry.type==="point")return new d.Vector3(0,0,0);let t=new d.Box3,e=new d.Vector3;return t.setFromObject(this),t.getSize(e),e}getPosition(){let t=this.getCenter();return t.setZ(t.z+this.options.height/2),t}init(){this.geometry=this.initGeometry(),this.initMaterial(),this.initMesh(),this.mesh.position.z=this.options.airHeight+this.options.deltaHeight,this.options.stroke&&(this.initLineMaterial(),this.initLineGeometry(),this.createBorder())}initGeometry(){let t=_t(this.options.geometry.coords[0],this.options.geometry.coords.slice(1));return new d.ExtrudeGeometry(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initSingleMaterial(){let t=this.context.materialFactory.createMeshBasicMaterial({color:this.options.fillColor,opacity:this.options.fillOpacity});if(this.options.height<=.1)return this.material=t,t;let e=this.context.materialFactory.createMeshBasicMaterial({color:J(this.options.fillColor),opacity:this.options.fillOpacity});return this.material=[t,e],[t,e]}getMaxAndMin(t,e){let i=new d.Box3().setFromObject(this),n=t.clone().add(e.clone().multiplyScalar(1e3)),s=new d.Ray(n,e.clone().multiplyScalar(-1)),c=new d.Vector3;s.intersectBox(i,c);let a=t.clone().add(e.clone().multiplyScalar(-1e3)),h=new d.Ray(a,e.clone()),l=new d.Vector3;return h.intersectBox(i,l),{max:l,min:c}}initGradualMaterial(){let{max:t,min:e}=new d.Box3().setFromObject(this),i=t.clone().sub(e),n=Math.max(i.x,i.y,i.z)/2,s=this.getPosition(),c=new d.Vector3(-1,.2,0).normalize(),{max:a,min:h}=this.getMaxAndMin(s,c),l=this.context.materialFactory.createShaderMaterial({gradualColor:this.options.gradualColor,center:this.getPosition(),maxValue:n,opacity:this.options.fillOpacity,direction:new d.Vector3(-1,.2,0),max:a,min:h});if(this.options.height<=.1)return this.material=l,l;let p=this.getCenter(),f=new d.Vector3(-1,.2,1).normalize(),{max:P,min:g}=this.getMaxAndMin(p,f),x=this.context.materialFactory.createShaderMaterial({gradualColor:[J(this.options.gradualColor[0],this.options.colorFactor),J(this.options.gradualColor[1],this.options.colorFactor)],center:this.getCenter(),maxValue:n,opacity:this.options.fillOpacity,direction:new d.Vector3(-1,.2,1),max:P,min:g});return this.material=[l,x],[l,x]}initMaterial(){return this.options.renderType==="gradual"?this.initGradualMaterial():this.initSingleMaterial()}initLineMaterial(){let t=this.context.materialFactory.createLineMaterial({color:this.options.strokeColor,opacity:this.options.strokeOpacity});return this.lineMaterial=t,t}initMesh(){this.mesh&&this.remove(this.mesh),this.mesh=new d.Mesh(this.geometry,this.material),this.add(this.mesh)}getBorderPoints(){let t=[],e=this.options.height+this.options.deltaHeight,{coords:i}=this.options.geometry;for(let n=0;n<i.length;n++){let s=i[n];for(let c=0;c<s.length;c++){let a=s[c],h=c+1===s.length?s[0]:s[c+1];t.push(new d.Vector3(a[0],a[1],e)),t.push(new d.Vector3(h[0],h[1],e))}}return t}initLineGeometry(){this.lineGeometry&&this.lineGeometry.dispose();let t=this.getBorderPoints(),e=new d.BufferGeometry().setFromPoints(t);this.lineGeometry=e}createBorder(){this.line&&this.remove(this.line);let t=new d.LineSegments(this.lineGeometry,this.lineMaterial);return t.position.z=this.options.airHeight+.01,this.line=t,this.add(t),t}raycast(t){if(!this.visible||this.options.geometry.type==="point")return!1;let e=t.intersectObject(this.mesh);if(e[0]){let{point:i,distance:n}=e[0];return{position:i,distance:n}}return!1}dispose(){this.geometry.dispose(),this.line?.geometry.dispose(),this.clear()}};var D=require("three");var ot=class extends D.Object3D{directionalLight;plane;basicOpacity=.07;constructor(){super(),this.directionalLight=this.initLight(),this.initPlane()}initLight(){let o=Ht(16777215,.5);return o.position.set(0,0,100),this.add(o),o}changeLightCamera(o){let t=o.x,e=o.y;this.directionalLight.shadow.camera.left=-t,this.directionalLight.shadow.camera.right=t,this.directionalLight.shadow.camera.top=e,this.directionalLight.shadow.camera.bottom=-e,this.directionalLight.shadow.camera.near=.5,this.directionalLight.shadow.camera.far=Math.max(t,e)}changeLightColor(o){this.directionalLight.color=new D.Color(o)}setPosition(o){this.position.copy(o),this.directionalLight.position.set(-o.x/2,-o.y/2,100)}initPlane(o=1e3,t=1e3){let e=new D.PlaneGeometry(o,t),i=new D.ShadowMaterial({transparent:!0,opacity:0,side:D.DoubleSide}),n=new D.Mesh(e,i);return n.receiveShadow=!0,n.position.z=-10,this.add(n),this.plane=n,n}setTarget(o){this.directionalLight.target=o}transformOpacity(o){return o*this.basicOpacity}setOpacity(o){this.plane.material.opacity=this.transformOpacity(o)}dispose(){B(this,!0)}};var Ct=require("three");var y=require("three");var he=require("lodash"),Ie={autoUpdate:!0,appendToBody:!1,autoChangePlacement:!1},nt=class extends y.EventDispatcher{constructor(t,e={}){super();this.context=t;this.options={...Ie,...e},this.registryEvent(),this.div=this.initDiv(),this.options.appendToBody?document.body.appendChild(this.div):this.context.container.appendChild(this.div)}div;element;position=new y.Vector3;clientPos={x:0,y:0};visible=!0;options;placement="top";observer=null;initObserver(){let t=new MutationObserver((0,he.debounce)(()=>{this.div&&this.usePlacement()},100));t.observe(this.div,{childList:!0,subtree:!0,attributes:!0}),this.observer=t}getPlacementPosition(){let{max:t,min:e}=new y.Box3().setFromObject(this.element),i=(t.x+e.x)/2,n=(t.y+e.y)/2;return{left:new y.Vector3(e.x,n,t.z),leftTop:new y.Vector3(e.x,t.y,t.z),top:new y.Vector3(i,t.y,t.z),rightTop:new y.Vector3(t.x,t.y,t.z),right:new y.Vector3(t.x,n,t.z),rightBottom:new y.Vector3(t.x,e.y,t.z),bottom:new y.Vector3(i,e.y,t.z),leftBottom:new y.Vector3(e.x,e.y,t.z),center:new y.Vector3(i,n,t.z)}}getPlacementScreenPosition(){let{width:t,height:e}=this.context.clientSize,i=this.getPlacementPosition();return Object.keys(i).reduce((n,s)=>{let{x:c,y:a}=m(i[s],this.context.camera,t,e);return n[s]={x:c,y:a},n},{})}checkOverflow(t,e){let{width:i,height:n}=this.context.clientSize;return e.x>0&&t.x<i&&e.y<n&&t.y>0}getPlacement(){let{clientWidth:t,clientHeight:e}=this.div,i=this.getPlacementScreenPosition(),n=t/2,s=e/2,c=[{type:"center",getBox(a,h){return{max:{x:n+a,y:h-e},min:{x:a-n,y:h}}}},{type:"left",getBox(a,h){return{max:{x:a,y:h-s},min:{x:a-t,y:h+s}}}},{type:"leftTop",getBox(a,h){return{max:{x:a,y:h-e},min:{x:a-t,y:h}}}},{type:"top",getBox(a,h){return{max:{x:a+n,y:h-e},min:{x:a-n,y:h}}}},{type:"rightTop",getBox(a,h){return{max:{x:a+t,y:h-e},min:{x:a,y:h}}}},{type:"right",getBox(a,h){return{max:{x:a+t,y:h-s},min:{x:a,y:h+s}}}},{type:"rightBottom",getBox(a,h){return{max:{x:a+t,y:h},min:{x:a,y:h+e}}}},{type:"bottom",getBox(a,h){return{max:{x:a+n,y:h},min:{x:a-n,y:h+e}}}},{type:"leftBottom",getBox(a,h){return{max:{x:a,y:h},min:{x:a-t,y:h+s}}}}];for(let a=0;a<c.length;a++){let h=c[a],l=i[h.type],{max:p,min:f}=h.getBox(l.x,l.y);if(this.checkOverflow(p,f))return{type:h.type,position:l}}return{type:"center",position:i.center}}initDiv(){let t=document.createElement("div");return t.style.position="absolute",t}usePlacement(){let t=this.getPlacement();this.div.className=`overlay_${t.type}`,this._updatePosition(t.position.x,t.position.y)}bindElement(t){this.element=t,this.options.autoChangePlacement&&this.initObserver(),this.onUpdate()}unBindElement(){this.element=void 0}setVisible(t,e="block"){t!==this.visible&&(this.div.style.display=t?e:"none",this.visible=t)}setOpacity(t){this.div.style.opacity=`${t}`}getPosition(){return this.element?typeof this.element.getPosition=="function"?this.element.getPosition():new y.Box3().setFromObject(this.element).getCenter(new y.Vector3):this.position}get withinDisplayRange(){let{x:t,y:e}=this.clientPos,{width:i,height:n}=this.context.clientSize;return t>=0&&t<=i&&e>=0&&e<=n}_updatePosition(t,e){this.clientPos={x:t,y:e};let{width:i,height:n,x:s,y:c}=this.context.clientSize;this.options.appendToBody&&(this.div.style.left=`${s}px`,this.div.style.top=`${c+n}px`),this.options.autoUpdate?this.div.style.transform=`translate3d(${t}px, ${-n+e}px, 0)`:this.dispatchEvent({type:"update-position",x:t,y:e,width:i,height:n})}updatePosition(t=!1){let e=this.getPosition(),{width:i,height:n,x:s,y:c}=this.context.clientSize,{x:a,y:h}=m(e,this.context.camera,i,n);this.clientPos.x===a&&this.clientPos.y===h&&!t||this._updatePosition(a,h)}onUpdate=()=>{this.options.autoChangePlacement?this.usePlacement():this.updatePosition()};registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.unRegistryEvent(),this.unBindElement(),this.observer?.disconnect(),this.div?.remove(),this.div=null}};var Ve={texts:[{text:""}],level:1,icon_position:"bottom",collision_enable:!0,opacity:1,id:"",position:{x:0,y:0,z:0},icon_opacity:1,icon_border:{color:"#586EE0",width:0},background:"",collision_hide_icon:!0,built_in:!1,box_only_icon:!1},Z=class extends Ct.EventDispatcher{constructor(t,e){super();this.context=t;this.options=Y({...Ve,...e},this),this.position.set(e.position?.x||0,e.position?.y||0,e.position?.z||0),this.overlay=new nt(this.context,{autoUpdate:!1}),this.overlay.addEventListener("update-position",({x:i,y:n,height:s})=>{this.overlay.div.style.transform=`translate3d(calc(${i}px - 50%), calc(${-s+n}px - ${this.options.icon?"100%":"50%"}), 0)`}),this.overlay.bindElement(this),this.registryEvent(),this.initDiv(),this.addEventListener("change-icon",({value:i})=>{i?this.img?this.img.setAttribute("src",i):(this.addIcon(),this._changePosition()):(this.img&&this.div.removeChild(this.img),this.img=void 0,this._changePosition(),this.resetSize())}),this.addEventListener("change-texts",({value:i})=>{this.div.removeChild(this.textDiv),this.addText(),this.resetSize()}),this.addEventListener("change-opacity",({value:i})=>{this.overlay.setOpacity(i)}),this.addEventListener("change-icon_size",({value:i})=>{this.img&&(this.img.style.width=`${i?.[0]||32}px`,this.img.style.height=`${i?.[1]||32}px`,this.resetSize())}),this.addEventListener("change-icon_opacity",({value:i})=>{this.img&&(this.img.style.opacity=`${i}`)}),this.addEventListener("change-icon_border",({value:i})=>{this.img&&(this.img.style.border=`${i.width}px solid ${i.color}`)}),this.addEventListener("change-background",({value:i})=>{this.div.style.background=i})}div;textDiv;img;overlay;options;visible=!0;size={width:0,height:0};position=new Ct.Vector3;userData={};showTextStatus=!0;disposed=!1;get withinDisplayRange(){return this.overlay.withinDisplayRange}async resetSize(){if(!this.disposed)if(await Kt(),this.options.box_only_icon){if(!this.img)return;let{width:t,height:e}=this.img.getBoundingClientRect();this.size={width:t+2,height:e+2}}else{let{width:t,height:e}=this.div.getBoundingClientRect();this.size={width:t+2,height:e+2}}}renderHelperBox(){}get clientPos(){return this.overlay.clientPos}initDiv(){let t=document.createElement("div");return this.div=t,this.addText(),this.options.icon&&this.addIcon(),t.style.fontSize="12px",t.style.textShadow="#fff 1px 0 0, #fff 0 1px 0, #fff -1px 0 0, #fff 0 -1px 0",t.style.display="flex",t.style.flexDirection="column",t.style.justifyContent="center",t.style.alignItems="center",t.style.padding="4px",this.overlay.setOpacity(this.options.opacity),this.overlay.div.style.pointerEvents="none",this.overlay.div.style.userSelect="none",this.overlay.div.appendChild(t),this.resetSize(),t}addIcon(){if(!this.img){let t=this.initIcon();this.options.icon_position==="top"?this.div.firstChild?this.div.insertBefore(t,this.div.firstChild):this.div.appendChild(t):this.div.appendChild(t)}}addText(){let t=this.initText();this.options.icon_position==="top"?this.div.appendChild(t):this.div.firstChild?this.div.insertBefore(t,this.div.firstChild):this.div.appendChild(t)}getPosition(){return this.position}initText(){let t=document.createElement("div");return t.appendChild(this.createTextFragment()),t.style.textAlign="center",this.textDiv=t,t}createTextFragment(){let t=document.createDocumentFragment();return this.options.texts.forEach(e=>{let i=document.createElement("div");if(i.style.whiteSpace="nowrap",e.styles)for(let[n,s]of Object.entries(e.styles))i.style[n]=s;i.textContent=e.text,t.appendChild(i)}),t}initIcon(){let t=document.createElement("img");return t.setAttribute("src",this.options.icon),t.style.width=`${this.options.icon_size?.[0]||32}px`,t.style.height=`${this.options.icon_size?.[1]||32}px`,t.style.opacity=`${this.options.icon_opacity}px`,t.style.borderRadius="50%",this.options.icon_border.width&&(t.style.border=`${this.options.icon_border.width}px solid ${this.options.icon_border.color}`),t.onload=()=>{this.resetSize()},this.img=t,t}_changePosition=()=>{this.overlay.updatePosition(!0)};registryEvent(){}unRegistryEvent(){}setVisible(t){t!==this.visible&&(this.visible=t,this.changeOverlayVisible(t))}changeOverlayVisible(t){if(!(t===this.overlay.visible&&this.options.collision_hide_icon))if(this.options.collision_hide_icon)this.overlay.visible=t,this.overlay.div.style.visibility=t?"visible":"hidden";else{if(this.showTextStatus===t)return;this.textDiv.style.visibility=t?"visible":"hidden",this.showTextStatus=t}}parentSetVisible(t){this.visible&&this.changeOverlayVisible(t)}getBox(t=this.context.config.poi.boxScale){let{width:e,height:i}=this.size,n=e*t,s=i*t,{x:c,y:a}=this.overlay.clientPos;return{left:c-n/2,right:c+n/2,top:this.options.icon?a-s:a-s/2,bottom:this.options.icon?a:a+s/2}}getOriginBox(){return this.getBox(1)}isContain(t,e){if(!this.overlay.visible||!this.visible)return!1;let i=this.getOriginBox();return t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}dispose(){this.unRegistryEvent(),this.div=null,this.textDiv=null,this.img=void 0,this.overlay.dispose(),this.disposed=!0}};var C=require("three");var Lt=require("three");var le=require("three");var V=class extends le.Object3D{constructor(t){super();this.context=t}dispose(){B(this),this.clear()}};var rt=class extends V{graphicMap=new Map;constructor(o){super(o)}getCenter(){return new Lt.Box3().setFromObject(this).getCenter(new Lt.Vector3)}createGraphic(o){let t=new S(this.context,o);return this.add(t),this.graphicMap.set(o.id,t),t}removeGraphic(o){this.remove(o),this.graphicMap.delete(o.options.id),o.dispose()}removeGraphicById(o){this.graphicMap.has(o)&&this.removeGraphic(this.graphicMap.get(o))}getGraphicByNodeId(o){return this.graphicMap.get(o)||null}getGraphicByRaycaster(o){let t={distance:1e4,graphic:null,position:null},e=this.children.reduce((i,n)=>{if(n instanceof S){let s=n.raycast(o);if(s){let{distance:c}=s;if(c<i.distance)return{distance:i.distance,position:i.position,graphic:n}}return i}else return i},t);return e===t?{graphics:[],position:null}:{graphics:[e.graphic],position:e.position}}};var pe=require("lodash");var st=class extends V{pois=[];debounceCollisionDetection;timer=new O;constructor(o){super(o),this.registryEvent(),this.debounceCollisionDetection=(0,pe.debounce)(this.collisionDetection,10)}clear(o=!1){return this.pois.forEach(t=>{t.options.built_in&&!o||t.dispose()}),this.pois=o?[]:this.pois.filter(t=>t.options.built_in),this}createPoi(o){let t=new Z(this.context,o);return this.pushPoi(t),t.addEventListener("change-level",()=>this.changePoiLevelOrCollisionEnable(t)),t.addEventListener("change-collision_enable",()=>this.changePoiLevelOrCollisionEnable(t)),Promise.resolve().then(()=>{this.debounceCollisionDetection()}),t}changePoiLevelOrCollisionEnable(o){let t=this.pois.findIndex(e=>e===o);t!==-1&&(this.pois.splice(t,1),this.pushPoi(o))}removePoi(o){let t=this.pois.findIndex(e=>e===o);t!==-1&&(this.pois.splice(t,1),o.dispose())}removePoiById(o){let t=this.pois.find(e=>e.options.id===o);t&&this.removePoi(t)}getPoiById(o){return this.pois.find(e=>e.options.id===o)||null}pushPoi(o){if(!o.options.collision_enable){this.pois.unshift(o);return}if(o.options.level===0){this.pois.push(o);return}for(let t=0;t<this.pois.length;t++){let e=this.pois[t];if(e.options.collision_enable&&e.options.level<=o.options.level){this.pois.splice(t,0,o);return}}this.pois.push(o)}getPoiByDeviceXy(o,t){return this.pois.filter(i=>i instanceof Z&&i.isContain(o,t))}onUpdate=()=>{this.timer.requestAnimationFrame(()=>{this.collisionDetection()})};collisionDetection(){let o=[];this.pois.filter(e=>e.visible&&e.withinDisplayRange).forEach((e,i)=>{let{left:n,right:s,top:c,bottom:a}=e.getBox();if(i===0||!e.options.collision_enable){o.push({left:n,right:s,top:c,bottom:a}),e.parentSetVisible(!0);return}let h=o.some(l=>l.left<s&&l.right>n&&l.top<a&&l.bottom>c);e.parentSetVisible(!h),h||o.push({left:n,right:s,top:c,bottom:a})})}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.timer.dispose(),this.pois.forEach(o=>o.dispose()),this.pois.length=0,this.debounceCollisionDetection=()=>{},super.dispose(),this.unRegistryEvent()}};var b=require("three"),me=require("@mars3d/heatmap.js"),k=require("@turf/turf"),at=class extends b.Object3D{constructor(t){super();this.context=t;this.div=document.createElement("div")}heatmap;div;plane;clearHeatmap(){this.div.firstChild&&this.div.removeChild(this.div.firstChild),this.heatmap=void 0}loadData(t){this.clearHeatmap();let{width:e,height:i,leftTop:n,center:s}=this.getBox(t);this.heatmap=(0,me.create)({width:e,height:i,container:this.div,...this.context.config.heatMap}),this.heatmap.setData(this.transformData(t,n)),this.initPlane(e,i),this.position.set(s[0],s[1],this.position.z)}initPlane(t,e){this.plane&&this.remove(this.plane);let i=new b.PlaneGeometry(t,e),n=new b.Texture(this.div.firstChild);n.needsUpdate=!0;let s=new b.MeshBasicMaterial({transparent:!0,side:b.DoubleSide,map:n});s.needsUpdate=!0,this.plane=new b.Mesh(i,s),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new b.Matrix3().makeScale(1,-1).multiply(new b.Matrix3().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(s=>{let c=new b.Vector2(s.x,s.y).applyMatrix3(i);return{x:c.x,y:c.y,value:s.value}}),max:t.max,min:t.min}}getBox(t){let e=(0,k.featureCollection)(t.data.map(h=>(0,k.point)([h.x,h.y]))),i=(0,k.bbox)(e),n=i[2]-i[0],s=i[3]-i[1],c={x:i[0],y:i[3]},a=(0,k.center)(e);return{width:n,height:s,leftTop:c,center:a.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var $=require("three");var ct=class extends $.Object3D{constructor(t,e){super();this.context=t;this.options=e;this.position.copy(e.position||new $.Vector3(0,0,0)),this.loadModel()}poi=null;model=null;async loadModel(){let t=await qt(this.options.modelUrl);t.scene.rotation.set(Math.PI/2,Math.PI/2,0),this.add(t.scene),this.model=t,this.initPoi()}initPoi(){if(!this.options.icon)return;let t=this.context.currentFloor?.addPoi({icon:this.options.icon,icon_size:this.options.icon_size,built_in:!0,level:0});this.poi=t||null,this.model&&t&&(t.position=new $.Box3().setFromObject(this).getCenter(new $.Vector3))}dispose(){B(this),this.model=null,this.poi&&(this.context.currentFloor?.poiLayer.removePoi(this.poi),this.poi=null)}};var ht=class extends C.Object3D{constructor(t){super();this.context=t;this.graphicLayer=new rt(this.context),this.poiLayer=new st(this.context),this.groundUpper.add(this.graphicLayer),this.groundUpper.add(this.poiLayer),this.add(this.groundUpper),this.add(this.models)}graphicLayer;poiLayer;grounds=new Set;shadow=new ot;heatmap;groundUpper=new C.Object3D;models=new C.Object3D;modelMap=new Map;groundMaxHeight=0;name="";getPosition(){return new C.Box3().setFromObject(this.groundUpper).getCenter(new C.Vector3)}createGround(t){let e=new S(this.context,t);this.addGrounds([e])}addGrounds(t){t.forEach(e=>{this.grounds.has(e)||(e.mesh.castShadow=!0,this.grounds.add(e),this.groundUpper.add(e))}),this.changeGroundMaxHeight()}changeGroundMaxHeight(){let t=Array.from(this.grounds);this.groundMaxHeight=this.grounds.size>0?Math.max(...t.map(e=>e.options.height+e.options.airHeight+e.options.deltaHeight)):0,this.graphicLayer.position.z=this.groundMaxHeight,this.models.position.z=this.groundMaxHeight}get hasElement(){return!!(this.grounds.size||this.graphicLayer.children.length)}getCenter(){return new C.Box3().setFromObject(this.groundUpper).getCenter(new C.Vector3)}addModel(t){let e=new ct(this.context,t);return this.models.add(e),this.modelMap.set(t.id,e),e}addShadow(){let t=new C.Box3().setFromObject(this.groundUpper),e=t.getCenter(new C.Vector3),i=t.getSize(new C.Vector3);this.shadow.setPosition(e),this.shadow.changeLightCamera(i)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){this.heatmap||(this.heatmap=new at(this.context),this.add(this.heatmap)),this.heatmap.loadData(t);let e=new C.Box3().setFromObject(this.graphicLayer);return this.heatmap.position.setZ(e.max.z),this.heatmap}removeHeatMap(){this.heatmap&&(this.remove(this.heatmap),this.heatmap.dispose(),this.heatmap=void 0)}setShadowOpacity(t){this.shadow.setOpacity(t)}setShadowVisible(t){this.shadow.visible=t}dispose(){this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),this.grounds.forEach(t=>t.dispose()),this.heatmap?.dispose(),this.groundUpper.clear(),this.models.children.forEach(t=>t.dispose()),this.models.clear(),this.modelMap.clear(),this.clear()}};var Gt=require("three");var F=class extends Gt.EventDispatcher{constructor(t){super();this.context=t;this.svg=jt(`${t.container.clientWidth}`,`${t.container.clientHeight}`),t.container.appendChild(this.svg),this._registryEvent()}points=[];svg;enable=!0;_onResize=({width:t,height:e})=>{this.svg&&(this.svg.setAttribute("width",`${t}`),this.svg.setAttribute("height",`${e}`))};_registryEvent(){this.context.addEventListener("resize",this._onResize)}_unRegistryEvent(){this.context.removeEventListener("resize",this._onResize)}setEnable(t){this.enable=t,t?this.svg.style.display="block":this.svg.style.display="none"}getIntersectByPointerEvent(t){let{camera:e,renderer:i}=this.context,{offsetX:n,offsetY:s}=t,{clientWidth:c,clientHeight:a}=i.domElement,h=n/c*2-1,l=1-s/a*2;return new Gt.Vector3(h,l,0).unproject(e)}getSvgCoordinate(t){let{camera:e,container:i}=this.context;return m(t,e,i.clientWidth,i.clientHeight)}dispose(){this._unRegistryEvent(),this.context.container.removeChild(this.svg),this.svg=null}};var lt=class extends F{constructor(t){super(t);this.context=t;let{config:{svg:{circle:e,line:i}}}=t;this.circles=[q(e.radius,e.fill),q(e.radius,e.fill)],this.line=N(i.stroke),this.svg.appendChild(this.circles[0]),this.svg.appendChild(this.circles[1]),this.svg.appendChild(this.line),this.registryEvent()}circles;line;setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}registryEvent(){this.context.container.addEventListener("pointerenter",this.onPointermove),this.context.container.addEventListener("pointermove",this.onPointermove),this.context.container.addEventListener("pointerleave",this.onPointerleave),this.context.container.addEventListener("pointerdown",this.onPointerdown),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerenter",this.onPointermove),this.context.container.removeEventListener("pointermove",this.onPointermove),this.context.container.removeEventListener("pointerleave",this.onPointerleave),this.context.container.removeEventListener("pointerdown",this.onPointerdown),this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{if(this.points[0]){let t=this.getSvgCoordinate(this.points[0]);A(this.circles[0],t.x,t.y),L(this.line,t)}if(this.points[1]){let t=this.getSvgCoordinate(this.points[1]);A(this.circles[1],t.x,t.y),L(this.line,void 0,t)}};onPointermove=t=>{this.points.length===1&&(this.line.style.display="block",L(this.line,void 0,{x:t.offsetX,y:t.offsetY}))};onPointerleave=()=>{this.points[1]||(this.line.style.display="none")};onPointerdown=t=>{if(this.points[1])return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t,s=this.circles[this.points.length];A(s,i,n),this.points.length||L(this.line,{x:i,y:n},{x:i,y:n}),this.addPoint(e)}};addPoint(t){if(this.points.push(t),this.points.length>=2){let e=this.calculatedDistance();this.dispatchEvent({type:"distance",distance:e})}}calculatedDistance(){let[{x:t,y:e},{x:i,y:n}]=this.points;return Math.sqrt((i-t)**2+(n-e)**2)}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var pt=class extends F{circles=[];lines=[];isClose=!1;constructor(o){super(o),this.registryEvent()}setEnable(o){super.setEnable(o),o?this.registryEvent():this.unRegistryEvent()}get lastLine(){return this.lines.slice(-1)[0]}addCircle(o){this.circles.push(o),this.svg.appendChild(o)}addLine(o){this.lines.push(o),this.svg.appendChild(o)}registryEvent(){this.context.container.addEventListener("pointerenter",this.onPointermove),this.context.container.addEventListener("pointermove",this.onPointermove),this.context.container.addEventListener("pointerleave",this.onPointerleave),this.context.container.addEventListener("pointerdown",this.onPointerdown),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerenter",this.onPointermove),this.context.container.removeEventListener("pointermove",this.onPointermove),this.context.container.removeEventListener("pointerleave",this.onPointerleave),this.context.container.removeEventListener("pointerdown",this.onPointerdown),this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{this.points.length&&this.points.forEach((o,t)=>{let e=this.getSvgCoordinate(o);this.circles[t]&&A(this.circles[t],e.x,e.y),t!==0&&L(this.lines[t-1],void 0,e),this.lines[t]&&L(this.lines[t],e)})};onPointermove=o=>{!this.lastLine||this.isClose||(this.lastLine.style.display="block",L(this.lastLine,void 0,{x:o.offsetX,y:o.offsetY}))};onPointerleave=()=>{this.isClose||(this.lastLine.style.display="none")};onPointerdown=o=>{if(this.isClose)return;let t=this.getIntersectByPointerEvent(o);if(t){let{offsetX:e,offsetY:i}=o;this.checkAdsorb(e,i)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(t);let{circle:{fill:n,radius:s},line:{stroke:c}}=this.context.config.svg;if(!this.isClose){let a=q(s,n);A(a,e,i),this.addCircle(a)}if(this.lines.length&&L(this.lastLine,void 0,{x:e,y:i}),!this.isClose){let a=N(c);L(a,{x:e,y:i},{x:e,y:i}),this.addLine(a)}}};checkAdsorb(o,t){if(this.points.length<3)return!1;let e=this.circles[0],i=+e.getAttribute("cx"),n=+e.getAttribute("cy");return Math.sqrt((o-i)**2+(t-n)**2)<=5}addPoint(o){if(this.points.push(o),this.isClose){let t=this.calculatedArea();this.dispatchEvent({type:"area",area:t})}}calculatedArea(){let o=this.points.map(i=>[i.x,i.y]),t=0,e=o.length;for(let i=0;i<e;i++){let n=(i+1)%e;t+=o[i][0]*o[n][1]-o[n][0]*o[i][1]}return Math.abs(t/2)}dispose(){super.dispose(),this.unRegistryEvent(),this.lines=[],this.circles=[]}};var de=require("three");var Xt=class extends F{constructor(t){super(t);this.context=t;let{config:{svg:{line:e}}}=t;this.rect=I(e.stroke,"transparent"),this.svg.appendChild(this.rect);for(let i=0;i<4;i++)this.cornerRect[i]=I(e.stroke,"#ffffff"),this.centerRect[i]=I(e.stroke,"#ffffff"),this.svg.appendChild(this.cornerRect[i]),this.svg.appendChild(this.centerRect[i]);this.registryEvent()}rect;cornerRect=[];centerRect=[];graphic;setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}onUpdate=()=>{if(this.graphic){let t=new de.Box3().setFromObject(this.graphic),{camera:e,container:{clientWidth:i,clientHeight:n}}=this.context,{min:s,max:c}=t,a=m(s,e,i,n),h=m(c,e,i,n);G(this.rect,a.x,h.y,Math.abs(h.x-a.x),Math.abs(h.y-a.y));let{x:l,y:p}=a,{x:f,y:P}=h,g=5,x=[{x:l-g,y:P-g},{x:f-g,y:P-g},{x:l-g,y:p-g},{x:f-g,y:p-g}];for(let M=0;M<x.length;M++)G(this.cornerRect[M],x[M].x,x[M].y,g*2,g*2);let E=4,vt=(l+f)/2,xt=(p+P)/2,W=[{x:vt-E,y:P-E},{x:l-E,y:xt-E},{x:f-E,y:xt-E},{x:vt-E,y:p-E}];for(let M=0;M<W.length;M++)G(this.centerRect[M],W[M].x,W[M].y,E*2,E*2)}else{G(this.rect,0,0,0,0);for(let t=0;t<this.cornerRect.length;t++)G(this.cornerRect[t],0,0,0,0),G(this.centerRect[t],0,0,0,0)}};selectGraphic(t){this.graphic=t}dispose(){super.dispose(),this.unRegistryEvent(),this.rect=null,this.cornerRect=[],this.centerRect=[]}};var ue=require("three"),St=class extends F{startPoint;endPoint;rect;frustum=new ue.Frustum;constructor(o){super(o);let{config:{selectBox:{fill:t,stroke:e}}}=o;this.rect=I(e,t),this.svg.appendChild(this.rect),this.registryEvent()}setEnable(o){super.setEnable(o),G(this.rect,0,0,0,0),o?this.registryEvent():(this.startPoint=void 0,this.unRegistryEvent())}onPointerDown=o=>{if(!this.enable)return;let t=this.getIntersectByPointerEvent(o);t&&(this.startPoint=t),this.endPoint=void 0};onPointerMove=o=>{if(!this.enable||!this.startPoint)return;let t=this.getIntersectByPointerEvent(o);t&&(this.endPoint=t)};onPointerUp=o=>{if(!this.enable)return;let t=this.getIntersectByPointerEvent(o);t&&(this.endPoint=t),this.doSelect(),this.startPoint=void 0};onUpdate=()=>{if(this.startPoint){let o=this.getSvgCoordinate(this.startPoint),t={...o};this.endPoint&&(t=this.getSvgCoordinate(this.endPoint));let e={x:Math.min(o.x,t.x),y:Math.min(o.y,t.y)},i=Math.abs(t.x-o.x),n=Math.abs(t.y-o.y);G(this.rect,e.x,e.y,i,n)}else G(this.rect,0,0,0,0)};registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),this.context.container.addEventListener("pointermove",this.onPointerMove),this.context.container.addEventListener("pointerup",this.onPointerUp),this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),this.context.container.removeEventListener("pointermove",this.onPointerMove),this.context.container.removeEventListener("pointerup",this.onPointerUp),this.context.removeEventListener("update",this.onUpdate)}doSelect(){if(this.startPoint&&this.endPoint){if(this.startPoint.distanceTo(this.endPoint)<.1)return;let{context:{camera:t,container:{clientWidth:e,clientHeight:i}}}=this,n=m(this.startPoint,t,e,i),s=m(this.endPoint,t,e,i),c={x:Math.min(n.x,s.x),y:Math.min(n.y,s.y)},a={x:Math.max(n.x,s.x),y:Math.max(n.y,s.y)},h=this.searchMapInFrustum(c,a);this.dispatchEvent({type:"selected",list:h})}}searchMapInFrustum(o,t){let{context:e}=this;return e.currentFloor?.graphicLayer.children.filter(i=>i instanceof S&&this.searchChildInFrustum(i,o,t))||[]}searchChildInFrustum(o,t,e){let{context:{camera:i,container:{clientWidth:n,clientHeight:s}}}=this;if(!o)return!1;if(!o.mesh){let f=o.getPosition();if(f){let P=m(f,i,n,s);return X(P,t,e)}return!1}o.mesh.geometry.boundingBox||o.mesh.geometry.computeBoundingBox();let c=o.mesh.geometry.boundingBox;if(!c)return!1;let{min:a,max:h}=c,l=m(a,i,n,s),p=m(h,i,n,s);return!(!X(l,t,e)||!X(p,t,e))}dispose(){this.unRegistryEvent()}};var mt=class extends ge.EventDispatcher{constructor(t){super();this.context=t;this.boxSelection=new St(t),this.boxSelection.setEnable(!1),this.registryEvent()}_list=new Set;boxSelection;prevPanStatus;prevRotateStatus;downPoint=null;isMultipleSelect=!1;get list(){return this._list}enableBoxSelection(){this.isMultipleSelect||(this.isMultipleSelect=!0,this.boxSelection.setEnable(!0),this.prevPanStatus=this.context.control.enablePan,this.prevRotateStatus=this.context.control.enableRotate,this.context.control.enablePan=!1,this.context.control.enableRotate=!1)}disableBoxSelection(){this.isMultipleSelect&&(this.isMultipleSelect=!1,this.boxSelection.setEnable(!1),this.context.control.enablePan=!!this.prevPanStatus,this.context.control.enableRotate=!!this.prevRotateStatus)}onPointerDown=t=>{this.downPoint={x:t.offsetX,y:t.offsetY}};onPointerUp=t=>{if(!this.downPoint)return;let{offsetX:e,offsetY:i}=t,{x:n,y:s}=this.downPoint;if(Math.sqrt((n-e)**2+(s-i)**2)>3)return;let{graphics:c}=this.context.getGraphicsByDeviceXy(e,i),a=new Set(c.map(l=>l.options.id));this.context.getPoisByDeviceXy(e,i).forEach(l=>{if(!a.has(l.options.id)){let p=this.context.currentFloor?.graphicLayer.graphicMap.get(l.options.id)||null;p&&p.options.geometry.type==="point"&&(c.push(p),a.add(l.options.id))}}),(tt?t.metaKey:t.ctrlKey)||this._list.clear(),c.forEach(l=>this._list.add(l)),this.selectEnd(),this.downPoint=null};onPointerOut=t=>{this.disableBoxSelection()};onKeyDown=t=>{Mt(t.key)&&this.enableBoxSelection()};onKeyUp=t=>{Mt(t.key)&&this.disableBoxSelection()};onBoxSelected=({list:t})=>{this._list.clear(),t.forEach(e=>{this._list.add(e)}),this.selectEnd()};selectEnd(){this.dispatchEvent({type:"select",graphics:[...this._list],isMultipleSelect:this.isMultipleSelect})}registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),this.context.container.addEventListener("pointerup",this.onPointerUp),this.context.container.addEventListener("pointerout",this.onPointerOut),this.context.container.addEventListener("pointercancel",this.onPointerOut),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),this.boxSelection.addEventListener("selected",this.onBoxSelected)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),this.context.container.removeEventListener("pointerup",this.onPointerUp),this.context.container.removeEventListener("pointerout",this.onPointerOut),this.context.container.removeEventListener("pointercancel",this.onPointerOut),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),this.boxSelection.removeEventListener("selected",this.onBoxSelected)}clear(){this._list.clear()}remove(t){this._list.delete(t)}dispose(){this.unRegistryEvent()}};var fe=require("three");var dt=class extends fe.EventDispatcher{constructor(t){super();this.context=t;this.registryEvent()}curGraphics=new Set;timer=new O;graphicTimerMap=new Map;onPointerMove=({graphics:t,pois:e,e:i})=>{let n=e.map(h=>this.context.currentFloor?.graphicLayer.graphicMap.get(h.options.id)).filter(h=>h&&h.options.geometry.type==="point");if(!t.length&&!n.length&&this.curGraphics.size){this.curGraphics.clear(),this.handleHoverGraphicsChange();return}let{time:s}=this.context.config.hover,c=new Set;if(n.length){let h,l=1e4;n.forEach(p=>{let f=e.find(E=>E.options.id===p.options.id),{x:P,y:g}=f.clientPos,x=Math.sqrt((P-i.offsetX)**2+(g-i.offsetY)**2);x<l&&(l=x,h=p)}),c.add(h)}c.size||t.forEach(h=>c.add(h)),c.forEach(h=>{if(this.graphicTimerMap.get(h)||this.curGraphics.has(h))return;let l=this.timer.setTimeout(()=>{this.curGraphics.add(h),this.graphicTimerMap.delete(h),this.timer.clearTimeout(l),this.handleHoverGraphicsChange()},s);this.graphicTimerMap.set(h,l)}),this.graphicTimerMap.forEach((h,l)=>{c.has(l)||(this.timer.clearTimeout(h),this.graphicTimerMap.delete(l))});let a=this.curGraphics.size;this.curGraphics.forEach(h=>{c.has(h)||this.curGraphics.delete(h)}),a!==this.curGraphics.size&&this.handleHoverGraphicsChange()};onPointerLevel=()=>{this.curGraphics.clear(),this.handleHoverGraphicsChange()};handleHoverGraphicsChange(t=this.curGraphics){this.dispatchEvent({type:"hover-change",graphics:Array.from(t)})}registryEvent(){this.context.addEventListener("pointer-over",this.onPointerMove),this.context.addEventListener("pointer-move",this.onPointerMove),this.context.addEventListener("pointer-level",this.onPointerLevel)}unRegistryEvent(){this.context.removeEventListener("pointer-over",this.onPointerMove),this.context.removeEventListener("pointer-move",this.onPointerMove),this.context.removeEventListener("pointer-level",this.onPointerLevel)}dispose(){this.unRegistryEvent(),this.timer.dispose()}};var w=require("three");function ve(r){return`${r.x}-${r.y}-${r.z}`}var Dt=class{constructor(o){this.context=o}lineMaterialMap=new Map;meshStandardMaterialMap=new Map;meshBasicMaterialMap=new Map;shaderMaterialMap=new Map;generateLineMaterialKey({color:o,opacity:t}){return`${o}-${t}`}createLineMaterial({color:o,opacity:t}){let e=this.generateLineMaterialKey({color:o,opacity:t});if(this.lineMaterialMap.has(e))return this.lineMaterialMap.get(e);let i=new w.LineBasicMaterial({color:new w.Color(o).convertLinearToSRGB(),transparent:!0,opacity:t});return this.lineMaterialMap.set(e,i),i}createMeshStandardMaterial({color:o,opacity:t}){let e=`${o}-${t}`;if(this.meshStandardMaterialMap.has(e))return this.meshStandardMaterialMap.get(e);let i=new w.MeshStandardMaterial({color:new w.Color(o).convertLinearToSRGB(),roughness:1,transparent:!0,opacity:t,depthWrite:!0});return this.meshStandardMaterialMap.set(e,i),i}createMeshBasicMaterial({color:o,opacity:t}){let e=`${o}-${t}`;if(this.meshBasicMaterialMap.has(e))return this.meshBasicMaterialMap.get(e);let i=new w.MeshBasicMaterial({color:o,transparent:!0,opacity:t,depthWrite:!0});return this.meshBasicMaterialMap.set(e,i),i}createShaderMaterial({gradualColor:o,center:t,maxValue:e,opacity:i,direction:n,max:s,min:c}){let a=`${o.toString()}-${ve(t)}-${e}-${i}-${ve(n)}`;if(this.shaderMaterialMap.has(a))return this.shaderMaterialMap.get(a);let h=`
|
|
2
2
|
uniform vec3 uColor;
|
|
3
3
|
uniform vec3 uGradualColor;
|
|
4
4
|
uniform vec3 center;
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
void main() {
|
|
36
36
|
gl_FragColor = vec4(vColor.x, vColor.y, vColor.z, opacity);
|
|
37
37
|
}
|
|
38
|
-
`,m=new M.ShaderMaterial({uniforms:{uColor:{value:new M.Color(o[0]).convertLinearToSRGB()},uGradualColor:{value:new M.Color(o[1]).convertLinearToSRGB()},center:{value:t},maxValue:{value:e},opacity:{value:i},uDirection:{value:n},uMax:{value:s},uMin:{value:c}},vertexShader:h,fragmentShader:l,side:M.DoubleSide});return this.shaderMaterialMap.set(a,m),m}dispose(){this.lineMaterialMap.forEach((o,t)=>{o.dispose()}),this.lineMaterialMap.clear(),this.meshStandardMaterialMap.forEach((o,t)=>{o.dispose()}),this.meshStandardMaterialMap.clear(),this.meshBasicMaterialMap.forEach((o,t)=>{o.dispose()}),this.meshBasicMaterialMap.clear(),this.shaderMaterialMap.forEach((o,t)=>{o.dispose()}),this.shaderMaterialMap.clear()}};var U=require("three");var Ot=class{constructor(o){this.context=o;this.registryEvent(),this.changePrevCamera()}prevCamera={position:new U.Vector3,zoom:1,target:new U.Vector3};enable=!0;setEnable(o){this.enable=o,o?this.registryEvent():this.unRegistryEvent()}changePrevCamera(){this.prevCamera={position:this.context.camera.position.clone(),zoom:this.context.camera.zoom,target:this.context.control.target.clone()}}backToPrevCamera(){this.setEnable(!1),this.context.camera.position.copy(this.prevCamera.position),this.context.camera.zoom=this.prevCamera.zoom,this.context.control.target.copy(this.prevCamera.target),this.context.control.update(),this.setEnable(!0)}registryEvent(){this.context.addEventListener("control-change",this.onCameraChange)}unRegistryEvent(){this.context.removeEventListener("control-change",this.onCameraChange)}getCurFloorScreenPosition(){if(!this.context.currentFloor)return null;let o=new U.Box3().setFromObject(this.context.currentFloor.groundUpper),{camera:t,container:{clientWidth:e,clientHeight:i}}=this.context,{min:n,max:s}=o,c=g(n,t,e,i),a=g(s,t,e,i),h=g(new U.Vector3(n.x,s.y,s.z),t,e,i),l=g(new U.Vector3(s.x,n.y,n.z),t,e,i),m=Math.min(c.x,a.x,h.x,l.x),d=Math.max(c.x,a.x,h.x,l.x),x=Math.min(c.y,a.y,h.y,l.y),p=Math.max(c.y,a.y,h.y,l.y);return{left:m,right:d,top:x,bottom:p}}checkDistanceToScreenEdge({left:o,right:t,top:e,bottom:i}){let{width:n,height:s}=this.context.clientSize,[c,a,h,l]=this.context.config.cameraBound.padding;return o<=l&&n-t<=a&&e<=c&&s-i<=h}onCameraChange=()=>{};dispose(){this.unRegistryEvent()}};var ut=class extends v.EventDispatcher{constructor(t,e){super();this.container=t;this.config=e;this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.selection=new mt(this),this.hoverHelper=new dt(this),this.materialFactory=new St(this),this.resizeClientSize(),this.registryEvent()}scene=zt();renderer=Ft();camera;control;lights=At();timer=new B;tweenGroup=new j.Group;currentFloor;selection;hoverHelper;basicRatio;materialFactory;cameraBound;clientSize={width:0,height:0,x:0,y:0};resizeClientSize(){let{x:t,y:e,width:i,height:n}=this.container.getBoundingClientRect();this.clientSize={width:i||this.container.clientWidth,height:n||this.container.clientHeight,x:t,y:e}}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=Tt(t,e),this.renderer.setSize(t,e),this.control=kt(this.camera,this.renderer.domElement),this.control.maxPolarAngle=this.config.control.maxPolar,this.container.appendChild(this.renderer.domElement),this.scene.add(this.lights),this.basicRatio=this.getRatio(),this.control.addEventListener("change",()=>{let i=this.control.getPolarAngle();this.currentFloor?.setShadowOpacity(i/this.config.control.maxPolar),this.dispatchEvent({type:"change-ratio",px:(this.basicRatio||0)*this.camera.zoom}),this.dispatchEvent({type:"control-change"})}),this.cameraBound=new Ot(this)}getRatio(t=new v.Vector3(0,0,0),e=new v.Vector3(100,0,0)){let{clientWidth:i,clientHeight:n}=this.container,s=g(t,this.camera,i,n),c=g(e,this.camera,i,n);return Math.ceil(Math.sqrt((c.x-s.x)**2+(c.y-s.y)**2))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof v.AmbientLight&&(e.color=new v.Color(t))})}switchFloor(t){this.currentFloor&&(this.scene.remove(this.currentFloor),this.currentFloor.dispose()),this.currentFloor=t,this.scene.add(t);let e=t.getCenter();e&&(this.lights.position.x=e.x,this.lights.position.y=e.y)}onWindowResize=()=>{let{container:t,camera:e,renderer:i}=this,{clientWidth:n,clientHeight:s}=t;n=Math.max(1,n),s=Math.max(1,s),e.left=-n/2,e.right=n/2,e.top=s/2,e.bottom=-s/2,e.updateProjectionMatrix(),i.setSize(n,s),this.resizeClientSize(),this.dispatchEvent({type:"resize",width:n,height:s})};onClick=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY);e.length&&this.dispatchEvent({type:"graphic-click",graphics:e,position:i});let n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);n.length&&this.dispatchEvent({type:"poi-click",pois:n})};getGraphicsByDeviceXy(t,e){let i=new v.Vector2;i.x=t/this.clientSize.width*2-1,i.y=e/this.clientSize.height*-2+1;let n=new v.Raycaster;return n.setFromCamera(i,this.camera),this.currentFloor?.graphicLayer.getGraphicByRaycaster(n)||{graphics:[],position:null}}getPoisByDeviceXy(t,e){return this.currentFloor?.poiLayer.getPoiByDeviceXy(t,e)||[]}onPointerover=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);this.dispatchEvent({type:"pointer-over",e:t,graphics:e,pois:n,position:i})};onPointermove=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);this.dispatchEvent({type:"pointer-move",e:t,graphics:e,pois:n,position:i})};onPointerleave=()=>{this.dispatchEvent({type:"pointer-level"})};onSelectionSelect=({graphics:t,isMultipleSelect:e})=>{this.dispatchEvent({type:"select-graphic",graphics:t,isMultipleSelect:e})};onHoverChange=({graphics:t})=>{this.dispatchEvent({type:"hover",graphics:t})};registryEvent(){window.addEventListener("resize",this.onWindowResize),this.container.addEventListener("click",this.onClick),this.container.addEventListener("pointerover",this.onPointerover),this.container.addEventListener("pointermove",this.onPointermove),this.container.addEventListener("pointerleave",this.onPointerleave),this.selection.addEventListener("select",this.onSelectionSelect),this.hoverHelper.addEventListener("hover-change",this.onHoverChange)}unRegistryEvent(){window.removeEventListener("resize",this.onWindowResize),this.container.removeEventListener("click",this.onClick),this.container.removeEventListener("pointerover",this.onPointerover),this.container.removeEventListener("pointermove",this.onPointermove),this.container.removeEventListener("pointerleave",this.onPointerleave),this.selection.removeEventListener("select",this.onSelectionSelect),this.hoverHelper.removeEventListener("hover-change",this.onHoverChange)}setPolarAngle(t,e=500){return e===0?(this.control.maxPolarAngle=t,this.control.minPolarAngle=t,this.control.update(),this.control.maxPolarAngle=this.config.control.maxPolar,this.control.minPolarAngle=0,Promise.resolve()):A(new Promise(i=>{let n={polar:this.control.getPolarAngle()},s={polar:t},c=new j.Tween(n,this.tweenGroup).to(s,e).onUpdate(()=>{this.control.maxPolarAngle=n.polar,this.control.minPolarAngle=n.polar,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.control.maxPolarAngle=this.config.control.maxPolar,this.control.minPolarAngle=0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}setAzimuthalAngle(t,e=500){if(e===0){this.control.maxAzimuthAngle=t,this.control.minAzimuthAngle=t,this.control.update(),this.control.maxAzimuthAngle=1/0,this.control.minAzimuthAngle=1/0;return}return A(new Promise(i=>{let n={azimuthal:this.control.getAzimuthalAngle()},s={azimuthal:t},c=new j.Tween(n,this.tweenGroup).to(s,e).onUpdate(()=>{this.control.maxAzimuthAngle=n.azimuthal,this.control.minAzimuthAngle=n.azimuthal,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.control.maxAzimuthAngle=1/0,this.control.minAzimuthAngle=1/0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}getCameraLookAt(){return new v.Vector3().subVectors(this.control.target,this.camera.position)}setZoom(t,e,i=500){let n=this.getCameraLookAt(),s={zoom:this.camera.zoom,target:this.control.target.clone()};if(!i){this.camera.position.copy(e.clone().sub(n)),this.control.target.copy(e),this.camera.zoom=t,this.control.update();return}return A(new Promise(c=>{let a=new j.Tween(s,this.tweenGroup).to({zoom:t,target:e},i).onUpdate(()=>{this.camera.position.copy(s.target.clone().sub(n)),this.control.target.copy(s.target),this.camera.zoom=s.zoom,this.control.update()}).onComplete(()=>{this.tweenGroup.remove(a),this.control.enabled=!0,c(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),i+500)}getFitCameraToObjectZoom(t,e=[20,20,20,20],i=500,n=!0){let[s,c,a,h]=e,{clientSize:{width:l,height:m}}=this,d=this.control.getPolarAngle();n&&this.setPolarAngle(0,0);let x=new v.Box3().setFromObject(t);this.setPolarAngle(d,0);let{max:p,min:b}=x,y=new v.Vector3(b.x,p.y,p.z),u=new v.Vector3(p.x,p.y,p.z),T=new v.Vector3(p.x,b.y,b.z),W=new v.Vector3(b.x,b.y,b.z),C=g(y,this.camera,l,m),Nt=g(u,this.camera,l,m),Qt=g(W,this.camera,l,m),Jt=g(T,this.camera,l,m),te=new v.Box2().setFromPoints([new v.Vector2(C.x,C.y),new v.Vector2(Nt.x,Nt.y),new v.Vector2(Qt.x,Qt.y),new v.Vector2(Jt.x,Jt.y)]).getSize(new v.Vector2),ye=(l-c-h)/te.x,be=(m-s-a)/te.y,we=Math.min(ye,be),Pe=new v.Vector3((p.x+b.x)/2,(p.y+b.y)/2,(p.z+b.z)/2);return{zoom:we*this.camera.zoom,center:Pe}}fitCameraToObject(t,e=[20,20,20,20],i=500,n=!0){let{zoom:s,center:c}=this.getFitCameraToObjectZoom(t,e,i,n);return this.setZoom(s,c,i)}getFitCameraToGroundZoom(t=[20,20,20,20],e=500,i=!0){if(this.currentFloor&&this.currentFloor.hasElement)return this.getFitCameraToObjectZoom(this.currentFloor.groundUpper,t,e,i).zoom}fitCameraToGround(t=[20,20,20,20],e=500,i=!0){return this.currentFloor&&this.currentFloor.hasElement?this.fitCameraToObject(this.currentFloor.groundUpper,t,e,i):Promise.resolve(!1)}setCameraPosition(t,e){return A(new Promise(i=>{let n=this.camera.position.clone(),s=this.getCameraLookAt(),c=new j.Tween(n,this.tweenGroup).to(t,e).onUpdate(()=>{this.camera.position.copy(n.clone().sub(s)),this.control.target.copy(n.clone()),this.control.update()}).onComplete(()=>{this.tweenGroup.remove(c),this.camera.position.copy(n.clone().sub(s)),this.control.target.copy(t.clone()),this.control.update(),this.control.enabled=!0,i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}render(){this.renderer.render(this.scene,this.camera),this.dispatchEvent({type:"update"}),this.timer.requestAnimationFrame(()=>{this.render()}),this.tweenGroup.update()}dispose(){this.cameraBound.dispose(),this.selection.dispose(),this.hoverHelper.dispose(),this.tweenGroup.getAll().forEach(t=>t.stop()),this.tweenGroup.removeAll(),this.unRegistryEvent(),this.container.removeChild(this.renderer.domElement),this.timer.dispose(),this.renderer.dispose(),this.lights.children.forEach(t=>t.dispose()),this.materialFactory.dispose(),F(this.scene)}};var ue=require("lodash"),ge={apiDomain:"",apiInfo:{},apiPath:{floorGraphic:"/api/inception-map/floor/get",floorRange:"/api/inception-map/range/get",equipmentList:"/api/inception-map/equipment/get"},resizeObserver:!1,initTransToMark:!1,heatMap:{radius:50,gradient:{0:"#8F9FCD",.5:"#6284FF",1:"#F95D5D"}},useFloorCache:!0,control:{maxPolar:1.2,defaultPolar:1.1,defaultAzimuthal:0},defaultPadding:[20,20,20,20],svg:{circle:{radius:"2",fill:"#1CADFF"},line:{stroke:"#1CADFF"}},selectBox:{stroke:"#1CADFF",fill:"rgba(28, 173, 255, 0.3)"},hover:{time:100},ground:{color:"#F6F6F6",opacity:1,height:.001,stroke:!1,strokeColor:"#E6E6E6",strokeOpacity:1},markGraphic:{color:"#EEF0F3",opacity:1,height:.001,stroke:!1,strokeColor:"#000",strokeOpacity:1},graphic:{fillOpacity:1},cameraBound:{padding:[150,150,150,150]},poi:{boxScale:1}};function Wt(r){return(0,ue.merge)({},ge,r)}var ve=require("lodash");var X=class{bmap;constructor(o){this.bmap=o}dispose(){}};var gt=class extends X{equipmentList=[];equipmentMap=new Map;constructor(o){super(o),this.fetchEquipment(),this.bmap.event.on("switch_floor_after",this.onSwitchFloor)}async fetchEquipment(){let{apiDomain:o,apiPath:{equipmentList:t},apiInfo:e}=this.bmap.config,i=`${o}${t}`;await fetch(i,e).then(n=>n.json()).then(n=>n.data).then(n=>{this.equipmentList=n,this.equipmentMap=new Map(n.map(s=>[s.equipment_id,s]))}),this.bmap.context.currentFloor&&this.changeGraphicToEquipment(this.bmap.context.currentFloor.graphicLayer.children)}onSwitchFloor=o=>{this.equipmentList.length&&this.changeGraphicToEquipment(o.graphics)};getGraphicEquipment(o){return o.userData.data.info.userData.equipment}changeGraphicToEquipment(o){console.log(o),o.filter(t=>{let e=this.getGraphicEquipment(t);return e&&this.equipmentMap.has(e)}).forEach(t=>{let e=this.equipmentMap.get(this.getGraphicEquipment(t)),i=this.bmap.createGraphicPoi(t,{icon:e?.equipment_icon,built_in:!0,icon_size:[14,14]})})}dispose(){this.bmap.event.off("switch_floor_after",this.onSwitchFloor)}};var _e=`
|
|
38
|
+
`,p=new w.ShaderMaterial({uniforms:{uColor:{value:new w.Color(o[0]).convertLinearToSRGB()},uGradualColor:{value:new w.Color(o[1]).convertLinearToSRGB()},center:{value:t},maxValue:{value:e},opacity:{value:i},uDirection:{value:n},uMax:{value:s},uMin:{value:c}},vertexShader:h,fragmentShader:l,side:w.DoubleSide});return this.shaderMaterialMap.set(a,p),p}dispose(){this.lineMaterialMap.forEach((o,t)=>{o.dispose()}),this.lineMaterialMap.clear(),this.meshStandardMaterialMap.forEach((o,t)=>{o.dispose()}),this.meshStandardMaterialMap.clear(),this.meshBasicMaterialMap.forEach((o,t)=>{o.dispose()}),this.meshBasicMaterialMap.clear(),this.shaderMaterialMap.forEach((o,t)=>{o.dispose()}),this.shaderMaterialMap.clear()}};var U=require("three");var Ot=class{constructor(o){this.context=o;this.registryEvent(),this.changePrevCamera()}prevCamera={position:new U.Vector3,zoom:1,target:new U.Vector3};enable=!0;setEnable(o){this.enable=o,o?this.registryEvent():this.unRegistryEvent()}changePrevCamera(){this.prevCamera={position:this.context.camera.position.clone(),zoom:this.context.camera.zoom,target:this.context.control.target.clone()}}backToPrevCamera(){this.setEnable(!1),this.context.camera.position.copy(this.prevCamera.position),this.context.camera.zoom=this.prevCamera.zoom,this.context.control.target.copy(this.prevCamera.target),this.context.control.update(),this.setEnable(!0)}registryEvent(){this.context.addEventListener("control-change",this.onCameraChange)}unRegistryEvent(){this.context.removeEventListener("control-change",this.onCameraChange)}getCurFloorScreenPosition(){if(!this.context.currentFloor)return null;let o=new U.Box3().setFromObject(this.context.currentFloor.groundUpper),{camera:t,container:{clientWidth:e,clientHeight:i}}=this.context,{min:n,max:s}=o,c=m(n,t,e,i),a=m(s,t,e,i),h=m(new U.Vector3(n.x,s.y,s.z),t,e,i),l=m(new U.Vector3(s.x,n.y,n.z),t,e,i),p=Math.min(c.x,a.x,h.x,l.x),f=Math.max(c.x,a.x,h.x,l.x),P=Math.min(c.y,a.y,h.y,l.y),g=Math.max(c.y,a.y,h.y,l.y);return{left:p,right:f,top:P,bottom:g}}checkDistanceToScreenEdge({left:o,right:t,top:e,bottom:i}){let{width:n,height:s}=this.context.clientSize,[c,a,h,l]=this.context.config.cameraBound.padding;return o<=l&&n-t<=a&&e<=c&&s-i<=h}onCameraChange=()=>{};dispose(){this.unRegistryEvent()}};var ut=class extends u.EventDispatcher{constructor(t,e){super();this.container=t;this.config=e;this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.selection=new mt(this),this.hoverHelper=new dt(this),this.materialFactory=new Dt(this),this.resizeClientSize(),this.registryEvent()}scene=Tt();renderer=zt();camera;control;lights=kt();timer=new O;tweenGroup=new j.Group;currentFloor;selection;hoverHelper;basicRatio;materialFactory;cameraBound;clientSize={width:0,height:0,x:0,y:0};resizeClientSize(){let{x:t,y:e,width:i,height:n}=this.container.getBoundingClientRect();this.clientSize={width:i||this.container.clientWidth,height:n||this.container.clientHeight,x:t,y:e}}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=At(t,e),this.renderer.setSize(t,e),this.control=Rt(this.camera,this.renderer.domElement),this.control.maxPolarAngle=this.config.control.maxPolar,this.container.appendChild(this.renderer.domElement),this.scene.add(this.lights),this.basicRatio=this.getRatio(),this.control.addEventListener("change",()=>{let i=this.control.getPolarAngle();this.currentFloor?.setShadowOpacity(i/this.config.control.maxPolar),this.dispatchEvent({type:"change-ratio",px:(this.basicRatio||0)*this.camera.zoom}),this.dispatchEvent({type:"control-change"})}),this.cameraBound=new Ot(this)}getRatio(t=new u.Vector3(0,0,0),e=new u.Vector3(100,0,0)){let{clientWidth:i,clientHeight:n}=this.container,s=m(t,this.camera,i,n),c=m(e,this.camera,i,n);return Math.ceil(Math.sqrt((c.x-s.x)**2+(c.y-s.y)**2))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof u.AmbientLight&&(e.color=new u.Color(t))})}switchFloor(t){this.currentFloor&&(this.scene.remove(this.currentFloor),this.currentFloor.dispose()),this.currentFloor=t,this.scene.add(t);let e=t.getCenter();e&&(this.lights.position.x=e.x,this.lights.position.y=e.y)}onWindowResize=()=>{let{container:t,camera:e,renderer:i}=this,{clientWidth:n,clientHeight:s}=t;n=Math.max(1,n),s=Math.max(1,s),e.left=-n/2,e.right=n/2,e.top=s/2,e.bottom=-s/2,e.updateProjectionMatrix(),i.setSize(n,s),this.resizeClientSize(),this.dispatchEvent({type:"resize",width:n,height:s})};onClick=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY);e.length&&this.dispatchEvent({type:"graphic-click",graphics:e,position:i});let n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);n.length&&this.dispatchEvent({type:"poi-click",pois:n})};getGraphicsByDeviceXy(t,e){let i=new u.Vector2;i.x=t/this.clientSize.width*2-1,i.y=e/this.clientSize.height*-2+1;let n=new u.Raycaster;return n.setFromCamera(i,this.camera),this.currentFloor?.graphicLayer.getGraphicByRaycaster(n)||{graphics:[],position:null}}getPoisByDeviceXy(t,e){return this.currentFloor?.poiLayer.getPoiByDeviceXy(t,e)||[]}onPointerover=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);this.dispatchEvent({type:"pointer-over",e:t,graphics:e,pois:n,position:i})};onPointermove=t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.offsetX,t.offsetY);this.dispatchEvent({type:"pointer-move",e:t,graphics:e,pois:n,position:i})};onPointerleave=()=>{this.dispatchEvent({type:"pointer-level"})};onSelectionSelect=({graphics:t,isMultipleSelect:e})=>{this.dispatchEvent({type:"select-graphic",graphics:t,isMultipleSelect:e})};onHoverChange=({graphics:t})=>{this.dispatchEvent({type:"hover",graphics:t})};registryEvent(){window.addEventListener("resize",this.onWindowResize),this.container.addEventListener("click",this.onClick),this.container.addEventListener("pointerover",this.onPointerover),this.container.addEventListener("pointermove",this.onPointermove),this.container.addEventListener("pointerleave",this.onPointerleave),this.selection.addEventListener("select",this.onSelectionSelect),this.hoverHelper.addEventListener("hover-change",this.onHoverChange)}unRegistryEvent(){window.removeEventListener("resize",this.onWindowResize),this.container.removeEventListener("click",this.onClick),this.container.removeEventListener("pointerover",this.onPointerover),this.container.removeEventListener("pointermove",this.onPointermove),this.container.removeEventListener("pointerleave",this.onPointerleave),this.selection.removeEventListener("select",this.onSelectionSelect),this.hoverHelper.removeEventListener("hover-change",this.onHoverChange)}setPolarAngle(t,e=500){return e===0?(this.control.maxPolarAngle=t,this.control.minPolarAngle=t,this.control.update(),this.control.maxPolarAngle=this.config.control.maxPolar,this.control.minPolarAngle=0,Promise.resolve()):z(new Promise(i=>{let n={polar:this.control.getPolarAngle()},s={polar:t},c=new j.Tween(n,this.tweenGroup).to(s,e).onUpdate(()=>{this.control.maxPolarAngle=n.polar,this.control.minPolarAngle=n.polar,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.control.maxPolarAngle=this.config.control.maxPolar,this.control.minPolarAngle=0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}setAzimuthalAngle(t,e=500){if(e===0){this.control.maxAzimuthAngle=t,this.control.minAzimuthAngle=t,this.control.update(),this.control.maxAzimuthAngle=1/0,this.control.minAzimuthAngle=1/0;return}return z(new Promise(i=>{let n={azimuthal:this.control.getAzimuthalAngle()},s={azimuthal:t},c=new j.Tween(n,this.tweenGroup).to(s,e).onUpdate(()=>{this.control.maxAzimuthAngle=n.azimuthal,this.control.minAzimuthAngle=n.azimuthal,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.control.maxAzimuthAngle=1/0,this.control.minAzimuthAngle=1/0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}getCameraLookAt(){return new u.Vector3().subVectors(this.control.target,this.camera.position)}setZoom(t,e,i=500){let n=this.getCameraLookAt(),s={zoom:this.camera.zoom,target:this.control.target.clone()};if(!i){this.camera.position.copy(e.clone().sub(n)),this.control.target.copy(e),this.camera.zoom=t,this.control.update();return}return z(new Promise(c=>{let a=new j.Tween(s,this.tweenGroup).to({zoom:t,target:e},i).onUpdate(()=>{this.camera.position.copy(s.target.clone().sub(n)),this.control.target.copy(s.target),this.camera.zoom=s.zoom,this.control.update()}).onComplete(()=>{this.tweenGroup.remove(a),this.control.enabled=!0,c(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),i+500)}getFitCameraToObjectZoom(t,e=[20,20,20,20],i=500,n=!0){let[s,c,a,h]=e,{clientSize:{width:l,height:p}}=this,f=this.control.getPolarAngle();n&&this.setPolarAngle(0,0);let P=new u.Box3().setFromObject(t);this.setPolarAngle(f,0);let{max:g,min:x}=P,E=new u.Vector3(x.x,g.y,g.z),vt=new u.Vector3(g.x,g.y,g.z),xt=new u.Vector3(g.x,x.y,x.z),W=new u.Vector3(x.x,x.y,x.z),M=m(E,this.camera,l,p),ee=m(vt,this.camera,l,p),ie=m(W,this.camera,l,p),oe=m(xt,this.camera,l,p),ne=new u.Box2().setFromPoints([new u.Vector2(M.x,M.y),new u.Vector2(ee.x,ee.y),new u.Vector2(ie.x,ie.y),new u.Vector2(oe.x,oe.y)]).getSize(new u.Vector2),Ee=(l-c-h)/ne.x,Me=(p-s-a)/ne.y,Ce=Math.min(Ee,Me),Le=new u.Vector3((g.x+x.x)/2,(g.y+x.y)/2,(g.z+x.z)/2);return{zoom:Ce*this.camera.zoom,center:Le}}fitCameraToObject(t,e=[20,20,20,20],i=500,n=!0){let{zoom:s,center:c}=this.getFitCameraToObjectZoom(t,e,i,n);return this.setZoom(s,c,i)}getFitCameraToGroundZoom(t=[20,20,20,20],e=500,i=!0){if(this.currentFloor&&this.currentFloor.hasElement)return this.getFitCameraToObjectZoom(this.currentFloor.groundUpper,t,e,i).zoom}fitCameraToGround(t=[20,20,20,20],e=500,i=!0){return this.currentFloor&&this.currentFloor.hasElement?this.fitCameraToObject(this.currentFloor.groundUpper,t,e,i):Promise.resolve(!1)}setCameraPosition(t,e){return z(new Promise(i=>{let n=this.camera.position.clone(),s=this.getCameraLookAt(),c=new j.Tween(n,this.tweenGroup).to(t,e).onUpdate(()=>{this.camera.position.copy(n.clone().sub(s)),this.control.target.copy(n.clone()),this.control.update()}).onComplete(()=>{this.tweenGroup.remove(c),this.camera.position.copy(n.clone().sub(s)),this.control.target.copy(t.clone()),this.control.update(),this.control.enabled=!0,i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}render(){this.renderer.render(this.scene,this.camera),this.dispatchEvent({type:"update"}),this.timer.requestAnimationFrame(()=>{this.render()}),this.tweenGroup.update()}dispose(){this.cameraBound.dispose(),this.selection.dispose(),this.hoverHelper.dispose(),this.tweenGroup.getAll().forEach(t=>t.stop()),this.tweenGroup.removeAll(),this.unRegistryEvent(),this.container.removeChild(this.renderer.domElement),this.timer.dispose(),this.renderer.dispose(),this.lights.children.forEach(t=>t.dispose()),this.materialFactory.dispose(),B(this.scene)}};var xe=require("lodash"),ye={apiDomain:"",apiInfo:{},apiPath:{floorGraphic:"/api/inception-map/floor/get",floorRange:"/api/inception-map/range/get",equipmentList:"/api/inception-map/equipment/get"},resizeObserver:!1,initTransToMark:!1,heatMap:{radius:50,gradient:{0:"#8F9FCD",.5:"#6284FF",1:"#F95D5D"}},useFloorCache:!0,control:{maxPolar:1.2,defaultPolar:1.1,defaultAzimuthal:0},defaultPadding:[20,20,20,20],svg:{circle:{radius:"2",fill:"#1CADFF"},line:{stroke:"#1CADFF"}},selectBox:{stroke:"#1CADFF",fill:"rgba(28, 173, 255, 0.3)"},hover:{time:100},ground:{color:"#F6F6F6",opacity:1,height:.001,stroke:!1,strokeColor:"#E6E6E6",strokeOpacity:1},markGraphic:{color:"#EEF0F3",opacity:1,height:.001,stroke:!1,strokeColor:"#000",strokeOpacity:1},graphic:{fillOpacity:1},cameraBound:{padding:[150,150,150,150]},poi:{boxScale:1}};function Yt(r){return(0,xe.merge)({},ye,r)}var be=require("lodash");var R=class{bmap;constructor(o){this.bmap=o}dispose(){}};var gt=class extends R{equipmentList=[];equipmentMap=new Map;constructor(o){super(o),this.fetchEquipment(),this.bmap.event.on("switch_floor_after",this.onSwitchFloor)}async fetchEquipment(){let{apiDomain:o,apiPath:{equipmentList:t},apiInfo:e}=this.bmap.config,i=`${o}${t}`;await fetch(i,e).then(n=>n.json()).then(n=>n.data).then(n=>{this.equipmentList=n,this.equipmentMap=new Map(n.map(s=>[s.equipment_id,s]))}),this.bmap.context.currentFloor&&this.changeGraphicToEquipment(this.bmap.context.currentFloor.graphicLayer.children)}onSwitchFloor=o=>{this.equipmentList.length&&this.changeGraphicToEquipment(o.graphics)};getGraphicEquipment(o){return o.userData.data.info.userData.equipment}changeGraphicToEquipment(o){o.filter(t=>{let e=this.getGraphicEquipment(t);return e&&this.equipmentMap.has(e)}).forEach(t=>{let e=this.equipmentMap.get(this.getGraphicEquipment(t)),i=this.bmap.createGraphicPoi(t,{icon:e?.equipment_icon,built_in:!0,icon_size:[14,14]})})}dispose(){this.bmap.event.off("switch_floor_after",this.onSwitchFloor)}};async function Qt({brand:r,project:o},t){let{apiDomain:e,apiPath:{floorRange:i},apiInfo:n}=t,s=`${e}${i}?brand=${r}&project=${o}&phase=${o}&building=${o}`;return await fetch(s,n).then(a=>a.json()).then(a=>a.data).then(a=>{let h=(a||[])[0];return h&&(h.info=JSON.parse(h.info)),h})}async function ft({brand:r,project:o,floor:t,ts:e,resource_type_list:i},n){let{apiDomain:s,apiPath:{floorGraphic:c},apiInfo:a}=n,h=`${s}${c}?brand=${r}&project=${o}&phase=${o}&building=${o}&floor=${t}&ts=${e}&resource_type_list=${i}`;return await fetch(h,a).then(p=>p.json()).then(p=>p.data).then(p=>((p||[]).map(f=>f.info=JSON.parse(f.info)),p||[]))}var we=(t=>(t[t.D2=0]="D2",t[t.D3=1.1]="D3",t))(we||{}),Nt=class extends Ft.EventDispatcher{constructor(t,e={}){super();this.container=t;this.config=Yt(e),this.context=new ut(t,this.config),this.registryEvent(),this.context.render()}config;context;polarKeys=[];azimuthalKeys=[];svgLine;svgPolygon;basicZoom=1;prevCameraZoom=1;type="2d";floorDataMap=new Map;buildingGroundMap=new Map;currentBuildGround=null;observe=null;event=new et;timer=new O;plugins=[];async loadGraphics({brand:t,project:e,floor:i,ts:n,resource_type_list:s}){return await ft({brand:t,project:e,floor:i,ts:n,resource_type_list:s},this.config)}async loadBuildingGround({brand:t,project:e}){let i=T({brand:t,project:e});if(this.buildingGroundMap.get(i))return this.buildingGroundMap.get(i)||null;let n=await Qt({brand:t,project:e},this.config);return this.buildingGroundMap.set(i,n),n}async load({brand:t,project:e,floor:i,ts:n,resource_type_list:s}){let c=T({brand:t,project:e,floor:i,ts:n,resource_type_list:s});if(this.floorDataMap.has(c))return this.floorDataMap.get(c);let[a,h]=await Promise.all([this.loadGraphics({brand:t,project:e,floor:i,ts:n,resource_type_list:s}),this.loadBuildingGround({brand:t,project:e})]),l=h?wt(h.info.geometry.cds[0]):[0,0];return this.transformGraphicData(a,l),a.forEach(p=>{p.info.transformToBuildingGround=!!h}),this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(c,a),a}transformGraphicData(t,e){t.forEach(c=>{if(c.info.geometry.coords=JSON.parse(JSON.stringify(c.info.geometry.cds)),c.info.geometry.type==="polygon")c.info.geometry.coords.map(a=>{Array.isArray(a)&&a.forEach(h=>{h[0]-=e[0],h[1]-=e[1]})});else{let[a,h]=c.info.geometry.cds;c.info.geometry.coords=[a-e[0],h-e[1]]}});let{ground:i,markGraphic:n,graphic:s}=this.config;for(let c=0;c<t.length;c++){let a=t[c];a.info.deltaHeight=1e-5*(c+1),a.info.group==="ground"?(a.info.fillColor=i.color,a.info.fillOpacity=i.opacity,a.info.height=i.height,a.info.stroke=i.stroke,a.info.strokeColor=i.strokeColor,a.info.strokeOpacity=i.strokeOpacity):a.info.userData.mark?(a.info.height=n.height,a.info.fillColor=n.color,a.info.fillOpacity=n.opacity,a.info.stroke=n.stroke,a.info.strokeColor=n.strokeColor,a.info.strokeOpacity=n.strokeOpacity):(a.info.fillOpacity=s.fillOpacity,this.config.initTransToMark&&(a.info.height=n.height,a.info.fillColor=n.color,a.info.stroke=n.stroke,a.info.strokeColor=n.strokeColor,a.info.strokeOpacity=n.strokeOpacity))}}loadEquipment(){let t=new gt(this);this.plugins.push(t)}use(t){t.bmap=this,this.plugins.push(t)}createFloor(t){let e=new ht(this.context);if(!t.length)return{curFloor:e,graphics:[]};let i=new Map,n=[];for(let s of t)if(s.info.group==="ground")e.createGround(s.info);else{let c=e.addGraphic(s.info);c.userData.data=s,i.set(s.legacy_id,c),n.push(c)}return e.userData.legacyToGraphicMap=i,{curFloor:e,graphics:n}}triggerHooks(t,...e){this.event.emit(t,...e)}switchFloor({brand:t,project:e,floor:i,ts:n,resource_type_list:s}){let c=T({brand:t,project:e,floor:i,ts:n,resource_type_list:s}),a=this.floorDataMap.get(c);if(this.context.control.removeEventListener("change",this.onControlChange),a){let h=T({brand:t,project:e});this.currentBuildGround=this.buildingGroundMap.get(h)||null;let l=this.createFloor(a);l?(this.triggerHooks("switch_floor_before",l),this.context.switchFloor(l.curFloor),this.initialFloorCamera(),this.triggerHooks("switch_floor_after",l)):console.warn("[switchFloor error] ["+i+"] \u697C\u5C42\u6CA1\u6709\u6570\u636E")}else console.warn("[switchFloor error] \u6CA1\u6709\u8FD9\u4E2A\u697C\u5C42\uFF0C\u8BF7\u5148\u8C03\u7528load\u65B9\u6CD5\u52A0\u8F7D\u697C\u5C42")}initialFloorCamera(){this.context.cameraBound.setEnable(!1),this.context.control.minZoom=0,this.context.control.maxZoom=1/0,this.context.camera.zoom=1,this.context.setAzimuthalAngle(this.config.control.defaultAzimuthal,0),this.context.fitCameraToGround(void 0,0),this.basicZoom=this.context.camera.zoom,this.context.control.minZoom=this.basicZoom,this.context.control.maxZoom=this.basicZoom*25,this.context.control.addEventListener("change",this.onControlChange),this.type==="3d"&&this.context.fitCameraToGround(this.config.defaultPadding,0,!1),this.onControlChange(),this.context.cameraBound.setEnable(!0)}onControlChange=()=>{let{camera:{zoom:t}}=this.context;t!==this.prevCameraZoom&&(this.dispatchEvent({type:"zoom-change",basicZoom:this.basicZoom,cameraZoom:this.context.camera.zoom}),this.prevCameraZoom=t)};addModel(t,e){if(t.options.geometry.type==="polygon"){let i=this.context.currentFloor?.addModel({...e,position:t.getPosition().setZ(.1),id:t.options.id});if(i){let{facilityAngle:n=0,facilityXScale:s=1,facilityYScale:c=1}=t.options.userData;i.rotateZ((180-n)/180*Math.PI),i.scale.set(s,c,1)}}}addHeatmap(t){return this.context.currentFloor?.addHeatmap(t)}getLegacyToGraphicMap(){return this.context.currentFloor?.userData.legacyToGraphicMap||new Map}getFloorAllGraphics(){return this.context.currentFloor?.graphicLayer.children.filter(t=>t instanceof S)||[]}createGraphicPoi(t,e){if(this.context.currentFloor){e.id===void 0&&(e.id=t.options.id);let i=t.getCenter();return this.context.currentFloor.addPoi({...e,position:{...i,z:i.z+t.options.height/2}})}return null}removeHeatMap(){this.context.currentFloor?.removeHeatMap()}translateElementToCenter(t,e=500){let i=t.getPosition();return this.context.setCameraPosition(i,e)}async translateElementToCenterX(t,e=500){return z(new Promise(i=>{let n=this.context.control.target.clone(),s=t.getPosition();this.timer.requestAnimationFrame(()=>{let{clientSize:{width:c,height:a},camera:h}=this.context;console.log("width",c,a);let p=m(s,h,c,a).x-c/2,f=new Ft.Vector3;f.setFromMatrixColumn(this.context.camera.matrix,0),f.normalize(),f.multiplyScalar(p/this.context.camera.zoom),n.add(f),this.context.setCameraPosition(n,e).then(i)})}),e+500)}getElementDeviceCoordinate(t){let e=t.position.clone(),{clientWidth:i,clientHeight:n}=this.container;return m(e,this.context.camera,i,n)}changeMapType(t,e=500){return this.type=t,t==="2d"?this.context.setPolarAngle(0,e):this.context.setPolarAngle(1.1,e)}async resetView(t=300){let e=t/3;await this.context.setAzimuthalAngle(this.config.control.defaultAzimuthal,e),await this.changeMapType(this.type,e),await this.context.fitCameraToGround(this.config.defaultPadding,e,!1)}reduceMap(t=.5,e=500){let i=this.context.camera.zoom;return this.context.setZoom(i-t,this.context.control.target,e)}enlargeMap(t=.5,e=500){let i=this.context.camera.zoom;return this.context.setZoom(i+t,this.context.control.target,e)}onKeydown=t=>{this.polarKeys.includes(t.code)&&(this.context.control.maxPolarAngle=this.config.control.maxPolar,this.context.control.minPolarAngle=0),this.azimuthalKeys.includes(t.code)&&(this.context.control.maxAzimuthAngle=1/0,this.context.control.minAzimuthAngle=1/0)};onKeyUp=t=>{if(this.polarKeys.includes(t.code)){let e=this.context.control.getPolarAngle();this.context.control.maxPolarAngle=e,this.context.control.minPolarAngle=e}if(this.azimuthalKeys.includes(t.code)){let e=this.context.control.getAzimuthalAngle();this.context.control.maxAzimuthAngle=e,this.context.control.minAzimuthAngle=e}};registryEvent(){if(window.addEventListener("keydown",this.onKeydown),window.addEventListener("keyup",this.onKeyUp),this.config.resizeObserver){let t=new ResizeObserver((0,be.debounce)(this.resize,5));t.observe(this.container),this.observe=t}}unRegistryEvent(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("keyup",this.onKeyUp),this.observe?.disconnect(),this.observe=null}configurePolarShortcutKeys(t){this.polarKeys=t}configureAzimuthalShortcutKeys(t){this.azimuthalKeys=t}rotateMap(t=.1){let e=this.context.control.getAzimuthalAngle();this.context.control.maxAzimuthAngle=e+t,this.context.control.minAzimuthAngle=e+t,this.context.control.update()}async measureDistance(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new lt(this.context);let i=this.svgLine.dispose.bind(this.svgLine);this.svgLine.dispose=function(){i(),e("cancel")},this.svgLine.addEventListener("distance",({distance:n})=>{t(n)})})}cancelDistance(){this.svgLine&&(this.svgLine.dispose(),this.svgLine=void 0,this.context.control.enableRotate=!0)}measureArea(){return this.cancelArea(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgPolygon=new pt(this.context);let i=this.svgPolygon.dispose.bind(this.svgPolygon);this.svgPolygon.dispose=function(){i(),e("cancel")},this.svgPolygon.addEventListener("area",({area:n})=>{t(n)})})}cancelArea(){this.svgPolygon&&(this.svgPolygon.dispose(),this.svgPolygon=void 0,this.context.control.enableRotate=!0)}getGraphicByNodeId(t){return this.context.currentFloor?.graphicLayer.getGraphicByNodeId(t)||null}deleteGraphic(t){this.context.currentFloor?.graphicLayer.removeGraphic(t)}createGraphicByOptions(t){if(!t.transformToBuildingGround&&this.currentBuildGround){let e=wt(this.currentBuildGround.info.geometry.cds[0]);if(t.geometry.type==="polygon")t.geometry.coords=JSON.parse(JSON.stringify(t.geometry.cds)),t.geometry.coords.map(i=>{Array.isArray(i)&&i.forEach(n=>{n[0]-=e[0],n[1]-=e[1]})});else{let[i,n]=t.geometry.cds;t.geometry.coords=[i-e[0],n-e[1]]}}return this.context.currentFloor?.graphicLayer.createGraphic(t)}removePoiById(t){return this.context.currentFloor?.poiLayer.removePoiById(t)}getPoiById(t){return this.context.currentFloor?.poiLayer.getPoiById(t)}getPois(){return(this.context.currentFloor?.poiLayer.pois||[]).filter(t=>!t.options.built_in)}clearPoi(){this.context.currentFloor&&this.context.currentFloor.poiLayer.clear()}removeSelectGraphic(t){this.context.selection.remove(t)}resize=()=>{this.context.cameraBound.setEnable(!1),this.context.onWindowResize();let t=this.context.control.getAzimuthalAngle(),e=this.context.camera.zoom;this.context.control.minZoom=0,this.context.control.maxZoom=1/0,this.context.camera.zoom=1,this.context.setAzimuthalAngle(0,0);let i=this.context.getFitCameraToGroundZoom(void 0,0);this.basicZoom=i||0,this.context.control.minZoom=this.basicZoom,this.context.control.maxZoom=this.basicZoom*25,this.context.camera.zoom=e,this.context.control.addEventListener("change",this.onControlChange),this.context.setAzimuthalAngle(t,0),this.context.cameraBound.setEnable(!0)};dispose(){this.timer.dispose(),this.plugins.forEach(t=>t.dispose()),this.context.dispose(),this.floorDataMap.clear(),this.buildingGroundMap.clear(),$t(),Ut(),Zt(),this.unRegistryEvent()}};var $e=`
|
|
39
39
|
self.onmessage = (e) => {
|
|
40
40
|
console.log(e.data)
|
|
41
41
|
loadRoad("");
|
|
@@ -53,5 +53,5 @@ function getPath(start, end) {
|
|
|
53
53
|
console.log(start, end)
|
|
54
54
|
self.postMessage("getPath")
|
|
55
55
|
}
|
|
56
|
-
`,fe=_e;var ft=class extends X{worker_url=window.URL.createObjectURL(new Blob([fe],{type:"text/javascript"}));worker=new Worker(this.worker_url);constructor(o){super(o),console.log(this.worker),this.worker.postMessage("initial"),this.worker.onmessage=t=>{console.log("onmessage",t.data)}}fetchRoad(){}dispose(){this.worker.terminate(),window.URL.revokeObjectURL(this.worker_url)}};var xe=(t=>(t[t.D2=0]="D2",t[t.D3=1.1]="D3",t))(xe||{}),Yt=class extends Dt.EventDispatcher{constructor(t,e={}){super();this.container=t;this.config=Wt(e),this.context=new ut(t,this.config),this.registryEvent(),this.context.render()}config;context;polarKeys=[];azimuthalKeys=[];svgLine;svgPolygon;basicZoom=1;prevCameraZoom=1;type="2d";floorDataMap=new Map;buildingGroundMap=new Map;currentBuildGround=null;observe=null;event=new it;timer=new B;plugins=[];async loadGraphics({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}){let{apiDomain:h,apiPath:{floorGraphic:l},apiInfo:m}=this.config,d=`${h}${l}?brand=${t}&project=${e}&phase=${i}&building=${n}&floor=${s}&ts=${c}&resource_type_list=${a}`;return await fetch(d,m).then(p=>p.json()).then(p=>p.data).then(p=>((p||[]).map(b=>b.info=JSON.parse(b.info)),p||[]))}getBuildingKey({brand:t,project:e,phase:i,building:n}){return`${t}-${e}-${i}-${n}`}async loadBuildingGround({brand:t,project:e,phase:i,building:n}){let s=this.getBuildingKey({brand:t,project:e,phase:i,building:n});if(this.buildingGroundMap.get(s))return this.buildingGroundMap.get(s)||null;let{apiDomain:c,apiPath:{floorRange:a},apiInfo:h}=this.config,l=`${c}${a}?brand=${t}&project=${e}&phase=${i}&building=${n}`,m=await fetch(l,h).then(d=>d.json()).then(d=>d.data).then(d=>{let x=(d||[])[0];return x&&(x.info=JSON.parse(x.info)),x});return this.buildingGroundMap.set(s,m),m}getFloorKey({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}){return`${t}-${e}-${i}-${n}-${s}-${c}-${a}`}async load({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}){let h=this.getFloorKey({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a});if(this.floorDataMap.get(h))return;let[l,m]=await Promise.all([this.loadGraphics({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}),this.loadBuildingGround({brand:t,project:e,phase:i,building:n})]),d=m?yt(m.info.geometry.cds[0]):[0,0];l.forEach(y=>{if(y.info.geometry.coords=JSON.parse(JSON.stringify(y.info.geometry.cds)),y.info.geometry.type==="polygon")y.info.geometry.coords.map(u=>{Array.isArray(u)&&u.forEach(T=>{T[0]-=d[0],T[1]-=d[1]})});else{let[u,T]=y.info.geometry.cds;y.info.geometry.coords=[u-d[0],T-d[1]]}y.info.transformToBuildingGround=!!m});let{ground:x,markGraphic:p,graphic:b}=this.config;for(let y=0;y<l.length;y++){let u=l[y];u.info.deltaHeight=1e-5*(y+1),u.info.group==="ground"?(u.info.fillColor=x.color,u.info.fillOpacity=x.opacity,u.info.height=x.height,u.info.stroke=x.stroke,u.info.strokeColor=x.strokeColor,u.info.strokeOpacity=x.strokeOpacity):u.info.userData.mark?(u.info.height=p.height,u.info.fillColor=p.color,u.info.fillOpacity=p.opacity,u.info.stroke=p.stroke,u.info.strokeColor=p.strokeColor,u.info.strokeOpacity=p.strokeOpacity):(u.info.fillOpacity=b.fillOpacity,this.config.initTransToMark&&(u.info.height=p.height,u.info.fillColor=p.color,u.info.stroke=p.stroke,u.info.strokeColor=p.strokeColor,u.info.strokeOpacity=p.strokeOpacity))}return this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(h,l),l}loadEquipment(){let t=new gt(this);this.plugins.push(t)}use(t){t.bmap=this,this.plugins.push(t)}loadNavigation(){let t=new ft(this);this.plugins.push(t)}createFloor(t){let e=new ht(this.context);if(!t.length)return{curFloor:e,graphics:[]};let i=new Map,n=[];for(let s of t)if(s.info.group==="ground")e.createGround(s.info);else{let c=e.addGraphic(s.info);c.userData.data=s,i.set(s.legacy_id,c),n.push(c)}return e.userData.legacyToGraphicMap=i,{curFloor:e,graphics:n}}switchFloor({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}){let h=this.getFloorKey({brand:t,project:e,phase:i,building:n,floor:s,ts:c,resource_type_list:a}),l=this.floorDataMap.get(h);if(this.context.control.removeEventListener("change",this.onControlChange),l){let m=this.getBuildingKey({brand:t,project:e,phase:i,building:n});this.currentBuildGround=this.buildingGroundMap.get(m)||null;let d=this.createFloor(l);d?(this.event.emit("switch_floor_before",d),this.context.cameraBound.setEnable(!1),this.context.switchFloor(d.curFloor),this.context.control.minZoom=0,this.context.control.maxZoom=1/0,this.context.camera.zoom=1,this.context.setAzimuthalAngle(this.config.control.defaultAzimuthal,0),this.context.fitCameraToGround(void 0,0),this.basicZoom=this.context.camera.zoom,this.context.control.minZoom=this.basicZoom,this.context.control.maxZoom=this.basicZoom*25,this.context.control.addEventListener("change",this.onControlChange),this.type==="3d"&&this.context.fitCameraToGround(this.config.defaultPadding,0,!1),this.onControlChange(),this.context.cameraBound.setEnable(!0),this.event.emit("switch_floor_after",d)):console.warn("[switchFloor error] ["+s+"] \u697C\u5C42\u6CA1\u6709\u6570\u636E")}else console.warn("[switchFloor error] \u6CA1\u6709\u8FD9\u4E2A\u697C\u5C42\uFF0C\u8BF7\u5148\u8C03\u7528load\u65B9\u6CD5\u52A0\u8F7D\u697C\u5C42")}onControlChange=()=>{let{camera:{zoom:t}}=this.context;t!==this.prevCameraZoom&&(this.dispatchEvent({type:"zoom-change",basicZoom:this.basicZoom,cameraZoom:this.context.camera.zoom}),this.prevCameraZoom=t)};addModel(t,e){if(t.options.geometry.type==="polygon"){let i=this.context.currentFloor?.addModel({...e,position:t.getPosition().setZ(.1),id:t.options.id});if(i){let{facilityAngle:n=0,facilityXScale:s=1,facilityYScale:c=1}=t.options.userData;i.rotateZ((180-n)/180*Math.PI),i.scale.set(s,c,1)}}}addHeatmap(t){return this.context.currentFloor?.addHeatmap(t)}getLegacyToGraphicMap(){return this.context.currentFloor?.userData.legacyToGraphicMap||new Map}getFloorAllGraphics(){return this.context.currentFloor?.graphicLayer.children.filter(t=>t instanceof O)||[]}createGraphicPoi(t,e){if(this.context.currentFloor){e.id===void 0&&(e.id=t.options.id);let i=t.getCenter();return this.context.currentFloor.addPoi({...e,position:{...i,z:i.z+t.options.height/2}})}return null}removeHeatMap(){this.context.currentFloor?.removeHeatMap()}translateElementToCenter(t,e=500){let i=t.getPosition();return this.context.setCameraPosition(i,e)}async translateElementToCenterX(t,e=500){return A(new Promise(i=>{let n=this.context.control.target.clone(),s=t.getPosition();this.timer.requestAnimationFrame(()=>{let{clientSize:{width:c,height:a},camera:h}=this.context;console.log("width",c,a);let m=g(s,h,c,a).x-c/2,d=new Dt.Vector3;d.setFromMatrixColumn(this.context.camera.matrix,0),d.normalize(),d.multiplyScalar(m/this.context.camera.zoom),n.add(d),this.context.setCameraPosition(n,e).then(i)})}),e+500)}getElementDeviceCoordinate(t){let e=t.position.clone(),{clientWidth:i,clientHeight:n}=this.container;return g(e,this.context.camera,i,n)}changeMapType(t,e=500){return this.type=t,t==="2d"?this.context.setPolarAngle(0,e):this.context.setPolarAngle(1.1,e)}async resetView(t=300){let e=t/3;await this.context.setAzimuthalAngle(this.config.control.defaultAzimuthal,e),await this.changeMapType(this.type,e),await this.context.fitCameraToGround(this.config.defaultPadding,e,!1)}reduceMap(t=.5,e=500){let i=this.context.camera.zoom;return this.context.setZoom(i-t,this.context.control.target,e)}enlargeMap(t=.5,e=500){let i=this.context.camera.zoom;return this.context.setZoom(i+t,this.context.control.target,e)}onKeydown=t=>{this.polarKeys.includes(t.code)&&(this.context.control.maxPolarAngle=this.config.control.maxPolar,this.context.control.minPolarAngle=0),this.azimuthalKeys.includes(t.code)&&(this.context.control.maxAzimuthAngle=1/0,this.context.control.minAzimuthAngle=1/0)};onKeyUp=t=>{if(this.polarKeys.includes(t.code)){let e=this.context.control.getPolarAngle();this.context.control.maxPolarAngle=e,this.context.control.minPolarAngle=e}if(this.azimuthalKeys.includes(t.code)){let e=this.context.control.getAzimuthalAngle();this.context.control.maxAzimuthAngle=e,this.context.control.minAzimuthAngle=e}};registryEvent(){if(window.addEventListener("keydown",this.onKeydown),window.addEventListener("keyup",this.onKeyUp),this.config.resizeObserver){let t=new ResizeObserver((0,ve.debounce)(this.resize,5));t.observe(this.container),this.observe=t}}unRegistryEvent(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("keyup",this.onKeyUp),this.observe?.disconnect(),this.observe=null}configurePolarShortcutKeys(t){this.polarKeys=t}configureAzimuthalShortcutKeys(t){this.azimuthalKeys=t}rotateMap(t=.1){let e=this.context.control.getAzimuthalAngle();this.context.control.maxAzimuthAngle=e+t,this.context.control.minAzimuthAngle=e+t,this.context.control.update()}async measureDistance(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new lt(this.context);let i=this.svgLine.dispose.bind(this.svgLine);this.svgLine.dispose=function(){i(),e("cancel")},this.svgLine.addEventListener("distance",({distance:n})=>{t(n)})})}cancelDistance(){this.svgLine&&(this.svgLine.dispose(),this.svgLine=void 0,this.context.control.enableRotate=!0)}measureArea(){return this.cancelArea(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgPolygon=new pt(this.context);let i=this.svgPolygon.dispose.bind(this.svgPolygon);this.svgPolygon.dispose=function(){i(),e("cancel")},this.svgPolygon.addEventListener("area",({area:n})=>{t(n)})})}cancelArea(){this.svgPolygon&&(this.svgPolygon.dispose(),this.svgPolygon=void 0,this.context.control.enableRotate=!0)}getGraphicByNodeId(t){return this.context.currentFloor?.graphicLayer.getGraphicByNodeId(t)||null}deleteGraphic(t){this.context.currentFloor?.graphicLayer.removeGraphic(t)}createGraphicByOptions(t){if(!t.transformToBuildingGround&&this.currentBuildGround){let e=yt(this.currentBuildGround.info.geometry.cds[0]);if(t.geometry.type==="polygon")t.geometry.coords=JSON.parse(JSON.stringify(t.geometry.cds)),t.geometry.coords.map(i=>{Array.isArray(i)&&i.forEach(n=>{n[0]-=e[0],n[1]-=e[1]})});else{let[i,n]=t.geometry.cds;t.geometry.coords=[i-e[0],n-e[1]]}}return this.context.currentFloor?.graphicLayer.createGraphic(t)}removePoiById(t){return this.context.currentFloor?.poiLayer.removePoiById(t)}getPoiById(t){return this.context.currentFloor?.poiLayer.getPoiById(t)}getPois(){return(this.context.currentFloor?.poiLayer.pois||[]).filter(t=>!t.options.built_in)}clearPoi(){this.context.currentFloor&&this.context.currentFloor.poiLayer.clear()}removeSelectGraphic(t){this.context.selection.remove(t)}resize=()=>{this.context.cameraBound.setEnable(!1),this.context.onWindowResize();let t=this.context.control.getAzimuthalAngle(),e=this.context.camera.zoom;this.context.control.minZoom=0,this.context.control.maxZoom=1/0,this.context.camera.zoom=1,this.context.setAzimuthalAngle(0,0);let i=this.context.getFitCameraToGroundZoom(void 0,0);this.basicZoom=i||0,this.context.control.minZoom=this.basicZoom,this.context.control.maxZoom=this.basicZoom*25,this.context.camera.zoom=e,this.context.control.addEventListener("change",this.onControlChange),this.context.setAzimuthalAngle(t,0),this.context.cameraBound.setEnable(!0)};dispose(){this.timer.dispose(),this.plugins.forEach(t=>t.dispose()),this.context.dispose(),this.floorDataMap.clear(),this.buildingGroundMap.clear(),It(),$t(),Kt(),this.unRegistryEvent()}};
|
|
56
|
+
`,Pe=$e;var Jt=class extends R{worker_url=window.URL.createObjectURL(new Blob([Pe],{type:"text/javascript"}));worker=new Worker(this.worker_url);constructor(o){super(o),console.log(this.worker),this.worker.postMessage("initial"),this.worker.onmessage=t=>{console.log("onmessage",t.data)}}fetchRoad(){}dispose(){this.worker.terminate(),window.URL.revokeObjectURL(this.worker_url)}};var te=class extends R{cacheData=new Map;async load(o){let t=T(o);if(this.cacheData.has(t))return this.cacheData.get(t);console.time("floor/get\u8BF7\u6C42"+o.resource_type_list);let e=await ft(o,this.bmap.config);return console.timeEnd("floor/get\u8BF7\u6C42"+o.resource_type_list),this.bmap.transformGraphicData(e,[0,0]),e.forEach(i=>i.info.transformToBuildingGround=!1),this.cacheData.set(t,e),e}isSameFloor(o){return this.bmap.context.currentFloor?.name===T(o)}switchFloorByData(o,t){if(this.isSameFloor(t)){if(!o.length)return;let e=this.bmap.context.currentFloor,i=e.userData.legacyToGraphicMap,n=e.userData.graphicMap,s=[];for(let c of o){if(c.info.group==="ground")e.createGround(c.info);else{let a=e.addGraphic(c.info);a.userData.data=c,i.set(c.legacy_id,a),s.push(a)}n.set(c.element_uuid,c)}this.bmap.triggerHooks("switch_floor_before",{curFloor:e,graphics:s}),this.bmap.initialFloorCamera(),this.bmap.triggerHooks("switch_floor_after",{curFloor:e,graphics:s})}else{let e=T(t),{curFloor:i,graphics:n}=this.bmap.createFloor(o);i.name=e;let s=new Map;o.forEach(c=>{s.set(c.element_uuid,c)}),i.userData.graphicMap=s,this.bmap.triggerHooks("switch_floor_before",{curFloor:i,graphics:n}),this.bmap.context.switchFloor(i),this.bmap.initialFloorCamera(),this.bmap.triggerHooks("switch_floor_after",{curFloor:i,graphics:n})}}filterData(o,t){if(!this.isSameFloor(t))return o;let e=this.bmap.context.currentFloor.userData.graphicMap;return o.filter(i=>!e.has(i.element_uuid))}async switchFloorByStoreData(o){let t=await this.load({...o,resource_type_list:"6"}),e=this.filterData(t,o);this.switchFloorByData(e,o)}async switchFloorByOtherData(o){let t=await this.load({...o,resource_type_list:"1,2,3,4"}),e=this.filterData(t,o);this.switchFloorByData(e,o)}async changeFloor(o){return await Promise.all([this.switchFloorByStoreData(o),this.switchFloorByOtherData(o)]),Array.from(this.bmap.context.currentFloor.userData.graphicMap.values())}};
|
|
57
57
|
//# sourceMappingURL=bmap.cjs.min.js.map
|