@aibee/crc-bmap 0.0.6 → 0.0.8
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 +7 -1
- package/lib/bmap.cjs.min.js +1 -1
- package/lib/bmap.cjs.min.js.map +3 -3
- package/lib/bmap.esm.js +8 -4
- package/lib/bmap.esm.js.map +2 -2
- package/lib/bmap.esm.min.js +1 -1
- package/lib/bmap.esm.min.js.map +3 -3
- package/lib/bmap.min.js +1 -1
- package/lib/bmap.min.js.map +3 -3
- package/lib/src/index.d.ts +3 -0
- package/lib/src/types/index.d.ts +44 -0
- package/package.json +1 -1
package/lib/bmap.esm.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var wt=Object.defineProperty;var Z=Object.getOwnPropertySymbols;var Et=Object.prototype.hasOwnProperty,Pt=Object.prototype.propertyIsEnumerable;var v=Math.pow,X=(r,o,t)=>o in r?wt(r,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[o]=t,Q=(r,o)=>{for(var t in o||(o={}))Et.call(o,t)&&X(r,t,o[t]);if(Z)for(var t of Z(o))Pt.call(o,t)&&X(r,t,o[t]);return r};var s=(r,o,t)=>(X(r,typeof o!="symbol"?o+"":o,t),t);var L=(r,o,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(r,o)).next())});import{EventDispatcher as Fe}from"three";var G=class{constructor(){s(this,"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()}};import{Scene as Ct,WebGLRenderer as Lt,OrthographicCamera as Mt,HemisphereLight as Dt,Shape as Gt,PCFSoftShadowMap as At,Group as Ot,Color as Tt,DirectionalLight as St,AmbientLight as kt}from"three";import{MapControls as Ft}from"three/examples/jsm/controls/MapControls";function N(){let r=new Ct;return r.background=new Tt(16777215),r}function J(){let r=new Lt({antialias:!0});return r.setClearColor(16777215),r.setPixelRatio(window.devicePixelRatio),r.shadowMap.enabled=!0,r.shadowMap.autoUpdate=!0,r.shadowMap.type=At,r}function tt(r,o){let t=new Mt(-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 et(){let r=new Ot,o=new Dt(16777215,15658734,1);o.intensity=1,o.position.set(0,0,10),o.up.set(0,0,1),r.add(o);let t=new kt(16777215);return r.add(t),r}function it(r,o){let t=new Ft(r,o);return t.enableDamping=!1,t.maxPolarAngle=0,t.minPolarAngle=0,t.maxAzimuthAngle=0,t.minAzimuthAngle=0,t}function nt(r){let o=new Gt;if(Array.isArray(r[0])){o.moveTo(...r[0]);for(let t=1;t<r.length;t++)o.lineTo(...r[t])}return o}function ot(r=16777215,o=1){let t=new St(r,o);return t.castShadow=!0,t.shadow.radius=8,t.shadow.bias=-.001,t.shadow.mapSize.set(64,64),t.shadow.camera.left=-200,t.shadow.camera.right=200,t.shadow.camera.top=200,t.shadow.camera.bottom=-200,t}function x(r,o){var t;if(o&&r.children&&r.children.length&&r.children.forEach(e=>{x(e,o)}),r.isMesh){let e=r;e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(i=>{i.dispose()}):e.material.dispose())}r.isLight&&((t=r.dispose)==null||t.call(r))}function rt(r){return/[\u4E00-\u9FA5]+/g.test(r)}import{DataTexture as Rt,RGBAFormat as Ht,LinearFilter as st}from"three";var A=new Map;function zt(){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 U,b;function Vt(){if(!U){let{canvas:r,ctx:o}=zt();U=r,b=o}}function We(r){if(A.has(r))return A.get(r);Vt(),b.clearRect(0,0,1024,64);let o=rt(r)?4:8;b.strokeText(r,2,o),b.fillText(r,2,o);let t=Math.ceil(b.measureText(r).width);t=t%2===0?t:t+1,t+=2;let e=b.getImageData(0,0,t,64),i=new Rt(Uint8Array.from(e.data),t,64,Ht);return i.flipY=!0,i.minFilter=st,i.magFilter=st,A.set(r,i),i}function at(){A.clear()}function ct(){b=null,U=null}import{point as Bt,featureCollection as It,center as jt}from"@turf/turf";function g(r,o,t,e){let i=r.clone().project(o),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 ht(r){let o=It(r.map(e=>Bt(e)));return jt(o).geometry.coordinates}function O(r,o){return new Proxy(r,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let a=Reflect.set(t,e,i,n);return o.dispatchEvent({type:`change-${e}`,value:i}),a}})}function T(r,o){return Promise.race([r,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),o)})])}function W(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function pt(r,o){let t=W("svg");return t.setAttribute("width",r),t.setAttribute("height",o),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function M(r="2",o){let t=W("circle");return t.setAttribute("r",r),t.setAttribute("fill",o),t}function S(r){let o=W("line");return o.setAttribute("stroke",r),o}function w(r,o,t){r.setAttribute("cx",`${o}`),r.setAttribute("cy",`${t}`)}function f(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}`))}import{EventDispatcher as $t,Box2 as Kt,Vector3 as k,Vector2 as F,Raycaster as Xt,Box3 as Ut,Color as Wt,AmbientLight as _t}from"three";import{Group as Yt,Tween as _}from"@tweenjs/tween.js";var R=class extends $t{constructor(t,e){super();this.container=t;this.config=e;s(this,"scene",N());s(this,"renderer",J());s(this,"camera");s(this,"control");s(this,"lights",et());s(this,"timer",new G);s(this,"tweenGroup",new Yt);s(this,"currentFloor");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(window.innerWidth,window.innerHeight)});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"})});this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.registryEvent()}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=tt(t,e),this.renderer.setSize(t,e),this.control=it(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 k(0,0,0),e=new k(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(v(c.x-a.x,2)+v(c.y-a.y,2)))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof _t&&(e.color=new Wt(t))})}switchFloor(t){var i;this.currentFloor&&(this.scene.remove(t),t.dispose()),this.currentFloor=t,this.scene.add(t);let e=(i=t.ground)==null?void 0:i.getCenter();e&&(this.lights.position.x=e.x,this.lights.position.y=e.y)}getGraphicsByDeviceXy(t,e){var c;let i=new F;i.x=t/this.container.clientWidth*2-1,i.y=e/this.container.clientHeight*-2+1;let n=new Xt;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)}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)}setPolarAngle(t,e=500){return T(new Promise(i=>{let n={polar:this.control.getPolarAngle()},a={polar:t},c=new _(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 k().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(),h=new _(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,m=new Ut().setFromObject(t),{max:u,min:d}=m,y=g(u,this.camera,p,l),Y=g(d,this.camera,p,l),q=new Kt().setFromPoints([new F(y.x,y.y),new F(Y.x,Y.y)]).getSize(new F),vt=(p-a-h)/q.x,xt=(l-n-c)/q.y,yt=Math.min(vt,xt),bt=new k((u.x+d.x)/2,(u.y+d.y)/2,u.z);return this.setZoom(yt*this.camera.zoom,bt,i)}fitCameraToGround(t=[20,20,20,20],e=500){var n;let i=(n=this.currentFloor)==null?void 0:n.ground;return i?this.fitCameraToObject(i,t,e):Promise.resolve(!1)}setCameraPosition(t,e){return T(new Promise(i=>{let n=this.camera.position.clone(),a=this.getCameraLookAt(),c=new _(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.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()),x(this.scene)}};import{merge as qt}from"lodash";var Zt={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:"#EFF4FB"},line:{stroke:"#EFF4FB"}}};function lt(r){return qt({},Zt,r)}import{Object3D as Qt,ExtrudeGeometry as Nt,MeshStandardMaterial as Jt,Mesh as te,Color as mt,Box3 as dt,LineSegments as ee,EdgesGeometry as ie,LineBasicMaterial as ne,Vector3 as ut}from"three";import{merge as oe}from"lodash";var re={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},E=class extends Qt{constructor(t,e){super();this.context=t;s(this,"geometry");s(this,"material");s(this,"mesh");s(this,"line");s(this,"options");this.options=O(oe({},re,e),this),this.init(),this.visible=this.options.visible,this.addEventListener("change-fillColor",({value:i})=>{this.material.color=new mt(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 mt(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(){let t=new ut,e=new dt;return e.setFromObject(this),e.getCenter(t),t}getSize(){let t=new dt,e=new ut;return t.setFromObject(this),t.getSize(e),e}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=nt(this.options.geometry.cds[0]);return new Nt(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initMaterial(){return new Jt({color:this.options.fillColor,roughness:1,transparent:!0,opacity:this.options.fillOpacity,depthWrite:!0})}initLineMaterial(){return new ne({color:this.options.strokeColor,opacity:this.options.strokeOpacity,transparent:!0,depthWrite:!0})}initMesh(){return new te(this.geometry,this.material)}createBorder(){let t=this.initLineMaterial(),e=new ie(this.geometry);return new ee(e,t)}raycast(t){if(!this.visible)return!1;let e=t.intersectObject(this.mesh);return e[0]?e[0].point:!1}dispose(){x(this),this.clear()}};import{Object3D as se,PlaneGeometry as ae,Mesh as ce,ShadowMaterial as he,Color as pe,DoubleSide as le}from"three";var H=class extends se{constructor(){super();s(this,"directionalLight");s(this,"plane");s(this,"basicOpacity",.39);this.directionalLight=this.initLight(),this.initPlane()}initLight(){let t=ot(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 pe(t)}initPlane(t=1e4,e=1e4){let i=new ae(t,e),n=new he({transparent:!0,opacity:0,side:le}),a=new ce(i,n);return a.receiveShadow=!0,a.position.z=-20,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(){x(this,!0)}};import{Object3D as ue}from"three";import{merge as ge}from"lodash";import{EventDispatcher as me,Vector3 as de}from"three";var z=class extends me{constructor(t){super();this.context=t;s(this,"div");s(this,"element");s(this,"position",new de);s(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"}getPosition(){return this.element?this.element.position.clone().setFromMatrixPosition(this.element.matrixWorld):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 fe={text:"",level:1,collision_enable:!0},D=class extends ue{constructor(t,e){super();this.context=t;s(this,"span");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=O(ge({},fe,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.span.textContent=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}initText(){let t=document.createElement("span");return t.style.whiteSpace="nowrap",t.textContent=this.options.text,this.span=t,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.overlay.dispose(),this.span=null,this.img=void 0}};import{Object3D as Oe}from"three";import{Object3D as ve}from"three";var P=class extends ve{constructor(t){super();this.context=t}dispose(){x(this),this.clear()}};var V=class extends P{constructor(o){super(o)}createGraphic(o){let t=new E(this.context,o);return this.add(t),t}getGraphicByRaycaster(o){let t=null;return{graphics:this.children.filter(i=>{if(i instanceof E){let n=i.raycast(o);return n&&(t?n.z>t.z&&(t=n):t=n),!!n}}),position:t}}};var B=class extends P{constructor(t){super(t);s(this,"pois",[]);s(this,"onUpdate",()=>{this.collisionDetection()});this.registryEvent()}createPoi(t){let e=new D(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 D&&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 m=a<l.left||n>l.right,u=c>l.bottom||h<l.top;return m||u});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 xe,Object3D as ye,PlaneGeometry as be,Texture as we,DoubleSide as Ee,Mesh as Pe,Matrix3 as gt,Vector2 as Ce}from"three";import{create as Le}from"@mars3d/heatmap.js";import{featureCollection as Me,point as De,bbox as Ge,center as Ae}from"@turf/turf";var I=class extends ye{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=Le(Q({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 be(t,e),n=new we(this.div.firstChild);n.needsUpdate=!0;let a=new xe({transparent:!0,side:Ee,map:n});a.needsUpdate=!0,this.plane=new Pe(i,a),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new gt().makeScale(1,-1).multiply(new gt().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(a=>{let c=new Ce(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=Me(t.data.map(p=>De([p.x,p.y]))),i=Ge(e),n=i[2]-i[0],a=i[3]-i[1],c={x:i[0],y:i[3]},h=Ae(e);return{width:n,height:a,leftTop:c,center:h.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var j=class extends Oe{constructor(t){super();this.context=t;s(this,"graphicLayer");s(this,"poiLayer");s(this,"ground");s(this,"shadow",new H);s(this,"heatmap");this.graphicLayer=new V(this.context),this.poiLayer=new B(this.context),this.add(this.graphicLayer),this.add(this.poiLayer),this.add(this.shadow)}addGround(t){this.ground=t,this.add(t);let e=t.getCenter(),i=t.getSize();this.shadow.position.x=e.x,this.shadow.position.y=e.y,this.shadow.changeLightCamera(i),this.shadow.setTarget(t)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){var e,i;return this.heatmap||(this.heatmap=new I(this.context),this.add(this.heatmap)),this.heatmap.loadData(t),this.ground&&this.heatmap.position.setZ(((e=this.ground)==null?void 0:e.options.airHeight)+((i=this.ground)==null?void 0:i.options.height)),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,e;this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),(t=this.ground)==null||t.dispose(),(e=this.heatmap)==null||e.dispose(),this.clear()}};import{EventDispatcher as Te,Raycaster as Se,Vector2 as ke}from"three";var C=class extends Te{constructor(t){super();this.context=t;s(this,"points",[]);s(this,"svg");s(this,"enable",!0);this.svg=pt(`${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){var h;if(!((h=this.context.currentFloor)!=null&&h.ground))return;let{offsetX:e,offsetY:i}=t,n=new ke;n.x=e/this.context.container.clientWidth*2-1,n.y=i/this.context.container.clientHeight*-2+1;let a=new Se;return a.setFromCamera(n,this.context.camera),a.intersectObjects(this.context.currentFloor.ground.children,!0)[0]}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 $=class extends C{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!=null&&e.point){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.point)}});let{config:{svg:{circle:e,line:i}}}=t;this.circles=[M(e.radius,e.fill),M(e.radius,e.fill)],this.line=S(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(v(i-t,2)+v(n-e,2))}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var K=class extends C{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!=null&&e.point){let{offsetX:i,offsetY:n}=t;this.checkAdsorb(i,n)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(e.point);let{circle:{fill:a,radius:c},line:{stroke:h}}=this.context.config.svg;if(!this.isClose){let p=M(c,a);w(p,i,n),this.addCircle(p)}if(this.lines.length&&f(this.lastLine,void 0,{x:i,y:n}),!this.isClose){let p=S(h);f(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(v(t-n,2)+v(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=[]}};var ft=class extends Fe{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,"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=lt(e),this.context=new R(t,this.config),this.registryEvent(),this.context.render()}loadGraphics(h){return L(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){let{apiDomain:p,apiPath:{floorGraphic:l}}=this.config,m=`${p}${l}?brand=${t}&project=${e}&phase=${i}&building=${n}&floor=${a}&ts=${c}&resource_type_list=`;return yield fetch(m).then(d=>d.json()).then(d=>d.data).then(d=>(d.map(y=>y.info=JSON.parse(y.info)),d))})}loadBuildingGround(a){return L(this,arguments,function*({brand:t,project:e,phase:i,building:n}){let{apiDomain:c,apiPath:{floorRange:h}}=this.config,p=`${c}${h}?brand=${t}&project=${e}&phase=${i}&building=${n}`;return(yield fetch(p).then(m=>m.json()).then(m=>m.data).then(m=>(m.map(u=>u.info=JSON.parse(u.info)),m)))[0]})}load(h){return L(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){if(this.floorDataMap.get(a))return;let[p,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})]),m=ht(l.info.geometry.cds[0]);return p.forEach(u=>{u.info.geometry.cds.map(d=>{Array.isArray(d)&&d.forEach(y=>{y[0]-=m[0],y[1]-=m[1]})})}),this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(a,p),p})}createFloor(t){let e=new j(this.context),i=t.findIndex(l=>l.info.group==="floor");i===-1&&(i=0);let n=t[i];console.log(n.info.height,n.info.airHeight);let a=[...t];a.splice(i,1);let c=new E(this.context,n.info);e.addGround(c);let h=new Map,p=a.map(l=>{let m=e.addGraphic(l.info);return m.userData.data=l,h.set(l.legacy_id,m),m});return e.userData.legacyToGraphicMap=h,{curFloor:e,ground:c,graphics:p}}switchFloor(t){let e=this.floorDataMap.get(t);if(e){let{curFloor:i}=this.createFloor(e);this.context.switchFloor(i),this.context.fitCameraToGround(void 0,0)}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}createGraphicPoi(t,e){if(this.context.currentFloor){let i=this.context.currentFloor.addPoi(e);i.position.copy(t.getCenter()),i.position.z=i.position.z+t.options.height/2}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 L(this,null,function*(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new $(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 K(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)}dispose(){this.context.dispose(),at(),ct(),this.unRegistryEvent()}};export{ft as BMap,j as Floor,E as Graphic,I as HeatmapElement,z as Overlay,D as Poi,H as Shadow,$ as SvgLine,K as SvgPolygon,G as Timer,ct as clearCanvas,at as clearTextTexture,Vt as createCanvas,M as createCircle,S as createLine,pt as createSvg,W as createSvgElement,Zt as defaultConfig,x as dispose,ht as getCenter,lt as getConfig,We as getTextureByText,rt as hasChinese,tt as initCamera,zt as initCanvas,it as initControl,ot as initDirectionalLight,et as initLight,J as initRenderer,N as initScene,nt as initShape,O as proxyOptions,w as setCirclePosition,f as setLineStartEnd,T as timeoutPromise,g as vector3ToDevice};
|
|
1
|
+
var wt=Object.defineProperty;var Z=Object.getOwnPropertySymbols;var Et=Object.prototype.hasOwnProperty,Pt=Object.prototype.propertyIsEnumerable;var x=Math.pow,U=(r,o,t)=>o in r?wt(r,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[o]=t,Q=(r,o)=>{for(var t in o||(o={}))Et.call(o,t)&&U(r,t,o[t]);if(Z)for(var t of Z(o))Pt.call(o,t)&&U(r,t,o[t]);return r};var s=(r,o,t)=>(U(r,typeof o!="symbol"?o+"":o,t),t);var M=(r,o,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(r,o)).next())});import{EventDispatcher as Fe}from"three";var A=class{constructor(){s(this,"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()}};import{Scene as Ct,WebGLRenderer as Lt,OrthographicCamera as Mt,HemisphereLight as Dt,Shape as Gt,PCFSoftShadowMap as At,Group as Ot,Color as Tt,DirectionalLight as St,AmbientLight as kt}from"three";import{MapControls as Ft}from"three/examples/jsm/controls/MapControls";function N(){let r=new Ct;return r.background=new Tt(16777215),r}function J(){let r=new Lt({antialias:!0});return r.setClearColor(16777215),r.setPixelRatio(window.devicePixelRatio),r.shadowMap.enabled=!0,r.shadowMap.autoUpdate=!0,r.shadowMap.type=At,r}function tt(r,o){let t=new Mt(-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 et(){let r=new Ot,o=new Dt(16777215,15658734,1);o.intensity=1,o.position.set(0,0,10),o.up.set(0,0,1),r.add(o);let t=new kt(16777215);return r.add(t),r}function it(r,o){let t=new Ft(r,o);return t.enableDamping=!1,t.maxPolarAngle=0,t.minPolarAngle=0,t.maxAzimuthAngle=0,t.minAzimuthAngle=0,t}function nt(r){let o=new Gt;if(Array.isArray(r[0])){o.moveTo(...r[0]);for(let t=1;t<r.length;t++)o.lineTo(...r[t])}return o}function ot(r=16777215,o=1){let t=new St(r,o);return t.castShadow=!0,t.shadow.radius=8,t.shadow.bias=-.001,t.shadow.mapSize.set(64,64),t.shadow.camera.left=-200,t.shadow.camera.right=200,t.shadow.camera.top=200,t.shadow.camera.bottom=-200,t}function y(r,o){var t;if(o&&r.children&&r.children.length&&r.children.forEach(e=>{y(e,o)}),r.isMesh){let e=r;e.geometry&&e.geometry.dispose(),e.material&&(Array.isArray(e.material)?e.material.forEach(i=>{i.dispose()}):e.material.dispose())}r.isLight&&((t=r.dispose)==null||t.call(r))}function rt(r){return/[\u4E00-\u9FA5]+/g.test(r)}import{DataTexture as Rt,RGBAFormat as Ht,LinearFilter as st}from"three";var O=new Map;function zt(){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 W,b;function Vt(){if(!W){let{canvas:r,ctx:o}=zt();W=r,b=o}}function We(r){if(O.has(r))return O.get(r);Vt(),b.clearRect(0,0,1024,64);let o=rt(r)?4:8;b.strokeText(r,2,o),b.fillText(r,2,o);let t=Math.ceil(b.measureText(r).width);t=t%2===0?t:t+1,t+=2;let e=b.getImageData(0,0,t,64),i=new Rt(Uint8Array.from(e.data),t,64,Ht);return i.flipY=!0,i.minFilter=st,i.magFilter=st,O.set(r,i),i}function at(){O.clear()}function ct(){b=null,W=null}import{point as Bt,featureCollection as It,center as jt}from"@turf/turf";function g(r,o,t,e){let i=r.clone().project(o),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 ht(r){let o=It(r.map(e=>Bt(e)));return jt(o).geometry.coordinates}function T(r,o){return new Proxy(r,{get:(t,e,i)=>Reflect.get(t,e,i),set:(t,e,i,n)=>{let a=Reflect.set(t,e,i,n);return o.dispatchEvent({type:`change-${e}`,value:i}),a}})}function S(r,o){return Promise.race([r,new Promise((t,e)=>{setTimeout(()=>e(new Error("Promise timeout")),o)})])}function _(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function pt(r,o){let t=_("svg");return t.setAttribute("width",r),t.setAttribute("height",o),t.style.cssText="position: absolute; left: 0; top: 0; pointer-events: none;",t}function D(r="2",o){let t=_("circle");return t.setAttribute("r",r),t.setAttribute("fill",o),t}function k(r){let o=_("line");return o.setAttribute("stroke",r),o}function w(r,o,t){r.setAttribute("cx",`${o}`),r.setAttribute("cy",`${t}`)}function f(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}`))}import{EventDispatcher as $t,Box2 as Kt,Vector3 as F,Vector2 as R,Raycaster as Xt,Box3 as Ut,Color as Wt,AmbientLight as _t}from"three";import{Group as Yt,Tween as Y}from"@tweenjs/tween.js";var H=class extends $t{constructor(t,e){super();this.container=t;this.config=e;s(this,"scene",N());s(this,"renderer",J());s(this,"camera");s(this,"control");s(this,"lights",et());s(this,"timer",new A);s(this,"tweenGroup",new Yt);s(this,"currentFloor");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(window.innerWidth,window.innerHeight)});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"})});this.container.style.position="relative",this.container.style.overflow="hidden",this.init(),this.registryEvent()}init(){let{clientWidth:t,clientHeight:e}=this.container;this.camera=tt(t,e),this.renderer.setSize(t,e),this.control=it(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 F(0,0,0),e=new F(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(x(c.x-a.x,2)+x(c.y-a.y,2)))}changeAmbientLightColor(t){this.lights.children.forEach(e=>{e instanceof _t&&(e.color=new Wt(t))})}switchFloor(t){var i;this.currentFloor&&(this.scene.remove(t),t.dispose()),this.currentFloor=t,this.scene.add(t);let e=(i=t.ground)==null?void 0:i.getCenter();e&&(this.lights.position.x=e.x,this.lights.position.y=e.y)}getGraphicsByDeviceXy(t,e){var c;let i=new R;i.x=t/this.container.clientWidth*2-1,i.y=e/this.container.clientHeight*-2+1;let n=new Xt;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)}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)}setPolarAngle(t,e=500){return S(new Promise(i=>{let n={polar:this.control.getPolarAngle()},a={polar:t},c=new Y(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 F().subVectors(this.control.target,this.camera.position)}setZoom(t,e,i=500){return S(new Promise(n=>{let a={zoom:this.camera.zoom,target:this.control.target.clone()},c=this.getCameraLookAt(),h=new Y(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,d=new Ut().setFromObject(t),{max:m,min:v}=d,u=g(m,this.camera,p,l),L=g(v,this.camera,p,l),q=new Kt().setFromPoints([new R(u.x,u.y),new R(L.x,L.y)]).getSize(new R),vt=(p-a-h)/q.x,xt=(l-n-c)/q.y,yt=Math.min(vt,xt),bt=new F((m.x+v.x)/2,(m.y+v.y)/2,m.z);return this.setZoom(yt*this.camera.zoom,bt,i)}fitCameraToGround(t=[20,20,20,20],e=500){var n;let i=(n=this.currentFloor)==null?void 0:n.ground;return i?this.fitCameraToObject(i,t,e):Promise.resolve(!1)}setCameraPosition(t,e){return S(new Promise(i=>{let n=this.camera.position.clone(),a=this.getCameraLookAt(),c=new Y(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.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()),y(this.scene)}};import{merge as qt}from"lodash";var Zt={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:"#EFF4FB"},line:{stroke:"#EFF4FB"}}};function lt(r){return qt({},Zt,r)}import{Object3D as Qt,ExtrudeGeometry as Nt,MeshStandardMaterial as Jt,Mesh as te,Color as mt,Box3 as dt,LineSegments as ee,EdgesGeometry as ie,LineBasicMaterial as ne,Vector3 as ut}from"three";import{merge as oe}from"lodash";var re={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},E=class extends Qt{constructor(t,e){super();this.context=t;s(this,"geometry");s(this,"material");s(this,"mesh");s(this,"line");s(this,"options");this.options=T(oe({},re,e),this),this.init(),this.visible=this.options.visible,this.addEventListener("change-fillColor",({value:i})=>{this.material.color=new mt(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 mt(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(){let t=new ut,e=new dt;return e.setFromObject(this),e.getCenter(t),t}getSize(){let t=new dt,e=new ut;return t.setFromObject(this),t.getSize(e),e}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=nt(this.options.geometry.cds[0]);return new Nt(t,{steps:1,bevelEnabled:!1,depth:this.options.height,curveSegments:4})}initMaterial(){return new Jt({color:this.options.fillColor,roughness:1,transparent:!0,opacity:this.options.fillOpacity,depthWrite:!0})}initLineMaterial(){return new ne({color:this.options.strokeColor,opacity:this.options.strokeOpacity,transparent:!0,depthWrite:!0})}initMesh(){return new te(this.geometry,this.material)}createBorder(){let t=this.initLineMaterial(),e=new ie(this.geometry);return new ee(e,t)}raycast(t){if(!this.visible)return!1;let e=t.intersectObject(this.mesh);return e[0]?e[0].point:!1}dispose(){y(this),this.clear()}};import{Object3D as se,PlaneGeometry as ae,Mesh as ce,ShadowMaterial as he,Color as pe,DoubleSide as le}from"three";var z=class extends se{constructor(){super();s(this,"directionalLight");s(this,"plane");s(this,"basicOpacity",.39);this.directionalLight=this.initLight(),this.initPlane()}initLight(){let t=ot(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 pe(t)}initPlane(t=1e4,e=1e4){let i=new ae(t,e),n=new he({transparent:!0,opacity:0,side:le}),a=new ce(i,n);return a.receiveShadow=!0,a.position.z=-20,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(){y(this,!0)}};import{Object3D as ue}from"three";import{merge as ge}from"lodash";import{EventDispatcher as me,Vector3 as de}from"three";var V=class extends me{constructor(t){super();this.context=t;s(this,"div");s(this,"element");s(this,"position",new de);s(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"}getPosition(){return this.element?this.element.position.clone().setFromMatrixPosition(this.element.matrixWorld):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 fe={text:"",level:1,collision_enable:!0},G=class extends ue{constructor(t,e){super();this.context=t;s(this,"span");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=T(ge({},fe,e),this),this.overlay=new V(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.span.textContent=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}initText(){let t=document.createElement("span");return t.style.whiteSpace="nowrap",t.textContent=this.options.text,this.span=t,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.overlay.dispose(),this.span=null,this.img=void 0}};import{Object3D as Oe}from"three";import{Object3D as ve}from"three";var P=class extends ve{constructor(t){super();this.context=t}dispose(){y(this),this.clear()}};var B=class extends P{constructor(o){super(o)}createGraphic(o){let t=new E(this.context,o);return this.add(t),t}getGraphicByRaycaster(o){let t=null;return{graphics:this.children.filter(i=>{if(i instanceof E){let n=i.raycast(o);return n&&(t?n.z>t.z&&(t=n):t=n),!!n}}),position:t}}};var I=class extends P{constructor(t){super(t);s(this,"pois",[]);s(this,"onUpdate",()=>{this.collisionDetection()});this.registryEvent()}createPoi(t){let e=new G(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 G&&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 d=a<l.left||n>l.right,m=c>l.bottom||h<l.top;return d||m});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 xe,Object3D as ye,PlaneGeometry as be,Texture as we,DoubleSide as Ee,Mesh as Pe,Matrix3 as gt,Vector2 as Ce}from"three";import{create as Le}from"@mars3d/heatmap.js";import{featureCollection as Me,point as De,bbox as Ge,center as Ae}from"@turf/turf";var j=class extends ye{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=Le(Q({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 be(t,e),n=new we(this.div.firstChild);n.needsUpdate=!0;let a=new xe({transparent:!0,side:Ee,map:n});a.needsUpdate=!0,this.plane=new Pe(i,a),this.add(this.plane)}getTransMatrix({x:t,y:e}){return new gt().makeScale(1,-1).multiply(new gt().makeTranslation(0-t,0-e))}transformData(t,e){let i=this.getTransMatrix(e);return{data:t.data.map(a=>{let c=new Ce(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=Me(t.data.map(p=>De([p.x,p.y]))),i=Ge(e),n=i[2]-i[0],a=i[3]-i[1],c={x:i[0],y:i[3]},h=Ae(e);return{width:n,height:a,leftTop:c,center:h.geometry.coordinates}}dispose(){this.div=null,this.heatmap=void 0}};var $=class extends Oe{constructor(t){super();this.context=t;s(this,"graphicLayer");s(this,"poiLayer");s(this,"ground");s(this,"shadow",new z);s(this,"heatmap");this.graphicLayer=new B(this.context),this.poiLayer=new I(this.context),this.add(this.graphicLayer),this.add(this.poiLayer),this.add(this.shadow)}addGround(t){this.ground=t,this.add(t);let e=t.getCenter(),i=t.getSize();this.shadow.position.x=e.x,this.shadow.position.y=e.y,this.shadow.changeLightCamera(i),this.shadow.setTarget(t)}addGraphic(t){return this.graphicLayer.createGraphic(t)}addPoi(t){return this.poiLayer.createPoi(t)}addHeatmap(t){var e,i;return this.heatmap||(this.heatmap=new j(this.context),this.add(this.heatmap)),this.heatmap.loadData(t),this.ground&&this.heatmap.position.setZ(((e=this.ground)==null?void 0:e.options.airHeight)+((i=this.ground)==null?void 0:i.options.height)),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,e;this.shadow.dispose(),this.graphicLayer.dispose(),this.poiLayer.dispose(),(t=this.ground)==null||t.dispose(),(e=this.heatmap)==null||e.dispose(),this.clear()}};import{EventDispatcher as Te,Raycaster as Se,Vector2 as ke}from"three";var C=class extends Te{constructor(t){super();this.context=t;s(this,"points",[]);s(this,"svg");s(this,"enable",!0);this.svg=pt(`${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){var h;if(!((h=this.context.currentFloor)!=null&&h.ground))return;let{offsetX:e,offsetY:i}=t,n=new ke;n.x=e/this.context.container.clientWidth*2-1,n.y=i/this.context.container.clientHeight*-2+1;let a=new Se;return a.setFromCamera(n,this.context.camera),a.intersectObjects(this.context.currentFloor.ground.children,!0)[0]}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 K=class extends C{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!=null&&e.point){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.point)}});let{config:{svg:{circle:e,line:i}}}=t;this.circles=[D(e.radius,e.fill),D(e.radius,e.fill)],this.line=k(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(x(i-t,2)+x(n-e,2))}dispose(){super.dispose(),this.unRegistryEvent(),this.line=null,this.circles=[]}};var X=class extends C{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!=null&&e.point){let{offsetX:i,offsetY:n}=t;this.checkAdsorb(i,n)?(this.isClose=!0,this.addPoint(this.points[0])):this.addPoint(e.point);let{circle:{fill:a,radius:c},line:{stroke:h}}=this.context.config.svg;if(!this.isClose){let p=D(c,a);w(p,i,n),this.addCircle(p)}if(this.lines.length&&f(this.lastLine,void 0,{x:i,y:n}),!this.isClose){let p=k(h);f(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(x(t-n,2)+x(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=[]}};var ft=class extends Fe{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,"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=lt(e),this.context=new H(t,this.config),this.registryEvent(),this.context.render()}loadGraphics(h){return M(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){let{apiDomain:p,apiPath:{floorGraphic:l},apiInfo:d}=this.config,m=`${p}${l}?brand=${t}&project=${e}&phase=${i}&building=${n}&floor=${a}&ts=${c}&resource_type_list=`;return yield fetch(m,d).then(u=>u.json()).then(u=>u.data).then(u=>(u.map(L=>L.info=JSON.parse(L.info)),u))})}loadBuildingGround(a){return M(this,arguments,function*({brand:t,project:e,phase:i,building:n}){let{apiDomain:c,apiPath:{floorRange:h},apiInfo:p}=this.config,l=`${c}${h}?brand=${t}&project=${e}&phase=${i}&building=${n}`;return(yield fetch(l,p).then(m=>m.json()).then(m=>m.data).then(m=>(m.map(v=>v.info=JSON.parse(v.info)),m)))[0]})}load(h){return M(this,arguments,function*({brand:t,project:e,phase:i,building:n,floor:a,ts:c}){if(this.floorDataMap.get(a))return;let[p,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})]),d=ht(l.info.geometry.cds[0]);return p.forEach(m=>{m.info.geometry.cds.map(v=>{Array.isArray(v)&&v.forEach(u=>{u[0]-=d[0],u[1]-=d[1]})})}),this.config.useFloorCache||this.floorDataMap.clear(),this.floorDataMap.set(a,p),p})}createFloor(t){let e=new $(this.context),i=t.findIndex(l=>l.info.group==="floor");i===-1&&(i=0);let n=t[i];console.log(n.info.height,n.info.airHeight);let a=[...t];a.splice(i,1);let c=new E(this.context,n.info);e.addGround(c);let h=new Map,p=a.map(l=>{let d=e.addGraphic(l.info);return d.userData.data=l,h.set(l.legacy_id,d),d});return e.userData.legacyToGraphicMap=h,{curFloor:e,ground:c,graphics:p}}switchFloor(t){let e=this.floorDataMap.get(t);if(e){let{curFloor:i}=this.createFloor(e);this.context.switchFloor(i),this.context.fitCameraToGround(void 0,0)}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}createGraphicPoi(t,e){if(this.context.currentFloor){let i=this.context.currentFloor.addPoi(e);i.position.copy(t.getCenter()),i.position.z=i.position.z+t.options.height/2}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 M(this,null,function*(){return this.cancelDistance(),new Promise((t,e)=>{this.changeMapType("2d",0),this.context.control.enableRotate=!1,this.svgLine=new K(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 X(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)}dispose(){this.context.dispose(),at(),ct(),this.unRegistryEvent()}};export{ft as BMap,H as Context,$ as Floor,E as Graphic,B as GraphicLayer,j as HeatmapElement,P as Layer,V as Overlay,G as Poi,I as PoiLayer,z as Shadow,K as SvgLine,X as SvgPolygon,A as Timer,ct as clearCanvas,at as clearTextTexture,Vt as createCanvas,D as createCircle,k as createLine,pt as createSvg,_ as createSvgElement,Zt as defaultConfig,y as dispose,ht as getCenter,lt as getConfig,We as getTextureByText,rt as hasChinese,tt as initCamera,zt as initCanvas,it as initControl,ot as initDirectionalLight,et as initLight,J as initRenderer,N as initScene,nt as initShape,T as proxyOptions,w as setCirclePosition,f as setLineStartEnd,S as timeoutPromise,g as vector3ToDevice};
|
|
2
2
|
//# sourceMappingURL=bmap.esm.min.js.map
|