@aibee/crc-bmap 0.0.16 → 0.0.19
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/index.html +1 -0
- package/example/src/main.ts +76 -4
- package/lib/bmap.cjs.min.js +2 -2
- package/lib/bmap.cjs.min.js.map +3 -3
- package/lib/bmap.esm.js +46 -10
- package/lib/bmap.esm.js.map +2 -2
- package/lib/bmap.esm.min.js +2 -2
- package/lib/bmap.esm.min.js.map +3 -3
- package/lib/bmap.min.js +2 -2
- package/lib/bmap.min.js.map +3 -3
- package/lib/src/bmap.d.ts +10 -5
- package/lib/src/types/index.d.ts +1 -1
- package/package.json +1 -1
package/lib/bmap.esm.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Ft=Object.defineProperty;var rt=Object.getOwnPropertySymbols;var Tt=Object.prototype.hasOwnProperty,kt=Object.prototype.propertyIsEnumerable;var y=Math.pow,Z=(o,r,t)=>r in o?Ft(o,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[r]=t,A=(o,r)=>{for(var t in r||(r={}))Tt.call(r,t)&&Z(o,t,r[t]);if(rt)for(var t of rt(r))kt.call(r,t)&&Z(o,t,r[t]);return o};var s=(o,r,t)=>(Z(o,typeof r!="symbol"?r+"":r,t),t);var C=(o,r,t)=>new Promise((e,i)=>{var n=p=>{try{c(t.next(p))}catch(h){i(h)}},a=p=>{try{c(t.throw(p))}catch(h){i(h)}},c=p=>p.done?e(p.value):Promise.resolve(p.value).then(n,a);c((t=t.apply(o,r)).next())});import{EventDispatcher as qe}from"three";var L=class{constructor(){s(this,"tasks",{requestAnimation:new Set,timeout:new Set,interval:new Set})}requestAnimationFrame(r){let t=window.requestAnimationFrame(()=>{this.tasks.requestAnimation.delete(t),r()});return this.tasks.requestAnimation.add(t),t}cancelAnimationFrame(r){this.tasks.requestAnimation.delete(r),window.cancelAnimationFrame(r)}setTimeout(r,t){let e=window.setTimeout(()=>{this.tasks.timeout.delete(e),r()},t);return this.tasks.timeout.add(e),e}clearTimeout(r){this.tasks.timeout.delete(r),window.clearTimeout(r)}setInterval(r,t){let e=window.setInterval(()=>{this.tasks.interval.delete(e),r()},t);return this.tasks.interval.add(e),e}clearInterval(r){this.tasks.interval.delete(r),window.clearInterval(r)}dispose(){this.tasks.requestAnimation.forEach(r=>{window.cancelAnimationFrame(r)}),this.tasks.requestAnimation.clear(),this.tasks.timeout.forEach(r=>{window.clearTimeout(r)}),this.tasks.timeout.clear(),this.tasks.interval.forEach(r=>{window.clearInterval(r)}),this.tasks.interval.clear()}};import{Scene as Ht,WebGLRenderer as Rt,OrthographicCamera as Bt,HemisphereLight as zt,Shape as Vt,PCFSoftShadowMap as It,Group as Ut,Color as jt,DirectionalLight as $t,AmbientLight as Kt,Path as Xt,Vector2 as st}from"three";import{MapControls as _t}from"three/examples/jsm/controls/MapControls";function at(){let o=new Ht;return o.background=new jt(16777215),o}function ct(){let o=new Rt({antialias:!0});return o.setClearColor(16777215),o.setPixelRatio(window.devicePixelRatio),o.shadowMap.enabled=!0,o.shadowMap.autoUpdate=!0,o.shadowMap.type=It,o}function ht(o,r){let t=new Bt(-o/2,o/2,r/2,-r/2,-1e3,5e3);return t.up.set(0,0,1),t.position.set(0,0,100),t.lookAt(0,0,0),t}function pt(){let o=new Ut,r=new zt(16777215,15658734,1);r.intensity=1,r.position.set(0,0,10),r.up.set(0,0,1),o.add(r);let t=new Kt(16777215);return o.add(t),o}function lt(o,r){let t=new _t(o,r);return t.enableDamping=!1,t.maxPolarAngle=0,t.minPolarAngle=0,t.maxAzimuthAngle=0,t.minAzimuthAngle=0,t}function mt(o,r=[]){let t=new Vt(o.map(e=>new st(...e)));return r.length&&r.forEach(e=>{var i=new Xt(e.map(n=>new st(...n)));t.holes.push(i)}),t}function dt(o=16777215,r=1){let t=new $t(o,r);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(o,r){var t;if(r&&o.children&&o.children.length&&o.children.forEach(e=>{b(e,r)}),o.isMesh){let e=o;e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(i=>{i.dispose()}):e.material.dispose())}o.isLight&&((t=o.dispose)==null||t.call(o))}function ut(o){return/[\u4E00-\u9FA5]+/g.test(o)}import{DataTexture as Wt,RGBAFormat as Yt,LinearFilter as gt}from"three";var O=new Map;function qt(){let o=document.createElement("canvas");o.width=1024,o.height=64;let r=o.getContext("2d",{willReadFrequently:!0});return r.font="54px sans-serif",r.textBaseline="hanging",r.lineWidth=12,r.fillStyle="rgba(0,0,0,1)",r.strokeStyle="white",{canvas:o,ctx:r}}var N,P;function Zt(){if(!N){let{canvas:o,ctx:r}=qt();N=o,P=r}}function ai(o){if(O.has(o))return O.get(o);Zt(),P.clearRect(0,0,1024,64);let r=ut(o)?4:8;P.strokeText(o,2,r),P.fillText(o,2,r);let t=Math.ceil(P.measureText(o).width);t=t%2===0?t:t+1,t+=2;let e=P.getImageData(0,0,t,64),i=new Wt(Uint8Array.from(e.data),t,64,Yt);return i.flipY=!0,i.minFilter=gt,i.magFilter=gt,O.set(o,i),i}function vt(){O.clear()}function ft(){P=null,N=null}import{point as Nt,featureCollection as Qt,center as Jt}from"@turf/turf";function d(o,r,t,e){let i=o.clone().project(r),n=t/2,a=e/2,c=Math.round(i.x*n+n),p=Math.round(-i.y*a+a);return{x:c,y:p}}function xt(o){let r=Qt(o.map(e=>Nt(e)));return Jt(r).geometry.coordinates}function Q(o,r,t){return o.x>=r.x&&o.x<=t.x&&o.y>=r.y&&o.y<=t.y}function F(o,r){return new Proxy(o,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let a=Reflect.set(t,e,i,n);return r.dispatchEvent({type:`change-${e}`,value:i}),a}})}function T(o,r){return Promise.race([o,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),r)})])}function k(o){return document.createElementNS("http://www.w3.org/2000/svg",o)}function yt(o,r){let t=k("svg");return t.setAttribute("width",o),t.setAttribute("height",r),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function D(o="2",r){let t=k("circle");return t.setAttribute("r",o),t.setAttribute("fill",r),t}function H(o){let r=k("line");return r.setAttribute("stroke",o),r}function bt(o,r){let t=k("rect");return t.setAttribute("stroke",o),t.setAttribute("fill",r),t}function w(o,r,t){o.setAttribute("cx",`${r}`),o.setAttribute("cy",`${t}`)}function f(o,r,t){r&&(o.setAttribute("x1",`${r.x}`),o.setAttribute("y1",`${r.y}`)),t&&(o.setAttribute("x2",`${t.x}`),o.setAttribute("y2",`${t.y}`))}function J(o,r,t,e,i){o.setAttribute("x",`${r}`),o.setAttribute("y",`${t}`),o.setAttribute("width",`${e}`),o.setAttribute("height",`${i}`)}import{EventDispatcher as Ie,Box2 as Ue,Vector3 as W,Vector2 as Y,Raycaster as je,Box3 as $e,Color as Ke,AmbientLight as Xe}from"three";import{Group as _e,Tween as nt}from"@tweenjs/tween.js";import{EventDispatcher as ze}from"three";import{Object3D as te,ExtrudeGeometry as ee,MeshStandardMaterial as ie,Mesh as ne,Color as Et,Box3 as Pt,LineSegments as oe,EdgesGeometry as re,LineBasicMaterial as se,Vector3 as tt}from"three";import{merge as ae}from"lodash";var ce={id:"",height:.1,airHeight:0,area:0,group:"",fillColor:"#EFF4FB",strokeColor:"#ffffff",fillOpacity:1,strokeOpacity:1,doors:[],locked:!1,visible:!0,geometry:{type:"polygon",cds:[],curveCpt:[],curveIndex:[]},layerType:"",zIndex:0},x=class extends te{constructor(t,e){super();this.context=t;s(this,"geometry");s(this,"material");s(this,"mesh");s(this,"line");s(this,"options");if(this.options=F(ae({},ce,e),this),this.options.geometry.type==="point"){let[i,n]=this.options.geometry.cds;return this.position.set(i,n,this.options.height+this.options.airHeight),console.log(this.options),this}this.init(),this.visible=this.options.visible,this.addEventListener("change-fillColor",({value:i})=>{this.material.color=new Et(i)}),this.addEventListener("change-fillOpacity",({value:i})=>{this.material.opacity=i}),this.addEventListener("change-height",({value:i})=>{this.dispose(),this.init()}),this.addEventListener("change-strokeColor",({value:i})=>{this.line.material.color=new Et(i)}),this.addEventListener("change-strokeOpacity",({value:i})=>{this.line.material.opacity=i}),this.addEventListener("change-airHeight",({value:i})=>{this.position.z=i}),this.addEventListener("change-visible",({value:i})=>{this.visible=i})}getCenter(){if(this.options.geometry.type==="point")return this.position;let t=new tt,e=new Pt;return e.setFromObject(this),e.getCenter(t),t}getSize(){if(this.options.geometry.type==="point")return new tt(0,0,0);let t=new Pt,e=new tt;return t.setFromObject(this),t.getSize(e),e}getPosition(){return this.getCenter()}init(){this.geometry=this.initGeometry(),this.material=this.initMaterial(),this.mesh=this.initMesh(),this.mesh.position.z=this.options.airHeight+this.options.height/2,this.mesh.castShadow=!0,this.add(this.mesh),this.line=this.createBorder(),this.add(this.line)}initGeometry(){let t=mt(this.options.geometry.cds[0],this.options.geometry.cds.slice(1));return new ee(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initMaterial(){return new ie({color:this.options.fillColor,roughness:1,transparent:!0,opacity:this.options.fillOpacity,depthWrite:!0})}initLineMaterial(){return new se({color:this.options.strokeColor,opacity:this.options.strokeOpacity,transparent:!0,depthWrite:!0})}initMesh(){return new ne(this.geometry,this.material)}createBorder(){let t=this.initLineMaterial(),e=new re(this.geometry),i=new oe(e,t);return i.position.z=this.options.airHeight+this.options.height/2,i}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(){b(this),this.clear()}};import{Object3D as he,PlaneGeometry as pe,Mesh as le,ShadowMaterial as me,Color as de,DoubleSide as ue}from"three";var R=class extends he{constructor(){super();s(this,"directionalLight");s(this,"plane");s(this,"basicOpacity",.39);this.directionalLight=this.initLight(),this.initPlane()}initLight(){let t=dt(16777215,1);return t.position.set(0,0,100),this.add(t),t}changeLightCamera(t){let e=t.x,i=t.y;this.directionalLight.shadow.camera.left=-e,this.directionalLight.shadow.camera.right=e,this.directionalLight.shadow.camera.top=i,this.directionalLight.shadow.camera.bottom=-i,this.directionalLight.shadow.camera.near=.5,this.directionalLight.shadow.camera.far=Math.max(e,i)}changeLightColor(t){this.directionalLight.color=new de(t)}setPosition(t){this.position.copy(t),this.directionalLight.position.set(-t.x/2,-t.y/2,100)}initPlane(t=1e3,e=1e3){let i=new pe(t,e),n=new me({transparent:!0,opacity:0,side:ue}),a=new le(i,n);return a.receiveShadow=!0,a.position.z=-5,this.add(a),this.plane=a,a}setTarget(t){this.directionalLight.target=t}transformOpacity(t){return t*this.basicOpacity}setOpacity(t){this.plane.material.opacity=this.transformOpacity(t)}dispose(){b(this,!0)}};import{Object3D as fe}from"three";import{merge as xe}from"lodash";import{Box3 as ge,EventDispatcher as ve,Vector3 as wt}from"three";var B=class extends ve{constructor(t){super();this.context=t;s(this,"div");s(this,"element");s(this,"position",new wt);s(this,"onUpdate",()=>{let t=this.getPosition(),{clientWidth:e,clientHeight:i}=this.context.container,{x:n,y:a}=d(t,this.context.camera,e,i);this.div.style.left=`${n}px`,this.div.style.top=`${a}px`});this.registryEvent(),this.div=this.initDiv(),this.context.container.appendChild(this.div)}initDiv(){let t=document.createElement("div");return t.style.position="absolute",t}bindElement(t){this.element=t}unBindElement(){this.element=void 0}setVisible(t,e="block"){this.div.style.display=t?e:"none"}setOpacity(t){this.div.style.opacity=`${t}`}getPosition(){return this.element?typeof this.element.getPosition=="function"?this.element.getPosition():new ge().setFromObject(this.element).getCenter(new wt):this.position}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.unRegistryEvent(),this.unBindElement(),this.context.container.removeChild(this.div),this.div=null}};var ye={text:"",level:1,collision_enable:!0,opacity:1},S=class extends fe{constructor(t,e){super();this.context=t;s(this,"textDiv");s(this,"img");s(this,"overlay");s(this,"options");s(this,"_changePosition",()=>{this.overlay.div.style.transform=`translate3d(-50%, ${this.options.icon?"-100%":"-50%"}, 0)`});this.options=F(xe({},ye,e),this),this.overlay=new B(this.context),this.overlay.bindElement(this),this._changePosition(),this.registryEvent(),this.initDiv(),this.addEventListener("change-icon",({value:i})=>{i?this.img?this.img.setAttribute("src",i):this.overlay.div.appendChild(this.initIcon()):(this.img&&this.overlay.div.removeChild(this.img),this.img=void 0)}),this.addEventListener("change-text",({value:i})=>{this.overlay.div.removeChild(this.textDiv),this.overlay.div.appendChild(this.initText())}),this.addEventListener("change-opacity",({value:i})=>{this.overlay.setOpacity(i)})}initDiv(){let t=this.overlay.div;return t.appendChild(this.initText()),this.options.icon&&t.appendChild(this.initIcon()),t.style.fontSize="12px",t.style.display="flex",t.style.flexDirection="column",t.style.justifyContent="center",t.style.alignItems="center",t.style.pointerEvents="none",t}getPosition(){return this.position}initText(){let t=document.createElement("div");return t.appendChild(this.createTextFragment()),t.style.background="rgba(255, 255, 255, .7)",t.style.padding="2px",t.style.borderRadius="4px",this.textDiv=t,t}createTextFragment(){let t=document.createDocumentFragment();return this.options.text.split(`\r
|
|
2
|
-
`).forEach(e=>{let i=document.createElement("div");i.style.whiteSpace="nowrap",i.textContent=e,t.appendChild(i)}),t}initIcon(){var e,i;let t=document.createElement("img");return t.setAttribute("src",this.options.icon),t.style.width=`${((e=this.options.icon_size)==null?void 0:e[0])||32}px`,t.style.height=`${((i=this.options.icon_size)==null?void 0:i[1])||32}px`,this.img=t,t}registryEvent(){this.context.addEventListener("update",this._changePosition)}unRegistryEvent(){this.context.removeEventListener("update",this._changePosition)}setVisible(t){this.overlay.setVisible(t,"flex")}getBox(){return this.overlay.div.getBoundingClientRect()}isContain(t,e){let i=this.getBox();return t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}dispose(){this.unRegistryEvent(),this.textDiv=null,this.img=void 0,this.overlay.dispose()}};import{Box3 as et,Object3D as Lt,Vector3 as it}from"three";import{Box3 as Ee,Vector3 as Pe}from"three";import{Object3D as be}from"three";var G=class extends be{constructor(t){super();this.context=t}dispose(){b(this),this.clear()}};var z=class extends G{constructor(t){super(t);s(this,"graphicMap",new Map)}getCenter(){return new Ee().setFromObject(this).getCenter(new Pe)}createGraphic(t){let e=new x(this.context,t);return this.add(e),this.graphicMap.set(t.id,e),e}getGraphicByRaycaster(t){let e={distance:1e4,graphic:null,position:null},i=this.children.reduce((n,a)=>{if(a instanceof x){let c=a.raycast(t);if(c){let{distance:p}=c;if(p<n.distance)return{distance:n.distance,position:n.position,graphic:a}}return n}else return n},e);return i===e?{graphics:[],position:null}:{graphics:[i.graphic],position:i.position}}};var V=class extends G{constructor(t){super(t);s(this,"pois",[]);s(this,"onUpdate",()=>{this.collisionDetection()});this.registryEvent()}createPoi(t){let e=new S(this.context,t);return this.add(e),this.pushPoi(e),e.addEventListener("change-level",()=>this.changePoiLevelOrCollisionEnable(e)),e.addEventListener("change-collision_enable",()=>this.changePoiLevelOrCollisionEnable(e)),e}changePoiLevelOrCollisionEnable(t){let e=this.pois.findIndex(i=>i===t);e!==-1&&(this.pois.splice(e,1),this.pushPoi(t))}removePoi(t){let e=this.pois.findIndex(i=>i===t);e!==-1&&(this.pois.splice(e,1),this.remove(t),t.dispose())}pushPoi(t){if(!t.options.collision_enable){this.pois.unshift(t);return}if(t.options.level===1){this.pois.push(t);return}for(let e=0;e<this.pois.length;e++){let i=this.pois[e];if(i.options.collision_enable&&i.options.level<=t.options.level){this.pois.splice(e,0,t);return}}this.pois.push(t)}getPoiByDeviceXy(t,e){return this.children.filter(n=>n instanceof S&&n.isContain(t,e))}collisionDetection(){let t=[];this.pois.forEach((e,i)=>{e.setVisible(!0);let{left:n,right:a,top:c,bottom:p}=e.getBox();if(i===0){t.push({left:n,right:a,top:c,bottom:p});return}let h=t.some(l=>{let u=a<l.left||n>l.right,m=c>l.bottom||p<l.top;return u||m});e.setVisible(h)})}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){super.dispose(),this.unRegistryEvent(),this.pois.forEach(t=>t.dispose()),this.pois.length=0}};import{MeshBasicMaterial as we,Object3D as Ce,PlaneGeometry as Le,Texture as Ge,DoubleSide as Me,Mesh as De,Matrix3 as Ct,Vector2 as Se}from"three";import{create as Ae}from"@mars3d/heatmap.js";import{featureCollection as Oe,point as Fe,bbox as Te,center as ke}from"@turf/turf";var I=class extends Ce{constructor(t){super();this.context=t;s(this,"heatmap");s(this,"div");s(this,"plane");this.div=document.createElement("div")}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:a}=this.getBox(t);this.heatmap=Ae(A({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(a[0],a[1],this.position.z)}initPlane(t,e){this.plane&&this.remove(this.plane);let i=new Le(t,e),n=new Ge(this.div.firstChild);n.needsUpdate=!0;let a=new we({transparent:!0,side:Me,map:n});a.needsUpdate=!0,this.plane=new De(i,a),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new Ct().makeScale(1,-1).multiply(new Ct().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(a=>{let c=new Se(a.x,a.y).applyMatrix3(i);return{x:c.x,y:c.y,value:a.value}}),max:t.max,min:t.min}}getBox(t){let e=Oe(t.data.map(h=>Fe([h.x,h.y]))),i=Te(e),n=i[2]-i[0],a=i[3]-i[1],c={x:i[0],y:i[3]},p=ke(e);return{width:n,height:a,leftTop:c,center:p.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var U=class extends Lt{constructor(t){super();this.context=t;s(this,"graphicLayer");s(this,"poiLayer");s(this,"grounds",new Set);s(this,"shadow",new R);s(this,"heatmap");s(this,"groundUpper",new Lt);this.graphicLayer=new z(this.context),this.poiLayer=new V(this.context),this.groundUpper.add(this.graphicLayer),this.groundUpper.add(this.poiLayer),this.add(this.groundUpper)}addGrounds(t){t.forEach(e=>{this.grounds.has(e)||(this.grounds.add(e),this.groundUpper.add(e))})}get hasElement(){return!!(this.grounds.size||this.graphicLayer.children.length)}getCenter(){return new et().setFromObject(this.groundUpper).getCenter(new it)}addShadow(){let t=new et().setFromObject(this.groundUpper),e=t.getCenter(new it),i=t.getSize(new it);this.shadow.setPosition(e),this.shadow.changeLightCamera(i),this.add(this.shadow)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){this.heatmap||(this.heatmap=new I(this.context),this.add(this.heatmap)),this.heatmap.loadData(t);let e=new et().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(){var t;this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),this.grounds.forEach(e=>e.dispose()),(t=this.heatmap)==null||t.dispose(),this.groundUpper.clear(),this.clear()}};import{EventDispatcher as He,Vector3 as Re}from"three";var E=class extends He{constructor(t){super();this.context=t;s(this,"points",[]);s(this,"svg");s(this,"enable",!0);this.svg=yt(`${t.container.clientWidth}`,`${t.container.clientHeight}`),t.container.appendChild(this.svg)}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:a}=t,{clientWidth:c,clientHeight:p}=i.domElement,h=n/c*2-1,l=1-a/p*2;return new Re(h,l,0).unproject(e)}getSvgCoordinate(t){let{camera:e,container:i}=this.context;return d(t,e,i.clientWidth,i.clientHeight)}dispose(){this.context.container.removeChild(this.svg),this.svg=null}};var j=class extends E{constructor(t){super(t);this.context=t;s(this,"circles");s(this,"line");s(this,"onUpdate",()=>{if(this.points[0]){let t=this.getSvgCoordinate(this.points[0]);w(this.circles[0],t.x,t.y),f(this.line,t)}if(this.points[1]){let t=this.getSvgCoordinate(this.points[1]);w(this.circles[1],t.x,t.y),f(this.line,void 0,t)}});s(this,"onPointermove",t=>{this.points.length===1&&(this.line.style.display="block",f(this.line,void 0,{x:t.offsetX,y:t.offsetY}))});s(this,"onPointerleave",()=>{this.points[1]||(this.line.style.display="none")});s(this,"onPointerdown",t=>{if(this.points[1])return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t,a=this.circles[this.points.length];w(a,i,n),this.points.length||f(this.line,{x:i,y:n},{x:i,y:n}),this.addPoint(e)}});let{config:{svg:{circle:e,line:i}}}=t;this.circles=[D(e.radius,e.fill),D(e.radius,e.fill)],this.line=H(i.stroke),this.svg.appendChild(this.circles[0]),this.svg.appendChild(this.circles[1]),this.svg.appendChild(this.line),this.registryEvent()}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)}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(y(i-t,2)+y(n-e,2))}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var $=class extends E{constructor(t){super(t);s(this,"circles",[]);s(this,"lines",[]);s(this,"isClose",!1);s(this,"onUpdate",()=>{this.points.length&&this.points.forEach((t,e)=>{let i=this.getSvgCoordinate(t);this.circles[e]&&w(this.circles[e],i.x,i.y),e!==0&&f(this.lines[e-1],void 0,i),this.lines[e]&&f(this.lines[e],i)})});s(this,"onPointermove",t=>{!this.lastLine||this.isClose||(this.lastLine.style.display="block",f(this.lastLine,void 0,{x:t.offsetX,y:t.offsetY}))});s(this,"onPointerleave",()=>{this.isClose||(this.lastLine.style.display="none")});s(this,"onPointerdown",t=>{if(this.isClose)return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t;this.checkAdsorb(i,n)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(e);let{circle:{fill:a,radius:c},line:{stroke:p}}=this.context.config.svg;if(!this.isClose){let h=D(c,a);w(h,i,n),this.addCircle(h)}if(this.lines.length&&f(this.lastLine,void 0,{x:i,y:n}),!this.isClose){let h=H(p);f(h,{x:i,y:n},{x:i,y:n}),this.addLine(h)}}});this.registryEvent()}setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}get lastLine(){return this.lines.slice(-1)[0]}addCircle(t){this.circles.push(t),this.svg.appendChild(t)}addLine(t){this.lines.push(t),this.svg.appendChild(t)}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)}checkAdsorb(t,e){if(this.points.length<3)return!1;let i=this.circles[0],n=+i.getAttribute("cx"),a=+i.getAttribute("cy");return Math.sqrt(y(t-n,2)+y(e-a,2))<=5}addPoint(t){if(this.points.push(t),this.isClose){let e=this.calculatedArea();this.dispatchEvent({type:"area",area:e})}}calculatedArea(){let t=this.points.map(n=>[n.x,n.y]),e=0,i=t.length;for(let n=0;n<i;n++){let a=(n+1)%i;e+=t[n][0]*t[a][1]-t[a][0]*t[n][1]}return Math.abs(e/2)}dispose(){super.dispose(),this.unRegistryEvent(),this.lines=[],this.circles=[]}};import{Frustum as Be}from"three";var K=class extends E{constructor(t){super(t);s(this,"startPoint");s(this,"endPoint");s(this,"rect");s(this,"frustum",new Be);s(this,"onPointerDown",t=>{if(!this.enable)return;let e=this.getIntersectByPointerEvent(t);e&&(this.startPoint=e),this.endPoint=void 0});s(this,"onPointerMove",t=>{if(!this.enable||!this.startPoint)return;let e=this.getIntersectByPointerEvent(t);e&&(this.endPoint=e)});s(this,"onPointerUp",t=>{if(!this.enable)return;let e=this.getIntersectByPointerEvent(t);e&&(this.endPoint=e),this.doSelect(),this.startPoint=void 0});s(this,"onUpdate",()=>{if(this.startPoint){let t=this.getSvgCoordinate(this.startPoint),e=A({},t);this.endPoint&&(e=this.getSvgCoordinate(this.endPoint));let i={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)},n=Math.abs(e.x-t.x),a=Math.abs(e.y-t.y);J(this.rect,i.x,i.y,n,a)}});let{config:{selectBox:{fill:e,stroke:i}}}=t;this.rect=bt(i,e),this.svg.appendChild(this.rect),this.registryEvent()}setEnable(t){super.setEnable(t),J(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:e,container:{clientWidth:i,clientHeight:n}}}=this,a=d(this.startPoint,e,i,n),c=d(this.endPoint,e,i,n),p={x:Math.min(a.x,c.x),y:Math.min(a.y,c.y)},h={x:Math.max(a.x,c.x),y:Math.max(a.y,c.y)},l=this.searchMapInFrustum(p,h);this.dispatchEvent({type:"selected",list:l})}}searchMapInFrustum(t,e){var n;let{context:i}=this;return((n=i.currentFloor)==null?void 0:n.graphicLayer.children.filter(a=>a instanceof x&&this.searchChildInFrustum(a,t,e)))||[]}searchChildInFrustum(t,e,i){let{context:{camera:n,container:{clientWidth:a,clientHeight:c}}}=this;if(!t)return!1;t.mesh.geometry.boundingBox||t.mesh.geometry.computeBoundingBox();let p=t.mesh.geometry.boundingBox;if(!p)return!1;let{min:h,max:l}=p,u=d(h,n,a,c),m=d(l,n,a,c);return!(!Q(u,e,i)||!Q(m,e,i))}dispose(){this.unRegistryEvent()}};var X=class extends ze{constructor(t){super();this.context=t;s(this,"_list",new Set);s(this,"boxSelection");s(this,"prevPanStatus");s(this,"onPointerDown",t=>{let{graphics:e}=this.context.getGraphicsByDeviceXy(t.offsetX,t.offsetY);t.ctrlKey||this._list.clear(),e.forEach(i=>this._list.add(i)),this.selectEnd()});s(this,"onKeyDown",t=>{t.key==="Control"&&(this.boxSelection.setEnable(!0),this.prevPanStatus=this.context.control.enablePan,this.context.control.enablePan=!1)});s(this,"onKeyUp",t=>{t.key==="Control"&&(this.boxSelection.setEnable(!1),this.context.control.enablePan=!!this.prevPanStatus)});s(this,"onBoxSelected",({list:t})=>{this._list.clear(),t.forEach(e=>{this._list.add(e)}),this.selectEnd()});this.boxSelection=new K(t),this.boxSelection.setEnable(!1),this.registryEvent()}get list(){return this._list}selectEnd(){this.dispatchEvent({type:"select",graphics:[...this._list]})}registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),this.boxSelection.addEventListener("selected",this.onBoxSelected)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),this.boxSelection.removeEventListener("selected",this.onBoxSelected)}dispose(){this.unRegistryEvent()}};import{EventDispatcher as Ve}from"three";var _=class extends Ve{constructor(t){super();this.context=t;s(this,"curGraphics",new Set);s(this,"timer",new L);s(this,"graphicTimerMap",new Map);s(this,"onPointerMove",({graphics:t})=>{if(!t.length&&this.curGraphics.size){this.curGraphics.clear(),this.handleHoverGraphicsChange();return}let{time:e}=this.context.config.hover;t.forEach(n=>{if(this.graphicTimerMap.get(n)||this.curGraphics.has(n))return;let a=this.timer.setTimeout(()=>{this.curGraphics.add(n),this.handleHoverGraphicsChange()},e);this.graphicTimerMap.set(n,a)}),this.graphicTimerMap.forEach((n,a)=>{t.includes(a)||(this.timer.clearTimeout(n),this.graphicTimerMap.delete(a))});let i=this.curGraphics.size;this.curGraphics.forEach(n=>{t.includes(n)||this.curGraphics.delete(n)}),i!==this.curGraphics.size&&this.handleHoverGraphicsChange()});s(this,"onPointerLevel",()=>{this.curGraphics.clear(),this.handleHoverGraphicsChange()});this.registryEvent()}handleHoverGraphicsChange(t=this.curGraphics){this.dispatchEvent({type:"hover-change",graphics:Array.from(this.curGraphics)})}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 q=class extends Ie{constructor(t,e){super();this.container=t;this.config=e;s(this,"scene",at());s(this,"renderer",ct());s(this,"camera");s(this,"control");s(this,"lights",pt());s(this,"timer",new L);s(this,"tweenGroup",new _e);s(this,"currentFloor");s(this,"selection");s(this,"hoverHelper");s(this,"basicRatio");s(this,"onWindowResize",()=>{let{container:t,camera:e,renderer:i}=this,{clientWidth:n,clientHeight:a}=t;e.left=-n/2,e.right=n/2,e.top=a/2,e.bottom=-a/2,e.updateProjectionMatrix(),i.setSize(n,a)});s(this,"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.clientX,t.clientY);n.length&&this.dispatchEvent({type:"poi-click",pois:n})});s(this,"onPointerover",t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.clientX,t.clientY);this.dispatchEvent({type:"pointer-over",graphics:e,pois:n,position:i})});s(this,"onPointermove",t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.clientX,t.clientY);this.dispatchEvent({type:"pointer-move",graphics:e,pois:n,position:i})});s(this,"onPointerleave",()=>{this.dispatchEvent({type:"pointer-level"})});s(this,"onSelectionSelect",({graphics:t})=>{this.dispatchEvent({type:"select-graphic",graphics:t})});s(this,"onHoverChange",({graphics:t})=>{this.dispatchEvent({type:"hover",graphics:t})});this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.selection=new X(this),this.hoverHelper=new _(this),this.registryEvent()}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=ht(t,e),this.renderer.setSize(t,e),this.control=lt(this.camera,this.renderer.domElement),this.container.appendChild(this.renderer.domElement),this.scene.add(this.lights),this.basicRatio=this.getRatio(),this.control.addEventListener("change",()=>{var n;let i=this.control.getPolarAngle();(n=this.currentFloor)==null||n.setShadowOpacity(i/this.config.control.maxPolar),this.dispatchEvent({type:"change-ratio",px:(this.basicRatio||0)*this.camera.zoom})})}getRatio(t=new W(0,0,0),e=new W(100,0,0)){let{clientWidth:i,clientHeight:n}=this.container,a=d(t,this.camera,i,n),c=d(e,this.camera,i,n);return Math.ceil(Math.sqrt(y(c.x-a.x,2)+y(c.y-a.y,2)))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof Xe&&(e.color=new Ke(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)}getGraphicsByDeviceXy(t,e){var c;let i=new Y;i.x=t/this.container.clientWidth*2-1,i.y=e/this.container.clientHeight*-2+1;let n=new je;return n.setFromCamera(i,this.camera),((c=this.currentFloor)==null?void 0:c.graphicLayer.getGraphicByRaycaster(n))||{graphics:[],position:null}}getPoisByDeviceXy(t,e){var n;return((n=this.currentFloor)==null?void 0:n.poiLayer.getPoiByDeviceXy(t,e))||[]}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 T(new Promise(i=>{let n={polar:this.control.getPolarAngle()},a={polar:t},c=new nt(n,this.tweenGroup).to(a,e).onUpdate(()=>{this.control.maxPolarAngle=n.polar,this.control.minPolarAngle=n.polar,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}getCameraLookAt(){return new W().subVectors(this.control.target,this.camera.position)}setZoom(t,e,i=500){return T(new Promise(n=>{let a={zoom:this.camera.zoom,target:this.control.target.clone()},c=this.getCameraLookAt(),p=new nt(a,this.tweenGroup).to({zoom:t,target:e},i).onUpdate(()=>{this.camera.position.copy(a.target.clone().sub(c)),this.control.target.copy(a.target),this.camera.zoom=a.zoom,this.control.update()}).onComplete(()=>{this.tweenGroup.remove(p),this.control.enabled=!0,n(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),i+500)}fitCameraToObject(t,e=[20,20,20,20],i=500){let[n,a,c,p]=e,{clientWidth:h,clientHeight:l}=this.container,u=new $e().setFromObject(t),{max:m,min:g}=u,v=d(m,this.camera,h,l),M=d(g,this.camera,h,l),ot=new Ue().setFromPoints([new Y(v.x,v.y),new Y(M.x,M.y)]).getSize(new Y),Dt=(h-a-p)/ot.x,St=(l-n-c)/ot.y,At=Math.min(Dt,St),Ot=new W((m.x+g.x)/2,(m.y+g.y)/2,m.z);return this.setZoom(At*this.camera.zoom,Ot,i)}fitCameraToGround(t=[20,20,20,20],e=500){return this.currentFloor&&this.currentFloor.hasElement?this.fitCameraToObject(this.currentFloor.groundUpper,t,e):Promise.resolve(!1)}setCameraPosition(t,e){return T(new Promise(i=>{let n=this.camera.position.clone(),a=this.getCameraLookAt(),c=new nt(n,this.tweenGroup).to(t,e).onUpdate(()=>{this.camera.position.copy(n),this.control.target.copy(t.clone().add(a))}).onComplete(()=>{this.tweenGroup.remove(c),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.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()),b(this.scene)}};import{merge as We}from"lodash";var Ye={apiDomain:"",apiInfo:{},apiPath:{floorGraphic:"/api/inception-map/floor/get",floorRange:"/api/inception-map/range/get"},heatMap:{radius:50,gradient:{0:"#8F9FCD",.5:"#6284FF",1:"#F95D5D"}},useFloorCache:!0,control:{maxPolar:1.2},svg:{circle:{radius:"2",fill:"#1CADFF"},line:{stroke:"#1CADFF"}},selectBox:{stroke:"#1CADFF",fill:"rgba(28, 173, 255, 0.3)"},hover:{time:500}};function Gt(o){return We({},Ye,o)}var Mt=class extends qe{constructor(t,e={}){super();this.container=t;s(this,"config");s(this,"context");s(this,"polarKeys",[]);s(this,"azimuthalKeys",[]);s(this,"svgLine");s(this,"svgPolygon");s(this,"basicZoom",1);s(this,"floorDataMap",new Map);s(this,"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)});s(this,"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}});this.config=Gt(e),this.context=new q(t,this.config),this.registryEvent(),this.context.render()}loadGraphics(p){return C(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){let{apiDomain:h,apiPath:{floorGraphic:l},apiInfo:u}=this.config,m=`${h}${l}?brand=${t}&project=${e}&phase=${i}&building=${n}&floor=${a}&ts=${c}&resource_type_list=`;return yield fetch(m,u).then(v=>v.json()).then(v=>v.data).then(v=>((v||[]).map(M=>M.info=JSON.parse(M.info)),v||[]))})}loadBuildingGround(a){return C(this,arguments,function*({brand:t,project:e,phase:i,building:n}){let{apiDomain:c,apiPath:{floorRange:p},apiInfo:h}=this.config,l=`${c}${p}?brand=${t}&project=${e}&phase=${i}&building=${n}`;return yield fetch(l,h).then(m=>m.json()).then(m=>m.data).then(m=>{let g=(m||[])[0];return g&&(g.info=JSON.parse(g.info)),g})})}load(p){return C(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){if(this.floorDataMap.get(a))return;let[h,l]=yield Promise.all([this.loadGraphics({brand:t,project:e,phase:i,building:n,floor:a,ts:c}),this.loadBuildingGround({brand:t,project:e,phase:i,building:n})]);if(l){let u=xt(l.info.geometry.cds[0]);h.forEach(m=>{if(m.info.geometry.type==="polygon")m.info.geometry.cds.map(g=>{Array.isArray(g)&&g.forEach(v=>{v[0]-=u[0],v[1]-=u[1]})});else{let[g,v]=m.info.geometry.cds;m.info.geometry.cds=[g-u[0],v-u[1]]}})}return this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(a,h),h})}createFloor(t){let e=new U(this.context);if(!t.length)return{curFloor:e,graphics:[]};let n=t.filter(h=>h.info.group==="ground").map(h=>new x(this.context,h.info));e.addGrounds(n);let a=t.filter(h=>h.info.group!=="ground"),c=new Map,p=a.map(h=>{let l=e.addGraphic(h.info);return l.userData.data=h,c.set(h.legacy_id,l),l});return e.addShadow(),e.userData.legacyToGraphicMap=c,{curFloor:e,graphics:p}}switchFloor(t){return C(this,null,function*(){let e=this.floorDataMap.get(t);if(e){let i=this.createFloor(e);i?(this.context.switchFloor(i.curFloor),yield 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):console.warn("[switchFloor error] ["+t+"] \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")})}addHeatmap(t){var e;return(e=this.context.currentFloor)==null?void 0:e.addHeatmap(t)}getLegacyToGraphicMap(){var t;return((t=this.context.currentFloor)==null?void 0:t.userData.legacyToGraphicMap)||new Map}getFloorAllGraphics(){var t;return((t=this.context.currentFloor)==null?void 0:t.graphicLayer.children.filter(e=>e instanceof x))||[]}createGraphicPoi(t,e){if(this.context.currentFloor){let i=this.context.currentFloor.addPoi(e),n=t.getCenter();return n.z+=t.options.height/2,i.position.copy(n),i.position.z=i.position.z+t.options.height/2,i}return null}removeHeatMap(){var t;(t=this.context.currentFloor)==null||t.removeHeatMap()}translateElementToCenter(t,e=500){let i=t.position.clone().setFromMatrixPosition(t.matrixWorld);return this.context.setCameraPosition(i,e)}getElementDeviceCoordinate(t){let e=t.position.clone(),{clientWidth:i,clientHeight:n}=this.container;return d(e,this.context.camera,i,n)}changeMapType(t,e=500){t==="2d"?this.context.setPolarAngle(0):this.context.setPolarAngle(1.2)}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)}registryEvent(){window.addEventListener("keydown",this.onKeydown),window.addEventListener("keyup",this.onKeyUp)}unRegistryEvent(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("keyup",this.onKeyUp)}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()}measureDistance(){return C(this,null,function*(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new j(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 $(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&&this.context.currentFloor.graphicLayer.graphicMap.get(t)||null}deleteGraphic(t){this.context.currentFloor&&(this.context.currentFloor.graphicLayer.remove(t),t.dispose(),this.context.currentFloor.graphicLayer.graphicMap.delete(t.options.id))}createGraphicByOptions(t){var e;return(e=this.context.currentFloor)==null?void 0:e.graphicLayer.createGraphic(t)}dispose(){this.context.dispose(),vt(),ft(),this.unRegistryEvent()}};export{Mt as BMap,E as BaseSvg,q as Context,U as Floor,x as Graphic,z as GraphicLayer,I as HeatmapElement,_ as HoverHelper,G as Layer,B as Overlay,S as Poi,V as PoiLayer,X as Selection,R as Shadow,j as SvgLine,$ as SvgPolygon,L as Timer,ft as clearCanvas,vt as clearTextTexture,Zt as createCanvas,D as createCircle,H as createLine,bt as createRect,yt as createSvg,k as createSvgElement,Ye as defaultConfig,b as dispose,xt as getCenter,Gt as getConfig,ai as getTextureByText,ut as hasChinese,ht as initCamera,qt as initCanvas,lt as initControl,dt as initDirectionalLight,pt as initLight,ct as initRenderer,at as initScene,mt as initShape,Q as isContain,F as proxyOptions,w as setCirclePosition,f as setLineStartEnd,J as setRectPosition,T as timeoutPromise,d as vector3ToDevice};
|
|
1
|
+
var Tt=Object.defineProperty;var at=Object.getOwnPropertySymbols;var kt=Object.prototype.hasOwnProperty,Ht=Object.prototype.propertyIsEnumerable;var b=Math.pow,Q=(o,s,t)=>s in o?Tt(o,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[s]=t,O=(o,s)=>{for(var t in s||(s={}))kt.call(s,t)&&Q(o,t,s[t]);if(at)for(var t of at(s))Ht.call(s,t)&&Q(o,t,s[t]);return o};var r=(o,s,t)=>(Q(o,typeof s!="symbol"?s+"":s,t),t);var G=(o,s,t)=>new Promise((e,i)=>{var n=h=>{try{c(t.next(h))}catch(p){i(p)}},a=h=>{try{c(t.throw(h))}catch(p){i(p)}},c=h=>h.done?e(h.value):Promise.resolve(h.value).then(n,a);c((t=t.apply(o,s)).next())});import{EventDispatcher as qe}from"three";var M=class{constructor(){r(this,"tasks",{requestAnimation:new Set,timeout:new Set,interval:new Set})}requestAnimationFrame(s){let t=window.requestAnimationFrame(()=>{this.tasks.requestAnimation.delete(t),s()});return this.tasks.requestAnimation.add(t),t}cancelAnimationFrame(s){this.tasks.requestAnimation.delete(s),window.cancelAnimationFrame(s)}setTimeout(s,t){let e=window.setTimeout(()=>{this.tasks.timeout.delete(e),s()},t);return this.tasks.timeout.add(e),e}clearTimeout(s){this.tasks.timeout.delete(s),window.clearTimeout(s)}setInterval(s,t){let e=window.setInterval(()=>{this.tasks.interval.delete(e),s()},t);return this.tasks.interval.add(e),e}clearInterval(s){this.tasks.interval.delete(s),window.clearInterval(s)}dispose(){this.tasks.requestAnimation.forEach(s=>{window.cancelAnimationFrame(s)}),this.tasks.requestAnimation.clear(),this.tasks.timeout.forEach(s=>{window.clearTimeout(s)}),this.tasks.timeout.clear(),this.tasks.interval.forEach(s=>{window.clearInterval(s)}),this.tasks.interval.clear()}};import{Scene as Bt,WebGLRenderer as Rt,OrthographicCamera as zt,HemisphereLight as Vt,Shape as It,PCFSoftShadowMap as $t,Group as Kt,Color as Ut,DirectionalLight as jt,AmbientLight as _t,Path as Xt,Vector2 as ct}from"three";import{MapControls as Wt}from"three/examples/jsm/controls/MapControls";function ht(){let o=new Bt;return o.background=new Ut(16777215),o}function pt(){let o=new Rt({antialias:!0});return o.setClearColor(16777215),o.setPixelRatio(window.devicePixelRatio),o.shadowMap.enabled=!0,o.shadowMap.autoUpdate=!0,o.shadowMap.type=$t,o}function lt(o,s){let t=new zt(-o/2,o/2,s/2,-s/2,-1e3,5e3);return t.up.set(0,0,1),t.position.set(0,0,100),t.lookAt(0,0,0),t}function mt(){let o=new Kt,s=new Vt(16777215,15658734,1);s.intensity=1,s.position.set(0,0,10),s.up.set(0,0,1),o.add(s);let t=new _t(16777215);return o.add(t),o}function dt(o,s){let t=new Wt(o,s);return t.enableDamping=!1,t.maxPolarAngle=0,t.minPolarAngle=0,t.maxAzimuthAngle=0,t.minAzimuthAngle=0,t}function ut(o,s=[]){let t=new It(o.map(e=>new ct(...e)));return s.length&&s.forEach(e=>{var i=new Xt(e.map(n=>new ct(...n)));t.holes.push(i)}),t}function gt(o=16777215,s=1){let t=new jt(o,s);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 E(o,s){var t;if(s&&o.children&&o.children.length&&o.children.forEach(e=>{E(e,s)}),o.isMesh){let e=o;e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(i=>{i.dispose()}):e.material.dispose())}o.isLight&&((t=o.dispose)==null||t.call(o))}function vt(o){return/[\u4E00-\u9FA5]+/g.test(o)}import{DataTexture as Yt,RGBAFormat as Zt,LinearFilter as ft}from"three";var F=new Map;function qt(){let o=document.createElement("canvas");o.width=1024,o.height=64;let s=o.getContext("2d",{willReadFrequently:!0});return s.font="54px sans-serif",s.textBaseline="hanging",s.lineWidth=12,s.fillStyle="rgba(0,0,0,1)",s.strokeStyle="white",{canvas:o,ctx:s}}var N,C;function Qt(){if(!N){let{canvas:o,ctx:s}=qt();N=o,C=s}}function ai(o){if(F.has(o))return F.get(o);Qt(),C.clearRect(0,0,1024,64);let s=vt(o)?4:8;C.strokeText(o,2,s),C.fillText(o,2,s);let t=Math.ceil(C.measureText(o).width);t=t%2===0?t:t+1,t+=2;let e=C.getImageData(0,0,t,64),i=new Yt(Uint8Array.from(e.data),t,64,Zt);return i.flipY=!0,i.minFilter=ft,i.magFilter=ft,F.set(o,i),i}function yt(){F.clear()}function xt(){C=null,N=null}import{point as Nt,featureCollection as Jt,center as te}from"@turf/turf";function g(o,s,t,e){let i=o.clone().project(s),n=t/2,a=e/2,c=Math.round(i.x*n+n),h=Math.round(-i.y*a+a);return{x:c,y:h}}function J(o){let s=Jt(o.map(e=>Nt(e)));return te(s).geometry.coordinates}function tt(o,s,t){return o.x>=s.x&&o.x<=t.x&&o.y>=s.y&&o.y<=t.y}function T(o,s){return new Proxy(o,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let a=Reflect.set(t,e,i,n);return s.dispatchEvent({type:`change-${e}`,value:i}),a}})}function k(o,s){return Promise.race([o,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),s)})])}function H(o){return document.createElementNS("http://www.w3.org/2000/svg",o)}function bt(o,s){let t=H("svg");return t.setAttribute("width",o),t.setAttribute("height",s),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function S(o="2",s){let t=H("circle");return t.setAttribute("r",o),t.setAttribute("fill",s),t}function B(o){let s=H("line");return s.setAttribute("stroke",o),s}function Et(o,s){let t=H("rect");return t.setAttribute("stroke",o),t.setAttribute("fill",s),t}function L(o,s,t){o.setAttribute("cx",`${s}`),o.setAttribute("cy",`${t}`)}function y(o,s,t){s&&(o.setAttribute("x1",`${s.x}`),o.setAttribute("y1",`${s.y}`)),t&&(o.setAttribute("x2",`${t.x}`),o.setAttribute("y2",`${t.y}`))}function et(o,s,t,e,i){o.setAttribute("x",`${s}`),o.setAttribute("y",`${t}`),o.setAttribute("width",`${e}`),o.setAttribute("height",`${i}`)}import{EventDispatcher as $e,Box2 as Ke,Vector3 as Y,Vector2 as Z,Raycaster as Ue,Box3 as je,Color as _e,AmbientLight as Xe}from"three";import{Group as We,Tween as rt}from"@tweenjs/tween.js";import{EventDispatcher as Ve}from"three";import{Object3D as ee,ExtrudeGeometry as ie,MeshStandardMaterial as ne,Mesh as oe,Color as Pt,Box3 as wt,LineSegments as re,EdgesGeometry as se,LineBasicMaterial as ae,Vector3 as it}from"three";import{merge as ce}from"lodash";var he={id:"",height:.1,airHeight:0,area:0,group:"",fillColor:"#EFF4FB",strokeColor:"#ffffff",fillOpacity:1,strokeOpacity:1,doors:[],locked:!1,visible:!0,geometry:{type:"polygon",cds:[],curveCpt:[],curveIndex:[]},layerType:"",zIndex:0},x=class extends ee{constructor(t,e){super();this.context=t;r(this,"geometry");r(this,"material");r(this,"mesh");r(this,"line");r(this,"options");if(this.options=T(ce({},he,e),this),this.options.geometry.type==="point"){let[i,n]=this.options.geometry.cds;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.material.color=new Pt(i)}),this.addEventListener("change-fillOpacity",({value:i})=>{this.material.opacity=i}),this.addEventListener("change-height",({value:i})=>{this.dispose(),this.init()}),this.addEventListener("change-strokeColor",({value:i})=>{this.line.material.color=new Pt(i)}),this.addEventListener("change-strokeOpacity",({value:i})=>{this.line.material.opacity=i}),this.addEventListener("change-airHeight",({value:i})=>{this.position.z=i}),this.addEventListener("change-visible",({value:i})=>{this.visible=i})}getCenter(){if(this.options.geometry.type==="point")return this.position;let t=new it,e=new wt;return e.setFromObject(this),e.getCenter(t),t}getSize(){if(this.options.geometry.type==="point")return new it(0,0,0);let t=new wt,e=new it;return t.setFromObject(this),t.getSize(e),e}getPosition(){return this.getCenter()}init(){this.geometry=this.initGeometry(),this.material=this.initMaterial(),this.mesh=this.initMesh(),this.mesh.position.z=this.options.airHeight+this.options.height/2,this.mesh.castShadow=!0,this.add(this.mesh),this.line=this.createBorder(),this.add(this.line)}initGeometry(){let t=ut(this.options.geometry.cds[0],this.options.geometry.cds.slice(1));return new ie(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initMaterial(){return new ne({color:this.options.fillColor,roughness:1,transparent:!0,opacity:this.options.fillOpacity,depthWrite:!0})}initLineMaterial(){return new ae({color:this.options.strokeColor,opacity:this.options.strokeOpacity,transparent:!0,depthWrite:!0})}initMesh(){return new oe(this.geometry,this.material)}createBorder(){let t=this.initLineMaterial(),e=new se(this.geometry),i=new re(e,t);return i.position.z=this.options.airHeight+this.options.height/2,i}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(){E(this),this.clear()}};import{Object3D as pe,PlaneGeometry as le,Mesh as me,ShadowMaterial as de,Color as ue,DoubleSide as ge}from"three";var R=class extends pe{constructor(){super();r(this,"directionalLight");r(this,"plane");r(this,"basicOpacity",.39);this.directionalLight=this.initLight(),this.initPlane()}initLight(){let t=gt(16777215,1);return t.position.set(0,0,100),this.add(t),t}changeLightCamera(t){let e=t.x,i=t.y;this.directionalLight.shadow.camera.left=-e,this.directionalLight.shadow.camera.right=e,this.directionalLight.shadow.camera.top=i,this.directionalLight.shadow.camera.bottom=-i,this.directionalLight.shadow.camera.near=.5,this.directionalLight.shadow.camera.far=Math.max(e,i)}changeLightColor(t){this.directionalLight.color=new ue(t)}setPosition(t){this.position.copy(t),this.directionalLight.position.set(-t.x/2,-t.y/2,100)}initPlane(t=1e3,e=1e3){let i=new le(t,e),n=new de({transparent:!0,opacity:0,side:ge}),a=new me(i,n);return a.receiveShadow=!0,a.position.z=-5,this.add(a),this.plane=a,a}setTarget(t){this.directionalLight.target=t}transformOpacity(t){return t*this.basicOpacity}setOpacity(t){this.plane.material.opacity=this.transformOpacity(t)}dispose(){E(this,!0)}};import{Object3D as ye}from"three";import{merge as xe}from"lodash";import{Box3 as ve,EventDispatcher as fe,Vector3 as Ct}from"three";var z=class extends fe{constructor(t){super();this.context=t;r(this,"div");r(this,"element");r(this,"position",new Ct);r(this,"onUpdate",()=>{let t=this.getPosition(),{clientWidth:e,clientHeight:i}=this.context.container,{x:n,y:a}=g(t,this.context.camera,e,i);this.div.style.left=`${n}px`,this.div.style.top=`${a}px`});this.registryEvent(),this.div=this.initDiv(),this.context.container.appendChild(this.div)}initDiv(){let t=document.createElement("div");return t.style.position="absolute",t}bindElement(t){this.element=t}unBindElement(){this.element=void 0}setVisible(t,e="block"){this.div.style.display=t?e:"none"}setOpacity(t){this.div.style.opacity=`${t}`}getPosition(){return this.element?typeof this.element.getPosition=="function"?this.element.getPosition():new ve().setFromObject(this.element).getCenter(new Ct):this.position}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){this.unRegistryEvent(),this.unBindElement(),this.context.container.removeChild(this.div),this.div=null}};var be={text:"",level:1,collision_enable:!0,opacity:1},A=class extends ye{constructor(t,e){super();this.context=t;r(this,"textDiv");r(this,"img");r(this,"overlay");r(this,"options");r(this,"_changePosition",()=>{this.overlay.div.style.transform=`translate3d(-50%, ${this.options.icon?"-100%":"-50%"}, 0)`});this.options=T(xe({},be,e),this),this.overlay=new z(this.context),this.overlay.bindElement(this),this._changePosition(),this.registryEvent(),this.initDiv(),this.addEventListener("change-icon",({value:i})=>{i?this.img?this.img.setAttribute("src",i):this.overlay.div.appendChild(this.initIcon()):(this.img&&this.overlay.div.removeChild(this.img),this.img=void 0)}),this.addEventListener("change-text",({value:i})=>{this.overlay.div.removeChild(this.textDiv),this.overlay.div.appendChild(this.initText())}),this.addEventListener("change-opacity",({value:i})=>{this.overlay.setOpacity(i)})}initDiv(){let t=this.overlay.div;return t.appendChild(this.initText()),this.options.icon&&t.appendChild(this.initIcon()),t.style.fontSize="12px",t.style.display="flex",t.style.flexDirection="column",t.style.justifyContent="center",t.style.alignItems="center",t.style.pointerEvents="none",t}getPosition(){return this.position}initText(){let t=document.createElement("div");return t.appendChild(this.createTextFragment()),t.style.background="rgba(255, 255, 255, .7)",t.style.padding="2px",t.style.borderRadius="4px",this.textDiv=t,t}createTextFragment(){let t=document.createDocumentFragment();return this.options.text.split(`\r
|
|
2
|
+
`).forEach(e=>{let i=document.createElement("div");i.style.whiteSpace="nowrap",i.textContent=e,t.appendChild(i)}),t}initIcon(){var e,i;let t=document.createElement("img");return t.setAttribute("src",this.options.icon),t.style.width=`${((e=this.options.icon_size)==null?void 0:e[0])||32}px`,t.style.height=`${((i=this.options.icon_size)==null?void 0:i[1])||32}px`,this.img=t,t}registryEvent(){this.context.addEventListener("update",this._changePosition)}unRegistryEvent(){this.context.removeEventListener("update",this._changePosition)}setVisible(t){this.overlay.setVisible(t,"flex")}getBox(){return this.overlay.div.getBoundingClientRect()}isContain(t,e){let i=this.getBox();return t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}dispose(){this.unRegistryEvent(),this.textDiv=null,this.img=void 0,this.overlay.dispose()}};import{Box3 as nt,Object3D as Gt,Vector3 as ot}from"three";import{Box3 as Pe,Vector3 as we}from"three";import{Object3D as Ee}from"three";var D=class extends Ee{constructor(t){super();this.context=t}dispose(){E(this),this.clear()}};var V=class extends D{constructor(t){super(t);r(this,"graphicMap",new Map)}getCenter(){return new Pe().setFromObject(this).getCenter(new we)}createGraphic(t){let e=new x(this.context,t);return this.add(e),this.graphicMap.set(t.id,e),e}getGraphicByRaycaster(t){let e={distance:1e4,graphic:null,position:null},i=this.children.reduce((n,a)=>{if(a instanceof x){let c=a.raycast(t);if(c){let{distance:h}=c;if(h<n.distance)return{distance:n.distance,position:n.position,graphic:a}}return n}else return n},e);return i===e?{graphics:[],position:null}:{graphics:[i.graphic],position:i.position}}};var I=class extends D{constructor(t){super(t);r(this,"pois",[]);r(this,"onUpdate",()=>{this.collisionDetection()});this.registryEvent()}createPoi(t){let e=new A(this.context,t);return this.add(e),this.pushPoi(e),e.addEventListener("change-level",()=>this.changePoiLevelOrCollisionEnable(e)),e.addEventListener("change-collision_enable",()=>this.changePoiLevelOrCollisionEnable(e)),e}changePoiLevelOrCollisionEnable(t){let e=this.pois.findIndex(i=>i===t);e!==-1&&(this.pois.splice(e,1),this.pushPoi(t))}removePoi(t){let e=this.pois.findIndex(i=>i===t);e!==-1&&(this.pois.splice(e,1),this.remove(t),t.dispose())}pushPoi(t){if(!t.options.collision_enable){this.pois.unshift(t);return}if(t.options.level===1){this.pois.push(t);return}for(let e=0;e<this.pois.length;e++){let i=this.pois[e];if(i.options.collision_enable&&i.options.level<=t.options.level){this.pois.splice(e,0,t);return}}this.pois.push(t)}getPoiByDeviceXy(t,e){return this.children.filter(n=>n instanceof A&&n.isContain(t,e))}collisionDetection(){let t=[];this.pois.forEach((e,i)=>{e.setVisible(!0);let{left:n,right:a,top:c,bottom:h}=e.getBox();if(i===0){t.push({left:n,right:a,top:c,bottom:h});return}let p=t.some(l=>{let u=a<l.left||n>l.right,d=c>l.bottom||h<l.top;return u||d});e.setVisible(p)})}registryEvent(){this.context.addEventListener("update",this.onUpdate)}unRegistryEvent(){this.context.removeEventListener("update",this.onUpdate)}dispose(){super.dispose(),this.unRegistryEvent(),this.pois.forEach(t=>t.dispose()),this.pois.length=0}};import{MeshBasicMaterial as Ce,Object3D as Le,PlaneGeometry as Ge,Texture as Me,DoubleSide as De,Mesh as Se,Matrix3 as Lt,Vector2 as Ae}from"three";import{create as Oe}from"@mars3d/heatmap.js";import{featureCollection as Fe,point as Te,bbox as ke,center as He}from"@turf/turf";var $=class extends Le{constructor(t){super();this.context=t;r(this,"heatmap");r(this,"div");r(this,"plane");this.div=document.createElement("div")}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:a}=this.getBox(t);this.heatmap=Oe(O({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(a[0],a[1],this.position.z)}initPlane(t,e){this.plane&&this.remove(this.plane);let i=new Ge(t,e),n=new Me(this.div.firstChild);n.needsUpdate=!0;let a=new Ce({transparent:!0,side:De,map:n});a.needsUpdate=!0,this.plane=new Se(i,a),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new Lt().makeScale(1,-1).multiply(new Lt().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(a=>{let c=new Ae(a.x,a.y).applyMatrix3(i);return{x:c.x,y:c.y,value:a.value}}),max:t.max,min:t.min}}getBox(t){let e=Fe(t.data.map(p=>Te([p.x,p.y]))),i=ke(e),n=i[2]-i[0],a=i[3]-i[1],c={x:i[0],y:i[3]},h=He(e);return{width:n,height:a,leftTop:c,center:h.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var K=class extends Gt{constructor(t){super();this.context=t;r(this,"graphicLayer");r(this,"poiLayer");r(this,"grounds",new Set);r(this,"shadow",new R);r(this,"heatmap");r(this,"groundUpper",new Gt);this.graphicLayer=new V(this.context),this.poiLayer=new I(this.context),this.groundUpper.add(this.graphicLayer),this.groundUpper.add(this.poiLayer),this.add(this.groundUpper)}addGrounds(t){t.forEach(e=>{this.grounds.has(e)||(this.grounds.add(e),this.groundUpper.add(e))})}get hasElement(){return!!(this.grounds.size||this.graphicLayer.children.length)}getCenter(){return new nt().setFromObject(this.groundUpper).getCenter(new ot)}addShadow(){let t=new nt().setFromObject(this.groundUpper),e=t.getCenter(new ot),i=t.getSize(new ot);this.shadow.setPosition(e),this.shadow.changeLightCamera(i),this.add(this.shadow)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){this.heatmap||(this.heatmap=new $(this.context),this.add(this.heatmap)),this.heatmap.loadData(t);let e=new nt().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(){var t;this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),this.grounds.forEach(e=>e.dispose()),(t=this.heatmap)==null||t.dispose(),this.groundUpper.clear(),this.clear()}};import{EventDispatcher as Be,Vector3 as Re}from"three";var w=class extends Be{constructor(t){super();this.context=t;r(this,"points",[]);r(this,"svg");r(this,"enable",!0);this.svg=bt(`${t.container.clientWidth}`,`${t.container.clientHeight}`),t.container.appendChild(this.svg)}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:a}=t,{clientWidth:c,clientHeight:h}=i.domElement,p=n/c*2-1,l=1-a/h*2;return new Re(p,l,0).unproject(e)}getSvgCoordinate(t){let{camera:e,container:i}=this.context;return g(t,e,i.clientWidth,i.clientHeight)}dispose(){this.context.container.removeChild(this.svg),this.svg=null}};var U=class extends w{constructor(t){super(t);this.context=t;r(this,"circles");r(this,"line");r(this,"onUpdate",()=>{if(this.points[0]){let t=this.getSvgCoordinate(this.points[0]);L(this.circles[0],t.x,t.y),y(this.line,t)}if(this.points[1]){let t=this.getSvgCoordinate(this.points[1]);L(this.circles[1],t.x,t.y),y(this.line,void 0,t)}});r(this,"onPointermove",t=>{this.points.length===1&&(this.line.style.display="block",y(this.line,void 0,{x:t.offsetX,y:t.offsetY}))});r(this,"onPointerleave",()=>{this.points[1]||(this.line.style.display="none")});r(this,"onPointerdown",t=>{if(this.points[1])return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t,a=this.circles[this.points.length];L(a,i,n),this.points.length||y(this.line,{x:i,y:n},{x:i,y:n}),this.addPoint(e)}});let{config:{svg:{circle:e,line:i}}}=t;this.circles=[S(e.radius,e.fill),S(e.radius,e.fill)],this.line=B(i.stroke),this.svg.appendChild(this.circles[0]),this.svg.appendChild(this.circles[1]),this.svg.appendChild(this.line),this.registryEvent()}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)}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(b(i-t,2)+b(n-e,2))}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var j=class extends w{constructor(t){super(t);r(this,"circles",[]);r(this,"lines",[]);r(this,"isClose",!1);r(this,"onUpdate",()=>{this.points.length&&this.points.forEach((t,e)=>{let i=this.getSvgCoordinate(t);this.circles[e]&&L(this.circles[e],i.x,i.y),e!==0&&y(this.lines[e-1],void 0,i),this.lines[e]&&y(this.lines[e],i)})});r(this,"onPointermove",t=>{!this.lastLine||this.isClose||(this.lastLine.style.display="block",y(this.lastLine,void 0,{x:t.offsetX,y:t.offsetY}))});r(this,"onPointerleave",()=>{this.isClose||(this.lastLine.style.display="none")});r(this,"onPointerdown",t=>{if(this.isClose)return;let e=this.getIntersectByPointerEvent(t);if(e){let{offsetX:i,offsetY:n}=t;this.checkAdsorb(i,n)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(e);let{circle:{fill:a,radius:c},line:{stroke:h}}=this.context.config.svg;if(!this.isClose){let p=S(c,a);L(p,i,n),this.addCircle(p)}if(this.lines.length&&y(this.lastLine,void 0,{x:i,y:n}),!this.isClose){let p=B(h);y(p,{x:i,y:n},{x:i,y:n}),this.addLine(p)}}});this.registryEvent()}setEnable(t){super.setEnable(t),t?this.registryEvent():this.unRegistryEvent()}get lastLine(){return this.lines.slice(-1)[0]}addCircle(t){this.circles.push(t),this.svg.appendChild(t)}addLine(t){this.lines.push(t),this.svg.appendChild(t)}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)}checkAdsorb(t,e){if(this.points.length<3)return!1;let i=this.circles[0],n=+i.getAttribute("cx"),a=+i.getAttribute("cy");return Math.sqrt(b(t-n,2)+b(e-a,2))<=5}addPoint(t){if(this.points.push(t),this.isClose){let e=this.calculatedArea();this.dispatchEvent({type:"area",area:e})}}calculatedArea(){let t=this.points.map(n=>[n.x,n.y]),e=0,i=t.length;for(let n=0;n<i;n++){let a=(n+1)%i;e+=t[n][0]*t[a][1]-t[a][0]*t[n][1]}return Math.abs(e/2)}dispose(){super.dispose(),this.unRegistryEvent(),this.lines=[],this.circles=[]}};import{Frustum as ze}from"three";var _=class extends w{constructor(t){super(t);r(this,"startPoint");r(this,"endPoint");r(this,"rect");r(this,"frustum",new ze);r(this,"onPointerDown",t=>{if(!this.enable)return;let e=this.getIntersectByPointerEvent(t);e&&(this.startPoint=e),this.endPoint=void 0});r(this,"onPointerMove",t=>{if(!this.enable||!this.startPoint)return;let e=this.getIntersectByPointerEvent(t);e&&(this.endPoint=e)});r(this,"onPointerUp",t=>{if(!this.enable)return;let e=this.getIntersectByPointerEvent(t);e&&(this.endPoint=e),this.doSelect(),this.startPoint=void 0});r(this,"onUpdate",()=>{if(this.startPoint){let t=this.getSvgCoordinate(this.startPoint),e=O({},t);this.endPoint&&(e=this.getSvgCoordinate(this.endPoint));let i={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y)},n=Math.abs(e.x-t.x),a=Math.abs(e.y-t.y);et(this.rect,i.x,i.y,n,a)}});let{config:{selectBox:{fill:e,stroke:i}}}=t;this.rect=Et(i,e),this.svg.appendChild(this.rect),this.registryEvent()}setEnable(t){super.setEnable(t),et(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:e,container:{clientWidth:i,clientHeight:n}}}=this,a=g(this.startPoint,e,i,n),c=g(this.endPoint,e,i,n),h={x:Math.min(a.x,c.x),y:Math.min(a.y,c.y)},p={x:Math.max(a.x,c.x),y:Math.max(a.y,c.y)},l=this.searchMapInFrustum(h,p);this.dispatchEvent({type:"selected",list:l})}}searchMapInFrustum(t,e){var n;let{context:i}=this;return((n=i.currentFloor)==null?void 0:n.graphicLayer.children.filter(a=>a instanceof x&&this.searchChildInFrustum(a,t,e)))||[]}searchChildInFrustum(t,e,i){let{context:{camera:n,container:{clientWidth:a,clientHeight:c}}}=this;if(!t)return!1;t.mesh.geometry.boundingBox||t.mesh.geometry.computeBoundingBox();let h=t.mesh.geometry.boundingBox;if(!h)return!1;let{min:p,max:l}=h,u=g(p,n,a,c),d=g(l,n,a,c);return!(!tt(u,e,i)||!tt(d,e,i))}dispose(){this.unRegistryEvent()}};var X=class extends Ve{constructor(t){super();this.context=t;r(this,"_list",new Set);r(this,"boxSelection");r(this,"prevPanStatus");r(this,"onPointerDown",t=>{let{graphics:e}=this.context.getGraphicsByDeviceXy(t.offsetX,t.offsetY);t.ctrlKey||this._list.clear(),e.forEach(i=>this._list.add(i)),this.selectEnd()});r(this,"onKeyDown",t=>{t.key==="Control"&&(this.boxSelection.setEnable(!0),this.prevPanStatus=this.context.control.enablePan,this.context.control.enablePan=!1)});r(this,"onKeyUp",t=>{t.key==="Control"&&(this.boxSelection.setEnable(!1),this.context.control.enablePan=!!this.prevPanStatus)});r(this,"onBoxSelected",({list:t})=>{this._list.clear(),t.forEach(e=>{this._list.add(e)}),this.selectEnd()});this.boxSelection=new _(t),this.boxSelection.setEnable(!1),this.registryEvent()}get list(){return this._list}selectEnd(){this.dispatchEvent({type:"select",graphics:[...this._list]})}registryEvent(){this.context.container.addEventListener("pointerdown",this.onPointerDown),window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp),this.boxSelection.addEventListener("selected",this.onBoxSelected)}unRegistryEvent(){this.context.container.removeEventListener("pointerdown",this.onPointerDown),window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp),this.boxSelection.removeEventListener("selected",this.onBoxSelected)}dispose(){this.unRegistryEvent()}};import{EventDispatcher as Ie}from"three";var W=class extends Ie{constructor(t){super();this.context=t;r(this,"curGraphics",new Set);r(this,"timer",new M);r(this,"graphicTimerMap",new Map);r(this,"onPointerMove",({graphics:t})=>{if(!t.length&&this.curGraphics.size){this.curGraphics.clear(),this.handleHoverGraphicsChange();return}let{time:e}=this.context.config.hover;t.forEach(n=>{if(this.graphicTimerMap.get(n)||this.curGraphics.has(n))return;let a=this.timer.setTimeout(()=>{this.curGraphics.add(n),this.handleHoverGraphicsChange()},e);this.graphicTimerMap.set(n,a)}),this.graphicTimerMap.forEach((n,a)=>{t.includes(a)||(this.timer.clearTimeout(n),this.graphicTimerMap.delete(a))});let i=this.curGraphics.size;this.curGraphics.forEach(n=>{t.includes(n)||this.curGraphics.delete(n)}),i!==this.curGraphics.size&&this.handleHoverGraphicsChange()});r(this,"onPointerLevel",()=>{this.curGraphics.clear(),this.handleHoverGraphicsChange()});this.registryEvent()}handleHoverGraphicsChange(t=this.curGraphics){this.dispatchEvent({type:"hover-change",graphics:Array.from(this.curGraphics)})}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 q=class extends $e{constructor(t,e){super();this.container=t;this.config=e;r(this,"scene",ht());r(this,"renderer",pt());r(this,"camera");r(this,"control");r(this,"lights",mt());r(this,"timer",new M);r(this,"tweenGroup",new We);r(this,"currentFloor");r(this,"selection");r(this,"hoverHelper");r(this,"basicRatio");r(this,"onWindowResize",()=>{let{container:t,camera:e,renderer:i}=this,{clientWidth:n,clientHeight:a}=t;e.left=-n/2,e.right=n/2,e.top=a/2,e.bottom=-a/2,e.updateProjectionMatrix(),i.setSize(n,a)});r(this,"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.clientX,t.clientY);n.length&&this.dispatchEvent({type:"poi-click",pois:n})});r(this,"onPointerover",t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.clientX,t.clientY);this.dispatchEvent({type:"pointer-over",graphics:e,pois:n,position:i})});r(this,"onPointermove",t=>{let{graphics:e,position:i}=this.getGraphicsByDeviceXy(t.offsetX,t.offsetY),n=this.getPoisByDeviceXy(t.clientX,t.clientY);this.dispatchEvent({type:"pointer-move",graphics:e,pois:n,position:i})});r(this,"onPointerleave",()=>{this.dispatchEvent({type:"pointer-level"})});r(this,"onSelectionSelect",({graphics:t})=>{this.dispatchEvent({type:"select-graphic",graphics:t})});r(this,"onHoverChange",({graphics:t})=>{this.dispatchEvent({type:"hover",graphics:t})});this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.selection=new X(this),this.hoverHelper=new W(this),this.registryEvent()}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=lt(t,e),this.renderer.setSize(t,e),this.control=dt(this.camera,this.renderer.domElement),this.container.appendChild(this.renderer.domElement),this.scene.add(this.lights),this.basicRatio=this.getRatio(),this.control.addEventListener("change",()=>{var n;let i=this.control.getPolarAngle();(n=this.currentFloor)==null||n.setShadowOpacity(i/this.config.control.maxPolar),this.dispatchEvent({type:"change-ratio",px:(this.basicRatio||0)*this.camera.zoom})})}getRatio(t=new Y(0,0,0),e=new Y(100,0,0)){let{clientWidth:i,clientHeight:n}=this.container,a=g(t,this.camera,i,n),c=g(e,this.camera,i,n);return Math.ceil(Math.sqrt(b(c.x-a.x,2)+b(c.y-a.y,2)))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof Xe&&(e.color=new _e(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)}getGraphicsByDeviceXy(t,e){var c;let i=new Z;i.x=t/this.container.clientWidth*2-1,i.y=e/this.container.clientHeight*-2+1;let n=new Ue;return n.setFromCamera(i,this.camera),((c=this.currentFloor)==null?void 0:c.graphicLayer.getGraphicByRaycaster(n))||{graphics:[],position:null}}getPoisByDeviceXy(t,e){var n;return((n=this.currentFloor)==null?void 0:n.poiLayer.getPoiByDeviceXy(t,e))||[]}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 k(new Promise(i=>{let n={polar:this.control.getPolarAngle()},a={polar:t},c=new rt(n,this.tweenGroup).to(a,e).onUpdate(()=>{this.control.maxPolarAngle=n.polar,this.control.minPolarAngle=n.polar,this.control.update()}).onComplete(()=>{this.control.enabled=!0,this.tweenGroup.remove(c),i(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),e+500)}getCameraLookAt(){return new Y().subVectors(this.control.target,this.camera.position)}setZoom(t,e,i=500){return k(new Promise(n=>{let a={zoom:this.camera.zoom,target:this.control.target.clone()},c=this.getCameraLookAt(),h=new rt(a,this.tweenGroup).to({zoom:t,target:e},i).onUpdate(()=>{this.camera.position.copy(a.target.clone().sub(c)),this.control.target.copy(a.target),this.camera.zoom=a.zoom,this.control.update()}).onComplete(()=>{this.tweenGroup.remove(h),this.control.enabled=!0,n(!0)}).onStart(()=>{this.control.enabled=!1}).start()}),i+500)}fitCameraToObject(t,e=[20,20,20,20],i=500){let[n,a,c,h]=e,{clientWidth:p,clientHeight:l}=this.container,u=new je().setFromObject(t),{max:d,min:m}=u,f=g(d,this.camera,p,l),v=g(m,this.camera,p,l),st=new Ke().setFromPoints([new Z(f.x,f.y),new Z(v.x,v.y)]).getSize(new Z),St=(p-a-h)/st.x,At=(l-n-c)/st.y,Ot=Math.min(St,At),Ft=new Y((d.x+m.x)/2,(d.y+m.y)/2,d.z);return this.setZoom(Ot*this.camera.zoom,Ft,i)}fitCameraToGround(t=[20,20,20,20],e=500){return this.currentFloor&&this.currentFloor.hasElement?this.fitCameraToObject(this.currentFloor.groundUpper,t,e):Promise.resolve(!1)}setCameraPosition(t,e){return k(new Promise(i=>{let n=this.camera.position.clone(),a=this.getCameraLookAt(),c=new rt(n,this.tweenGroup).to(t,e).onUpdate(()=>{this.camera.position.copy(n),this.control.target.copy(t.clone().add(a))}).onComplete(()=>{this.tweenGroup.remove(c),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.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()),E(this.scene)}};import{merge as Ye}from"lodash";var Ze={apiDomain:"",apiInfo:{},apiPath:{floorGraphic:"/api/inception-map/floor/get",floorRange:"/api/inception-map/range/get"},heatMap:{radius:50,gradient:{0:"#8F9FCD",.5:"#6284FF",1:"#F95D5D"}},useFloorCache:!0,control:{maxPolar:1.2},svg:{circle:{radius:"2",fill:"#1CADFF"},line:{stroke:"#1CADFF"}},selectBox:{stroke:"#1CADFF",fill:"rgba(28, 173, 255, 0.3)"},hover:{time:500}};function Mt(o){return Ye({},Ze,o)}var Dt=class extends qe{constructor(t,e={}){super();this.container=t;r(this,"config");r(this,"context");r(this,"polarKeys",[]);r(this,"azimuthalKeys",[]);r(this,"svgLine");r(this,"svgPolygon");r(this,"basicZoom",1);r(this,"floorDataMap",new Map);r(this,"buildingGroundMap",new Map);r(this,"currentBuildGround",null);r(this,"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)});r(this,"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}});this.config=Mt(e),this.context=new q(t,this.config),this.registryEvent(),this.context.render()}loadGraphics(p){return G(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}){let{apiDomain:l,apiPath:{floorGraphic:u},apiInfo:d}=this.config,m=`${l}${u}?brand=${t}&project=${e}&phase=${i}&building=${n}&floor=${a}&ts=${c}&resource_type_list=${h}`;return yield fetch(m,d).then(v=>v.json()).then(v=>v.data).then(v=>((v||[]).map(P=>P.info=JSON.parse(P.info)),v||[]))})}getBuildingKey({brand:t,project:e,phase:i,building:n}){return`${t}-${e}-${i}-${n}`}loadBuildingGround(a){return G(this,arguments,function*({brand:t,project:e,phase:i,building:n}){let c=this.getBuildingKey({brand:t,project:e,phase:i,building:n});if(this.buildingGroundMap.get(c))return this.buildingGroundMap.get(c)||null;let{apiDomain:h,apiPath:{floorRange:p},apiInfo:l}=this.config,u=`${h}${p}?brand=${t}&project=${e}&phase=${i}&building=${n}`,d=yield fetch(u,l).then(m=>m.json()).then(m=>m.data).then(m=>{let f=(m||[])[0];return f&&(f.info=JSON.parse(f.info)),f});return this.buildingGroundMap.set(c,d),d})}getFloorKey({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}){return`${t}-${e}-${i}-${n}-${a}-${c}-${h}`}load(p){return G(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}){let l=this.getFloorKey({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h});if(this.floorDataMap.get(l))return;let[u,d]=yield Promise.all([this.loadGraphics({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}),this.loadBuildingGround({brand:t,project:e,phase:i,building:n})]);if(d){let m=J(d.info.geometry.cds[0]);u.forEach(f=>{if(f.info.geometry.type==="polygon")f.info.geometry.cds.map(v=>{Array.isArray(v)&&v.forEach(P=>{P[0]-=m[0],P[1]-=m[1]})});else{let[v,P]=f.info.geometry.cds;f.info.geometry.cds=[v-m[0],P-m[1]]}})}return this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(l,u),u})}createFloor(t){let e=new K(this.context);if(!t.length)return{curFloor:e,graphics:[]};let n=t.filter(p=>p.info.group==="ground").map(p=>new x(this.context,p.info));e.addGrounds(n);let a=t.filter(p=>p.info.group!=="ground"),c=new Map,h=a.map(p=>{let l=e.addGraphic(p.info);return l.userData.data=p,c.set(p.legacy_id,l),l});return e.addShadow(),e.userData.legacyToGraphicMap=c,{curFloor:e,graphics:h}}switchFloor(p){return G(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}){let l=this.getFloorKey({brand:t,project:e,phase:i,building:n,floor:a,ts:c,resource_type_list:h}),u=this.floorDataMap.get(l);if(u){let d=this.getBuildingKey({brand:t,project:e,phase:i,building:n});this.currentBuildGround=this.buildingGroundMap.get(d)||null;let m=this.createFloor(u);m?(this.context.switchFloor(m.curFloor),this.context.control.minZoom=0,this.context.control.maxZoom=1/0,yield 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):console.warn("[switchFloor error] ["+a+"] \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")})}addHeatmap(t){var e;return(e=this.context.currentFloor)==null?void 0:e.addHeatmap(t)}getLegacyToGraphicMap(){var t;return((t=this.context.currentFloor)==null?void 0:t.userData.legacyToGraphicMap)||new Map}getFloorAllGraphics(){var t;return((t=this.context.currentFloor)==null?void 0:t.graphicLayer.children.filter(e=>e instanceof x))||[]}createGraphicPoi(t,e){if(this.context.currentFloor){let i=this.context.currentFloor.addPoi(e),n=t.getCenter();return n.z+=t.options.height/2,i.position.copy(n),i.position.z=i.position.z+t.options.height/2,i}return null}removeHeatMap(){var t;(t=this.context.currentFloor)==null||t.removeHeatMap()}translateElementToCenter(t,e=500){let i=t.position.clone().setFromMatrixPosition(t.matrixWorld);return this.context.setCameraPosition(i,e)}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){t==="2d"?this.context.setPolarAngle(0):this.context.setPolarAngle(1.2)}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)}registryEvent(){window.addEventListener("keydown",this.onKeydown),window.addEventListener("keyup",this.onKeyUp)}unRegistryEvent(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("keyup",this.onKeyUp)}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()}measureDistance(){return G(this,null,function*(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new U(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 j(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&&this.context.currentFloor.graphicLayer.graphicMap.get(t)||null}deleteGraphic(t){this.context.currentFloor&&(this.context.currentFloor.graphicLayer.remove(t),t.dispose(),this.context.currentFloor.graphicLayer.graphicMap.delete(t.options.id))}createGraphicByOptions(t){var e;if(this.currentBuildGround){let i=J(this.currentBuildGround.info.geometry.cds[0]);if(t.geometry.type==="polygon")t.geometry.cds.map(n=>{Array.isArray(n)&&n.forEach(a=>{a[0]-=i[0],a[1]-=i[1]})});else{let[n,a]=t.geometry.cds;t.geometry.cds=[n-i[0],a-i[1]]}}return(e=this.context.currentFloor)==null?void 0:e.graphicLayer.createGraphic(t)}dispose(){this.context.dispose(),yt(),xt(),this.unRegistryEvent()}};export{Dt as BMap,w as BaseSvg,q as Context,K as Floor,x as Graphic,V as GraphicLayer,$ as HeatmapElement,W as HoverHelper,D as Layer,z as Overlay,A as Poi,I as PoiLayer,X as Selection,R as Shadow,U as SvgLine,j as SvgPolygon,M as Timer,xt as clearCanvas,yt as clearTextTexture,Qt as createCanvas,S as createCircle,B as createLine,Et as createRect,bt as createSvg,H as createSvgElement,Ze as defaultConfig,E as dispose,J as getCenter,Mt as getConfig,ai as getTextureByText,vt as hasChinese,lt as initCamera,qt as initCanvas,dt as initControl,gt as initDirectionalLight,mt as initLight,pt as initRenderer,ht as initScene,ut as initShape,tt as isContain,T as proxyOptions,L as setCirclePosition,y as setLineStartEnd,et as setRectPosition,k as timeoutPromise,g as vector3ToDevice};
|
|
3
3
|
//# sourceMappingURL=bmap.esm.min.js.map
|