leiting-bim 2.2.6 → 2.2.7
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/{index-oCK7Hz22.js → index-Ba4cbcEC.js} +35 -10
- package/{index-CLw7qrwC.js → index-gOOW1lNw.js} +1 -1
- package/leiting-bim.es.js +1 -1
- package/leiting-bim.umd.js +2 -2
- package/leitingbim.css +1 -1
- package/package.json +1 -1
- package/skybox/blueSkies/nx.png +0 -0
- package/skybox/blueSkies/ny.png +0 -0
- package/skybox/blueSkies/nz.png +0 -0
- package/skybox/blueSkies/px.png +0 -0
- package/skybox/blueSkies/py.png +0 -0
- package/skybox/blueSkies/py1.png +0 -0
- package/skybox/blueSkies/pz.png +0 -0
package/leiting-bim.umd.js
CHANGED
|
@@ -98,7 +98,7 @@ northing meters`+i;var p=u/2,f=0,m=0,y,g,A,v,w;return p>0&&(y=1e5/Math.pow(10,p)
|
|
|
98
98
|
from { transform: rotate(0deg); }
|
|
99
99
|
to { transform: rotate(360deg); }
|
|
100
100
|
}
|
|
101
|
-
`;Rr=document.createElement("style"),Rr.textContent=i,document.head.appendChild(Rr)}function AB(){if(um)return;yB(),Ue=document.createElement("div"),Ue.className="tech-alert-wrapper",(pc||document.body).appendChild(Ue);const e={setup(){return()=>$e.visible?d.h(oe.Alert,{class:`tech-alert tech-alert-${$e.type}`,message:$e.title,description:$e.description,showIcon:$e.showIcon,closable:$e.closable,onClose:()=>{$e.visible=!1}},{icon:()=>$e.type==="loading"?d.h(As.LoadingOutlined):$e.type==="success"?d.h(As.CheckCircleOutlined):$e.type==="error"?d.h(As.CloseCircleOutlined):$e.type==="warning"?d.h(As.ExclamationCircleOutlined):d.h(As.InfoCircleOutlined)}):null}};hm=d.createVNode(e),d.render(hm,Ue),um=!0}function oo(i){AB(),fc&&clearTimeout(fc),$e.type=i.type||"info",$e.title=i.title||"",$e.description=i.description||"",$e.closable=i.closable??!1,$e.showIcon=i.showIcon??!0,$e.visible=!0;const e=i.container||pc;Ue&&(e?(Ue.parentNode!==e&&e.appendChild(Ue),Ue.style.position="absolute",Ue.style.top="20px",Ue.style.left="50%",Ue.style.transform="translateX(-50%)"):(Ue.parentNode!==document.body&&document.body.appendChild(Ue),Ue.style.position="fixed",Ue.style.top="20px",Ue.style.left="50%",Ue.style.transform="translateX(-50%)"));const t=i.duration??($e.type==="loading"?0:3);t>0&&(fc=setTimeout(()=>{$e.visible=!1},t*1e3))}const pe={setContainer:i=>{pc=i,Ue&&i&&Ue.parentNode!==i&&(i.appendChild(Ue),Ue.style.position="absolute")},info:(i,e,t,n)=>oo({type:"info",title:i,description:e,duration:t,container:n}),success:(i,e,t,n)=>oo({type:"success",title:i,description:e,duration:t,container:n}),error:(i,e,t,n)=>oo({type:"error",title:i,description:e,duration:t,container:n}),warning:(i,e,t,n)=>oo({type:"warning",title:i,description:e,duration:t,container:n}),loading:(i,e,t)=>oo({type:"loading",title:i,description:e,duration:0,container:t}),close:()=>{$e.visible=!1}};class vB{cesium;viewer;events=new _s;lastBaseMapRequestId=0;_removeCameraLockListener=null;currentMode="3d";defaultMapBound={minLon:-180,maxLon:180,minLat:-90,maxLat:90};constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}get is2d(){return this.currentMode==="2d"}setGlobeEnvironmentVisible(e){if(this.is2d){this.viewer.scene.globe.show=e,this.viewer.scene.globe.showGroundAtmosphere=!1,this.viewer.scene.skyAtmosphere.show=!1,this.viewer.scene.sun.show=!1,this.viewer.scene.moon.show=!1,this.viewer.scene.skyBox.show=!1;return}const{scene:t}=this.viewer;t.globe&&(t.globe.show=e,t.globe.showGroundAtmosphere=e,e||(t.globe.depthTestAgainstTerrain=!1)),t.skyAtmosphere&&(t.skyAtmosphere.show=e),t.sun&&(t.sun.show=e),t.moon&&(t.moon.show=e),t.skyBox&&(t.skyBox.show=e)}setGlobeColor(e){const t=this.cesium.Color.fromCssColorString(e);t&&(this.viewer.scene.backgroundColor=t,this.viewer.scene.globe.baseColor=t)}setBackgroundColor(e){const t=this.viewer.container;t&&(t.style.background=e);try{const n=this.cesium.Color.fromCssColorString(e);n?(this.viewer.scene.backgroundColor=n,this.viewer.scene.globe.baseColor=n):(this.viewer.scene.backgroundColor=this.cesium.Color.TRANSPARENT,this.viewer.scene.globe.baseColor=this.cesium.Color.TRANSPARENT)}catch{this.viewer.scene.backgroundColor=this.cesium.Color.TRANSPARENT,this.viewer.scene.globe.baseColor=this.cesium.Color.TRANSPARENT}}async setTerrainEnable(e){if(!(this.is2d&&e))if(e)try{const t=this.cesium.ArcGISTiledElevationTerrainProvider.fromUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"),n=new Promise((s,o)=>setTimeout(()=>o(new Error("ArcGIS Terrain request timed out")),5e3));this.viewer.terrainProvider=await Promise.race([t,n])}catch(t){console.warn("Failed to load ArcGIS terrain (or timed out), trying Cesium World Terrain...",t);try{this.cesium.Terrain&&this.cesium.Terrain.fromWorldTerrain?this.viewer.terrainProvider=await this.cesium.Terrain.fromWorldTerrain({requestWaterMask:!0,requestVertexNormals:!0}):this.viewer.terrainProvider=this.cesium.createWorldTerrain({requestWaterMask:!0,requestVertexNormals:!0})}catch(n){console.error("Failed to enable terrain (both ArcGIS and Ion failed):",n),this.viewer.terrainProvider=new this.cesium.EllipsoidTerrainProvider}}else this.viewer.terrainProvider=new this.cesium.EllipsoidTerrainProvider}setDepthTestEnable(e){if(!this.viewer.scene.globe.show){this.viewer.scene.globe.depthTestAgainstTerrain=!1;return}this.viewer.scene.globe.depthTestAgainstTerrain=e}setCadMode(e){this.currentMode!==e&&(this.currentMode=e,this.is2d?this._enable2DMode():this._enable3DMode())}_enable2DMode(){const e=this.cesium,t=this.viewer.scene;this.setGlobeEnvironmentVisible(!0);const n=t.screenSpaceCameraController;this.setBackgroundColor("#000000"),this.setGlobeColor("#000000"),this.viewer.imageryLayers.removeAll(),n.enableZoomInertia=!1,n.enableTilt=!1,n.enableLook=!1,n.enableCollisionDetection=!1,n.inertiaSpin=0,n.inertiaZoom=0,n.inertiaTranslate=0,this.viewer.camera.setView({orientation:{heading:0,pitch:e.Math.toRadians(-90),roll:0}}),this._removeCameraLockListener&&(this._removeCameraLockListener(),this._removeCameraLockListener=null),this.viewer.resolutionScale=1,this.viewer.scene.postProcessStages&&this.viewer.scene.postProcessStages.fxaa&&(this.viewer.scene.postProcessStages.fxaa.enabled=!1);let s=window.devicePixelRatio;this.viewer.resolutionScale=s,this.viewer.scene.postProcessStages.fxaa.enabled=!1,this.viewer.scene.highDynamicRange=!1,this.setCollisionDetection(!1),this.setHeightBasedZoom(!0)}_enable3DMode(){this._removeCameraLockListener&&(this._removeCameraLockListener(),this._removeCameraLockListener=null);const e=this.viewer.scene.screenSpaceCameraController;e.enableRotate=!0,e.enableTilt=!0,e.enableLook=!0,this.viewer.scene.morphTo3D(0),this.setMouseHabit(0),this.setCollisionDetection(!0),this.viewer.scene.screenSpaceCameraController.minimumZoomDistance=1,this.setHeightBasedZoom(!1)}async changeBaseMap(e,t){if(this.is2d){this.viewer.imageryLayers.removeAll();return}const n=Date.now();this.lastBaseMapRequestId=n;const s=this.viewer.imageryLayers,o=[];if(e==="tianditu"){const r=t?.token||"c25f14fb6bd4397cf8fe45144ff768d6",a=t?.layerType||"img_w",l=a.split("_"),c=l[0]||"img",h=l[1]||"w";let u="";c==="img"?u="cia":c==="vec"?u="cva":c==="ter"&&(u="cta");const p=u?`${u}_${h}`:"";o.push(new this.cesium.WebMapTileServiceImageryProvider({url:`https://{s}.tianditu.gov.cn/${a}/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${c}&STYLE=default&TILEMATRIXSET=${h}&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${r}`,layer:c,style:"default",format:"tiles",tileMatrixSetID:h,maximumLevel:18,subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"]})),t.showAnnotation!==!1&&p&&o.push(new this.cesium.WebMapTileServiceImageryProvider({url:`https://{s}.tianditu.gov.cn/${p}/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${u}&STYLE=default&TILEMATRIXSET=${h}&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${r}`,layer:u,style:"default",format:"tiles",tileMatrixSetID:h,maximumLevel:18,subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"]}))}else if(e==="arcgis"){console.log("Switching to ArcGIS...");const r=t?.url||"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer";try{if(this.cesium.ArcGisMapServerImageryProvider.fromUrl){const a=this.cesium.ArcGisMapServerImageryProvider.fromUrl(r,{enablePickFeatures:!1}),l=new Promise((h,u)=>setTimeout(()=>u(new Error("ArcGIS metadata request timed out")),3e3)),c=await Promise.race([a,l]);o.push(c)}else o.push(new this.cesium.ArcGisMapServerImageryProvider({url:r,enablePickFeatures:!1}))}catch(a){console.warn("ArcGIS provider failed (or timed out), fallback to XYZ template",a),o.push(new this.cesium.UrlTemplateImageryProvider({url:`${r}/tile/{z}/{y}/{x}`,maximumLevel:19,credit:"ArcGIS Layer"}))}}else if(e==="tianditu_img")return this.changeBaseMap("tianditu",{...t,layerType:"img_w"});if(this.lastBaseMapRequestId!==n){console.log("BaseMap switch cancelled due to new request.");return}s.removeAll(),o.forEach(r=>s.addImageryProvider(r))}async searchLocation(e,t){if(!e)return null;if(!t)throw new Error("缺少天地图 Token");const s=JSON.stringify({keyWord:e,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}),o=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(s)}&type=query&tk=${encodeURIComponent(t)}`,r=await fetch(o);if(!r.ok)throw new Error(`HTTP ${r.status}`);return await r.json()}setShadowsEnable(e){this.is2d||(this.viewer.shadows=e,this.viewer.terrainShadows=e?this.cesium.ShadowMode.ENABLED:this.cesium.ShadowMode.DISABLED,this.viewer.shadowMap&&(this._shadowDarkness===void 0?this.viewer.shadowMap.darkness=e?.7:.3:this.viewer.shadowMap.darkness=this._shadowDarkness))}_shadowDarkness;setShadowDarkness(e){this.is2d||(this._shadowDarkness=e,this.viewer.shadowMap&&(this.viewer.shadowMap.darkness=e))}setTime(e){if(this.is2d)return;let t;if(e instanceof Date)t=e;else{const s=this.cesium.JulianDate.now();t=this.cesium.JulianDate.toDate(s),t.setHours(e),t.setMinutes(0),t.setSeconds(0)}const n=this.cesium.JulianDate.fromDate(t);this.viewer.clock.currentTime=n}setModelColorAdjustment(e){if(this.is2d)return;const t=this.viewer,n=this.cesium;if(!t||!t.scene)return;const s=e.brightness!==void 0?e.brightness:1,o=e.contrast!==void 0?e.contrast:1,r=e.saturation!==void 0?e.saturation:1,a=t.scene.primitives,l=a.length,c=!!n.CustomShader;for(let h=0;h<l;++h){const u=a.get(h);if(u instanceof n.Cesium3DTileset)if(c)if(u.customShader&&u.customShader.isModelAdjustment)e.brightness!==void 0&&u.customShader.setUniform("u_brightness",s),e.contrast!==void 0&&u.customShader.setUniform("u_contrast",o),e.saturation!==void 0&&u.customShader.setUniform("u_saturation",r);else{const p=new n.CustomShader({uniforms:{u_brightness:{type:n.UniformType.FLOAT,value:s},u_contrast:{type:n.UniformType.FLOAT,value:o},u_saturation:{type:n.UniformType.FLOAT,value:r}},fragmentShaderText:`
|
|
101
|
+
`;Rr=document.createElement("style"),Rr.textContent=i,document.head.appendChild(Rr)}function AB(){if(um)return;yB(),Ue=document.createElement("div"),Ue.className="tech-alert-wrapper",(pc||document.body).appendChild(Ue);const e={setup(){return()=>$e.visible?d.h(oe.Alert,{class:`tech-alert tech-alert-${$e.type}`,message:$e.title,description:$e.description,showIcon:$e.showIcon,closable:$e.closable,onClose:()=>{$e.visible=!1}},{icon:()=>$e.type==="loading"?d.h(As.LoadingOutlined):$e.type==="success"?d.h(As.CheckCircleOutlined):$e.type==="error"?d.h(As.CloseCircleOutlined):$e.type==="warning"?d.h(As.ExclamationCircleOutlined):d.h(As.InfoCircleOutlined)}):null}};hm=d.createVNode(e),d.render(hm,Ue),um=!0}function oo(i){AB(),fc&&clearTimeout(fc),$e.type=i.type||"info",$e.title=i.title||"",$e.description=i.description||"",$e.closable=i.closable??!1,$e.showIcon=i.showIcon??!0,$e.visible=!0;const e=i.container||pc;Ue&&(e?(Ue.parentNode!==e&&e.appendChild(Ue),Ue.style.position="absolute",Ue.style.top="20px",Ue.style.left="50%",Ue.style.transform="translateX(-50%)"):(Ue.parentNode!==document.body&&document.body.appendChild(Ue),Ue.style.position="fixed",Ue.style.top="20px",Ue.style.left="50%",Ue.style.transform="translateX(-50%)"));const t=i.duration??($e.type==="loading"?0:3);t>0&&(fc=setTimeout(()=>{$e.visible=!1},t*1e3))}const pe={setContainer:i=>{pc=i,Ue&&i&&Ue.parentNode!==i&&(i.appendChild(Ue),Ue.style.position="absolute")},info:(i,e,t,n)=>oo({type:"info",title:i,description:e,duration:t,container:n}),success:(i,e,t,n)=>oo({type:"success",title:i,description:e,duration:t,container:n}),error:(i,e,t,n)=>oo({type:"error",title:i,description:e,duration:t,container:n}),warning:(i,e,t,n)=>oo({type:"warning",title:i,description:e,duration:t,container:n}),loading:(i,e,t)=>oo({type:"loading",title:i,description:e,duration:0,container:t}),close:()=>{$e.visible=!1}};class vB{cesium;viewer;events=new _s;lastBaseMapRequestId=0;_removeCameraLockListener=null;currentMode="3d";defaultMapBound={minLon:-180,maxLon:180,minLat:-90,maxLat:90};constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}get is2d(){return this.currentMode==="2d"}setGlobeEnvironmentVisible(e){if(this.is2d){this.viewer.scene.globe.show=e,this.viewer.scene.globe.showGroundAtmosphere=!1,this.viewer.scene.skyAtmosphere.show=!1,this.viewer.scene.sun.show=!1,this.viewer.scene.moon.show=!1,this.viewer.scene.skyBox.show=!1;return}const{scene:t}=this.viewer;t.globe&&(t.globe.show=e,t.globe.showGroundAtmosphere=e,e||(t.globe.depthTestAgainstTerrain=!1)),t.skyAtmosphere&&(t.skyAtmosphere.show=e),t.sun&&(t.sun.show=e),t.moon&&(t.moon.show=e),t.skyBox&&(t.skyBox.show=e)}setGlobeColor(e){const t=this.cesium.Color.fromCssColorString(e);t&&(this.viewer.scene.backgroundColor=t,this.viewer.scene.globe.baseColor=t)}setBackgroundColor(e){const t=this.viewer.container;t&&(t.style.background=e);try{const n=this.cesium.Color.fromCssColorString(e);n?(this.viewer.scene.backgroundColor=n,this.viewer.scene.globe.baseColor=n):(this.viewer.scene.backgroundColor=this.cesium.Color.TRANSPARENT,this.viewer.scene.globe.baseColor=this.cesium.Color.TRANSPARENT)}catch{this.viewer.scene.backgroundColor=this.cesium.Color.TRANSPARENT,this.viewer.scene.globe.baseColor=this.cesium.Color.TRANSPARENT}}setSkyBox(e){const t=this.viewer.scene,n=t.skyBox?t.skyBox.show:!0;if(e===null){this._defaultSkyBox&&(this._defaultSkyBox.show=n,t.skyBox=this._defaultSkyBox);return}this._defaultSkyBox||(this._defaultSkyBox=t.skyBox);const s=new this.cesium.SkyBox({sources:{positiveX:`${e}/px.png`,negativeX:`${e}/nx.png`,positiveY:`${e}/py.png`,negativeY:`${e}/ny.png`,positiveZ:`${e}/pz.png`,negativeZ:`${e}/nz.png`}});s.show=n,t.skyBox=s}async setTerrainEnable(e){if(!(this.is2d&&e))if(e)try{const t=this.cesium.ArcGISTiledElevationTerrainProvider.fromUrl("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer"),n=new Promise((s,o)=>setTimeout(()=>o(new Error("ArcGIS Terrain request timed out")),5e3));this.viewer.terrainProvider=await Promise.race([t,n])}catch(t){console.warn("Failed to load ArcGIS terrain (or timed out), trying Cesium World Terrain...",t);try{this.cesium.Terrain&&this.cesium.Terrain.fromWorldTerrain?this.viewer.terrainProvider=await this.cesium.Terrain.fromWorldTerrain({requestWaterMask:!0,requestVertexNormals:!0}):this.viewer.terrainProvider=this.cesium.createWorldTerrain({requestWaterMask:!0,requestVertexNormals:!0})}catch(n){console.error("Failed to enable terrain (both ArcGIS and Ion failed):",n),this.viewer.terrainProvider=new this.cesium.EllipsoidTerrainProvider}}else this.viewer.terrainProvider=new this.cesium.EllipsoidTerrainProvider}setDepthTestEnable(e){if(!this.viewer.scene.globe.show){this.viewer.scene.globe.depthTestAgainstTerrain=!1;return}this.viewer.scene.globe.depthTestAgainstTerrain=e}setCadMode(e){this.currentMode!==e&&(this.currentMode=e,this.is2d?this._enable2DMode():this._enable3DMode())}_enable2DMode(){const e=this.cesium,t=this.viewer.scene;this.setGlobeEnvironmentVisible(!0);const n=t.screenSpaceCameraController;this.setBackgroundColor("#000000"),this.setGlobeColor("#000000"),this.viewer.imageryLayers.removeAll(),n.enableZoomInertia=!1,n.enableTilt=!1,n.enableLook=!1,n.enableCollisionDetection=!1,n.inertiaSpin=0,n.inertiaZoom=0,n.inertiaTranslate=0,this.viewer.camera.setView({orientation:{heading:0,pitch:e.Math.toRadians(-90),roll:0}}),this._removeCameraLockListener&&(this._removeCameraLockListener(),this._removeCameraLockListener=null),this.viewer.resolutionScale=1,this.viewer.scene.postProcessStages&&this.viewer.scene.postProcessStages.fxaa&&(this.viewer.scene.postProcessStages.fxaa.enabled=!1);let s=window.devicePixelRatio;this.viewer.resolutionScale=s,this.viewer.scene.postProcessStages.fxaa.enabled=!1,this.viewer.scene.highDynamicRange=!1,this.setCollisionDetection(!1),this.setHeightBasedZoom(!0)}_enable3DMode(){this._removeCameraLockListener&&(this._removeCameraLockListener(),this._removeCameraLockListener=null);const e=this.viewer.scene.screenSpaceCameraController;e.enableRotate=!0,e.enableTilt=!0,e.enableLook=!0,this.viewer.scene.morphTo3D(0),this.setMouseHabit(0),this.setCollisionDetection(!0),this.viewer.scene.screenSpaceCameraController.minimumZoomDistance=1,this.setHeightBasedZoom(!1)}async changeBaseMap(e,t){if(this.is2d){this.viewer.imageryLayers.removeAll();return}const n=Date.now();this.lastBaseMapRequestId=n;const s=this.viewer.imageryLayers,o=[];if(e==="tianditu"){const r=t?.token||"c25f14fb6bd4397cf8fe45144ff768d6",a=t?.layerType||"img_w",l=a.split("_"),c=l[0]||"img",h=l[1]||"w";let u="";c==="img"?u="cia":c==="vec"?u="cva":c==="ter"&&(u="cta");const p=u?`${u}_${h}`:"";o.push(new this.cesium.WebMapTileServiceImageryProvider({url:`https://{s}.tianditu.gov.cn/${a}/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${c}&STYLE=default&TILEMATRIXSET=${h}&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${r}`,layer:c,style:"default",format:"tiles",tileMatrixSetID:h,maximumLevel:18,subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"]})),t.showAnnotation!==!1&&p&&o.push(new this.cesium.WebMapTileServiceImageryProvider({url:`https://{s}.tianditu.gov.cn/${p}/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=${u}&STYLE=default&TILEMATRIXSET=${h}&FORMAT=tiles&TILEMATRIX={TileMatrix}&TILEROW={TileRow}&TILECOL={TileCol}&tk=${r}`,layer:u,style:"default",format:"tiles",tileMatrixSetID:h,maximumLevel:18,subdomains:["t0","t1","t2","t3","t4","t5","t6","t7"]}))}else if(e==="arcgis"){console.log("Switching to ArcGIS...");const r=t?.url||"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer";try{if(this.cesium.ArcGisMapServerImageryProvider.fromUrl){const a=this.cesium.ArcGisMapServerImageryProvider.fromUrl(r,{enablePickFeatures:!1}),l=new Promise((h,u)=>setTimeout(()=>u(new Error("ArcGIS metadata request timed out")),3e3)),c=await Promise.race([a,l]);o.push(c)}else o.push(new this.cesium.ArcGisMapServerImageryProvider({url:r,enablePickFeatures:!1}))}catch(a){console.warn("ArcGIS provider failed (or timed out), fallback to XYZ template",a),o.push(new this.cesium.UrlTemplateImageryProvider({url:`${r}/tile/{z}/{y}/{x}`,maximumLevel:19,credit:"ArcGIS Layer"}))}}else if(e==="tianditu_img")return this.changeBaseMap("tianditu",{...t,layerType:"img_w"});if(this.lastBaseMapRequestId!==n){console.log("BaseMap switch cancelled due to new request.");return}s.removeAll(),o.forEach(r=>s.addImageryProvider(r))}async searchLocation(e,t){if(!e)return null;if(!t)throw new Error("缺少天地图 Token");const s=JSON.stringify({keyWord:e,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}),o=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(s)}&type=query&tk=${encodeURIComponent(t)}`,r=await fetch(o);if(!r.ok)throw new Error(`HTTP ${r.status}`);return await r.json()}setShadowsEnable(e){this.is2d||(this.viewer.shadows=e,this.viewer.terrainShadows=e?this.cesium.ShadowMode.ENABLED:this.cesium.ShadowMode.DISABLED,this.viewer.shadowMap&&(this._shadowDarkness===void 0?this.viewer.shadowMap.darkness=e?.7:.3:this.viewer.shadowMap.darkness=this._shadowDarkness))}_shadowDarkness;setShadowDarkness(e){this.is2d||(this._shadowDarkness=e,this.viewer.shadowMap&&(this.viewer.shadowMap.darkness=e))}setTime(e){if(this.is2d)return;let t;if(e instanceof Date)t=e;else{const s=this.cesium.JulianDate.now();t=this.cesium.JulianDate.toDate(s),t.setHours(e),t.setMinutes(0),t.setSeconds(0)}const n=this.cesium.JulianDate.fromDate(t);this.viewer.clock.currentTime=n}setModelColorAdjustment(e){if(this.is2d)return;const t=this.viewer,n=this.cesium;if(!t||!t.scene)return;const s=e.brightness!==void 0?e.brightness:1,o=e.contrast!==void 0?e.contrast:1,r=e.saturation!==void 0?e.saturation:1,a=t.scene.primitives,l=a.length,c=!!n.CustomShader;for(let h=0;h<l;++h){const u=a.get(h);if(u instanceof n.Cesium3DTileset)if(c)if(u.customShader&&u.customShader.isModelAdjustment)e.brightness!==void 0&&u.customShader.setUniform("u_brightness",s),e.contrast!==void 0&&u.customShader.setUniform("u_contrast",o),e.saturation!==void 0&&u.customShader.setUniform("u_saturation",r);else{const p=new n.CustomShader({uniforms:{u_brightness:{type:n.UniformType.FLOAT,value:s},u_contrast:{type:n.UniformType.FLOAT,value:o},u_saturation:{type:n.UniformType.FLOAT,value:r}},fragmentShaderText:`
|
|
102
102
|
void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) {
|
|
103
103
|
// 1. 亮度 (Brightness) - RGB 乘法
|
|
104
104
|
material.diffuse *= u_brightness;
|
|
@@ -118,7 +118,7 @@ northing meters`+i;var p=u/2,f=0,m=0,y,g,A,v,w;return p>0&&(y=1e5/Math.pow(10,p)
|
|
|
118
118
|
// 通常不需要 clamp,除非开启 HDR 后期望超亮,但负值需要避免
|
|
119
119
|
material.diffuse = max(material.diffuse, vec3(0.0));
|
|
120
120
|
}
|
|
121
|
-
`});p.isModelAdjustment=!0,u.customShader=p}else e.brightness!==void 0&&e.brightness!==1&&!u.style&&(u.style=new n.Cesium3DTileStyle({color:`color('white') * ${e.brightness}`}))}}setModelBrightness(e){this.setModelColorAdjustment({brightness:e})}_defaultSkyBox=null;_updateLightDirection=e=>{e.light instanceof this.cesium.DirectionalLight&&(e.light.direction=e.camera.directionWC)};setEnvironmentMapEnable(e){this.is2d||(e?(this.viewer.scene.light=new this.cesium.DirectionalLight({direction:this.viewer.scene.camera.directionWC}),this.viewer.scene.preRender.addEventListener(this._updateLightDirection)):(this._defaultSkyBox&&(this.viewer.scene.skyBox=this._defaultSkyBox),this.viewer.scene.preRender.removeEventListener(this._updateLightDirection),this.viewer.scene.light=new this.cesium.SunLight),this.viewer.scene.imageBasedLighting&&(this.viewer.scene.imageBasedLighting.imageBasedLightingFactor=e?new this.cesium.Cartesian2(2,2):new this.cesium.Cartesian2(1,1)))}setAmbientOcclusion(e){if(this.is2d)return;const t=this.viewer.scene;if(!t||!t.postProcessStages||!t.postProcessStages.ambientOcclusion)return;const n=t.postProcessStages.ambientOcclusion;n.enabled=e,e&&(n.uniforms.ambientOcclusionOnly=!1,n.uniforms.intensity=3,n.uniforms.bias=.1,n.uniforms.lengthCap=.03,n.uniforms.stepSize=1,n.uniforms.blurStepSize=.86)}setCollisionDetection(e){if(this.is2d){this.viewer.scene.screenSpaceCameraController.enableCollisionDetection=!1;return}const t=this.viewer.scene.screenSpaceCameraController;t.enableCollisionDetection=e,e||t.minimumZoomDistance<1&&(t.minimumZoomDistance=1)}_customZoomHandler=null;setHeightBasedZoom(e){const t=this.viewer.scene.screenSpaceCameraController,n=this.cesium;if(this.viewer.camera.frustum.near=1e-4,this.viewer.camera.frustum.far=1e8,e||(this.viewer.camera.frustum.near=.1),this._customZoomHandler&&(this._customZoomHandler.destroy(),this._customZoomHandler=null),!e){t.zoomEventTypes.includes(n.CameraEventType.WHEEL)||t.zoomEventTypes.push(n.CameraEventType.WHEEL);return}t.zoomEventTypes=t.zoomEventTypes.filter(o=>o!==n.CameraEventType.WHEEL),this._customZoomHandler=new n.ScreenSpaceEventHandler(this.viewer.scene.canvas);let s=null;this._customZoomHandler.setInputAction(o=>{s=o.endPosition},n.ScreenSpaceEventType.MOUSE_MOVE),this._customZoomHandler.setInputAction(o=>{const r=this.viewer.camera,a=r.positionCartographic.height,l=Math.sign(o);if(a<.15&&l>0){pe.info("无法继续放大");return}const c=.3;let h=0;if(l>0){const m=a-1;h=m>0?m*c:0}else h=a*c;h=Math.max(.1,h),console.log(a);let u=null;if(!s)u=r.direction;else{const m=r.getPickRay(s);if(m){let y=this.viewer.scene.pickPosition(s);if(!y){const g=n.IntersectionTests.rayEllipsoid(m,this.viewer.scene.globe.ellipsoid);g&&(y=n.Ray.getPoint(m,g.start))}if(y){const g=n.Cartesian3.subtract(y,r.position,new n.Cartesian3);u=n.Cartesian3.normalize(g,new n.Cartesian3)}else u=r.direction}else u=r.direction}const p=l>0?h:-h*2,f=n.Cartesian3.multiplyByScalar(u,p,new n.Cartesian3);r.position=n.Cartesian3.add(r.position,f,new n.Cartesian3)},n.ScreenSpaceEventType.WHEEL)}setMouseHabit(e){if(this.is2d)return;const t=this.viewer.scene.screenSpaceCameraController;t.enableTranslate=!0,t.enableRotate=!0,t.enableZoom=!0,t.enableTilt=!0,t.enableLook=!1,t.lookEventTypes=[],e===1?(t.rotateEventTypes=[this.cesium.CameraEventType.RIGHT_DRAG],t.zoomEventTypes=[this.cesium.CameraEventType.MIDDLE_DRAG,this.cesium.CameraEventType.WHEEL,this.cesium.CameraEventType.PINCH],t.tiltEventTypes=[this.cesium.CameraEventType.PINCH,this.cesium.CameraEventType.LEFT_DRAG]):(t.rotateEventTypes=[this.cesium.CameraEventType.LEFT_DRAG],t.zoomEventTypes=[this.cesium.CameraEventType.RIGHT_DRAG,this.cesium.CameraEventType.WHEEL,this.cesium.CameraEventType.PINCH],t.tiltEventTypes=[this.cesium.CameraEventType.PINCH,this.cesium.CameraEventType.MIDDLE_DRAG])}}class bB{cesium;viewer;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}getCameraView(){const e=this.viewer.camera;return{position:{x:e.position.x,y:e.position.y,z:e.position.z},destination:{x:e.position.x,y:e.position.y,z:e.position.z},orientation:{heading:e.heading,pitch:e.pitch,roll:e.roll},duration:1}}flyToCameraView(e){const{position:t,orientation:n,duration:s}=e,o=new this.cesium.Cartesian3(t.x,t.y,t.z),r=new this.cesium.HeadingPitchRoll(n.heading,n.pitch,n.roll);!s||s<=0?this.viewer.camera.setView({destination:o,orientation:r}):this.viewer.camera.flyTo({destination:o,orientation:r,duration:s})}getCurrentCameraPositionAndTarget(){const e=this.getCameraView();return{position:e.position,target:{heading:e.orientation.heading,pitch:e.orientation.pitch,roll:e.orientation.roll},duration:e.duration}}setCameraView(e){const t=e.target||e.orientation||{},n=e.destination||e.position||{};this.flyToCameraView({position:{x:Number(n.x),y:Number(n.y),z:Number(n.z)},destination:{x:Number(n.x),y:Number(n.y),z:Number(n.z)},orientation:{heading:Number(t.heading||0),pitch:Number(t.pitch||0),roll:Number(t.roll||0)},duration:e.duration})}flyToLonLatHeight(e,t,n,s=1){const o=this.cesium.Cartesian3.fromDegrees(e,t,n),r={heading:this.cesium.Math.toRadians(0),pitch:this.cesium.Math.toRadians(-90),roll:0};!s||s<=0?this.viewer.camera.setView({destination:o,orientation:r}):this.viewer.camera.flyTo({destination:o,orientation:r,duration:s})}}function wB(i){const{container:e,appContext:t,methods:n,viewerOptions:s,options:o,callbacks:r}=i,a=new _s,l=window.Cesium;if(!l)throw new Error("Cesium is not loaded");e.id=`cesium-container-${cC()}`;const c={animation:!1,timeline:!1,infoBox:!1,homeButton:!1,fullscreenButton:!1,sceneModePicker:!1,navigationHelpButton:!1,geocoder:!1,baseLayerPicker:!1,selectionIndicator:!1,heightBasedZoom:!0,creditContainer:document.createElement("div"),contextOptions:{webgl:{alpha:!0,preserveDrawingBuffer:!0}}},h=t?.config?.globalProperties?.$leitingBimOptions,u={...c,...h?.viewerOptions??{},...s??{}},p=new l.Viewer(e,u);p.camera.setView({destination:l.Cartesian3.fromDegrees(108,32,1e7),orientation:{heading:l.Math.toRadians(0),pitch:l.Math.toRadians(-90),roll:0}});let f=n;if(!f&&h&&(h.methods||(h.methods={}),f=h.methods),f){const m=new EC({cesium:l,viewer:p,options:o,callbacks:r}),y=new ju({cesium:l,viewer:p}),g=new vB({cesium:l,viewer:p}),A=new xC({cesium:l,viewer:p}),v=new TS({cesium:l,viewer:p}),w=o?.watermark!==!1;y.watermarkEnabled=w,v.watermarkEnabled=w;const C=new bB({cesium:l,viewer:p});let S;const I=new uc({cesium:l,viewer:p});o&&(o.globe!==void 0&&g.setGlobeEnvironmentVisible(o.globe),o.terrain!==void 0&&g.setTerrainEnable(o.terrain),o.depthTest!==void 0&&g.setDepthTestEnable(o.depthTest),o.mapProvider&&o.mode!=="2d"&&g.changeBaseMap(o.mapProvider,{token:o.tiandituToken,layerType:o.tiandituLayerType,showAnnotation:o.tiandituShowLabel,url:o.arcgisUrl}),o.shadows!==void 0&&g.setShadowsEnable(o.shadows),o.environmentMap!==void 0&&g.setEnvironmentMapEnable(o.environmentMap),o.ambientOcclusion!==void 0&&g.setAmbientOcclusion(o.ambientOcclusion),o.time!==void 0&&g.setTime(o.time),o.brightness!==void 0&&g.setModelBrightness(o.brightness),o.backgroundColor!==void 0&&g.setBackgroundColor(o.backgroundColor),o.collision!==void 0&&g.setCollisionDetection(o.collision),o.mouseHabit!==void 0&&g.setMouseHabit(o.mouseHabit),o.heightBasedZoom!==void 0&&g.setHeightBasedZoom(o.heightBasedZoom)),o&&o.mode==="2d"&&(console.log("InitMap: Setting CAD Mode 2D"),g.setCadMode("2d"),S=new dm({cesium:l,viewer:p})),y.events.on("tilesetLoaded",b=>{m.baseCompt.attachTileset(b,m.baseCompt.selectedColor),m.baseSection.attachTileset(b,b.leiting?.model?.modelId),f&&f.tilesLoad3dTiles&&f.tilesLoad3dTiles(b),o?.tilesLoad3dTiles&&o.tilesLoad3dTiles(b.leiting)}),y.events.on("loadingStatus",b=>{f&&f.onLoadingStatus&&f.onLoadingStatus(b)}),y.events.on("mountAll3Dtiles",({modelList:b})=>{o?.mountAll3Dtiles&&o.mountAll3Dtiles(b),f?.mountAll3Dtiles&&f.mountAll3Dtiles(b)}),y.events.on("configureLoaded",b=>{f.setConfigure(b)}),y.events.on("updateModels",({modelList:b})=>{o?.updateModels&&o.updateModels(b),f?.updateModels&&f.updateModels(b)}),A.events.on("mountAllCad",b=>{o?.mountAllCad&&o.mountAllCad(b),f?.mountAllCad&&f.mountAllCad(b)}),v.events.on("mountAllGISCad",b=>{o?.mountAllGISCad&&o.mountAllGISCad(b),f?.mountAllGISCad&&f.mountAllGISCad(b)}),m.baseCompt.loadNodeDetailsForModel=b=>y.loadNodeDetailsForModel(b),m.baseCompt.selectionChange(b=>{b.length!==0&&(o?.selectionChange&&o.selectionChange(b),f?.selectionChange&&f.selectionChange(b))}),f.onSearchComponent=b=>{o?.searchComponent&&o.searchComponent(b),f?.searchComponent&&f.searchComponent(b)};const x=f.saveRegion;f.saveRegion=b=>{o?.saveRegion&&o.saveRegion(b),x&&x!==o?.saveRegion&&x(b)};const M=f.saveCadCalibration;f.saveCadCalibration=b=>{o?.saveCadCalibration&&o.saveCadCalibration(b),M&&M!==o?.saveCadCalibration&&M(b)};const L=f.saveCadRegion;f.saveCadRegion=b=>{o?.saveCadRegion&&o.saveCadRegion(b),L&&L!==o?.saveCadRegion&&L(b)},f.getCesium=()=>l,f.getViewer=()=>p,f.getAnnotationInstance=()=>S,f.getMeasureInstance=()=>I,f.flyToCamera=b=>{C.setCameraView(b)},f.flyToLonLatHeight=(b,B,R,O=1)=>{C.flyToLonLatHeight(b,B,R,O)},f.flyTo=f.flyToCamera,f.getCameraState=()=>C.getCameraView(),f.getCameraInfo=f.getCameraState,f.restoreCameraState=b=>C.flyToCameraView(b),f.flyToCameraView=f.restoreCameraState,f.getCameraPositionTarget=()=>C.getCurrentCameraPositionAndTarget(),f.getCurrentCameraPositionAndTarget=f.getCameraPositionTarget,f.setCameraLookAt=b=>C.setCameraView(b),f.setCameraView=f.setCameraLookAt,f.setCanvasBackground=b=>g.setBackgroundColor(b),f.setBackgroundColor=f.setCanvasBackground,f.setAntiAliasing=b=>m.enableCesiumFXAA(b),f.enableCesiumFXAA=f.setAntiAliasing,f.setSceneVisibility=b=>m.setSceneOptions(b),f.setSceneOptions=f.setSceneVisibility,f.addDebugPoint=(b,B,R=0)=>{p.entities.add({position:l.Cartesian3.fromDegrees(b,B,R),point:{pixelSize:10,color:l.Color.RED}})},f.addPoint=f.addDebugPoint,f.toggleDebugLabels=()=>m.enableTestLabel(),f.enableTestLabel=f.toggleDebugLabels,f.captureScreenshot=()=>{const b=p.scene.canvas;return p.render(),b.toDataURL("image/png")},f.getImageBase64=f.captureScreenshot,f.captureDomScreenshot=(b,B)=>m.getSnapDomSImageBase64(b,B),f.getSnapDomSImageBase64=f.captureDomScreenshot,f.addModels=b=>y.addModels(b),f.add3DtilesModel=f.addModels,f.addObliquePhotography=b=>y.addOSGB(b),f.addOSGB=f.addObliquePhotography,f.adjustOSGBModelMatrix=b=>y.updateOSGBMatrix(b),f.updateOSGBMatrix=f.adjustOSGBModelMatrix,f.setModelVisibility=b=>y.showModels(b),f.showModels=f.setModelVisibility,f.showTileset=f.setModelVisibility,f.removeModels=b=>y.deleteModels(b),f.deleteModels=f.removeModels,f.clearAllModels=()=>{y.deleteAllModels(),a.emit("deleteAllModels")},f.deleteAllModelList=f.clearAllModels,f.deleteAllModels=f.clearAllModels,f.flyToModel=b=>y.flyToTileset(b),f.flyToTileset=f.flyToModel,f.flyToByModelId=f.flyToModel,f.setModelBrightness=b=>m.updateModelEffect(b),f.updateModelEffect=f.setModelBrightness,f.getAllTilesets=()=>y.getMapTileset(),f.getMapTileset=f.getAllTilesets,f.getCurrentModelId=()=>y.getBIMmodelId(),f.getBIMmodelId=f.getCurrentModelId,f.getLoadedModels=()=>y.getModelList(),f.getModelList=f.getLoadedModels,f.loadModelStructure=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelStructure: modelId is required");return}return await y.loadTreeForModel(B)},f.loadTreeForModel=f.loadModelStructure,f.loadModelDetails=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelDetails: modelId is required");return}return await y.loadNodeDetailsForModel(B)},f.loadNodeDetailsForModel=f.loadModelDetails,f._loadNodeDetailsForModel=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelDetails: modelId is required");return}return await y._loadNodeDetailsForModel(B)},f.setMapTileset=b=>y.setMapTileset(b),f.setCurrentModelId=b=>y.setBIMmodelId(b),f.setBIMmodelId=f.setCurrentModelId,f.setModelList=b=>y.setModelList(b),f.highlightComponents=(b,B={})=>m.baseCompt.setSelectColorUserModelCpt(b,B),f.setSelectColorUserModelCpt=f.highlightComponents,m.baseCompt.setLoadNodeDetailsCallback(b=>y.loadNodeDetailsForModel(b)),f.highlightAllComponents=(b,B)=>m.baseCompt.setAllSelectColorUserModelCpt(b,B),f.setAllSelectColorUserModelCpt=f.highlightAllComponents,f.setSelectColorUserModelCptByClear=(b,B)=>{m.baseCompt.clearAllHaveSelected(),m.baseCompt.setSelectColorUserModelCpt(b.selectCpts,B??{rank:0})},f.clearSelectColorUserModelCpt=()=>m.baseCompt.clearAllHaveSelected(),f.selectComponents=(b,B)=>{m.baseCompt.clearAllHaveSelected(),m.baseCompt.setSelectColorUserModelCpt(b,B??{rank:0})},f.setSelecteds=f.selectComponents,f.setSelectionColor=(b,B,R,O)=>m.baseCompt.setSelectedColorRgba(b,B,R,O),f.setSelectedColor=f.setSelectionColor,f.clearSelection=()=>m.baseCompt.clearAllHaveSelected(),f.clearAllHaveSelected=f.clearSelection,f.getSelectedComponents=b=>m.baseCompt.getSelected(b),f.getSelected=f.getSelectedComponents,f.setClickToHighlightEnabled=b=>{m.baseCompt.clickToHighlightEnabled=b},f.getClickToHighlightEnabled=()=>m.baseCompt.clickToHighlightEnabled,f.onSelectionChange=b=>{m.baseCompt.selectionChange(b)},f.selectionChange=f.onSelectionChange,f.flyToComponents=b=>m.baseCompt.flyToObjects(b),f.flyToObjects=f.flyToComponents,f.setConstructionData=async b=>{if(b&&Array.isArray(b)){const B=new Set;b.forEach(R=>{R.mergeCpts&&Array.isArray(R.mergeCpts)&&R.mergeCpts.forEach(O=>{O.modelId&&B.add(O.modelId)})}),B.size>0&&await Promise.all(Array.from(B).map(R=>f.loadNodeDetailsForModel(R)))}m.baseCompt.setAllConstructionProgressTracking(b)},f.setAllConstructionProgressTracking=f.setConstructionData,f.startConstructionSimulation=()=>m.baseCompt.enableConstructionProgressTracking(),f.enableAllConstructionProgressTracking=f.startConstructionSimulation,f.stopConstructionSimulation=()=>m.baseCompt.disableConstructionProgressTracking(),f.disableConstructionProgressTracking=f.stopConstructionSimulation,f.disableAllConstructionProgressTracking=f.stopConstructionSimulation,f.resetConstructionSimulation=()=>m.baseCompt.freshConstructionProgressTracking(),f.freshConstructionProgressTracking=f.resetConstructionSimulation,f.restartConstructionSimulation=()=>m.baseCompt.reStartAnimation(),f.reStartAnimation=f.restartConstructionSimulation,f.resumeFlyTo=()=>m.baseCompt.resumeFlyTo(),f.pauseConstructionSimulation=()=>m.baseCompt.pauseFlyTo(),f.pauseFlyTo=f.pauseConstructionSimulation,f.pauseAnimation=f.pauseConstructionSimulation,f.resumeConstructionSimulation=()=>m.baseCompt.resumeFlyTo(),f.resumeAnimation=f.resumeConstructionSimulation,f.setComponentsVisibility=async b=>await m.baseCompt.setComponentVisibility(b),f.setElementsListVisible=f.setComponentsVisibility,f.setAllComponentsVisibility=async b=>await m.baseCompt.setAllComponentsVisibility(b),f.setAllElementsVisible=f.setAllComponentsVisibility,f.isolateComponents=b=>m.baseCompt.isolateComponentVisibility(b),f.isolateComponentVisibility=f.isolateComponents,f.getComponentsByVisibility=b=>m.baseCompt._getComponentsByVisibility(b),f.getShowCpts=b=>m.baseCompt.getComponentsByVisibility(b),f.getElementsVisible=b=>m.baseCompt.getComponentsByVisibility(b),f.setComponentVisibility=f.setComponentsVisibility,f.enableSectioning=(b,B)=>m.baseSection.open(b,B),f.openSection=f.enableSectioning,f.disableSectioning=b=>m.baseSection.close(b),f.closeSection=f.disableSectioning,f.updateSectionBox=b=>m.baseSection.updateRange(b),f.updateSectionRange=f.updateSectionBox,f.getSectionBox=()=>m.baseSection.getRange(),f.getSectionRange=f.getSectionBox,f.fitSectionToModel=()=>m.baseSection.fitToModels(),f.fitToModels=f.fitSectionToModel,f.setSectionBoxVisibility=b=>m.baseSection.setBoxVisibility(b),f.startFirstPersonMode=()=>{m.baseCompt.disableSelection(),m.basePlayer.openPlayer()},f.openPlayer=f.startFirstPersonMode,f.startCameraRoam=()=>{m.baseCompt.disableSelection(),m.basePlayer.openCameraRoam()},f.stopFirstPersonMode=()=>{m.basePlayer.closePlayer(),m.baseCompt.enableSelection()},f.closePlayer=f.stopFirstPersonMode,f.setPlayerPosition=b=>m.basePlayer.setPersonPosition(b),f.setPersonPosition=f.setPlayerPosition,f.setPlayerDefaultPosition=()=>m.basePlayer.setDefaultPosition(),f.setWalkSpeed=b=>m.basePlayer.setSpeed({speed:b}),f.setPlayerSpeed=f.setWalkSpeed,f.setPlayerConfig=b=>m.basePlayer.setParams(b),f.setPlayerParams=f.setPlayerConfig,f.setPlayerAction=(b,B)=>m.basePlayer.setMoveState(b,B),f.setPlayerMoveState=f.setPlayerAction,f.bindPlayerControls=b=>m.basePlayer.bindUiKeys(b),f.bindPlayerUiKeys=f.bindPlayerControls,f.setGlobeVisibility=b=>g.setGlobeEnvironmentVisible(b),f.setGlobeEnvironmentVisible=f.setGlobeVisibility,f.setTerrainVisibility=b=>g.setTerrainEnable(b),f.setTerrainEnable=f.setTerrainVisibility,f.setDepthTest=b=>g.setDepthTestEnable(b),f.setDepthTestEnable=f.setDepthTest,f.setBaseMap=(b,B)=>g.changeBaseMap(b,B),f.changeBaseMap=f.setBaseMap,f.setWorldTime=b=>g.setTime(b),f.setTime=f.setWorldTime,f.setGisOptions=b=>{b.globe!==void 0&&g.setGlobeEnvironmentVisible(b.globe),b.elevation!==void 0&&g.setTerrainEnable(b.elevation),b.depthTestAgainstTerrain!==void 0&&g.setDepthTestEnable(b.depthTestAgainstTerrain),b.rendering!==void 0&&g.setAmbientOcclusion(b.rendering)},f.setShadowVisibility=b=>g.setShadowsEnable(b),f.setShadowsEnable=f.setShadowVisibility,f.setEnvironmentMapVisibility=b=>g.setEnvironmentMapEnable(b),f.setEnvironmentMapEnable=f.setEnvironmentMapVisibility,f.setAOVisibility=b=>g.setAmbientOcclusion(b),f.setAmbientOcclusion=f.setAOVisibility,f.setBackgroundColor=b=>g.setGlobeColor(b),f.setGlobeColor=f.setBackgroundColor,f.setModelBrightness=b=>g.setModelBrightness(b),f.adjustModelColor=b=>g.setModelColorAdjustment(b),f.setModelColorAdjustment=f.adjustModelColor,f.setShadowIntensity=b=>{g.setShadowDarkness?g.setShadowDarkness(b):console.warn("baseSetting.setShadowDarkness is not available. Please reload the page.")},f.setShadowDarkness=f.setShadowIntensity,f.switchSceneMode=async b=>{const B=b?"2d":"3d";await g.setCadMode(B),b&&!S&&(S=new dm({cesium:l,viewer:p}),f.setGlobeVisibility(!0)),a.emit("setMode",B)},f.setSceneMode=f.switchSceneMode,f.set2d=b=>f.switchSceneMode(b),f.is2dMode=()=>g.is2d,f.setMouseControlMode=b=>g.setMouseHabit(b),f.setMouseHabit=f.setMouseControlMode,f.setCollisionEnabled=b=>g.setCollisionDetection(b),f.setCollisionDetection=f.setCollisionEnabled,f.searchAndLocate=(b,B)=>g.searchLocation(b,B),f.searchLocation=f.searchAndLocate,f.getConfigure=()=>(console.warn("getConfigure is not initialized. Please ensure LeitingSetting component is mounted."),{}),f.setConfigure=b=>{console.warn("setConfigure is not initialized. Please ensure LeitingSetting component is mounted.",b)},f.addCadModel=b=>{const B={...b};return B.files&&!B.fileNames&&(B.fileNames=B.files),B.fileNames||(B.fileNames=[]),A.addDxfModel(B)},f.addDxfModel=f.addCadModel,f.addGISCadModel=b=>{const B={...b};return B.files&&!B.fileNames&&(B.fileNames=B.files),B.fileNames||(B.fileNames=[]),v.addGISCadModel(B)},f.addVectorTileByUrlTemplate=b=>v.addVectorTileByUrlTemplate(b),f.addVectorTileByTilesManifest=b=>v.addVectorTileByTilesManifest(b),f.showGISCadModel=b=>v.showJson(b),f.addGeoJsonLayer=b=>v.addGeoJsonLayer(b),f.showGISCadLayer=b=>v.showJsonByLayer(b),f.deleteGISCad=b=>v.deleteCad(b),f.deleteAllGISCad=()=>v.deleteAllCad(),f.flyToGISCadModel=(b={})=>v.flyToCadModel(b),f.flyGisCadModel=b=>v.flyToCadModel({modelId:b}),f.getGISCadModels=b=>v.getDxfModels(b),f.getGISCadModelsList=()=>v.getDxfModelsList(),f.getGISCadLayers=b=>v.getMapLayers(b),f.getGISCadModelId=()=>v.getModelId(),f.getDefaultGISCadTransformConfig=()=>v.getDefaultCoordinateTransformConfig(),f.transformGISCadCoordinate=b=>v.transformCoordinate(b),f.beginEditGISCad=b=>v.beginEditGISCad(b),f.adjustGISCadModel=b=>v.adjustGISCadModel(b),f.commitEditGISCad=b=>v.commitEditGISCad(b),f.cancelEditGISCad=b=>v.cancelEditGISCad(b),f.deleteCad=b=>A.deleteCad(b),f.deleteAllCad=()=>A.deleteAllCad(),f.showCadModel=b=>A.showJson(b),f.showGeoJson=b=>A.showJson(b),f.showDxfModel=f.showCadModel,f.showCadLayer=b=>A.showJsonByLayer(b),f.showDxfLayer=f.showCadLayer,f.flyToCadModel=(b={})=>A.flyToCadModel(b),f.getCadModels=b=>A.getDxfModels(b),f.getDxfModels=f.getCadModels,f.getCadLayers=b=>A.getMapLayers(b),f.getDxfLayers=f.getCadLayers,f.getCadModelId=()=>A.getModelId(),f.setCadOpen=b=>A.setDxfOpen(b),f.setDxfOpen=f.setCadOpen,f.getCadOpen=()=>A.getDxfOpen(),f.getDxfOpen=f.getCadOpen,f.adjustCadModel=b=>A.adjustingModelByCad(b),f.adjustingModelByCad=f.adjustCadModel,f.saveAnnotations=()=>{let b=null;return S&&(b=S.saveAnnotations()),o?.saveAnnotations&&o.saveAnnotations(b),b},f.loadAnnotations=b=>S?S.loadAnnotations(b):!1,f.flyToTopView=()=>{A.flyToCadModel()},f.menuEvents=a,f.addMenuItems=b=>{a.emit("insertMenu",b)},f.insertMenu=f.addMenuItems,f.filterMenuItems=b=>{a.emit("setMenuListFilter",b)},f.setMenuListFilter=f.filterMenuItems,f.setMenuVisibility=b=>{a.emit("showMenu",b)},f.showMenu=f.setMenuVisibility,f.setPanelVisibility=(b,B)=>{a.emit("setMenuActive",b,B)},f.setMenuActive=f.setPanelVisibility,f.addContextMenuItems=b=>{console.warn("addContextMenuItems is not initialized yet. Please wait for LeitingBIM component to mount.",b)},f.insertContextMenu=f.addContextMenuItems,f.removeContextMenuItems=b=>{console.warn("removeContextMenuItems is not initialized yet.",b)},f.deleteContextMenu=f.removeContextMenuItems,f.closeContextMenu=()=>{console.warn("closeContextMenu is not initialized yet.")},f.hideContextMenu=f.closeContextMenu,f.getModelTree=()=>{const b=[],B=y.getMapTileset();return Object.keys(B).forEach(R=>{const O=B[R];if(O&&O.leiting&&O.leiting.tree){const N=O.leiting.tree;Array.isArray(N)?b.push(...N):b.push(N)}}),b},f.getTree=f.getModelTree,f.getAllComponentDetails=()=>{const b=y.getMapTileset(),B={},R=[];try{Object.keys(b).forEach(O=>{const N=b[O];if(!N||!N.leiting)return;const D=N.leiting,E=D.node,T=D.model.formData,P=D.box;if(!E||!E.nodeExtras)return;const F=D.model.modelId;B[F]=E.nodeExtras;const V=E.nodeExtras.element;if(!V)return;const G=P?P.center:{x:0,y:0,z:0};Object.values(V).forEach(k=>{if(k.box3)try{const _=l.Quaternion.fromAxisAngle(l.Cartesian3.UNIT_Z,l.Math.toRadians(T.totalRotation||0)),U=l.Matrix4.fromRotationTranslation(l.Matrix3.fromQuaternion(_),new l.Cartesian3(0,0,0)),H=l.Cartesian3.fromDegrees(T.longitude,T.latitude,T.height),q=l.Transforms.eastNorthUpToFixedFrame(H);l.Matrix4.multiply(q,U,q);const X=new l.Cartesian3(G.x,G.y,0),de=new l.Cartesian3;l.Matrix4.multiplyByPoint(q,X,de);const fe=l.Cartographic.fromCartesian(de),me=k.box3?.Center?.x||0,be=k.box3?.Center?.y||0,_e=k.box3?.Center?.z||0,Je=new l.Cartesian3(-G.x+me,-G.y+be,0+_e),lt=l.Matrix4.fromTranslation(Je),ct=l.Matrix4.clone(lt);l.Matrix4.multiply(U,ct,ct);const _t=l.Cartesian3.fromDegrees(fe.longitude/Math.PI*180,fe.latitude/Math.PI*180,T.height),vt=l.Transforms.eastNorthUpToFixedFrame(_t);l.Matrix4.multiply(vt,ct,vt);const j=l.Cartographic.fromCartesian(new l.Cartesian3(vt[12],vt[13],vt[14]));k.box3.cartographic={longitude:j.longitude/Math.PI*180,latitude:j.latitude/Math.PI*180,height:j.height};const Y={id:k.uniqueId,billboard:[{theme:"Tag9999",position:[k.box3.cartographic.longitude,k.box3.cartographic.latitude,k.box3.cartographic.height],options:{text:k.name}}]};R.push(Y)}catch(_){console.warn("Error calculating component position:",_)}})})}catch(O){console.error("getAllComponents error:",O)}return B},f.getAllComponents=f.getAllComponentDetails,f.getComponentInfoList=async b=>{if(!Array.isArray(b))return[];const B=y.getMapTileset(),R=[],O=[],N={};b.forEach(E=>{const P=B[E.modelId]?.leiting?.model?.dbName;P&&E.elementId&&O.push({dbName:P,elementId:E.elementId,modelId:E.modelId})});const D=new Set;if(b.forEach(E=>{const T=B[E.modelId],P=`${E.modelId}_${E.elementId}`;N[P]||T&&T.leiting&&!T.leiting?.node?.nodeExtras&&T.leiting.model?.nodeUrl&&D.add(E.modelId)}),D.size>0&&y._loadNodeDetailsForModel)try{const E=Array.from(D).map(T=>y._loadNodeDetailsForModel(T));await Promise.all(E)}catch(E){console.error("Failed to load node details in getComponentInfoList",E)}try{b.forEach(E=>{const T=E.modelId,P=E.elementId,F=B[T];if(!F||!F.leiting)return;const V=`${T}_${P}`,G=N[V];let k=null;if(G)k=G;else{const _=F.leiting.node?.nodeExtras?.element||F.leiting.node?.nodeExtras;_&&_[P]&&(k=JSON.parse(JSON.stringify(_[P])))}if(k){if(k.elementId=P,k.modelId=T,k.box3&&!k.box3.cartographic)try{const _=F.leiting,U=_.model.formData,H=_.box,q=H?H.center:{x:0,y:0,z:0},X=l.Quaternion.fromAxisAngle(l.Cartesian3.UNIT_Z,l.Math.toRadians(U.totalRotation||0)),de=l.Matrix4.fromRotationTranslation(l.Matrix3.fromQuaternion(X),new l.Cartesian3(0,0,0)),fe=l.Cartesian3.fromDegrees(U.longitude,U.latitude,U.height),me=l.Transforms.eastNorthUpToFixedFrame(fe);l.Matrix4.multiply(me,de,me);const be=new l.Cartesian3(q.x,q.y,0),_e=new l.Cartesian3;l.Matrix4.multiplyByPoint(me,be,_e);const Je=l.Cartographic.fromCartesian(_e),lt=k.box3?.Center?.x||0,ct=k.box3?.Center?.y||0,_t=k.box3?.Center?.z||0,vt=new l.Cartesian3(-q.x+lt,-q.y+ct,0+_t),j=l.Matrix4.fromTranslation(vt),Y=l.Matrix4.clone(j);l.Matrix4.multiply(de,Y,Y);const te=l.Cartesian3.fromDegrees(Je.longitude/Math.PI*180,Je.latitude/Math.PI*180,U.height),ze=l.Transforms.eastNorthUpToFixedFrame(te);l.Matrix4.multiply(ze,Y,ze);const It=l.Cartographic.fromCartesian(new l.Cartesian3(ze[12],ze[13],ze[14]));k.box3.cartographic={longitude:It.longitude/Math.PI*180,latitude:It.latitude/Math.PI*180,height:It.height}}catch(_){console.warn("Error calculating component position:",_)}R.push(k)}})}catch(E){console.error("getComponentInfoList processing error:",E)}return R},f.getCptInfos=f.getComponentInfoList,f.baseCompt=m.baseCompt,f.setTeleportTarget=b=>{f.onSetTeleportTarget&&f.onSetTeleportTarget(b)},window.Methods=f}return console.log("methods",f),{Cesium:l,viewer:p,methods:f,menuEvents:a}}function mc(i){return d.getCurrentScope()?(d.onScopeDispose(i),!0):!1}function gc(i){return typeof i=="function"?i():d.unref(i)}const CB=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const EB=Object.prototype.toString,xB=i=>EB.call(i)==="[object Object]",IB=()=>{};function SB(i){return d.getCurrentInstance()}function fm(i,e=!0,t){SB()?d.onMounted(i,t):e?i():d.nextTick(i)}function ln(i){var e;const t=gc(i);return(e=t?.$el)!=null?e:t}const ro=CB?window:void 0;function MB(...i){let e,t,n,s;if(typeof i[0]=="string"||Array.isArray(i[0])?([t,n,s]=i,e=ro):[e,t,n,s]=i,!e)return IB;Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]);const o=[],r=()=>{o.forEach(h=>h()),o.length=0},a=(h,u,p,f)=>(h.addEventListener(u,p,f),()=>h.removeEventListener(u,p,f)),l=d.watch(()=>[ln(e),gc(s)],([h,u])=>{if(r(),!h)return;const p=xB(u)?{...u}:u;o.push(...t.flatMap(f=>n.map(m=>a(h,f,m,p))))},{immediate:!0,flush:"post"}),c=()=>{l(),r()};return mc(c),c}function TB(){const i=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{i.value=!0},e),i}function pm(i){const e=TB();return d.computed(()=>(e.value,!!i()))}function mm(i,e={}){const{window:t=ro}=e,n=pm(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const o=d.ref(!1),r=c=>{o.value=c.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",r):s.removeListener(r))},l=d.watchEffect(()=>{n.value&&(a(),s=t.matchMedia(gc(i)),"addEventListener"in s?s.addEventListener("change",r):s.addListener(r),o.value=s.matches)});return mc(()=>{l(),a(),s=void 0}),o}function BB(i,e,t={}){const{window:n=ro,...s}=t;let o;const r=pm(()=>n&&"ResizeObserver"in n),a=()=>{o&&(o.disconnect(),o=void 0)},l=d.computed(()=>Array.isArray(i)?i.map(u=>ln(u)):[ln(i)]),c=d.watch(l,u=>{if(a(),r.value&&n){o=new ResizeObserver(e);for(const p of u)p&&o.observe(p,s)}},{immediate:!0,flush:"post"}),h=()=>{a(),c()};return mc(h),{isSupported:r,stop:h}}function _B(i,e={width:0,height:0},t={}){const{window:n=ro,box:s="content-box"}=t,o=d.computed(()=>{var u,p;return(p=(u=ln(i))==null?void 0:u.namespaceURI)==null?void 0:p.includes("svg")}),r=d.ref(e.width),a=d.ref(e.height),{stop:l}=BB(i,([u])=>{const p=s==="border-box"?u.borderBoxSize:s==="content-box"?u.contentBoxSize:u.devicePixelContentBoxSize;if(n&&o.value){const f=ln(i);if(f){const m=f.getBoundingClientRect();r.value=m.width,a.value=m.height}}else if(p){const f=Array.isArray(p)?p:[p];r.value=f.reduce((m,{inlineSize:y})=>m+y,0),a.value=f.reduce((m,{blockSize:y})=>m+y,0)}else r.value=u.contentRect.width,a.value=u.contentRect.height},t);fm(()=>{const u=ln(i);u&&(r.value="offsetWidth"in u?u.offsetWidth:e.width,a.value="offsetHeight"in u?u.offsetHeight:e.height)});const c=d.watch(()=>ln(i),u=>{r.value=u?e.width:0,a.value=u?e.height:0});function h(){l(),c()}return{width:r,height:a,stop:h}}function gm(i={}){const{window:e=ro,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:n=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=i,r=d.ref(t),a=d.ref(n),l=()=>{e&&(o?(r.value=e.innerWidth,a.value=e.innerHeight):(r.value=e.document.documentElement.clientWidth,a.value=e.document.documentElement.clientHeight))};if(l(),fm(l),MB("resize",l,{passive:!0}),s){const c=mm("(orientation: portrait)");d.watch(c,()=>l())}return{width:r,height:a}}function Fr(){const{width:i,height:e}=gm(),t=mm("(pointer: coarse)"),n=d.ref(!1),s=d.ref(!1),o=d.ref(!0),r=d.ref("other"),a=d.ref("other"),l=d.ref("medium"),c=d.ref("portrait"),h=()=>{const m=navigator.userAgent.toLowerCase(),y=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i,g=navigator;if("userAgentData"in navigator&&g.userAgentData?.mobile!==void 0)return g.userAgentData.mobile||y.test(m);if(y.test(m))return!0;const A=/windows nt/i.test(m),v=/macintosh|mac os x/i.test(m)&&!/mobile/i.test(m),w=/linux/i.test(m)&&!/android/i.test(m);return!1},u=()=>{const m=navigator.userAgent.toLowerCase();n.value=h(),s.value=i.value>=768&&i.value<1024&&t.value,o.value=!n.value,/iphone|ipad|ipod/i.test(m)?r.value="ios":/android/i.test(m)?r.value="android":/win/i.test(m)?r.value="windows":/mac/i.test(m)?r.value="macos":/linux/i.test(m)&&(r.value="linux"),/safari/i.test(m)&&!/chrome/i.test(m)?a.value="safari":/chrome/i.test(m)?a.value="chrome":/firefox/i.test(m)?a.value="firefox":/edge/i.test(m)&&(a.value="edge"),i.value<576?l.value="small":i.value<1024?l.value="medium":l.value="large",c.value=i.value>e.value?"landscape":"portrait"},p=()=>{u()};d.onMounted(()=>{u(),window.addEventListener("resize",p),window.addEventListener("orientationchange",p)}),d.onUnmounted(()=>{window.removeEventListener("resize",p),window.removeEventListener("orientationchange",p)});const f=()=>({isMobile:n.value,isTablet:s.value,isDesktop:o.value,isTouchDevice:t.value,os:r.value,browser:a.value,screenSize:l.value,orientation:c.value});return{isMobile:d.readonly(n),isTablet:d.readonly(s),isDesktop:d.readonly(o),isTouchDevice:d.readonly(t),os:d.readonly(r),browser:d.readonly(a),screenSize:d.readonly(l),orientation:d.readonly(c),width:i,height:e,info:f}}const kB={class:"title"},PB={class:"actions"},DB={class:"card-body"},NB=d.defineComponent({__name:"LeitingDraggableCard",props:{visible:{type:Boolean,default:!0},open:{type:Boolean,default:void 0},title:{type:String,default:"Title"},initialPosition:{type:Object,default:()=>({x:0,y:0})},width:{type:[Number,String],default:300},minWidth:{type:Number,default:200},fullHeight:{type:Boolean,default:!1},align:{type:String,default:""}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=d.inject("leiting-theme",d.ref("dark")),{isMobile:s}=Fr(),o=e,r=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:x=>{o("update:visible",x),o("update:open",x)}}),a=d.ref(null),l=d.ref(t.initialPosition?.x||0),c=d.ref(t.initialPosition?.y||0),h=d.ref(t.width),u=d.ref(t.fullHeight?"100%":"600px");d.watch(()=>t.fullHeight,x=>{x?u.value="100%":u.value==="100%"&&(u.value="600px")});const{height:p}=gm();d.watch(p,()=>{t.fullHeight&&(u.value="100%")});const f=d.ref(!1),m=x=>{f.value=!0,x.preventDefault(),x.stopPropagation();const M=x.clientX,L=x.clientY,b=typeof h.value=="number"?h.value:a.value?.offsetWidth||0,B=typeof u.value=="number"?u.value:a.value?.offsetHeight||0,R=N=>{if(!f.value)return;N.preventDefault();const D=N.clientX-M,E=N.clientY-L,T=b+D,P=B+E;T>100&&(h.value=T),P>100&&(u.value=P)},O=()=>{f.value=!1,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",O)},y=d.computed(()=>({left:`${l.value}px`,top:`${c.value}px`,width:typeof h.value=="number"?`${h.value}px`:h.value,height:typeof u.value=="number"?`${u.value}px`:u.value,position:"absolute",zIndex:2e3})),g=()=>{d.nextTick(()=>{if(a.value){const x=a.value.offsetParent||document.body,M=x.clientWidth,L=x.clientHeight,b=typeof h.value=="number"?h.value:a.value.offsetWidth||350,B=typeof u.value=="number"?u.value:a.value.offsetHeight||600;l.value+b>M&&(l.value=Math.max(0,M-b-20)),c.value+B>L&&(c.value=Math.max(0,L-B-20)),l.value<0&&(l.value=0),c.value<0&&(c.value=0)}})},A=d.ref(!1),v=x=>{if(x.target.closest(".close-btn")||x.target.closest(".actions"))return;A.value=!0,x.preventDefault(),x.stopPropagation();const M=x.clientX,L=x.clientY,b=l.value,B=c.value,R=N=>{if(!A.value)return;N.preventDefault();const D=N.clientX-M,E=N.clientY-L;l.value=b+D,c.value=B+E},O=()=>{A.value=!1,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O),g()};document.addEventListener("mousemove",R),document.addEventListener("mouseup",O)},w=()=>{d.nextTick(()=>{if(t.align&&a.value){const x=a.value.offsetParent||document.body,M=typeof h.value=="number"?h.value:a.value.offsetWidth||350;t.align==="right"?l.value=Math.max(0,x.clientWidth-M-20):t.align==="center"&&(l.value=Math.max(0,(x.clientWidth-M)/2))}g()})};d.onMounted(()=>{t.align?w():g()}),d.watch(r,x=>{x&&(t.align?w():g())});const C=()=>{r.value=!1,o("close")},S=x=>{if(x.target.closest(".close-btn")||x.target.closest(".actions")||x.touches.length!==1)return;A.value=!0,x.preventDefault(),x.stopPropagation();const M=x.touches[0],L=M?.clientX??0,b=M?.clientY??0,B=l.value,R=c.value,O=D=>{if(!A.value||D.touches.length!==1)return;D.preventDefault();const E=D.touches[0],T=(E?.clientX??0)-L,P=(E?.clientY??0)-b;l.value=B+T,c.value=R+P},N=()=>{A.value=!1,document.removeEventListener("touchmove",O),document.removeEventListener("touchend",N),g()};document.addEventListener("touchmove",O,{passive:!1}),document.addEventListener("touchend",N)},I=x=>{if(x.touches.length!==1)return;f.value=!0,x.preventDefault(),x.stopPropagation();const M=x.touches[0],L=M?.clientX??0,b=M?.clientY??0,B=typeof h.value=="number"?h.value:a.value?.offsetWidth||0,R=typeof u.value=="number"?u.value:a.value?.offsetHeight||0,O=D=>{if(!f.value||D.touches.length!==1)return;D.preventDefault();const E=D.touches[0],T=(E?.clientX??0)-L,P=(E?.clientY??0)-b,F=B+T,V=R+P;F>100&&(h.value=F),V>100&&(u.value=V)},N=()=>{f.value=!1,document.removeEventListener("touchmove",O),document.removeEventListener("touchend",N)};document.addEventListener("touchmove",O,{passive:!1}),document.addEventListener("touchend",N)};return(x,M)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{ref_key:"cardRef",ref:a,class:d.normalizeClass(["draggable-card leiting-scroll",["leiting-theme-"+d.unref(n)]]),style:d.normalizeStyle(y.value)},[d.createElementVNode("div",{ref:"headerRef",class:"card-header",onMousedown:v,onTouchstart:S},[d.createElementVNode("span",kB,d.toDisplayString(i.title),1),d.createElementVNode("div",PB,[d.renderSlot(x.$slots,"header-extra",{},void 0,!0),d.createElementVNode("span",{class:"close-btn",onClick:C},"×")])],544),d.createElementVNode("div",DB,[d.renderSlot(x.$slots,"default",{},void 0,!0)]),d.unref(s)?d.createCommentVNode("",!0):(d.openBlock(),d.createElementBlock("div",{key:0,class:"resize-handle",onMousedown:m,onTouchstart:I},[...M[0]||(M[0]=[d.createElementVNode("svg",{viewBox:"0 0 10 10",width:"10",height:"10",fill:"currentColor"},[d.createElementVNode("path",{d:"M10 10 L10 2 L2 10 Z"})],-1)])],32))],6)),[[d.vShow,r.value]])}}),Be=(i,e)=>{const t=i.__vccOpts||i;for(const[n,s]of e)t[n]=s;return t},gt=Be(NB,[["__scopeId","data-v-4d38393b"]]);function ym(i){const e=d.ref([]),t=d.ref([]),n=d.ref([]),s=d.ref(""),o=d.ref(!0);d.watch(()=>d.unref(i),u=>{if(!u||u.length===0)return;const p=[],f=(g,A)=>{g.forEach(v=>{const w=v.id||v.key||v.$id,C=v.modelId||A;C&&(v.modelId=C),w&&p.push(w),v.children&&v.children.length>0&&f(v.children,C)})};f(u);const m=new Set(n.value);let y=!1;p.forEach(g=>{m.has(g)||(m.add(g),y=!0)}),y&&(n.value=Array.from(m))},{immediate:!0,deep:!0});const r=d.computed(()=>{const u=d.unref(i);if(!u)return[];const p=[],f=(m,y)=>{m.forEach(g=>{const A=g.id||g.key||g.$id,v=g.name||g.title;p.push({key:A,title:v,parentKey:y}),g.children&&g.children.length>0&&f(g.children,A)})};return f(u),p}),a=u=>{e.value=u,o.value=!1},l=u=>{n.value=u},c=u=>{t.value=u},h=u=>r.value.find(f=>f.key===u)?.parentKey;return d.watch(s,u=>{if(!u)return;const f=r.value.filter(y=>y.title&&y.title.toLowerCase().includes(u.toLowerCase())).map(y=>y.parentKey),m=new Set;f.forEach(y=>{let g=y;for(;g;)m.add(g),g=h(g)}),e.value=[...m],o.value=!0}),{expandedKeys:e,selectedKeys:t,checkedKeys:n,searchValue:s,autoExpandParent:o,onExpand:a,onCheck:l,onSelect:c}}const LB={class:"search-box"},RB={key:0},FB={style:{color:"#f50"}},OB={key:1},GB={key:1,class:"empty-tip"},Or=Be(d.defineComponent({__name:"LeitingTree",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"构件树"},width:{type:[Number,String],default:320},treeData:{type:Array,default:()=>[]},initialPosition:{type:Object,default:()=>({x:0,y:0})},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close","select","check"],setup(i,{emit:e}){const t=oe.Input.Search,n=oe.Tree,s=i,o=e,r=d.inject("leiting-theme",d.ref("dark")),a=d.inject("leitingMethods"),l=b=>{a?.value?.onSearchComponent&&a.value.onSearchComponent(b)},c=d.computed({get:()=>s.open!==void 0?s.open:s.visible,set:b=>{o("update:visible",b),o("update:open",b)}}),h=d.ref(null),{height:u}=_B(h),p=d.computed(()=>u.value||300),f=d.ref({children:"children",title:"name",key:"id"}),m=d.ref([]),{expandedKeys:y,selectedKeys:g,checkedKeys:A,searchValue:v,autoExpandParent:w}=ym(d.toRef(s,"treeData")),C=(b,B)=>{if(!B)return b;const R=B.toLowerCase();return b.reduce((O,N)=>{const E=(N.name||N.title||"").toLowerCase().includes(R);if(N.children&&N.children.length>0){const T=C(N.children,B);(T.length>0||E)&&O.push({...N,children:T})}else E&&O.push({...N});return O},[])};d.watch([()=>s.treeData,v],([b,B])=>{b?m.value=C(b,B||""):m.value=[]},{immediate:!0,deep:!0});const S=b=>{y.value=b,w.value=!1},I=b=>{const B=[],R=O=>{if(!O.children||O.children.length===0){const D=O.element_Id;O.modelId&&D&&B.push({modelId:O.modelId,elementId:D})}else O.children.forEach(R)};return R(b),B},x=(b,B)=>{A.value=b,o("check",b,B);const R=[],O=new Set(b.map(D=>String(D))),N=D=>{for(let E=0;E<D.length;E++){const T=D[E];if(!T.children||T.children.length===0){if(!O.has(String(T.id))){const V=T.element_Id;T.modelId&&V&&R.push({modelId:T.modelId,elementId:V,show:!1})}}else T.children&&N(T.children)}};s.treeData&&N(s.treeData),a?.value?.setComponentVisibility&&a.value.setComponentVisibility(R),a?.value?.onTreeCheck&&a.value.onTreeCheck(b,B)},M=(b,B)=>{if(g.value=b,o("select",b,B),B.selected){const R=I(B.node);R.length>0&&a?.value?.flyToObjects&&a.value.flyToObjects({selectCpts:R})}a?.value?.onTreeSelect&&a.value.onTreeSelect(b,B)},L=()=>{o("update:visible",!1),o("close")};return(b,B)=>(d.openBlock(),d.createBlock(gt,{visible:c.value,"onUpdate:visible":B[1]||(B[1]=R=>c.value=R),title:i.title,"initial-position":i.initialPosition,"full-height":i.fullHeight,onClose:L},{default:d.withCtx(()=>[d.createElementVNode("div",{class:d.normalizeClass(["leiting-tree-container",[`theme-${d.unref(r)}`]])},[d.createElementVNode("div",LB,[d.createVNode(d.unref(t),{value:d.unref(v),"onUpdate:value":B[0]||(B[0]=R=>d.isRef(v)?v.value=R:null),placeholder:"搜索构件","allow-clear":"","enter-button":"",onSearch:l},null,8,["value"])]),d.createElementVNode("div",{class:"tree-wrapper",ref_key:"treeWrapperRef",ref:h},[m.value&&m.value.length?(d.openBlock(),d.createBlock(d.unref(n),{key:0,"tree-data":m.value,"field-names":f.value,height:p.value,"expanded-keys":d.unref(y),"auto-expand-parent":d.unref(w),"selected-keys":d.unref(g),"checked-keys":d.unref(A),checkable:"","block-node":"",onExpand:S,onSelect:M,onCheck:x},{title:d.withCtx(({name:R,title:O})=>[(R||O)&&d.unref(v)&&(R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())>-1?(d.openBlock(),d.createElementBlock("span",RB,[d.createTextVNode(d.toDisplayString((R||O).substr(0,(R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())))+" ",1),d.createElementVNode("span",FB,d.toDisplayString(d.unref(v)),1),d.createTextVNode(" "+d.toDisplayString((R||O).substr((R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())+d.unref(v).length)),1)])):(d.openBlock(),d.createElementBlock("span",OB,d.toDisplayString(R||O),1))]),_:1},8,["tree-data","field-names","height","expanded-keys","auto-expand-parent","selected-keys","checked-keys"])):(d.openBlock(),d.createElementBlock("div",GB,"暂无数据"))],512)],2)]),_:1},8,["visible","title","initial-position","full-height"]))}}),[["__scopeId","data-v-3748c20d"]]),UB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",Gr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAERSURBVDhPvZTrEYIwEISTCrQD6EA7gA60AylBK1Aq0A7ECrQDoQPsADrACuLuTMJkIiHxjzezgyR7H3d5KJVSqRAigcaQUjYYX2JgZY/P/O4lEgYYFo7pgPcc2kSCBoIUzDeo0klPPEsNYlX7AKzA/M6ASrRzYoIGG5DAOCvzBvzMOxqQazSgLLI1QdAW5jWpUAPV0AVKIc7FRCuNy7RkWozJtj1BED7ANbpDXHhffFXUwUnZwRYp7qw7Rx8/lLkV9R4QD2w1A8pjW3sA4h5au+pXEBS76P8D6Ut9/nXXaiRQdnBXqBfEC+4GdzSxW5v6F7CTeHnbCVCBsWIE+RYVrdF4DSz6OwgiADDexbmT3X0A4fSDfDjUugcAAAAASUVORK5CYII=",VB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",QB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAHDSURBVDhPlZOxL0NRFIe9ECubhehoIIjJ1HYwCkIiJpUQEkN1YZBobU0kFKNI3iTGYrDRv0BIhLXCYpCwiO35fs25zWva98JNvpz37j33d8+551yvLWIEQXDG0izMe55XjvJz816MUJG1LVuvYJcQrEb5xwkV2JSHGfAhgBJiu63E4oSUzpRtusa+wBooKkWnKOujQYh7SbCShQx0m9cpds4iOseOw7BFmUPwU341IQT2MaOQgi9QND+wiqNnBxT4X7SIbrAqhNI9wiUvJ+W8A99wDEWdwrw25iVkkenAEb5LkIQPuIMJWJGQoriFd+iBCkhc8zUhfJSm7mva5l3aadubDgtpMgGKpB/eoBfuQZFoPNhBj9gTaC3kKkEEGXPswF7Y5rLro1AW8UI6GmelmAzfkUWlNaWt6/iT0DOOA5bqoSuzHfIvofATqSJQb8KoiJbtPi6x2dA9FPjXE1F/uZKrv3IwCFcNqVmoPlal7QJ9q/wZCbk7Ioo9/tehE9q1r0nIxNQbG4YEXdkVjQ5J2OZXbB88gVrgQIJNj9aaT4LboPK7J6O0Ktb1KYtc/aYxGff6h3AYY6Nvzk2GQ1WQTVj4BST70jYaqceXAAAAAElFTkSuQmCC",zB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",HB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",Am="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEcSURBVDhPrZSNDYIwEIXpBOIGjMAIOIE4AbgBGwAbOIJu4Aa4gW4gI+gE9b3mjjSmibSR5ALX3H33W4y1Ns+yrIe0EH7HPC8YnyGjAegkEB5cYyiwrdWXIEc1xnSREGcuiTQEWeg7gG4+CMcl9ALnLkvogwScv+wq6FMQJJCJDgBtBcSAI3QClwe2YZAHcY2Ho4kGAVLA6U5/CEvdp4KYhesFhBPpCZIAz6jStHhproJcHyAHbb5nF+6RZ8CsGslIQaHp/gSxRzlApU4GugPxNuDN/eNarAJxapUPgm8rQ9C1SAI9AOGiHhGApSdnRN8FshbEiLwiLI1rMUM6zSQ0tX9c2lp/Iw0iMIPU38iFIN1mTmOjKa98vyWB4QM5XQnvsbFsyAAAAABJRU5ErkJggg==",YB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",$B="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",jB={class:"menu-container"},WB=["onClick","title"],qB={class:"menu-icon"},KB=["src","alt"],XB={key:3,style:{"font-size":"12px"}},JB={key:0,class:"sub-menu"},ZB=["onClick"],ao=d.defineComponent({__name:"LeitingMenu",props:{visible:{type:Boolean,default:!0},activeIds:{type:Array,default:()=>[]},is2d:{type:Boolean,default:!1},customItems:{type:Array,default:()=>[]}},emits:["action"],setup(i,{emit:e}){const t=i,n=d.inject("leiting-theme",d.ref("dark")),s=d.inject("leiting-menu-size",d.ref("medium")),o=d.inject("leitingMethods",d.ref({})),r=d.computed(()=>n.value||n),a=d.computed(()=>s.value||s),l=d.ref([{ID:"home",title:"主视角",src:UB,key:"homeView"},{ID:"tree",title:"目录树",src:Gr,key:"componentTree"},{ID:"cadLayer",title:"图层",src:Gr,key:"cadLayer"},{ID:"gisCadPosition",title:"GIS调整",src:Am,key:"gisCadPosition"},{ID:"measure",title:"量算",src:VB,key:"measurement"},{ID:"section",title:"剖切",src:QB,key:"section"},{ID:"roam",title:"人物漫游",src:zB,key:"roam"},{ID:"info",title:"构件信息",src:HB,key:"componentInfo"},{ID:"cadPosition",title:"调整位置",src:Am,key:"cadPosition"},{ID:"annotation",title:"标注",src:$B,key:"annotation"},{ID:"setting",title:"设置",src:YB,key:"setting"}]),c=d.ref([]),h=d.ref([...t.activeIds]);d.watch(()=>t.activeIds,C=>{h.value=[...C]},{deep:!0});const u=d.computed(()=>t.visible);o.value&&o.value.menuEvents&&(o.value.menuEvents.on("setMenuListFilter",C=>{c.value=C}),o.value.menuEvents.on("setMenuActive",(C,S)=>{S?h.value.includes(C)||h.value.push(C):h.value=h.value.filter(I=>I!==C)}));const p=d.computed(()=>{let C=l.value;if(t.is2d){const S=["homeView","measurement","cadLayer","gisCadPosition","annotation"];C=C.filter(I=>I.key&&S.includes(I.key))}else{const S=["cadLayer","cadPosition","gisCadPosition","annotation"];C=C.filter(I=>!I.key||!S.includes(I.key))}if(c.value.length>0&&(C=C.filter(S=>!S.key||!c.value.includes(S.key))),t.customItems&&t.customItems.length>0){const S=t.customItems.map(I=>({...I,key:I.ID,src:I.src||I.icon}));return[...C,...S]}return C}),f=e,m=C=>{const S=["homeView"];if(C.key&&S.includes(C.key))h.value.includes(C.ID)||(h.value.push(C.ID),setTimeout(()=>{const x=h.value.indexOf(C.ID);x>-1&&h.value.splice(x,1)},1e3));else{const x=h.value.indexOf(C.ID);x>-1?h.value.splice(x,1):h.value.push(C.ID)}const I=h.value.includes(C.ID);C.func&&C.func(C),C.key&&f("action",C.key,I)},y=C=>{c.value=C},g=C=>{console.log("LeitingMenu received showMenu event:",C)},A=(C,S)=>{const I=p.value.find(x=>x.ID===C||x.key===C);if(I){const x=h.value.indexOf(I.ID);S&&x===-1?h.value.push(I.ID):!S&&x>-1&&h.value.splice(x,1)}};let v=null;const w=()=>{o.value?.menuEvents&&(v&&(v.off("setMenuListFilter",y),v.off("showMenu",g),v.off("setMenuActive",A)),v=o.value.menuEvents,v.on("setMenuListFilter",y),v.on("showMenu",g),v.on("setMenuActive",A))};return d.onMounted(()=>{w()}),d.onUnmounted(()=>{v&&(v.off("setMenuListFilter",y),v.off("showMenu",g),v.off("setMenuActive",A))}),d.watch(o,()=>{w()},{deep:!0}),(C,S)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-menu-wrapper",["leiting-theme-"+r.value,"size-"+a.value]])},[d.createElementVNode("div",jB,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.ID,class:d.normalizeClass(["menu-item",{active:h.value.includes(I.ID)}]),onClick:x=>m(I),title:I.title},[d.createElementVNode("div",qB,[I.src?(d.openBlock(),d.createElementBlock("img",{key:0,src:I.src,alt:I.title},null,8,KB)):typeof I.icon=="object"?(d.openBlock(),d.createBlock(d.resolveDynamicComponent(I.icon),{key:1})):typeof I.icon=="string"?(d.openBlock(),d.createElementBlock("i",{key:2,class:d.normalizeClass(["iconfont",`icon-${I.icon}`])},null,2)):(d.openBlock(),d.createElementBlock("span",XB,d.toDisplayString(I.title.substring(0,2)),1))]),I.children&&I.children.length>0?(d.openBlock(),d.createElementBlock("div",JB,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(I.children,x=>(d.openBlock(),d.createElementBlock("div",{key:x.ID,class:d.normalizeClass(["sub-menu-item",{active:h.value.includes(x.ID)}]),onClick:d.withModifiers(M=>m(x),["stop"])},d.toDisplayString(x.title),11,ZB))),128))])):d.createCommentVNode("",!0)],10,WB))),128))])],2)),[[d.vShow,u.value]])}}),e3={class:"leiting-section-content"},t3={class:"section-form-item"},i3={class:"radio-group"},n3={class:"section-form-item"},s3={class:"switch-container"},o3={class:"switch"},r3={class:"status-text"},a3={class:"section-form-item slider-item"},l3={class:"slider-wrapper"},c3={class:"section-form-item slider-item"},d3={class:"slider-wrapper"},h3={class:"section-form-item slider-item"},u3={class:"slider-wrapper"},f3={class:"section-form-item table-item"},p3={class:"model-table-container"},m3={class:"model-table"},g3={width:"40"},y3=["checked"],A3=["onClick"],v3=["value"],b3={class:"model-name"},lo=Be(d.defineComponent({__name:"LeitingSection",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"剖切控制"},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:N=>{n("update:visible",N),n("update:open",N)}}),r=d.ref("Box"),a=d.ref(!1),l=d.ref([]),c=d.ref([]),h=d.computed(()=>c.value.length===0?!1:c.value.every(N=>l.value.includes(N.modelId))),u=N=>{N.target.checked?l.value=c.value.map(E=>E.modelId):l.value=[],L()},p=d.ref([-10,10]),f=d.ref([-10,10]),m=d.ref([-10,10]),y=d.ref([-100,100]),g=d.ref([-100,100]),A=d.ref([-100,100]);let v=!1;const w=N=>{v=!0;const{targetZPlus:D,targetZMinus:E,targetXPlus:T,targetXMinus:P,targetYPlus:F,targetYMinus:V}=N;m.value=[-E,D],p.value=[-P,T],f.value=[-V,F],setTimeout(()=>{v=!1},100)},C=()=>{v||l.value.length===0||!s?.value?.updateSectionRange||s.value.updateSectionRange({targetZPlus:m.value[1],targetZMinus:-m.value[0],targetXPlus:p.value[1],targetXMinus:-p.value[0],targetYPlus:f.value[1],targetYMinus:-f.value[0]})},S=()=>{s?.value?.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(a.value)},I=N=>{if(!s?.value?.getMapTileset||!s?.value?.openSection)return;const E=s.value.getMapTileset()[N];if(E&&E.leiting?.box){const{min:T,max:P}=E.leiting.box,F=(P.x-T.x)/2,V=(P.y-T.y)/2,G=(P.z-T.z)/2;l.value.length<=1&&(y.value=[-F*2,F*2],g.value=[-V*2,V*2],A.value=[-G*2,G*2],p.value=[-F,F],f.value=[-V,V],m.value=[-G,G],s.value.updateSectionRange&&s.value.updateSectionRange({targetZPlus:G,targetZMinus:G,targetXPlus:F,targetXMinus:F,targetYPlus:V,targetYMinus:V})),s.value.openSection(N,{moveCallBack:w}),s.value.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(a.value)}},x=N=>{const D=l.value.indexOf(N);D>-1?l.value.splice(D,1):l.value.push(N),L()};let M=[];const L=()=>{const N=l.value.filter(E=>!M.includes(E)),D=M.filter(E=>!l.value.includes(E));N.forEach(E=>I(E)),D.forEach(E=>{s?.value?.closeSection&&s.value.closeSection(E)}),M=[...l.value]},b=()=>{},B=()=>{o.value=!1,n("close")},R=()=>{a.value=!1,l.value=[],M=[],p.value=[-10,10],f.value=[-10,10],m.value=[-10,10],y.value=[-100,100],g.value=[-100,100],A.value=[-100,100]};d.watch(()=>t.visible,N=>{N?O():(s?.value?.closeSection&&s.value.closeSection(),R())});const O=()=>{s?.value&&typeof s.value.getModelList=="function"&&(c.value=s.value.getModelList()||[],c.value.length>0&&l.value.length===0&&(l.value=[c.value[0].modelId],M=[...l.value]),t.visible&&l.value.length>0&&(a.value=!0,l.value.forEach(N=>I(N))))};return d.watch(()=>s?.value,()=>{O()},{immediate:!0,deep:!0}),d.onMounted(()=>{O()}),(N,D)=>(d.openBlock(),d.createBlock(gt,{visible:o.value,title:"剖切分析","full-height":i.fullHeight,"onUpdate:visible":B},{default:d.withCtx(()=>[d.createElementVNode("div",e3,[d.createElementVNode("div",t3,[D[8]||(D[8]=d.createElementVNode("span",{class:"label"},"模式",-1)),d.createElementVNode("div",i3,[d.createElementVNode("label",{class:d.normalizeClass(["radio-item",{active:r.value==="Box"}])},[d.withDirectives(d.createElementVNode("input",{type:"radio",value:"Box","onUpdate:modelValue":D[0]||(D[0]=E=>r.value=E),onChange:b},null,544),[[d.vModelRadio,r.value]]),D[7]||(D[7]=d.createTextVNode(" 剖切盒 ",-1))],2)])]),d.createElementVNode("div",n3,[D[10]||(D[10]=d.createElementVNode("span",{class:"label"},"显示",-1)),d.createElementVNode("div",s3,[d.createElementVNode("label",o3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":D[1]||(D[1]=E=>a.value=E),onChange:S},null,544),[[d.vModelCheckbox,a.value]]),D[9]||(D[9]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",r3,d.toDisplayString(a.value?"显示":"隐藏"),1)])]),d.createElementVNode("div",a3,[D[11]||(D[11]=d.createElementVNode("span",{class:"label"},"X 轴",-1)),d.createElementVNode("div",l3,[d.createVNode(d.unref(oe.Slider),{value:p.value,"onUpdate:value":D[2]||(D[2]=E=>p.value=E),range:"",min:y.value[0],max:y.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",c3,[D[12]||(D[12]=d.createElementVNode("span",{class:"label"},"Y 轴",-1)),d.createElementVNode("div",d3,[d.createVNode(d.unref(oe.Slider),{value:f.value,"onUpdate:value":D[3]||(D[3]=E=>f.value=E),range:"",min:g.value[0],max:g.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",h3,[D[13]||(D[13]=d.createElementVNode("span",{class:"label"},"Z 轴",-1)),d.createElementVNode("div",u3,[d.createVNode(d.unref(oe.Slider),{value:m.value,"onUpdate:value":D[4]||(D[4]=E=>m.value=E),range:"",min:A.value[0],max:A.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",f3,[D[15]||(D[15]=d.createElementVNode("span",{class:"label"},"模型",-1)),d.createElementVNode("div",p3,[d.createElementVNode("table",m3,[d.createElementVNode("thead",null,[d.createElementVNode("tr",null,[d.createElementVNode("th",g3,[d.createElementVNode("input",{type:"checkbox",checked:h.value,onChange:u},null,40,y3)]),D[14]||(D[14]=d.createElementVNode("th",null,"名称",-1))])]),d.createElementVNode("tbody",null,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,E=>(d.openBlock(),d.createElementBlock("tr",{key:E.modelId,class:d.normalizeClass({selected:l.value.includes(E.modelId)}),onClick:T=>x(E.modelId)},[d.createElementVNode("td",null,[d.withDirectives(d.createElementVNode("input",{type:"checkbox",value:E.modelId,"onUpdate:modelValue":D[5]||(D[5]=T=>l.value=T),onClick:D[6]||(D[6]=d.withModifiers(()=>{},["stop"])),onChange:L},null,40,v3),[[d.vModelCheckbox,l.value]])]),d.createElementVNode("td",b3,d.toDisplayString(E.modelName),1)],10,A3))),128))])])])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-ee4d9a12"]]),w3={class:"leiting-player-content"},C3={class:"player-form-item"},E3={class:"switch-container"},x3={class:"switch"},I3={class:"status-text"},S3={class:"player-form-item"},M3={class:"switch-container"},T3={class:"switch"},B3={class:"status-text"},_3={class:"player-form-item"},k3={class:"switch-container"},P3={class:"switch"},D3={class:"status-text"},N3={class:"player-form-item slider-item"},L3={class:"slider-wrapper"},R3={class:"value-text"},F3={class:"instructions"},O3={class:"key-map"},G3={class:"key-row"},U3={class:"key-row"},V3={class:"key-row"},Q3={class:"key-row"},z3={class:"key-row"},H3={class:"key-row"},co=Be(d.defineComponent({__name:"LeitingPlayer",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"漫游控制"},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(!1),r=d.ref(!1),a=d.ref(!0),l=d.ref(5),c=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:I=>{n("update:visible",I),n("update:open",I)}}),h=d.ref(null),u=d.ref(null),p=d.ref(null),f=d.ref(null),m=d.ref(null),y=d.ref(null),g=()=>{o.value?v():w()},A=()=>{s?.value?.setPlayerParams&&s.value.setPlayerParams({gravityTest:r.value,collisionTest:a.value})},v=async()=>{s?.value?.openPlayer&&(await s.value.openPlayer(),s.value.setPlayerSpeed&&s.value.setPlayerSpeed(l.value),A(),s.value.bindPlayerUiKeys&&(await d.nextTick(),s.value.bindPlayerUiKeys({moveFront:h.value,moveBack:u.value,moveLeft:p.value,moveRight:f.value,moveUp:m.value,moveDown:y.value})))},w=()=>{s?.value?.closePlayer&&s.value.closePlayer()},C=()=>{s?.value?.setPlayerSpeed&&s.value.setPlayerSpeed(l.value)},S=()=>{c.value=!1,n("close")};return d.watch(()=>t.visible,I=>{I?(o.value=!0,s?.value?v():setTimeout(()=>{s?.value&&v()},100)):o.value&&(o.value=!1,w())},{immediate:!0}),(I,x)=>(d.openBlock(),d.createBlock(gt,{title:i.title,visible:c.value,"full-height":i.fullHeight,"onUpdate:visible":S},{default:d.withCtx(()=>[d.createElementVNode("div",w3,[d.createElementVNode("div",C3,[x[5]||(x[5]=d.createElementVNode("span",{class:"label"},"启用",-1)),d.createElementVNode("div",E3,[d.createElementVNode("label",x3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[0]||(x[0]=M=>o.value=M),onChange:g},null,544),[[d.vModelCheckbox,o.value]]),x[4]||(x[4]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",I3,d.toDisplayString(o.value?"开启":"关闭"),1)])]),d.createElementVNode("div",S3,[x[7]||(x[7]=d.createElementVNode("span",{class:"label"},"重力",-1)),d.createElementVNode("div",M3,[d.createElementVNode("label",T3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[1]||(x[1]=M=>r.value=M),onChange:A},null,544),[[d.vModelCheckbox,r.value]]),x[6]||(x[6]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",B3,d.toDisplayString(r.value?"开启":"关闭"),1)])]),d.createElementVNode("div",_3,[x[9]||(x[9]=d.createElementVNode("span",{class:"label"},"碰撞",-1)),d.createElementVNode("div",k3,[d.createElementVNode("label",P3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[2]||(x[2]=M=>a.value=M),onChange:A},null,544),[[d.vModelCheckbox,a.value]]),x[8]||(x[8]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",D3,d.toDisplayString(a.value?"开启":"关闭"),1)])]),d.createElementVNode("div",N3,[x[10]||(x[10]=d.createElementVNode("span",{class:"label"},"速度",-1)),d.createElementVNode("div",L3,[d.createVNode(d.unref(oe.Slider),{value:l.value,"onUpdate:value":x[3]||(x[3]=M=>l.value=M),min:1,max:10,step:1,onChange:C},null,8,["value"])]),d.createElementVNode("span",R3,d.toDisplayString(l.value),1)]),x[19]||(x[19]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",F3,[x[18]||(x[18]=d.createElementVNode("div",{class:"instruction-title"},"操作说明",-1)),d.createElementVNode("div",O3,[d.createElementVNode("div",G3,[d.createElementVNode("span",{class:"key",ref_key:"btnFront",ref:h},"W",512),x[11]||(x[11]=d.createTextVNode(" 前进 ",-1))]),d.createElementVNode("div",U3,[d.createElementVNode("span",{class:"key",ref_key:"btnBack",ref:u},"S",512),x[12]||(x[12]=d.createTextVNode(" 后退 ",-1))]),d.createElementVNode("div",V3,[d.createElementVNode("span",{class:"key",ref_key:"btnLeft",ref:p},"A",512),x[13]||(x[13]=d.createTextVNode(" 左移 ",-1))]),d.createElementVNode("div",Q3,[d.createElementVNode("span",{class:"key",ref_key:"btnRight",ref:f},"D",512),x[14]||(x[14]=d.createTextVNode(" 右移 ",-1))]),d.createElementVNode("div",z3,[d.createElementVNode("span",{class:"key",ref_key:"btnUp",ref:m},"Q",512),x[15]||(x[15]=d.createTextVNode(" 上升 ",-1))]),d.createElementVNode("div",H3,[d.createElementVNode("span",{class:"key",ref_key:"btnDown",ref:y},"E",512),x[16]||(x[16]=d.createTextVNode(" 下降 ",-1))]),x[17]||(x[17]=d.createElementVNode("div",{class:"key-row"},[d.createElementVNode("span",{class:"mouse-icon"},"🖱️"),d.createTextVNode(" 按住左键拖拽旋转视角 ")],-1))])])])]),_:1},8,["title","visible","full-height"]))}}),[["__scopeId","data-v-ff3f266e"]]),Y3={class:"info-content"},$3={key:0,class:"component-title"},ho=Be(d.defineComponent({__name:"LeitingInfo",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),a=d.ref([]),l=d.ref([]),c=d.ref(0),h=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:A=>{n("update:visible",A),n("update:open",A)}}),u=()=>{h.value=!1},p=A=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[A]||A,f=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],m=async A=>{const v=++c.value;if(l.value=A,!A||A.length===0){o.value=[];return}if(!h.value)return;let w=A;A.length>10&&(pe.warning(`选中构件数量过多(${A.length}个),仅显示前10个`),w=A.slice(0,10));const C=s?.value;let S=C?.getMapTileset?C.getMapTileset():{};r.value=!0;const I=[],x={};w.forEach(b=>{const R=S[b.modelId]?.leiting?.model?.dbName;R&&b.elementId&&I.push({dbName:R,elementId:b.elementId,modelId:b.modelId})});const M=new Set;if(w.forEach(b=>{const B=S[b.modelId],R=`${b.modelId}_${b.elementId}`;x[R]||B&&B.leiting&&!B.leiting?.node?.nodeExtras&&B.leiting.model?.nodeUrl&&M.add(b.modelId)}),M.size>0&&C?._loadNodeDetailsForModel)try{const b=Array.from(M).map(B=>C._loadNodeDetailsForModel(B));await Promise.all(b)}catch(b){console.error("Failed to load node details",b)}if(v!==c.value)return;S=C?.getMapTileset?C.getMapTileset():{};const L=[];w.forEach((b,B)=>{const O=S[b.modelId]?.leiting||{},N=x[`${b.modelId}_${b.elementId}`];let D={modelName:O.model?.modelId||b.modelId};D.elementID||(D.elementID=b.elementId);let E=null;if(N)E=N;else{const F=O.node?.nodeExtras?.element||O.node?.nodeExtras;if(F){const V=D.elementID;F[V]&&(E=F[V])}}E&&E.box3&&(D.length=`${E.box3.length?.toFixed(2)||0}米`,D.width=`${E.box3.width?.toFixed(2)||0}米`,D.height=`${E.box3.height?.toFixed(2)||0}米`);const T=[];E&&(E.name&&(D.elementName=E.name),E.categoryName&&(D.categoryName=E.categoryName),E.familySymbolName&&(D.familySymbolName=E.familySymbolName),E.levelName&&(D.levelName=E.levelName));const P={};if(f.forEach(F=>{D[F]!==void 0&&(P[F]=D[F])}),T.push({name:"基础信息",params:P}),E){const F=Array.isArray(E)?E:Array.isArray(E?.parameters)?E.parameters:null;if(F){if(F.flat().forEach(G=>{if(G&&G.GroupName&&Array.isArray(G.Parameters)){const k={};G.Parameters.forEach(_=>{_.name&&(k[_.name]=_.value??"")}),Object.keys(k).length>0&&T.push({name:G.GroupName,params:k})}}),!Array.isArray(E)){const{parameters:G,...k}=E,_={};Object.keys(k).forEach(U=>{!f.includes(U)&&U!=="uniqueId"&&typeof k[U]!="object"&&(_[U]=k[U])}),Object.keys(_).length>0&&T.push({name:"其他属性",params:_})}}else{let V=!1;if(Object.keys(E).forEach(G=>{E[G]&&typeof E[G]=="object"&&!Array.isArray(E[G])&&(V=!0,T.push({name:G,params:E[G]}))}),!V){const G={};Object.keys(E).forEach(k=>{if(!f.includes(k)&&k!=="batchId"){const _=E[k];typeof _=="string"&&_.length>500?G[k]=_.substring(0,500)+"...":G[k]=_}}),Object.keys(G).length>0&&T.push({name:"属性",params:G})}}}L.push({id:B,title:`${D.modelName}${D.elementName?` - ${D.elementName}`:""}`,groups:T})}),o.value=L,v===c.value&&(r.value=!1),L.length>0?a.value=[`${L[0].id}-基础信息`]:a.value=[]};let y=!1;const g=()=>{if(y)return;const A=s?.value;A&&A.selectionChange&&(A.selectionChange(m),y=!0)};return d.watch(()=>s?.value,()=>{g()},{deep:!0,immediate:!0}),d.watch(h,A=>{A&&l.value.length>0&&m(l.value)}),d.onMounted(()=>{g()}),(A,v)=>(d.openBlock(),d.createBlock(gt,{visible:h.value,title:"构件详情",width:350,align:"right","initial-position":{x:0,y:0},"full-height":i.fullHeight,onClose:u,"onUpdate:visible":v[1]||(v[1]=w=>h.value=w),class:"base-info-card"},{default:d.withCtx(()=>[d.createElementVNode("div",Y3,[d.createVNode(d.unref(oe.Spin),{spinning:r.value},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,w=>(d.openBlock(),d.createElementBlock("div",{key:w.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",$3,d.toDisplayString(w.title),1)):d.createCommentVNode("",!0),d.createVNode(d.unref(oe.Collapse),{activeKey:a.value,"onUpdate:activeKey":v[0]||(v[0]=C=>a.value=C),ghost:"","expand-icon-position":"end"},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(w.groups,C=>(d.openBlock(),d.createBlock(d.unref(oe.CollapsePanel),{key:`${w.id}-${C.name}`,header:C.name},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.Descriptions),{size:"small",bordered:"",column:1,labelStyle:{width:"100px",background:"rgba(255,255,255,0.05)",color:"#aaa"},contentStyle:{color:"#fff"}},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(C.params,(S,I)=>(d.openBlock(),d.createBlock(d.unref(oe.DescriptionsItem),{key:I,label:p(String(I))},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(S),1)]),_:2},1032,["label"]))),128))]),_:2},1024)]),_:2},1032,["header"]))),128))]),_:2},1032,["activeKey"])]))),128))]),_:1},8,["spinning"])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-375a1f55"]]);class yc{viewer;Cesium;pickHandler=null;bimEntityId="";mapEntityId="";constructor(e,t){this.viewer=e,this.Cesium=t}removeMarker(e){if(!this.viewer)return;const t=e==="BIM"?this.bimEntityId:this.mapEntityId;t&&(this.viewer.entities.removeById(t),e==="BIM"?this.bimEntityId="":this.mapEntityId="")}clearMarkers(){this.removeMarker("BIM"),this.removeMarker("MAP")}addMarker(e,t){if(!this.viewer||!this.Cesium)return;this.removeMarker(e);const n=`adjust-marker-${e}-${Date.now()}`;e==="BIM"?this.bimEntityId=n:this.mapEntityId=n,this.viewer.entities.add({id:n,position:this.Cesium.Cartesian3.fromDegrees(t.longitude,t.latitude,t.height),point:{pixelSize:10,color:e==="BIM"?this.Cesium.Color.RED:this.Cesium.Color.ORANGE,outlineColor:this.Cesium.Color.WHITE,outlineWidth:2,disableDepthTestDistance:Number.POSITIVE_INFINITY},label:{text:`${e==="BIM"?"BIM":"地图"}标记点`,font:"14pt sans-serif",style:this.Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth:2,verticalOrigin:this.Cesium.VerticalOrigin.BOTTOM,pixelOffset:new this.Cesium.Cartesian2(0,-10),fillColor:this.Cesium.Color.WHITE,outlineColor:this.Cesium.Color.BLACK,backgroundColor:new this.Cesium.Color(.1,.1,.1,.8),showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY}})}registerPickHandler(e){this.destroyPickHandler(),!(!this.Cesium||!this.viewer)&&(this.pickHandler=new this.Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas),this.pickHandler.setInputAction(t=>{let n;try{n=this.viewer.scene.pickPosition(t.position)}catch(s){console.warn("pickPosition failed:",s)}if(!n){const s=this.viewer.camera.getPickRay(t.position);n=this.viewer.scene.globe.pick(s,this.viewer.scene)}if(n||(n=this.viewer.camera.pickEllipsoid(t.position,this.viewer.scene.globe.ellipsoid)),n){const s=this.Cesium.Cartographic.fromCartesian(n),o=this.Cesium.Math.toDegrees(s.longitude),r=this.Cesium.Math.toDegrees(s.latitude),a=s.height;e({longitude:o,latitude:r,height:a})}},this.Cesium.ScreenSpaceEventType.LEFT_CLICK,this.Cesium.KeyboardEventModifier.SHIFT))}destroyPickHandler(){this.pickHandler&&(this.pickHandler.destroy(),this.pickHandler=null)}calculateOffset(e,t){return{dLon:t.longitude-e.longitude,dLat:t.latitude-e.latitude,dHeight:t.height-e.height}}}const j3={class:"leitingbim-model-adjust-panel"},W3={class:"leitingbim-control-panel"},q3={class:"form-item"},K3={class:"radio-group"},X3={class:"form-item"},J3={class:"radio-group"},Z3={class:"form-item"},e_={class:"value"},t_={class:"param-row"},i_={class:"param-row"},n_={class:"param-row"},s_={class:"param-row"},o_={class:"param-row"},r_={class:"param-row"},a_={class:"param-row"},l_={class:"button-grid"},c_={key:1,class:"pick-mode-ui"},d_={class:"form-item",style:{display:"block","margin-bottom":"15px"}},h_={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},u_=["checked"],f_={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},p_={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},m_={class:"form-item",style:{display:"block","margin-bottom":"15px"}},g_={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},y_=["checked"],A_={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},v_={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},b_={class:"list-panel"},w_={class:"list-header"},C_={class:"col-check"},E_=["checked"],x_={class:"list-body"},I_={class:"col-check"},S_=["onUpdate:modelValue"],M_={class:"col-index"},T_=["title"],B_={class:"col-main"},__=["checked","onChange"],uo=Be(d.defineComponent({__name:"LeitingPosition",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close","save"],setup(i,{expose:e,emit:t}){const n=i,s=t,o=d.computed({get:()=>n.open!==void 0?n.open:n.visible,set:G=>{s("update:visible",G),s("update:open",G)}}),r=d.inject("leitingMethods"),a=d.ref("BIM"),l=d.ref("param"),c=d.ref(""),h=d.ref([]),u=d.ref("BIM"),p=d.ref(null),f=d.ref(null),m=d.ref(null),y=()=>(!m.value&&r?.value?.getViewer&&r?.value?.getCesium&&(m.value=new yc(r.value.getViewer(),r.value.getCesium())),m.value),g=()=>{y()?.clearMarkers(),p.value=null,f.value=null},A=(G,k)=>{G==="BIM"?p.value=k:f.value=k,y()?.addMarker(G,k),pe.success(`${G==="BIM"?"BIM":"地图"}标记点已添加`)},v=()=>{y()?.registerPickHandler(G=>{A(u.value,G)})},w=()=>{y()?.destroyPickHandler()},C=()=>{if(!p.value||!f.value){pe.warning("请先选择BIM标记点和地图标记点");return}if(!c.value){pe.warning("请先选择主模型");return}const G=y();let k=0,_=0,U=0;if(G){const{dLon:H,dLat:q,dHeight:X}=G.calculateOffset(p.value,f.value);k=H,_=q,U=X}else k=f.value.longitude-p.value.longitude,_=f.value.latitude-p.value.latitude,U=f.value.height-p.value.height;I.value.longitude+=k,I.value.latitude+=_,I.value.height+=U,E(c.value,{longitude:I.value.longitude,latitude:I.value.latitude,height:I.value.height}),pe.success("位置已调整")};d.watch(()=>l.value,G=>{G==="pick"?v():w()}),e({addMarker:A,setModelType:G=>{(G==="BIM"||G==="OSGB")&&(a.value=G)}});const I=d.ref({longitude:0,latitude:0,lonlat:1e-6,heightDistance:1,rotation:30,totalRotation:0,height:0,X:0,Y:0,Z:0}),x=d.computed(()=>{const G=h.value.find(k=>k.modelId===c.value);return G?G.modelName:""}),M=d.computed(()=>b.value.length>0&&b.value.every(G=>G.selected)),L=()=>{o.value=!1,s("close")},b=d.computed(()=>h.value.filter(G=>G.type===a.value)),B=G=>{const k=G.target.checked;b.value.forEach(_=>_.selected=k)},R=()=>{if(!r?.value)return;const G=r.value,k=G.getMapTileset?G.getMapTileset():{},_=[];if(Object.keys(k).forEach(U=>{const q=k[U].leiting||{};q.model&&_.push({modelId:q.model.modelId,modelName:q.model.modelName,selected:!1,formData:q.model.formData||{},dbName:q.model.dbName,url:q.model.url,type:q.model.type||"BIM"})}),h.value=_,_.length>0){const U=G.getBIMmodelId?G.getBIMmodelId():"";U&&_.find(H=>H.modelId===U)?N(U):N(_[0].modelId),_.forEach(H=>H.selected=!0)}},O=()=>{pe.info("拖动右下角标,可显示模型列表",void 0,2)},N=G=>{c.value=G;const k=h.value.find(_=>_.modelId===G);k&&k.formData&&Object.keys(I.value).forEach(_=>{k.formData[_]!==void 0&&(I.value[_]=k.formData[_])})},D=G=>r?.value?.getMapTileset?r.value.getMapTileset()[G]:null,E=(G,k)=>{const _=D(G),U=r.value.getCesium();if(_&&U){if(_.leiting?.model){_.leiting.model.formData={..._.leiting.model.formData,...k};const H=h.value.find(q=>q.modelId===G);H&&(H.formData=_.leiting.model.formData)}Xa({Cesium:U,tileset:_})}},T=G=>{if(!c.value)return;const _=h.value.find(q=>q.modelId===c.value)?.formData?.[G]??0,U=I.value[G],H=U-_;E(c.value,{[G]:U}),H!==0&&b.value.filter(X=>X.selected&&X.modelId!==c.value).forEach(X=>{const fe=(X.formData?.[G]??0)+H;E(X.modelId,{[G]:fe})})},P=G=>{const k=b.value.filter(q=>q.selected);if(k.length===0){pe.warning("请先选择要调整的模型");return}const{lonlat:_,heightDistance:U,rotation:H}=I.value;k.forEach(q=>{const X={...q.formData};switch(G){case"north":X.latitude+=_;break;case"south":X.latitude-=_;break;case"east":X.longitude+=_;break;case"west":X.longitude-=_;break;case"up":X.height+=U;break;case"down":X.height-=U;break;case"rotateLeft":X.totalRotation=(X.totalRotation||0)+H;break;case"rotateRight":X.totalRotation=(X.totalRotation||0)-H;break}q.modelId===c.value&&(X.lonlat=_,X.heightDistance=U,X.rotation=H,Object.assign(I.value,X)),E(q.modelId,X)})},F=()=>{if(!c.value){pe.warning("请先选择主模型");return}const G=D(c.value);if(!G||!r?.value?.getViewer)return;const k=r.value.getViewer(),_=r.value.getCesium(),U=G.boundingSphere;k.camera.flyToBoundingSphere(U,{offset:new _.HeadingPitchRange(0,_.Math.toRadians(-90),U.radius*2),duration:1.5})},V=()=>{r?.value?.saveRegion?(r.value.saveRegion(h.value),s("save",d.unref(h))):(console.log("Save models:",h.value),pe.warning("未找到保存接口,数据已打印控制台"))};return d.watch(()=>n.visible,G=>{G?(R(),O(),l.value==="pick"&&v()):(w(),g())}),d.onMounted(()=>{n.visible&&(R(),O(),l.value==="pick"&&v())}),(G,k)=>(d.openBlock(),d.createBlock(gt,{visible:o.value,title:"调整位置(调整前可选择正北俯视)","full-height":i.fullHeight,width:260,"onUpdate:visible":k[25]||(k[25]=_=>o.value=_),onClose:L,onSave:V,class:"base-position-card"},{default:d.withCtx(()=>[d.createElementVNode("div",j3,[d.createElementVNode("div",W3,[d.createElementVNode("div",q3,[k[26]||(k[26]=d.createElementVNode("label",null,"模型类型:",-1)),d.createElementVNode("div",K3,[d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="BIM"}),onClick:k[0]||(k[0]=_=>a.value="BIM")},"BIM模型",2),d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="OSGB"}),onClick:k[1]||(k[1]=_=>a.value="OSGB")},"倾斜摄影",2)])]),d.createElementVNode("div",X3,[k[27]||(k[27]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",J3,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="param"}),onClick:k[2]||(k[2]=_=>l.value="param")},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="pick"}),onClick:k[3]||(k[3]=_=>l.value="pick")},"地图点选",2)])]),d.createElementVNode("div",Z3,[k[28]||(k[28]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",e_,d.toDisplayString(x.value||"未选择"),1)]),k[42]||(k[42]=d.createElementVNode("div",{class:"separator"},null,-1)),l.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[k[36]||(k[36]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",t_,[k[29]||(k[29]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[4]||(k[4]=_=>I.value.longitude=_),onChange:k[5]||(k[5]=_=>T("longitude")),step:"0.000001"},null,544),[[d.vModelText,I.value.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",i_,[k[30]||(k[30]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[6]||(k[6]=_=>I.value.latitude=_),onChange:k[7]||(k[7]=_=>T("latitude")),step:"0.000001"},null,544),[[d.vModelText,I.value.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",n_,[k[31]||(k[31]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[8]||(k[8]=_=>I.value.height=_),onChange:k[9]||(k[9]=_=>T("height")),step:"0.1"},null,544),[[d.vModelText,I.value.height,void 0,{number:!0}]])]),d.createElementVNode("div",s_,[k[32]||(k[32]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[10]||(k[10]=_=>I.value.totalRotation=_),onChange:k[11]||(k[11]=_=>T("totalRotation")),step:"1"},null,544),[[d.vModelText,I.value.totalRotation,void 0,{number:!0}]])]),k[37]||(k[37]=d.createElementVNode("div",{class:"separator"},null,-1)),k[38]||(k[38]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",o_,[k[33]||(k[33]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[12]||(k[12]=_=>I.value.lonlat=_),step:"0.000001"},null,512),[[d.vModelText,I.value.lonlat,void 0,{number:!0}]])]),d.createElementVNode("div",r_,[k[34]||(k[34]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[13]||(k[13]=_=>I.value.heightDistance=_),step:"0.1"},null,512),[[d.vModelText,I.value.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",a_,[k[35]||(k[35]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[14]||(k[14]=_=>I.value.rotation=_),step:"1"},null,512),[[d.vModelText,I.value.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",l_,[d.createElementVNode("button",{onClick:k[15]||(k[15]=_=>P("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:k[16]||(k[16]=_=>P("north"))},"北移"),d.createElementVNode("button",{onClick:k[17]||(k[17]=_=>P("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:k[18]||(k[18]=_=>P("west"))},"西移"),d.createElementVNode("button",{onClick:k[19]||(k[19]=_=>P("south"))},"南移"),d.createElementVNode("button",{onClick:k[20]||(k[20]=_=>P("east"))},"东移"),d.createElementVNode("button",{onClick:k[21]||(k[21]=_=>P("up"))},"上移"),d.createElementVNode("button",{onClick:k[22]||(k[22]=_=>P("down"))},"下移"),d.createElementVNode("button",{onClick:F,class:"primary-btn"},"正北俯视"),d.createElementVNode("button",{onClick:V,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):l.value==="pick"?(d.openBlock(),d.createElementBlock("div",c_,[d.createElementVNode("div",d_,[d.createElementVNode("div",h_,[d.createElementVNode("div",{onClick:k[23]||(k[23]=_=>u.value="BIM"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:u.value==="BIM",style:{"margin-right":"5px"}},null,8,u_),k[39]||(k[39]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"BIM标记点:",-1))]),p.value?(d.openBlock(),d.createElementBlock("div",f_,[d.createElementVNode("div",null,"经度:"+d.toDisplayString(p.value.longitude.toFixed(10)),1),d.createElementVNode("div",null,"纬度:"+d.toDisplayString(p.value.latitude.toFixed(10)),1)])):(d.openBlock(),d.createElementBlock("div",p_,"未选择"))])]),d.createElementVNode("div",m_,[d.createElementVNode("div",g_,[d.createElementVNode("div",{onClick:k[24]||(k[24]=_=>u.value="MAP"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:u.value==="MAP",style:{"margin-right":"5px"}},null,8,y_),k[40]||(k[40]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"地图标记点:",-1))]),f.value?(d.openBlock(),d.createElementBlock("div",A_,[d.createElementVNode("div",null,"经度:"+d.toDisplayString(f.value.longitude.toFixed(10)),1),d.createElementVNode("div",null,"纬度:"+d.toDisplayString(f.value.latitude.toFixed(10)),1)])):(d.openBlock(),d.createElementBlock("div",v_,"未选择"))])]),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:C},"调整位置"),d.createElementVNode("button",{onClick:V},"保存")]),k[41]||(k[41]=d.createElementVNode("div",{class:"instructions",style:{"margin-top":"15px",color:"#999","font-size":"12px","line-height":"1.5"}},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 勾选上方 BIM 或 地图 标记点选项。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“调整位置”进行校准。")],-1))])):d.createCommentVNode("",!0)]),d.createElementVNode("div",b_,[d.createElementVNode("div",w_,[d.createElementVNode("div",C_,[d.createElementVNode("input",{type:"checkbox",checked:M.value,onChange:B},null,40,E_)]),k[43]||(k[43]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),k[44]||(k[44]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),k[45]||(k[45]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",x_,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(b.value,(_,U)=>(d.openBlock(),d.createElementBlock("div",{key:_.modelId,class:d.normalizeClass(["list-item",{active:_.modelId===c.value}])},[d.createElementVNode("div",I_,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":H=>_.selected=H},null,8,S_),[[d.vModelCheckbox,_.selected]])]),d.createElementVNode("div",M_,d.toDisplayString(U+1),1),d.createElementVNode("div",{class:"col-name",title:_.modelName},d.toDisplayString(_.modelName),9,T_),d.createElementVNode("div",B_,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:_.modelId===c.value,onChange:H=>N(_.modelId)},null,40,__)])],2))),128))])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-fd4822ea"]]);function Ur(){return Ur=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)({}).hasOwnProperty.call(t,n)&&(i[n]=t[n])}return i},Ur.apply(null,arguments)}const k_={locale:"zh_CN",today:"今天",now:"此刻",backToToday:"返回今天",ok:"确定",timeSelect:"选择时间",dateSelect:"选择日期",weekSelect:"选择周",clear:"清除",month:"月",year:"年",previousMonth:"上个月 (翻页上键)",nextMonth:"下个月 (翻页下键)",monthSelect:"选择月份",yearSelect:"选择年份",decadeSelect:"选择年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH时mm分ss秒",previousYear:"上一年 (Control键加左方向键)",nextYear:"下一年 (Control键加右方向键)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世纪",nextCentury:"下一世纪"},P_={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]},vm={lang:Ur({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},k_),timePickerLocale:Ur({},P_)};vm.lang.ok="确定";var Vr={exports:{}},D_=Vr.exports,bm;function wm(){return bm||(bm=1,(function(i,e){(function(t,n){i.exports=n()})(D_,(function(){var t=1e3,n=6e4,s=36e5,o="millisecond",r="second",a="minute",l="hour",c="day",h="week",u="month",p="quarter",f="year",m="date",y="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,A=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(N){var D=["th","st","nd","rd"],E=N%100;return"["+N+(D[(E-20)%10]||D[E]||D[0])+"]"}},w=function(N,D,E){var T=String(N);return!T||T.length>=D?N:""+Array(D+1-T.length).join(E)+N},C={s:w,z:function(N){var D=-N.utcOffset(),E=Math.abs(D),T=Math.floor(E/60),P=E%60;return(D<=0?"+":"-")+w(T,2,"0")+":"+w(P,2,"0")},m:function N(D,E){if(D.date()<E.date())return-N(E,D);var T=12*(E.year()-D.year())+(E.month()-D.month()),P=D.clone().add(T,u),F=E-P<0,V=D.clone().add(T+(F?-1:1),u);return+(-(T+(E-P)/(F?P-V:V-P))||0)},a:function(N){return N<0?Math.ceil(N)||0:Math.floor(N)},p:function(N){return{M:u,y:f,w:h,d:c,D:m,h:l,m:a,s:r,ms:o,Q:p}[N]||String(N||"").toLowerCase().replace(/s$/,"")},u:function(N){return N===void 0}},S="en",I={};I[S]=v;var x="$isDayjsObject",M=function(N){return N instanceof R||!(!N||!N[x])},L=function N(D,E,T){var P;if(!D)return S;if(typeof D=="string"){var F=D.toLowerCase();I[F]&&(P=F),E&&(I[F]=E,P=F);var V=D.split("-");if(!P&&V.length>1)return N(V[0])}else{var G=D.name;I[G]=D,P=G}return!T&&P&&(S=P),P||!T&&S},b=function(N,D){if(M(N))return N.clone();var E=typeof D=="object"?D:{};return E.date=N,E.args=arguments,new R(E)},B=C;B.l=L,B.i=M,B.w=function(N,D){return b(N,{locale:D.$L,utc:D.$u,x:D.$x,$offset:D.$offset})};var R=(function(){function N(E){this.$L=L(E.locale,null,!0),this.parse(E),this.$x=this.$x||E.x||{},this[x]=!0}var D=N.prototype;return D.parse=function(E){this.$d=(function(T){var P=T.date,F=T.utc;if(P===null)return new Date(NaN);if(B.u(P))return new Date;if(P instanceof Date)return new Date(P);if(typeof P=="string"&&!/Z$/i.test(P)){var V=P.match(g);if(V){var G=V[2]-1||0,k=(V[7]||"0").substring(0,3);return F?new Date(Date.UTC(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,k)):new Date(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,k)}}return new Date(P)})(E),this.init()},D.init=function(){var E=this.$d;this.$y=E.getFullYear(),this.$M=E.getMonth(),this.$D=E.getDate(),this.$W=E.getDay(),this.$H=E.getHours(),this.$m=E.getMinutes(),this.$s=E.getSeconds(),this.$ms=E.getMilliseconds()},D.$utils=function(){return B},D.isValid=function(){return this.$d.toString()!==y},D.isSame=function(E,T){var P=b(E);return this.startOf(T)<=P&&P<=this.endOf(T)},D.isAfter=function(E,T){return b(E)<this.startOf(T)},D.isBefore=function(E,T){return this.endOf(T)<b(E)},D.$g=function(E,T,P){return B.u(E)?this[T]:this.set(P,E)},D.unix=function(){return Math.floor(this.valueOf()/1e3)},D.valueOf=function(){return this.$d.getTime()},D.startOf=function(E,T){var P=this,F=!!B.u(T)||T,V=B.p(E),G=function(fe,me){var be=B.w(P.$u?Date.UTC(P.$y,me,fe):new Date(P.$y,me,fe),P);return F?be:be.endOf(c)},k=function(fe,me){return B.w(P.toDate()[fe].apply(P.toDate("s"),(F?[0,0,0,0]:[23,59,59,999]).slice(me)),P)},_=this.$W,U=this.$M,H=this.$D,q="set"+(this.$u?"UTC":"");switch(V){case f:return F?G(1,0):G(31,11);case u:return F?G(1,U):G(0,U+1);case h:var X=this.$locale().weekStart||0,de=(_<X?_+7:_)-X;return G(F?H-de:H+(6-de),U);case c:case m:return k(q+"Hours",0);case l:return k(q+"Minutes",1);case a:return k(q+"Seconds",2);case r:return k(q+"Milliseconds",3);default:return this.clone()}},D.endOf=function(E){return this.startOf(E,!1)},D.$set=function(E,T){var P,F=B.p(E),V="set"+(this.$u?"UTC":""),G=(P={},P[c]=V+"Date",P[m]=V+"Date",P[u]=V+"Month",P[f]=V+"FullYear",P[l]=V+"Hours",P[a]=V+"Minutes",P[r]=V+"Seconds",P[o]=V+"Milliseconds",P)[F],k=F===c?this.$D+(T-this.$W):T;if(F===u||F===f){var _=this.clone().set(m,1);_.$d[G](k),_.init(),this.$d=_.set(m,Math.min(this.$D,_.daysInMonth())).$d}else G&&this.$d[G](k);return this.init(),this},D.set=function(E,T){return this.clone().$set(E,T)},D.get=function(E){return this[B.p(E)]()},D.add=function(E,T){var P,F=this;E=Number(E);var V=B.p(T),G=function(U){var H=b(F);return B.w(H.date(H.date()+Math.round(U*E)),F)};if(V===u)return this.set(u,this.$M+E);if(V===f)return this.set(f,this.$y+E);if(V===c)return G(1);if(V===h)return G(7);var k=(P={},P[a]=n,P[l]=s,P[r]=t,P)[V]||1,_=this.$d.getTime()+E*k;return B.w(_,this)},D.subtract=function(E,T){return this.add(-1*E,T)},D.format=function(E){var T=this,P=this.$locale();if(!this.isValid())return P.invalidDate||y;var F=E||"YYYY-MM-DDTHH:mm:ssZ",V=B.z(this),G=this.$H,k=this.$m,_=this.$M,U=P.weekdays,H=P.months,q=P.meridiem,X=function(me,be,_e,Je){return me&&(me[be]||me(T,F))||_e[be].slice(0,Je)},de=function(me){return B.s(G%12||12,me,"0")},fe=q||function(me,be,_e){var Je=me<12?"AM":"PM";return _e?Je.toLowerCase():Je};return F.replace(A,(function(me,be){return be||(function(_e){switch(_e){case"YY":return String(T.$y).slice(-2);case"YYYY":return B.s(T.$y,4,"0");case"M":return _+1;case"MM":return B.s(_+1,2,"0");case"MMM":return X(P.monthsShort,_,H,3);case"MMMM":return X(H,_);case"D":return T.$D;case"DD":return B.s(T.$D,2,"0");case"d":return String(T.$W);case"dd":return X(P.weekdaysMin,T.$W,U,2);case"ddd":return X(P.weekdaysShort,T.$W,U,3);case"dddd":return U[T.$W];case"H":return String(G);case"HH":return B.s(G,2,"0");case"h":return de(1);case"hh":return de(2);case"a":return fe(G,k,!0);case"A":return fe(G,k,!1);case"m":return String(k);case"mm":return B.s(k,2,"0");case"s":return String(T.$s);case"ss":return B.s(T.$s,2,"0");case"SSS":return B.s(T.$ms,3,"0");case"Z":return V}return null})(me)||V.replace(":","")}))},D.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},D.diff=function(E,T,P){var F,V=this,G=B.p(T),k=b(E),_=(k.utcOffset()-this.utcOffset())*n,U=this-k,H=function(){return B.m(V,k)};switch(G){case f:F=H()/12;break;case u:F=H();break;case p:F=H()/3;break;case h:F=(U-_)/6048e5;break;case c:F=(U-_)/864e5;break;case l:F=U/s;break;case a:F=U/n;break;case r:F=U/t;break;default:F=U}return P?F:B.a(F)},D.daysInMonth=function(){return this.endOf(u).$D},D.$locale=function(){return I[this.$L]},D.locale=function(E,T){if(!E)return this.$L;var P=this.clone(),F=L(E,T,!0);return F&&(P.$L=F),P},D.clone=function(){return B.w(this.$d,this)},D.toDate=function(){return new Date(this.valueOf())},D.toJSON=function(){return this.isValid()?this.toISOString():null},D.toISOString=function(){return this.$d.toISOString()},D.toString=function(){return this.$d.toUTCString()},N})(),O=R.prototype;return b.prototype=O,[["$ms",o],["$s",r],["$m",a],["$H",l],["$W",c],["$M",u],["$y",f],["$D",m]].forEach((function(N){O[N[1]]=function(D){return this.$g(D,N[0],N[1])}})),b.extend=function(N,D){return N.$i||(N(D,R,b),N.$i=!0),b},b.locale=L,b.isDayjs=M,b.unix=function(N){return b(1e3*N)},b.en=I[S],b.Ls=I,b.p={},b}))})(Vr)),Vr.exports}var N_=wm();const zt=nn(N_);var Qr={exports:{}},L_=Qr.exports,Cm;function R_(){return Cm||(Cm=1,(function(i,e){(function(t,n){i.exports=n(wm())})(L_,(function(t){function n(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=n(t),o={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(r,a){return a==="W"?r+"周":r+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(r,a){var l=100*r+a;return l<600?"凌晨":l<900?"早上":l<1100?"上午":l<1300?"中午":l<1800?"下午":"晚上"}};return s.default.locale(o,null,!0),o}))})(Qr)),Qr.exports}R_();var zr={exports:{}},F_=zr.exports,Em;function O_(){return Em||(Em=1,(function(i,e){(function(t,n){i.exports=n()})(F_,(function(){return function(t,n,s){var o=n.prototype,r=function(u){return u&&(u.indexOf?u:u.s)},a=function(u,p,f,m,y){var g=u.name?u:u.$locale(),A=r(g[p]),v=r(g[f]),w=A||v.map((function(S){return S.slice(0,m)}));if(!y)return w;var C=g.weekStart;return w.map((function(S,I){return w[(I+(C||0))%7]}))},l=function(){return s.Ls[s.locale()]},c=function(u,p){return u.formats[p]||(function(f){return f.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(m,y,g){return y||g.slice(1)}))})(u.formats[p.toUpperCase()])},h=function(){var u=this;return{months:function(p){return p?p.format("MMMM"):a(u,"months")},monthsShort:function(p){return p?p.format("MMM"):a(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(p){return p?p.format("dddd"):a(u,"weekdays")},weekdaysMin:function(p){return p?p.format("dd"):a(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(p){return p?p.format("ddd"):a(u,"weekdaysShort","weekdays",3)},longDateFormat:function(p){return c(u.$locale(),p)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return h.bind(this)()},s.localeData=function(){var u=l();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(p){return c(u,p)},meridiem:u.meridiem,ordinal:u.ordinal}},s.months=function(){return a(l(),"months")},s.monthsShort=function(){return a(l(),"monthsShort","months",3)},s.weekdays=function(u){return a(l(),"weekdays",null,null,u)},s.weekdaysShort=function(u){return a(l(),"weekdaysShort","weekdays",3,u)},s.weekdaysMin=function(u){return a(l(),"weekdaysMin","weekdays",2,u)}}}))})(zr)),zr.exports}var G_=O_();const U_=nn(G_);var Hr={exports:{}},V_=Hr.exports,xm;function Q_(){return xm||(xm=1,(function(i,e){(function(t,n){i.exports=n()})(V_,(function(){return function(t,n){n.prototype.weekday=function(s){var o=this.$locale().weekStart||0,r=this.$W,a=(r<o?r+7:r)-o;return this.$utils().u(s)?a:this.subtract(a,"day").add(s,"day")}}}))})(Hr)),Hr.exports}var z_=Q_();const H_=nn(z_);var Yr={exports:{}},Y_=Yr.exports,Im;function $_(){return Im||(Im=1,(function(i,e){(function(t,n){i.exports=n()})(Y_,(function(){var t="week",n="year";return function(s,o,r){var a=o.prototype;a.week=function(l){if(l===void 0&&(l=null),l!==null)return this.add(7*(l-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var h=r(this).startOf(n).add(1,n).date(c),u=r(this).endOf(t);if(h.isBefore(u))return 1}var p=r(this).startOf(n).date(c).startOf(t).subtract(1,"millisecond"),f=this.diff(p,t,!0);return f<0?r(this).startOf("week").week():Math.ceil(f)},a.weeks=function(l){return l===void 0&&(l=null),this.week(l)}}}))})(Yr)),Yr.exports}var j_=$_();const W_=nn(j_);var $r={exports:{}},q_=$r.exports,Sm;function K_(){return Sm||(Sm=1,(function(i,e){(function(t,n){i.exports=n()})(q_,(function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d/,o=/\d\d/,r=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,l={},c=function(g){return(g=+g)+(g>68?1900:2e3)},h=function(g){return function(A){this[g]=+A}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(A){if(!A||A==="Z")return 0;var v=A.match(/([+-]|\d\d)/g),w=60*v[1]+(+v[2]||0);return w===0?0:v[0]==="+"?-w:w})(g)}],p=function(g){var A=l[g];return A&&(A.indexOf?A:A.s.concat(A.f))},f=function(g,A){var v,w=l.meridiem;if(w){for(var C=1;C<=24;C+=1)if(g.indexOf(w(C,0,A))>-1){v=C>12;break}}else v=g===(A?"pm":"PM");return v},m={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[s,function(g){this.month=3*(g-1)+1}],S:[s,function(g){this.milliseconds=100*+g}],SS:[o,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[r,h("seconds")],ss:[r,h("seconds")],m:[r,h("minutes")],mm:[r,h("minutes")],H:[r,h("hours")],h:[r,h("hours")],HH:[r,h("hours")],hh:[r,h("hours")],D:[r,h("day")],DD:[o,h("day")],Do:[a,function(g){var A=l.ordinal,v=g.match(/\d+/);if(this.day=v[0],A)for(var w=1;w<=31;w+=1)A(w).replace(/\[|\]/g,"")===g&&(this.day=w)}],w:[r,h("week")],ww:[o,h("week")],M:[r,h("month")],MM:[o,h("month")],MMM:[a,function(g){var A=p("months"),v=(p("monthsShort")||A.map((function(w){return w.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var A=p("months").indexOf(g)+1;if(A<1)throw new Error;this.month=A%12||A}],Y:[/[+-]?\d+/,h("year")],YY:[o,function(g){this.year=c(g)}],YYYY:[/\d{4}/,h("year")],Z:u,ZZ:u};function y(g){var A,v;A=g,v=l&&l.formats;for(var w=(g=A.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(b,B,R){var O=R&&R.toUpperCase();return B||v[R]||t[R]||v[O].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(N,D,E){return D||E.slice(1)}))}))).match(n),C=w.length,S=0;S<C;S+=1){var I=w[S],x=m[I],M=x&&x[0],L=x&&x[1];w[S]=L?{regex:M,parser:L}:I.replace(/^\[|\]$/g,"")}return function(b){for(var B={},R=0,O=0;R<C;R+=1){var N=w[R];if(typeof N=="string")O+=N.length;else{var D=N.regex,E=N.parser,T=b.slice(O),P=D.exec(T)[0];E.call(B,P),b=b.replace(P,"")}}return(function(F){var V=F.afternoon;if(V!==void 0){var G=F.hours;V?G<12&&(F.hours+=12):G===12&&(F.hours=0),delete F.afternoon}})(B),B}}return function(g,A,v){v.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(c=g.parseTwoDigitYear);var w=A.prototype,C=w.parse;w.parse=function(S){var I=S.date,x=S.utc,M=S.args;this.$u=x;var L=M[1];if(typeof L=="string"){var b=M[2]===!0,B=M[3]===!0,R=b||B,O=M[2];B&&(O=M[2]),l=this.$locale(),!b&&O&&(l=v.Ls[O]),this.$d=(function(T,P,F,V){try{if(["x","X"].indexOf(P)>-1)return new Date((P==="X"?1e3:1)*T);var G=y(P)(T),k=G.year,_=G.month,U=G.day,H=G.hours,q=G.minutes,X=G.seconds,de=G.milliseconds,fe=G.zone,me=G.week,be=new Date,_e=U||(k||_?1:be.getDate()),Je=k||be.getFullYear(),lt=0;k&&!_||(lt=_>0?_-1:be.getMonth());var ct,_t=H||0,vt=q||0,j=X||0,Y=de||0;return fe?new Date(Date.UTC(Je,lt,_e,_t,vt,j,Y+60*fe.offset*1e3)):F?new Date(Date.UTC(Je,lt,_e,_t,vt,j,Y)):(ct=new Date(Je,lt,_e,_t,vt,j,Y),me&&(ct=V(ct).week(me).toDate()),ct)}catch{return new Date("")}})(I,L,x,v),this.init(),O&&O!==!0&&(this.$L=this.locale(O).$L),R&&I!=this.format(L)&&(this.$d=new Date("")),l={}}else if(L instanceof Array)for(var N=L.length,D=1;D<=N;D+=1){M[1]=L[D-1];var E=v.apply(this,M);if(E.isValid()){this.$d=E.$d,this.$L=E.$L,this.init();break}D===N&&(this.$d=new Date(""))}else C.call(this,S)}}}))})($r)),$r.exports}var X_=K_();const J_=nn(X_),Z_={class:"setting-panel"},ek={class:"tabs-header"},tk={class:"tab-content"},ik={key:0,class:"section"},nk={class:"setting-item"},sk={class:"setting-item"},ok={class:"setting-item"},rk={key:1,class:"section"},ak={class:"tabs-header",style:{"margin-bottom":"8px"}},lk={key:0},ck={class:"setting-item column"},dk={class:"setting-item"},hk={key:1},uk={class:"setting-item column"},fk={class:"setting-item column",style:{"margin-top":"12px","border-top":"1px solid rgba(255,255,255,0.1)","padding-top":"8px"}},pk={class:"search-box",style:{position:"relative"}},mk={key:0,class:"search-dropdown"},gk=["onClick"],yk={class:"result-name"},Ak={class:"result-coord"},vk={key:2,class:"section"},bk={class:"setting-item"},wk={key:0,class:"setting-item column"},Ck={class:"sub-label"},Ek={class:"setting-item"},xk={class:"setting-item"},Ik={class:"setting-item column"},Sk={class:"setting-item column"},Mk={class:"sub-label"},Tk={class:"setting-item column"},Bk={class:"sub-label"},_k={class:"setting-item column"},kk={class:"sub-label"},Pk={class:"setting-item column"},Dk={style:{display:"flex",gap:"8px","margin-bottom":"8px"}},Nk=["onClick","title"],Lk={style:{display:"flex",gap:"8px","align-items":"center"}},Rk={key:3,class:"section"},Fk={class:"setting-item"},Ok={class:"setting-item column"},fo=Be(d.defineComponent({__name:"LeitingSetting",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean,default:!1},tiandituToken:{type:String,default:""},initialConfig:{type:Object,default:()=>({})}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){zt.locale("zh-cn"),zt.extend(U_),zt.extend(H_),zt.extend(W_),zt.extend(J_);const t=oe.Switch,n=oe.Radio.Group,s=oe.Radio,o=oe.Input,r=oe.Slider,a=oe.Select,l=oe.Select.Option,c=oe.DatePicker,h=i,u=e,p=d.inject("leitingMethods"),f=d.computed({get:()=>h.open!==void 0?h.open:h.visible,set:E=>{u("update:visible",E),u("update:open",E)}}),m=d.ref("GIS"),y=d.reactive({globe:!1,terrain:!1,depthTest:!1}),g=d.reactive({provider:"tianditu",tianditu:{token:"c25f14fb6bd4397cf8fe45144ff768d6",layerType:"img_w",showLabel:!1},arcgis:{url:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"},baseMap:"tianditu"}),A=d.reactive({shadows:!1,shadowDarkness:.7,environmentMap:!1,ambientOcclusion:!1,time:zt("2025-06-22 10:00"),brightness:1,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)"}),v=d.reactive({collision:!1,habit:0}),w=E=>{E&&(E.globe!==void 0&&(y.globe=E.globe),E.terrain!==void 0&&(y.terrain=E.terrain),E.depthTest!==void 0&&(y.depthTest=E.depthTest),E.mapProvider!==void 0&&(g.provider=E.mapProvider),E.tiandituLayerType!==void 0&&(g.tianditu.layerType=E.tiandituLayerType),E.tiandituShowLabel!==void 0&&(g.tianditu.showLabel=E.tiandituShowLabel),E.arcgisUrl!==void 0&&(g.arcgis.url=E.arcgisUrl),E.shadows!==void 0&&(A.shadows=E.shadows),E.shadowDarkness!==void 0&&(A.shadowDarkness=E.shadowDarkness),E.environmentMap!==void 0&&(A.environmentMap=E.environmentMap),E.ambientOcclusion!==void 0&&(A.ambientOcclusion=E.ambientOcclusion),E.time!==void 0&&(typeof E.time=="number"?A.time=zt().startOf("day").add(E.time,"hour"):A.time=zt(E.time)),E.brightness!==void 0&&(A.brightness=E.brightness),E.contrast!==void 0&&(A.contrast=E.contrast),E.saturation!==void 0&&(A.saturation=E.saturation),E.backgroundColor!==void 0&&(A.backgroundColor=E.backgroundColor),E.collision!==void 0&&(v.collision=E.collision),E.mouseHabit!==void 0&&(v.habit=E.mouseHabit))};d.watch(()=>h.initialConfig,E=>{w(E)},{deep:!0,immediate:!0});const C=["linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)","linear-gradient(0deg, #0f2027 0%, #203a43 50%, #2c5364 100%)","linear-gradient(0deg, #cfd9df 0%, #e2ebf0 100%)"],S=[{label:"全球影像地图服务(墨卡托)",value:"img_w"},{label:"全球影像地图服务(经纬度)",value:"img_c"},{label:"全球矢量地图服务(墨卡托)",value:"vec_w"},{label:"全球矢量地图服务(经纬度)",value:"vec_c"},{label:"全球地形晕渲服务(墨卡托)",value:"ter_w"},{label:"全球地形晕渲服务(经纬度)",value:"ter_c"}],I=()=>{const E=g.provider,T={};E==="tianditu"?(T.token=g.tianditu.token,T.layerType=g.tianditu.layerType,T.showAnnotation=g.tianditu.showLabel):E==="arcgis"&&(T.url=g.arcgis.url),p.value?.changeBaseMap?.(E,T)};d.watch(()=>g.provider,I),d.watch(()=>g.tianditu.layerType,I),d.watch(()=>g.tianditu.showLabel,I),d.watch(()=>g.tianditu.token,qo(I,1e3)),d.watch(()=>g.arcgis.url,qo(I,1e3)),d.onMounted(()=>{h.tiandituToken&&(g.tianditu.token=h.tiandituToken)}),d.watch(()=>y.globe,E=>p.value?.setGlobeEnvironmentVisible?.(E)),d.watch(()=>y.terrain,E=>p.value?.setTerrainEnable?.(E)),d.watch(()=>y.depthTest,E=>p.value?.setDepthTestEnable?.(E)),d.watch(()=>p?.value,E=>{if(E){if(E.getConfigure=()=>({globe:y.globe,terrain:y.terrain,depthTest:y.depthTest,mapProvider:g.provider,tiandituLayerType:g.tianditu.layerType,tiandituShowLabel:g.tianditu.showLabel,arcgisUrl:g.arcgis.url,shadows:A.shadows,shadowDarkness:A.shadowDarkness,environmentMap:A.environmentMap,ambientOcclusion:A.ambientOcclusion,time:zt.isDayjs(A.time)?A.time.format("YYYY-MM-DD HH:mm"):A.time,brightness:A.brightness,contrast:A.contrast,saturation:A.saturation,backgroundColor:A.backgroundColor,collision:v.collision,mouseHabit:v.habit}),E.setConfigure=T=>{w(T)},E.setBackgroundColor&&A.backgroundColor&&E.setBackgroundColor(A.backgroundColor),E.setGlobeEnvironmentVisible&&E.setGlobeEnvironmentVisible(y.globe),E.setShadowsEnable&&E.setShadowsEnable(A.shadows),E.setShadowDarkness&&E.setShadowDarkness(A.shadowDarkness),E.setEnvironmentMapEnable&&E.setEnvironmentMapEnable(A.environmentMap),E.setAmbientOcclusion&&E.setAmbientOcclusion(A.ambientOcclusion),E.setTime){const T=zt.isDayjs(A.time)?A.time.toDate():new Date;E.setTime(T)}E.setModelBrightness&&E.setModelBrightness(A.brightness),E.setCollisionDetection&&E.setCollisionDetection(v.collision),E.setMouseHabit&&E.setMouseHabit(v.habit),E.changeBaseMap&&g.baseMap&&E.changeBaseMap(g.baseMap,{token:g.tianditu.token,layerType:g.tianditu.layerType,showAnnotation:g.tianditu.showLabel,url:g.arcgis.url})}},{immediate:!0});const x=d.computed({get:()=>{const E=A.backgroundColor;return/^#[0-9A-Fa-f]{6}$/.test(E)?E:"#ffffff"},set:E=>{A.backgroundColor=E}}),M=d.ref(""),L=d.ref(!1),b=d.ref([]);d.watch(()=>y.globe,E=>p.value?.setGlobeEnvironmentVisible?.(E)),d.watch(()=>y.terrain,E=>p.value?.setTerrainEnable?.(E)),d.watch(()=>g.baseMap,E=>{p.value?.changeBaseMap?.(E,{token:h.tiandituToken})}),d.watch(()=>A.shadows,E=>p.value?.setShadowsEnable?.(E)),d.watch(()=>A.shadowDarkness,E=>p.value?.setShadowDarkness?.(E)),d.watch(()=>A.environmentMap,E=>p.value?.setEnvironmentMapEnable?.(E)),d.watch(()=>A.ambientOcclusion,E=>p.value?.setAmbientOcclusion?.(E)),d.watch(()=>A.time,E=>{const T=zt.isDayjs(E)?E.toDate():new Date;p.value?.setTime?.(T)}),d.watch(()=>[A.brightness,A.contrast,A.saturation],([E,T,P])=>{const F=p.value;F?.setModelColorAdjustment?F.setModelColorAdjustment({brightness:E,contrast:T,saturation:P}):F?.setModelBrightness?.(E)}),d.watch(()=>A.backgroundColor,E=>{if(p.value?.setBackgroundColor)p.value.setBackgroundColor(E);else{const T=document.querySelector(".cesium-viewer");T&&(T.style.background=E)}}),d.watch(()=>v.collision,E=>p.value?.setCollisionDetection?.(E)),d.watch(()=>v.habit,E=>p.value?.setMouseHabit?.(E));const B=E=>{const T=[];if(E?.pois&&Array.isArray(E.pois)){for(const P of E.pois)if(P.lonlat){const F=P.lonlat.split(/[, ]/).map(Number);F.length>=2&&!isNaN(F[0])&&!isNaN(F[1])&&T.push({name:P.name||"未命名",lon:F[0],lat:F[1],raw:P})}}if(E?.area&&E.area.lonlat){const P=E.area,F=P.lonlat.split(/[, ]/).map(Number);F.length>=2&&!isNaN(F[0])&&!isNaN(F[1])&&T.push({name:P.name||"未命名",lon:F[0],lat:F[1],raw:P})}if(E?.prompt&&Array.isArray(E.prompt)){for(const P of E.prompt)if(P.admins&&Array.isArray(P.admins)){for(const F of P.admins)if(F.lonlat){const V=F.lonlat.split(/[, ]/).map(Number);V.length>=2&&!isNaN(V[0])&&!isNaN(V[1])&&T.push({name:F.adminName||F.name||"未命名",lon:V[0],lat:V[1],raw:F})}}}return T},O=qo(async()=>{const E=(M.value||"").trim();if(!E){b.value=[];return}const T=h.tiandituToken||"c25f14fb6bd4397cf8fe45144ff768d6";L.value=!0,b.value=[];try{const F=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(JSON.stringify({keyWord:E,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}))}&type=query&tk=${encodeURIComponent(T)}`,V=await fetch(F);if(!V.ok)throw new Error(`HTTP ${V.status}`);const G=await V.json();b.value=B(G)}catch(P){console.error("tianditu search error",P)}finally{L.value=!1}},800);d.watch(M,()=>{O()});const N=E=>{p.value?.flyToLonLatHeight?.(E.lon,E.lat,5e3),M.value=E.name,b.value=[]},D=()=>{f.value=!1,u("close")};return d.onMounted(()=>{}),(E,T)=>(d.openBlock(),d.createBlock(gt,{visible:f.value,title:"设置","full-height":i.fullHeight,onClose:D,"onUpdate:visible":T[25]||(T[25]=P=>f.value=P)},{default:d.withCtx(()=>[d.createElementVNode("div",Z_,[d.createElementVNode("div",ek,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="GIS"}]),onClick:T[0]||(T[0]=P=>m.value="GIS")},"GIS",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="MAP"}]),onClick:T[1]||(T[1]=P=>m.value="MAP")},"地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="RENDER"}]),onClick:T[2]||(T[2]=P=>m.value="RENDER")},"渲染",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="MOUSE"}]),onClick:T[3]||(T[3]=P=>m.value="MOUSE")},"鼠标",2)]),d.createElementVNode("div",tk,[m.value==="GIS"?(d.openBlock(),d.createElementBlock("div",ik,[d.createElementVNode("div",nk,[T[26]||(T[26]=d.createElementVNode("span",null,"地球 (含大气/日月/星空)",-1)),d.createVNode(d.unref(t),{checked:y.globe,"onUpdate:checked":T[4]||(T[4]=P=>y.globe=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",sk,[T[27]||(T[27]=d.createElementVNode("span",null,"地形 (高程)",-1)),d.createVNode(d.unref(t),{checked:y.terrain,"onUpdate:checked":T[5]||(T[5]=P=>y.terrain=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",ok,[T[28]||(T[28]=d.createElementVNode("span",null,"地形遮挡",-1)),d.createVNode(d.unref(t),{checked:y.depthTest,"onUpdate:checked":T[6]||(T[6]=P=>y.depthTest=P),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),m.value==="MAP"?(d.openBlock(),d.createElementBlock("div",rk,[d.createElementVNode("div",ak,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:g.provider==="tianditu"}]),onClick:T[7]||(T[7]=P=>g.provider="tianditu")},"天地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:g.provider==="arcgis"}]),onClick:T[8]||(T[8]=P=>g.provider="arcgis")},"ArcGIS",2)]),g.provider==="tianditu"?(d.openBlock(),d.createElementBlock("div",lk,[d.createElementVNode("div",ck,[T[29]||(T[29]=d.createElementVNode("div",{class:"sub-label"},"地图风格",-1)),d.createVNode(d.unref(a),{value:g.tianditu.layerType,"onUpdate:value":T[9]||(T[9]=P=>g.tianditu.layerType=P),size:"small",style:{width:"100%"}},{default:d.withCtx(()=>[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(S,P=>d.createVNode(d.unref(l),{key:P.value,value:P.value},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),d.createElementVNode("div",dk,[T[30]||(T[30]=d.createElementVNode("span",null,"路网注记",-1)),d.createVNode(d.unref(t),{checked:g.tianditu.showLabel,"onUpdate:checked":T[10]||(T[10]=P=>g.tianditu.showLabel=P),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),g.provider==="arcgis"?(d.openBlock(),d.createElementBlock("div",hk,[d.createElementVNode("div",uk,[T[31]||(T[31]=d.createElementVNode("div",{class:"sub-label"},"服务地址",-1)),d.createVNode(d.unref(o),{value:g.arcgis.url,"onUpdate:value":T[11]||(T[11]=P=>g.arcgis.url=P),size:"small",placeholder:"输入ArcGIS MapServer地址"},null,8,["value"])])])):d.createCommentVNode("",!0),d.createElementVNode("div",fk,[T[32]||(T[32]=d.createElementVNode("div",{class:"sub-label"},"位置搜索 (天地图)",-1)),d.createElementVNode("div",pk,[d.createVNode(d.unref(o),{value:M.value,"onUpdate:value":T[12]||(T[12]=P=>M.value=P),placeholder:"输入地名搜索",size:"small","allow-clear":"",loading:L.value},null,8,["value","loading"]),b.value.length>0?(d.openBlock(),d.createElementBlock("div",mk,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(b.value,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:F,class:"search-result-item",onClick:V=>N(P)},[d.createElementVNode("span",yk,d.toDisplayString(P.name),1),d.createElementVNode("span",Ak,d.toDisplayString(P.lon.toFixed(4))+", "+d.toDisplayString(P.lat.toFixed(4)),1)],8,gk))),128))])):d.createCommentVNode("",!0)])])])):d.createCommentVNode("",!0),m.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",vk,[d.createElementVNode("div",bk,[T[33]||(T[33]=d.createElementVNode("span",null,"阴影",-1)),d.createVNode(d.unref(t),{checked:A.shadows,"onUpdate:checked":T[13]||(T[13]=P=>A.shadows=P),size:"small"},null,8,["checked"])]),A.shadows?(d.openBlock(),d.createElementBlock("div",wk,[d.createElementVNode("div",Ck,"阴影暗度 ("+d.toDisplayString(A.shadowDarkness.toFixed(2))+")",1),d.createVNode(d.unref(r),{value:A.shadowDarkness,"onUpdate:value":T[14]||(T[14]=P=>A.shadowDarkness=P),min:0,max:1,step:.05,size:"small"},null,8,["value"])])):d.createCommentVNode("",!0),d.createElementVNode("div",Ek,[T[34]||(T[34]=d.createElementVNode("span",null,"环境贴图 (HDR)",-1)),d.createVNode(d.unref(t),{checked:A.environmentMap,"onUpdate:checked":T[15]||(T[15]=P=>A.environmentMap=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",xk,[T[35]||(T[35]=d.createElementVNode("span",null,"环境光遮蔽 (AO)",-1)),d.createVNode(d.unref(t),{checked:A.ambientOcclusion,"onUpdate:checked":T[16]||(T[16]=P=>A.ambientOcclusion=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Ik,[T[36]||(T[36]=d.createElementVNode("div",{class:"sub-label"},"日期时间",-1)),d.createVNode(d.unref(c),{value:A.time,"onUpdate:value":T[17]||(T[17]=P=>A.time=P),"show-time":"",locale:d.unref(vm),format:"YYYY-MM-DD HH:mm",size:"small",style:{width:"100%"}},null,8,["value","locale"])]),d.createElementVNode("div",Sk,[d.createElementVNode("div",Mk,"模型亮度 ("+d.toDisplayString(A.brightness.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.brightness,"onUpdate:value":T[18]||(T[18]=P=>A.brightness=P),min:0,max:5,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Tk,[d.createElementVNode("div",Bk,"模型对比度 ("+d.toDisplayString(A.contrast.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.contrast,"onUpdate:value":T[19]||(T[19]=P=>A.contrast=P),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",_k,[d.createElementVNode("div",kk,"模型饱和度 ("+d.toDisplayString(A.saturation.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.saturation,"onUpdate:value":T[20]||(T[20]=P=>A.saturation=P),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Pk,[T[37]||(T[37]=d.createElementVNode("div",{class:"sub-label"},"背景颜色",-1)),d.createElementVNode("div",Dk,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(C,(P,F)=>d.createElementVNode("div",{key:F,style:d.normalizeStyle({background:P,width:"32px",height:"24px",borderRadius:"2px",cursor:"pointer",border:"1px solid #d9d9d9",flexShrink:0}),onClick:V=>A.backgroundColor=P,title:"预设 "+(F+1)},null,12,Nk)),64))]),d.createElementVNode("div",Lk,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":T[21]||(T[21]=P=>x.value=P),style:{width:"40px",height:"24px",padding:"0",border:"1px solid #d9d9d9"}},null,512),[[d.vModelText,x.value]]),d.createVNode(d.unref(o),{value:A.backgroundColor,"onUpdate:value":T[22]||(T[22]=P=>A.backgroundColor=P),size:"small",style:{flex:"1"},placeholder:"CSS 颜色值"},null,8,["value"])])])])):d.createCommentVNode("",!0),m.value==="MOUSE"?(d.openBlock(),d.createElementBlock("div",Rk,[d.createElementVNode("div",Fk,[T[38]||(T[38]=d.createElementVNode("span",null,"碰撞检测",-1)),d.createVNode(d.unref(t),{checked:v.collision,"onUpdate:checked":T[23]||(T[23]=P=>v.collision=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Ok,[T[41]||(T[41]=d.createElementVNode("div",{class:"sub-label"},"操作习惯",-1)),d.createVNode(d.unref(n),{value:v.habit,"onUpdate:value":T[24]||(T[24]=P=>v.habit=P),size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(s),{value:0},{default:d.withCtx(()=>[...T[39]||(T[39]=[d.createTextVNode("默认 (中键旋转)",-1)])]),_:1}),d.createVNode(d.unref(s),{value:1},{default:d.withCtx(()=>[...T[40]||(T[40]=[d.createTextVNode("习惯1 (左键旋转)",-1)])]),_:1})]),_:1},8,["value"])])])):d.createCommentVNode("",!0)])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-5a41e5bb"]]),Gk={class:"cad-layer-panel"},Uk={class:"layer-list-container"},Vk={class:"list-header"},Qk={class:"col-check"},zk=["checked"],Hk={class:"list-body"},Yk={class:"col-check"},$k=["checked","onChange"],jk={class:"col-index"},Wk=["title"],qk={class:"col-color"},Kk=["value"],Xk={key:0,class:"empty-text"},Jk=Be(d.defineComponent({__name:"LeitingCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),a=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(v=>({modelId:v.modelId,modelName:v.modelName}))||[])},l=d.computed(()=>r.value.map(v=>({value:v.modelId,label:v.modelName}))),c=d.ref([]),h=d.ref([]),u=d.computed(()=>c.value.length>0&&h.value.length===c.value.length),p=({modelId:v})=>{if(c.value=[],h.value=[],s.value&&s.value.getDxfLayers){const w=s.value.getDxfLayers({modelId:v});w&&Object.keys(w).forEach((C,S)=>{w[C].length&&(c.value.push({index:S+1,layerName:C,layerColor:w[C][0].color||"#ffffff",key:C}),h.value.push(C))})}},f=v=>{o.value=v,p({modelId:v})},m=v=>{v.target.checked?h.value=c.value.map(C=>C.key):h.value=[],g()},y=(v,w)=>{w.target.checked?h.value.includes(v)||h.value.push(v):h.value=h.value.filter(S=>S!==v),g()},g=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:h.value}),s.value.getDxfLayers)){const v=s.value.getDxfLayers({modelId:o.value});if(v){const w=Object.keys(v).filter(C=>!h.value.includes(C));s.value.showDxfLayer({modelId:o.value,show:!1,layers:w})}}},A=()=>{n("update:visible",!1),n("handleCloseCardByCadCard")};return d.watch(()=>t.visible,v=>{v&&(a(),t.currentModelId?(o.value=t.currentModelId,p({modelId:t.currentModelId})):l.value.length>0&&(o.value=l.value[0]?.value,p({modelId:o.value})))}),d.watch(()=>t.currentModelId,v=>{v&&t.visible&&(o.value=v,p({modelId:v}))}),(v,w)=>(d.openBlock(),d.createBlock(gt,{visible:i.visible,title:"CAD图层","onUpdate:visible":w[3]||(w[3]=C=>v.$emit("update:visible",C)),onClose:A,width:360,align:"right","initial-position":{x:0,y:60}},{"header-extra":d.withCtx(()=>[d.createElementVNode("div",{class:"header-select-container",onMousedown:w[2]||(w[2]=d.withModifiers(()=>{},["stop"]))},[w[4]||(w[4]=d.createElementVNode("span",{class:"header-label"},"图纸:",-1)),d.createVNode(d.unref(oe.Select),{value:o.value,"onUpdate:value":w[0]||(w[0]=C=>o.value=C),options:l.value,onChange:w[1]||(w[1]=C=>f(C)),placeholder:"选择模型",style:{width:"140px"},bordered:!1,class:"custom-header-select",popupClassName:"leiting-select-dropdown",size:"small"},null,8,["value","options"])],32)]),default:d.withCtx(()=>[d.createElementVNode("div",Gk,[d.createElementVNode("div",Uk,[d.createElementVNode("div",Vk,[d.createElementVNode("div",Qk,[d.createElementVNode("input",{type:"checkbox",checked:u.value,onChange:m},null,40,zk)]),w[5]||(w[5]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),w[6]||(w[6]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),w[7]||(w[7]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",Hk,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,C=>(d.openBlock(),d.createElementBlock("div",{key:C.key,class:"list-item"},[d.createElementVNode("div",Yk,[d.createElementVNode("input",{type:"checkbox",checked:h.value.includes(C.key),onChange:S=>y(C.key,S)},null,40,$k)]),d.createElementVNode("div",jk,d.toDisplayString(C.index),1),d.createElementVNode("div",{class:"col-name",title:C.layerName},d.toDisplayString(C.layerName),9,Wk),d.createElementVNode("div",qk,[d.createElementVNode("input",{type:"color",value:C.layerColor,disabled:""},null,8,Kk)])]))),128)),c.value.length===0?(d.openBlock(),d.createElementBlock("div",Xk,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-a4db4977"]]),Zk={class:"leiting-cad-adjust-panel"},eP={class:"leitingbim-control-panel"},tP={class:"form-item"},iP={class:"radio-group"},nP={class:"form-item"},sP=["title"],oP={class:"param-row"},rP=["step"],aP={class:"param-row"},lP=["step"],cP={class:"param-row"},dP=["step"],hP={class:"param-row"},uP=["step"],fP={class:"param-row"},pP=["step"],mP={class:"param-row"},gP=["step"],yP={class:"param-row"},AP=["step"],vP={class:"button-grid"},bP={key:1,class:"pick-mode-ui"},wP=["onClick"],CP=["checked"],EP={style:{"font-size":"12px",color:"#aaa","padding-left":"10px"}},xP={class:"param-row"},IP={style:{width:"40px"}},SP=["onUpdate:modelValue"],MP={class:"param-row"},TP={style:{width:"40px"}},BP=["onUpdate:modelValue"],_P={class:"param-row"},kP={style:{width:"40px"}},PP=["onUpdate:modelValue"],DP={class:"list-panel"},NP={class:"list-header"},LP={class:"col-check"},RP=["checked"],FP={class:"list-body"},OP={class:"col-check"},GP=["onUpdate:modelValue"],UP={class:"col-index"},VP=["title"],QP={class:"col-main"},zP=["checked","onChange"],HP={key:0,style:{padding:"10px","text-align":"center",color:"#999"}},YP=Be(d.defineComponent({__name:"LeitingCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","handleSavingByCadCard","clearBimPointList","save"],setup(i,{expose:e,emit:t}){const n=i,s=t,o=d.inject("leitingMethods"),r=d.ref([]),a=d.ref(""),l=d.computed(()=>r.value.length>0&&r.value.every(E=>E.selected)),c=d.ref("param"),h=d.ref("bimPoint1"),u=d.ref(null),p=d.ref("bimPoint1"),f=d.reactive({bimPoint1:{longitude:void 0,latitude:void 0,type:"CAD标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程",height:void 0},bimPoint2:{longitude:void 0,latitude:void 0,type:"地图标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程",height:void 0}}),m=d.ref(1e-6),y=d.reactive({modelId:"",longitude:0,latitude:0,distance:1e-6,rotation:1,totalRotation:0,heightDistance:1,height:0,lonlat:1e-6,modelOptions:[],selectPoint:{longitude:0,latitude:0,height:0},selectedMode:!1,X:0,Y:0,Z:0}),g=d.computed(()=>{const E=r.value.find(T=>T.modelId===a.value);return E?E.modelName:""}),A=()=>{s("update:visible",!1)},v=()=>(!u.value&&o?.value?.getViewer&&o?.value?.getCesium&&(u.value=new yc(o.value.getViewer(),o.value.getCesium())),u.value),w=()=>{v()?.clearMarkers(),f.bimPoint1.longitude=void 0,f.bimPoint1.latitude=void 0,f.bimPoint1.height=void 0,f.bimPoint2.longitude=void 0,f.bimPoint2.latitude=void 0,f.bimPoint2.height=void 0},C=E=>{const T=h.value,P=f[T];if(P){P.longitude=E.longitude,P.latitude=E.latitude,P.height=E.height;const F=T==="bimPoint1"?"BIM":"MAP";v()?.addMarker(F,E),pe.success(`${P.type}已添加`)}},S=()=>{v()?.registerPickHandler(E=>{C(E)})},I=()=>{v()?.destroyPickHandler()},x=E=>{c.value=E,E!=="pick"&&s("clearBimPointList")};d.watch(()=>c.value,E=>{E==="pick"?S():I()}),d.onUnmounted(()=>{I()});const M=()=>{if(!o?.value?.getDxfModels)return;const E=o.value.getDxfModels();if(Array.isArray(E)?r.value=E.map(T=>({modelId:T.modelId,modelName:T.modelName,formData:T.formData||{},selected:!1,tileset:T})):r.value=[],r.value.length>0){const T=o.value.getCadModelId?o.value.getCadModelId():"";T&&r.value.find(P=>P.modelId===T)?L(T):L(r.value[0].modelId),r.value.forEach(P=>P.selected=!0)}},L=E=>{a.value=E;const T=r.value.find(P=>P.modelId===E);T&&T.formData&&Object.keys(y).forEach(P=>{T.formData[P]!==void 0&&(y[P]=T.formData[P])})},b=(E,T)=>{if(!o?.value?.adjustingModelByCad)return;const P=r.value.find(F=>F.modelId===E);P&&P.tileset&&(P.formData={...P.formData,...T},P.tileset.formData=P.formData,o.value.adjustingModelByCad({...P.formData,tileset:P.tileset}))},B=E=>{if(!a.value)return;const T=y[E];b(a.value,{[E]:T})},R=E=>{const T=r.value.filter(G=>G.selected);if(T.length===0){pe.warning("请先选择要调整的模型");return}const{distance:P,heightDistance:F,rotation:V}=y;T.forEach(G=>{const k={...G.formData};switch(E){case"north":k.latitude+=P;break;case"south":k.latitude-=P;break;case"east":k.longitude+=P;break;case"west":k.longitude-=P;break;case"up":k.height+=F;break;case"down":k.height-=F;break;case"rotateLeft":k.totalRotation=(k.totalRotation||0)-V;break;case"rotateRight":k.totalRotation=(k.totalRotation||0)+V;break}G.modelId===a.value&&Object.assign(y,k),b(G.modelId,k)})},O=E=>{const T=E.target.checked;r.value.forEach(P=>P.selected=T)},N=()=>{s("handleSavingByCadCard",r.value),s("save",r.value)},D=()=>{const E=f.bimPoint1,T=f.bimPoint2;if(E.longitude===void 0||T.longitude===void 0){pe.warning("请先完成点选操作");return}const P=r.value.filter(_=>_.selected);if(P.length===0){pe.warning("请先选择要调整的模型");return}let F=0,V=0,G=0;const k=v();if(k){const{dLon:_,dLat:U,dHeight:H}=k.calculateOffset(E,T);F=_,V=U,G=H}else F=T.longitude-E.longitude,V=T.latitude-E.latitude,G=T.height-E.height;P.forEach(_=>{const U={..._.formData};U.longitude+=F,U.latitude+=V,U.height+=G,_.modelId===a.value&&Object.assign(y,U),b(_.modelId,U)}),pe.success("位置已调整")};return d.watch(()=>n.visible,E=>{E?M():(I(),w())}),d.onMounted(()=>{n.visible&&M()}),e({setBIMPointsList:({longitude:E,latitude:T,height:P})=>{f[p.value].longitude=E,f[p.value].latitude=T,f[p.value].height=P},addGltfOr3dTilesModelList:E=>{console.warn("addGltfOr3dTilesModelList is deprecated, use internal loading")}}),(E,T)=>(d.openBlock(),d.createBlock(gt,{visible:n.visible,title:"Cad校准",width:282,height:600,"onUpdate:visible":T[21]||(T[21]=P=>s("update:visible",P)),onClose:A},{default:d.withCtx(()=>[d.createElementVNode("div",Zk,[d.createElementVNode("div",eP,[d.createElementVNode("div",tP,[T[22]||(T[22]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",iP,[d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="param"}),onClick:T[0]||(T[0]=P=>x("param"))},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="pick"}),onClick:T[1]||(T[1]=P=>x("pick"))},"地图点选",2)])]),d.createElementVNode("div",nP,[T[23]||(T[23]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:g.value},d.toDisplayString(g.value||"未选择"),9,sP)]),T[35]||(T[35]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[T[31]||(T[31]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",oP,[T[24]||(T[24]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[2]||(T[2]=P=>y.longitude=P),onChange:T[3]||(T[3]=P=>B("longitude")),step:m.value},null,40,rP),[[d.vModelText,y.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",aP,[T[25]||(T[25]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[4]||(T[4]=P=>y.latitude=P),onChange:T[5]||(T[5]=P=>B("latitude")),step:m.value},null,40,lP),[[d.vModelText,y.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",cP,[T[26]||(T[26]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[6]||(T[6]=P=>y.height=P),onChange:T[7]||(T[7]=P=>B("height")),step:m.value},null,40,dP),[[d.vModelText,y.height,void 0,{number:!0}]])]),d.createElementVNode("div",hP,[T[27]||(T[27]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[8]||(T[8]=P=>y.totalRotation=P),onChange:T[9]||(T[9]=P=>B("totalRotation")),step:m.value},null,40,uP),[[d.vModelText,y.totalRotation,void 0,{number:!0}]])]),T[32]||(T[32]=d.createElementVNode("div",{class:"separator"},null,-1)),T[33]||(T[33]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",fP,[T[28]||(T[28]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[10]||(T[10]=P=>y.distance=P),step:m.value},null,8,pP),[[d.vModelText,y.distance,void 0,{number:!0}]])]),d.createElementVNode("div",mP,[T[29]||(T[29]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[11]||(T[11]=P=>y.heightDistance=P),step:m.value},null,8,gP),[[d.vModelText,y.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",yP,[T[30]||(T[30]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[12]||(T[12]=P=>y.rotation=P),step:m.value},null,8,AP),[[d.vModelText,y.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",vP,[d.createElementVNode("button",{onClick:T[13]||(T[13]=P=>R("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:T[14]||(T[14]=P=>R("north"))},"北移"),d.createElementVNode("button",{onClick:T[15]||(T[15]=P=>R("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:T[16]||(T[16]=P=>R("west"))},"西移"),d.createElementVNode("button",{onClick:T[17]||(T[17]=P=>R("south"))},"南移"),d.createElementVNode("button",{onClick:T[18]||(T[18]=P=>R("east"))},"东移"),d.createElementVNode("button",{onClick:T[19]||(T[19]=P=>R("up"))},"上移"),d.createElementVNode("button",{onClick:T[20]||(T[20]=P=>R("down"))},"下移"),d.createElementVNode("button",{onClick:N,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):(d.openBlock(),d.createElementBlock("div",bP,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(f,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:F,class:"form-item",style:{display:"block","margin-bottom":"15px"}},[d.createElementVNode("div",{style:{"font-weight":"bold","margin-bottom":"5px",cursor:"pointer",display:"flex","align-items":"center"},onClick:V=>h.value=F},[d.createElementVNode("input",{type:"radio",checked:h.value===F,style:{"margin-right":"5px"}},null,8,CP),d.createTextVNode(" "+d.toDisplayString(P.type)+": ",1)],8,wP),d.createElementVNode("div",EP,[d.createElementVNode("div",xP,[d.createElementVNode("label",IP,d.toDisplayString(P.longitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.longitude=V,readonly:"",style:{width:"100px"}},null,8,SP),[[d.vModelText,P.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",MP,[d.createElementVNode("label",TP,d.toDisplayString(P.latitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.latitude=V,readonly:"",style:{width:"100px"}},null,8,BP),[[d.vModelText,P.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",_P,[d.createElementVNode("label",kP,d.toDisplayString(P.heightText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.height=V,readonly:"",style:{width:"100px"}},null,8,PP),[[d.vModelText,P.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:D,class:"primary-btn"},"应用校准"),d.createElementVNode("button",{onClick:N},"保存")]),T[34]||(T[34]=d.createElementVNode("div",{class:"instructions",style:{"margin-top":"15px",color:"#999","font-size":"12px","line-height":"1.5"}},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 勾选上方 CAD 或 地图 标记点选项。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“应用校准”进行校准。")],-1))]))]),d.createElementVNode("div",DP,[d.createElementVNode("div",NP,[d.createElementVNode("div",LP,[d.createElementVNode("input",{type:"checkbox",checked:l.value,onChange:O},null,40,RP)]),T[36]||(T[36]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),T[37]||(T[37]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),T[38]||(T[38]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",FP,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:P.modelId,class:d.normalizeClass(["list-item",{active:P.modelId===a.value}])},[d.createElementVNode("div",OP,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":V=>P.selected=V},null,8,GP),[[d.vModelCheckbox,P.selected]])]),d.createElementVNode("div",UP,d.toDisplayString(F+1),1),d.createElementVNode("div",{class:"col-name",title:P.modelName},d.toDisplayString(P.modelName),9,VP),d.createElementVNode("div",QP,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:P.modelId===a.value,onChange:V=>L(P.modelId)},null,40,zP)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",HP,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-4dfe6448"]]),$P={class:"coord-transform-card"},jP={class:"param-row"},WP={class:"param-row"},qP={class:"param-row"},KP={class:"param-row"},XP={class:"param-row"},JP={class:"param-row"},ZP={class:"param-row"},eD={class:"button-grid transform-actions"},tD=Be(d.defineComponent({__name:"LeitingGISCadCoordTransform",emits:["apply-transform","save-position"],setup(i,{emit:e}){const t=e,n=d.inject("leitingMethods"),s=d.ref("projectedToLonlat"),o=d.reactive({centralMeridian:117,latOrigin:0,scaleFactor:1,falseEasting:5e5,falseNorthing:0,ellipsoid:"GRS80"}),r=()=>{const l=n?.value?.getDefaultGISCadTransformConfig?.()||{centralMeridian:117,latOrigin:0,scaleFactor:1,falseEasting:5e5,falseNorthing:0,ellipsoid:"GRS80"};Object.assign(o,l)},a=()=>{t("apply-transform",{direction:s.value,config:{...o}})};return r(),(l,c)=>(d.openBlock(),d.createElementBlock("div",$P,[d.createElementVNode("div",jP,[c[10]||(c[10]=d.createElementVNode("label",null,"转换方向:",-1)),d.createVNode(d.unref(oe.Select),{value:s.value,"onUpdate:value":c[0]||(c[0]=h=>s.value=h),class:"custom-select",popupClassName:"leiting-select-dropdown",size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.SelectOption),{value:"projectedToLonlat"},{default:d.withCtx(()=>[...c[8]||(c[8]=[d.createTextVNode("投影转经纬 (根据模型局部坐标)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"lonlatToProjected"},{default:d.withCtx(()=>[...c[9]||(c[9]=[d.createTextVNode("经纬转投影 (根据模型经纬度)",-1)])]),_:1})]),_:1},8,["value"])]),d.createElementVNode("div",WP,[c[11]||(c[11]=d.createElementVNode("label",null,"中央经线:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[1]||(c[1]=h=>o.centralMeridian=h),type:"number"},null,512),[[d.vModelText,o.centralMeridian,void 0,{number:!0}]])]),d.createElementVNode("div",qP,[c[12]||(c[12]=d.createElementVNode("label",null,"纬度基线:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[2]||(c[2]=h=>o.latOrigin=h),type:"number"},null,512),[[d.vModelText,o.latOrigin,void 0,{number:!0}]])]),d.createElementVNode("div",KP,[c[13]||(c[13]=d.createElementVNode("label",null,"投影比例:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[3]||(c[3]=h=>o.scaleFactor=h),type:"number",step:"0.000001"},null,512),[[d.vModelText,o.scaleFactor,void 0,{number:!0}]])]),d.createElementVNode("div",XP,[c[14]||(c[14]=d.createElementVNode("label",null,"东偏移:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[4]||(c[4]=h=>o.falseEasting=h),type:"number"},null,512),[[d.vModelText,o.falseEasting,void 0,{number:!0}]])]),d.createElementVNode("div",JP,[c[15]||(c[15]=d.createElementVNode("label",null,"北偏移:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[5]||(c[5]=h=>o.falseNorthing=h),type:"number"},null,512),[[d.vModelText,o.falseNorthing,void 0,{number:!0}]])]),d.createElementVNode("div",ZP,[c[20]||(c[20]=d.createElementVNode("label",null,"椭球体:",-1)),d.createVNode(d.unref(oe.Select),{value:o.ellipsoid,"onUpdate:value":c[6]||(c[6]=h=>o.ellipsoid=h),class:"custom-select",popupClassName:"leiting-select-dropdown",size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.SelectOption),{value:"GRS80"},{default:d.withCtx(()=>[...c[16]||(c[16]=[d.createTextVNode("CGCS2000 (GRS80)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"WGS84"},{default:d.withCtx(()=>[...c[17]||(c[17]=[d.createTextVNode("WGS84",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"krass"},{default:d.withCtx(()=>[...c[18]||(c[18]=[d.createTextVNode("北京54 (Krassovsky)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"IAU76"},{default:d.withCtx(()=>[...c[19]||(c[19]=[d.createTextVNode("西安80 (IAU76)",-1)])]),_:1})]),_:1},8,["value"])]),d.createElementVNode("div",eD,[d.createElementVNode("button",{class:"primary-btn",onClick:a,style:{"grid-column":"span 2"}},"应用到选中模型"),d.createElementVNode("button",{onClick:c[7]||(c[7]=h=>t("save-position"))},"保存位置")]),c[21]||(c[21]=d.createElementVNode("div",{class:"instructions"},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 在列表中勾选需要转换的模型。"),d.createElementVNode("div",null,"2. 配置对应坐标系的转换参数。"),d.createElementVNode("div",null,"3. 点击“应用到选中模型”进行批量转换预览。")],-1))]))}}),[["__scopeId","data-v-f069993f"]]),iD={class:"adjust-panel"},nD={class:"leitingbim-control-panel"},sD={class:"form-item"},oD={class:"radio-group"},rD={class:"form-item"},aD=["title"],lD={class:"param-row"},cD=["step"],dD={class:"param-row"},hD=["step"],uD={class:"param-row"},fD=["step"],pD={class:"param-row"},mD=["step"],gD={class:"param-row"},yD=["step"],AD={class:"param-row"},vD=["step"],bD={class:"param-row"},wD=["step"],CD={class:"param-row"},ED=["step"],xD={class:"param-row"},ID=["step"],SD={class:"button-grid"},MD={class:"action-buttons"},TD={key:1,class:"pick-mode-ui"},BD=["onClick"],_D=["checked","onChange"],kD={class:"pick-point-body"},PD={class:"param-row"},DD={class:"pick-label"},ND=["onUpdate:modelValue"],LD={class:"param-row"},RD={class:"pick-label"},FD=["onUpdate:modelValue"],OD={class:"param-row"},GD={class:"pick-label"},UD=["onUpdate:modelValue"],VD={class:"button-grid pick-button-grid"},QD={class:"list-panel"},zD={class:"list-header"},HD={class:"col-check"},YD=["checked"],$D={class:"list-body"},jD={class:"col-check"},WD=["onUpdate:modelValue"],qD={class:"col-index"},KD=["title"],XD={class:"col-main"},JD=["checked","onChange"],ZD={key:0,class:"empty-text"},eN=Be(d.defineComponent({__name:"LeitingGISCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(1e-6),r=d.ref([]),a=d.ref(""),l=d.ref("param"),c=d.ref("cadPoint"),h=d.ref(null),u=d.reactive({cadPoint:{longitude:void 0,latitude:void 0,height:void 0,type:"CAD标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程"},mapPoint:{longitude:void 0,latitude:void 0,height:void 0,type:"地图标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程"}}),p=d.reactive({modelId:"",longitude:0,latitude:0,height:0,totalRotation:0,scale:1,distance:1e-4,heightDistance:1,rotation:1,scaleStep:.1,localOriginX:0,localOriginY:0,clampToGround:!1}),f=d.computed(()=>r.value.length>0&&r.value.every(k=>k.selected)),m=d.computed(()=>r.value.find(k=>k.modelId===a.value)?.modelName||""),y=()=>(!h.value&&s?.value?.getViewer&&s?.value?.getCesium&&(h.value=new yc(s.value.getViewer(),s.value.getCesium())),h.value),g=()=>{u.cadPoint.longitude=void 0,u.cadPoint.latitude=void 0,u.cadPoint.height=void 0,u.mapPoint.longitude=void 0,u.mapPoint.latitude=void 0,u.mapPoint.height=void 0},A=()=>{h.value?.clearMarkers(),g()},v=k=>{const _=c.value,U=u[_];U&&(U.longitude=k.longitude,U.latitude=k.latitude,U.height=k.height,y()?.addMarker(_==="cadPoint"?"BIM":"MAP",k),pe.success(`${U.type}已添加`))},w=()=>{y()?.registerPickHandler(_=>{v(_)})},C=()=>{h.value?.destroyPickHandler()},S=k=>{l.value=k},I=k=>{(k==="cadPoint"||k==="mapPoint")&&(c.value=k)},x=k=>{const _=k?.editingFormData||k?.formData||{};return{modelId:k?.modelId||"",longitude:Number(_.longitude??0),latitude:Number(_.latitude??0),height:Number(_.height??0),totalRotation:Number(_.totalRotation??0),scale:Math.max(1e-6,Number(_.scale??1)),distance:Number(_.distance??1e-6),heightDistance:Number(_.heightDistance??1),rotation:Number(_.rotation??1),scaleStep:Number(_.scaleStep??.1),localOriginX:Number(_.localOriginX??0),localOriginY:Number(_.localOriginY??0),transformConfig:_.transformConfig||void 0,transformDirection:_.transformDirection||void 0,clampToGround:_.clampToGround??!1}},M=()=>{const k=r.value.find(_=>_.modelId===a.value);k&&Object.assign(p,k.formData,{modelId:k.modelId})},L=()=>{if(!s?.value?.getGISCadModels){r.value=[];return}const k=new Map(r.value.map(X=>[X.modelId,X.selected])),_=s.value.getGISCadModels()||[];if(r.value=Array.isArray(_)?_.map(X=>({modelId:X.modelId,modelName:X.modelName,selected:k.get(X.modelId)??!0,runtimeModel:X,formData:x(X)})):[],!r.value.length){a.value="";return}const U=r.value[0];if(!U)return;const H=s.value.getGISCadModelId?.()||a.value||U.modelId,q=r.value.find(X=>X.modelId===H);a.value=q?.modelId||U.modelId,M()},b=k=>{a.value=k,M()},B=(k,_)=>{if(!s?.value?.adjustGISCadModel)return null;s.value.beginEditGISCad?.({modelId:k});const U=s.value.adjustGISCadModel({modelId:k,..._}),H=r.value.find(q=>q.modelId===k);return H&&U&&(H.formData={...H.formData,...U,modelId:k},H.runtimeModel={...H.runtimeModel,editingFormData:U,isEditing:!0}),k===a.value&&Object.assign(p,H?.formData||p,{modelId:k}),U},R=k=>{if(!a.value)return;const _=r.value.find(X=>X.modelId===a.value);if(!_)return;if(k==="clampToGround"){const X=!!p[k];B(a.value,{[k]:X}),r.value.filter(de=>de.selected&&de.modelId!==a.value).forEach(de=>{B(de.modelId,{[k]:X})});return}const U=Number(p[k]),H=Number(_.formData[k]),q=U-H;B(a.value,{[k]:k==="scale"?Math.max(1e-6,U):U}),!(q===0||k==="scale")&&r.value.filter(X=>X.selected&&X.modelId!==a.value).forEach(X=>{B(X.modelId,{[k]:Number(X.formData[k])+q})})},O=k=>{const _=r.value.filter(U=>U.selected);if(!_.length){pe.warning("请先选择要调整的模型");return}_.forEach(U=>{const H={...U.formData};switch(k){case"north":H.latitude+=p.distance;break;case"south":H.latitude-=p.distance;break;case"east":H.longitude+=p.distance;break;case"west":H.longitude-=p.distance;break;case"up":H.height+=p.heightDistance;break;case"down":H.height-=p.heightDistance;break;case"rotateLeft":H.totalRotation-=p.rotation;break;case"rotateRight":H.totalRotation+=p.rotation;break;case"scaleUp":H.scale=Math.max(1e-6,H.scale+p.scaleStep);break;case"scaleDown":H.scale=Math.max(1e-6,H.scale-p.scaleStep);break;default:return}H.distance=p.distance,H.heightDistance=p.heightDistance,H.rotation=p.rotation,H.scaleStep=p.scaleStep,B(U.modelId,H)})},N=({direction:k,config:_})=>{const U=r.value.filter(X=>X.selected);if(!U.length){pe.warning("请先选择要转换的模型");return}if(!s?.value?.transformGISCadCoordinate){pe.warning("未找到 GIS CAD 坐标转换方法");return}let q=0;U.forEach(X=>{try{const de=Number(X.formData.localOriginX),fe=Number(X.formData.localOriginY);let me={longitude:X.formData.longitude,latitude:X.formData.latitude};const be=s?.value?.transformGISCadCoordinate;if(be){const _e=be({direction:k,...k==="projectedToLonlat"?{x:de,y:fe}:{longitude:X.formData.longitude,latitude:X.formData.latitude},config:{..._}});k==="projectedToLonlat"&&_e.longitude&&(me.longitude=_e.longitude,me.latitude=_e.latitude)}B(X.modelId,{transformConfig:{..._},transformDirection:k,longitude:me.longitude,latitude:me.latitude}),q++}catch(de){console.warn("Transform failed for model",X.modelId,de)}}),q>0?pe.success(`已成功转换 ${q} 个模型的坐标并重新加载,请预览后提交贴地`):pe.error("坐标转换失败,请检查参数或模型状态")},D=()=>{p.clampToGround=!p.clampToGround,R("clampToGround")},E=()=>{const k=u.cadPoint,_=u.mapPoint;if(k.longitude===void 0||k.latitude===void 0||k.height===void 0||_.longitude===void 0||_.latitude===void 0||_.height===void 0){pe.warning("请先完成 CAD 和地图点位采集");return}const H=r.value.filter(fe=>fe.selected);if(!H.length){pe.warning("请先选择要调整的模型");return}const{dLon:q,dLat:X,dHeight:de}=y()?.calculateOffset(k,_)||{dLon:_.longitude-k.longitude,dLat:_.latitude-k.latitude,dHeight:_.height-k.height};H.forEach(fe=>{B(fe.modelId,{longitude:Number(fe.formData.longitude)+q,latitude:Number(fe.formData.latitude)+X,height:Number(fe.formData.height)+de})}),pe.success("点选校准预览已更新")},T=()=>{const k=r.value.filter(U=>U.selected);if(!k.length){pe.warning("请先选择要提交的模型");return}const _=[];k.forEach(U=>{const H=s?.value?.commitEditGISCad?.({modelId:U.modelId});H&&H.formData&&_.push({modelId:H.modelId,formData:H.formData})}),L(),_.length>0&&s?.value?.onGISCadPositionChange&&s.value.onGISCadPositionChange(_),pe.success("GIS CAD 已提交为贴地结果")},P=()=>{r.value.forEach(k=>{s?.value?.cancelEditGISCad?.({modelId:k.modelId})})},F=()=>{if(!a.value){pe.warning("请先选择主模型");return}if(!s?.value?.flyToGISCadModel){pe.warning("飞转方法不可用");return}s.value.flyToGISCadModel({modelId:a.value,duration:1.5})},V=k=>{const _=k.target.checked;r.value.forEach(U=>{U.selected=_})},G=()=>{P(),C(),A(),n("update:visible",!1)};return d.watch(l,k=>{t.visible&&(k==="pick"?w():C())}),d.watch(()=>t.visible,k=>{k?(L(),l.value==="pick"&&w()):(C(),A(),P(),L())}),d.onMounted(()=>{t.visible&&(L(),l.value==="pick"&&w())}),d.onUnmounted(()=>{C(),A(),P()}),(k,_)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"GIS CAD调整",width:340,"onUpdate:visible":_[27]||(_[27]=U=>n("update:visible",U)),onClose:G},{default:d.withCtx(()=>[d.createElementVNode("div",iD,[d.createElementVNode("div",nD,[d.createElementVNode("div",sD,[_[28]||(_[28]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",oD,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="param"}),onClick:_[0]||(_[0]=U=>S("param"))}," 参数模式 ",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="pick"}),onClick:_[1]||(_[1]=U=>S("pick"))}," 地图点选 ",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="transform"}),onClick:_[2]||(_[2]=U=>S("transform"))}," 坐标转换 ",2)])]),d.createElementVNode("div",rD,[_[29]||(_[29]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:m.value},d.toDisplayString(m.value||"未选择"),9,aD)]),_[43]||(_[43]=d.createElementVNode("div",{class:"separator"},null,-1)),l.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[_[39]||(_[39]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",lD,[_[30]||(_[30]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[3]||(_[3]=U=>p.longitude=U),type:"number",step:o.value,onChange:_[4]||(_[4]=U=>R("longitude"))},null,40,cD),[[d.vModelText,p.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",dD,[_[31]||(_[31]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[5]||(_[5]=U=>p.latitude=U),type:"number",step:o.value,onChange:_[6]||(_[6]=U=>R("latitude"))},null,40,hD),[[d.vModelText,p.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",uD,[_[32]||(_[32]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[7]||(_[7]=U=>p.height=U),type:"number",step:o.value,onChange:_[8]||(_[8]=U=>R("height"))},null,40,fD),[[d.vModelText,p.height,void 0,{number:!0}]])]),d.createElementVNode("div",pD,[_[33]||(_[33]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[9]||(_[9]=U=>p.totalRotation=U),type:"number",step:o.value,onChange:_[10]||(_[10]=U=>R("totalRotation"))},null,40,mD),[[d.vModelText,p.totalRotation,void 0,{number:!0}]])]),d.createElementVNode("div",gD,[_[34]||(_[34]=d.createElementVNode("label",null,"缩放比例:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[11]||(_[11]=U=>p.scale=U),type:"number",min:"0.000001",step:o.value,onChange:_[12]||(_[12]=U=>R("scale"))},null,40,yD),[[d.vModelText,p.scale,void 0,{number:!0}]])]),_[40]||(_[40]=d.createElementVNode("div",{class:"separator"},null,-1)),_[41]||(_[41]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",AD,[_[35]||(_[35]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[13]||(_[13]=U=>p.distance=U),type:"number",step:o.value},null,8,vD),[[d.vModelText,p.distance,void 0,{number:!0}]])]),d.createElementVNode("div",bD,[_[36]||(_[36]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[14]||(_[14]=U=>p.heightDistance=U),type:"number",step:o.value},null,8,wD),[[d.vModelText,p.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",CD,[_[37]||(_[37]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[15]||(_[15]=U=>p.rotation=U),type:"number",step:o.value},null,8,ED),[[d.vModelText,p.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",xD,[_[38]||(_[38]=d.createElementVNode("label",null,"缩放步长:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[16]||(_[16]=U=>p.scaleStep=U),type:"number",step:o.value},null,8,ID),[[d.vModelText,p.scaleStep,void 0,{number:!0}]])]),d.createElementVNode("div",SD,[d.createElementVNode("button",{onClick:_[17]||(_[17]=U=>O("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:_[18]||(_[18]=U=>O("north"))},"北移"),d.createElementVNode("button",{onClick:_[19]||(_[19]=U=>O("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:_[20]||(_[20]=U=>O("west"))},"西移"),d.createElementVNode("button",{onClick:_[21]||(_[21]=U=>O("south"))},"南移"),d.createElementVNode("button",{onClick:_[22]||(_[22]=U=>O("east"))},"东移"),d.createElementVNode("button",{onClick:_[23]||(_[23]=U=>O("up"))},"上移"),d.createElementVNode("button",{onClick:_[24]||(_[24]=U=>O("scaleDown"))},"缩小"),d.createElementVNode("button",{onClick:_[25]||(_[25]=U=>O("scaleUp"))},"放大"),d.createElementVNode("button",{onClick:_[26]||(_[26]=U=>O("down"))},"下移")]),d.createElementVNode("div",MD,[d.createElementVNode("button",{class:d.normalizeClass({"primary-btn":p.clampToGround}),onClick:D}," 贴地 ",2),d.createElementVNode("button",{onClick:T},"保存位置"),d.createElementVNode("button",{onClick:F},"正北俯视")])],64)):l.value==="pick"?(d.openBlock(),d.createElementBlock("div",TD,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(u,(U,H)=>(d.openBlock(),d.createElementBlock("div",{key:H,class:"pick-point-item"},[d.createElementVNode("div",{class:"pick-point-title",onClick:q=>I(H)},[d.createElementVNode("input",{type:"radio",name:"gisCadPickPoint",checked:c.value===H,onChange:q=>I(H)},null,40,_D),d.createElementVNode("span",null,d.toDisplayString(U.type)+":",1)],8,BD),d.createElementVNode("div",kD,[d.createElementVNode("div",PD,[d.createElementVNode("label",DD,d.toDisplayString(U.longitudeText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.longitude=q,type:"number",readonly:""},null,8,ND),[[d.vModelText,U.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",LD,[d.createElementVNode("label",RD,d.toDisplayString(U.latitudeText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.latitude=q,type:"number",readonly:""},null,8,FD),[[d.vModelText,U.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",OD,[d.createElementVNode("label",GD,d.toDisplayString(U.heightText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.height=q,type:"number",readonly:""},null,8,UD),[[d.vModelText,U.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",VD,[d.createElementVNode("button",{class:"primary-btn",onClick:E},"应用校准"),d.createElementVNode("button",{class:d.normalizeClass({"primary-btn":p.clampToGround}),onClick:D}," 贴地 ",2),d.createElementVNode("button",{onClick:T},"保存位置"),d.createElementVNode("button",{onClick:F},"正北俯视")]),_[42]||(_[42]=d.createElementVNode("div",{class:"instructions"},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 先选择上方 CAD 标记点或地图标记点。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“应用校准”进行预览。"),d.createElementVNode("div",null,"4. 确认结果后,点击“提交贴地”生效。")],-1))])):l.value==="transform"?(d.openBlock(),d.createBlock(tD,{key:2,onApplyTransform:N,onSavePosition:T})):d.createCommentVNode("",!0)]),d.createElementVNode("div",QD,[d.createElementVNode("div",zD,[d.createElementVNode("div",HD,[d.createElementVNode("input",{type:"checkbox",checked:f.value,onChange:V},null,40,YD)]),_[44]||(_[44]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),_[45]||(_[45]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),_[46]||(_[46]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",$D,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(U,H)=>(d.openBlock(),d.createElementBlock("div",{key:U.modelId,class:d.normalizeClass(["list-item",{active:U.modelId===a.value}])},[d.createElementVNode("div",jD,[d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.selected=q,type:"checkbox"},null,8,WD),[[d.vModelCheckbox,U.selected]])]),d.createElementVNode("div",qD,d.toDisplayString(H+1),1),d.createElementVNode("div",{class:"col-name",title:U.modelName},d.toDisplayString(U.modelName),9,KD),d.createElementVNode("div",XD,[d.createElementVNode("input",{checked:U.modelId===a.value,type:"radio",name:"gisCadMainModel",onChange:q=>b(U.modelId)},null,40,JD)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",ZD,"暂无 GIS CAD 数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-25694d77"]]),tN={class:"annotation-content"},iN={class:"annotation-tools"},nN={class:"annotation-controls"},sN={class:"control-group",title:"颜色"},oN={class:"tool-item color-tool"},rN={class:"control-group line-width-container",title:"线宽"},aN=["onClick"],lN={class:"option-label"},cN=Be(d.defineComponent({__name:"LeitingAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),a=d.ref(1),l=d.ref(!1),c=d.ref(null),h=d.ref(null),u=d.ref({top:"0px",left:"0px"}),p=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],f=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,m=()=>{n("update:visible",!1)},y=x=>{o.value=x;const M=f();if(M)switch(x){case"freehandLine":M.startFreehandLine();break;case"arrow":M.startArrow();break;case"straightLine":M.startStraightLine();break;case"rectangle":M.startRectangle();break;case"ellipse":M.startEllipse();break}},g=()=>{const x=f();x&&(x.setCurrentColor(r.value),x.changeColor(r.value))},A=()=>{if(!l.value&&c.value){const x=c.value.getBoundingClientRect();u.value={top:`${x.top}px`,left:`${x.right+8}px`}}l.value=!l.value},v=x=>{a.value=x,l.value=!1;const M=f();M&&(M.setCurrentWidth(x),M.changeWidth(x))},w=()=>{const x=f();x&&x.deleteSelectedEntity()},C=()=>{const x=f();x&&x.clearAll()},S=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const x=f();x&&x.saveAnnotations()},I=x=>{const M=x.target,L=c.value&&c.value.contains(M),b=h.value&&h.value.contains(M);!L&&!b&&(l.value=!1)};return d.onMounted(()=>{document.addEventListener("click",I)}),d.onUnmounted(()=>{document.removeEventListener("click",I)}),(x,M)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"标注",width:70,"min-width":70,height:480,"onUpdate:visible":M[6]||(M[6]=L=>n("update:visible",L)),onClose:m},{default:d.withCtx(()=>[d.createElementVNode("div",tN,[d.createElementVNode("div",iN,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="freehandLine"}]),onClick:M[0]||(M[0]=L=>y("freehandLine")),title:"手绘线"},[...M[7]||(M[7]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="arrow"}]),onClick:M[1]||(M[1]=L=>y("arrow")),title:"箭头"},[...M[8]||(M[8]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="straightLine"}]),onClick:M[2]||(M[2]=L=>y("straightLine")),title:"直线"},[...M[9]||(M[9]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="rectangle"}]),onClick:M[3]||(M[3]=L=>y("rectangle")),title:"矩形"},[...M[10]||(M[10]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="ellipse"}]),onClick:M[4]||(M[4]=L=>y("ellipse")),title:"椭圆"},[...M[11]||(M[11]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1)])],2)]),M[13]||(M[13]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",nN,[d.createElementVNode("div",sN,[d.createElementVNode("div",oN,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":M[5]||(M[5]=L=>r.value=L),onChange:g,class:"color-input-overlay"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",rN,[d.createElementVNode("div",{ref_key:"lineWidthBtnRef",ref:c,class:"tool-item",onClick:d.withModifiers(A,["stop"])},[d.createElementVNode("div",{class:"current-width-preview",style:d.normalizeStyle({height:a.value+"px",backgroundColor:"#fff"})},null,4)],512),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[l.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:h,class:"line-width-dropdown",style:d.normalizeStyle(u.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(p,L=>d.createElementVNode("div",{key:L.value,class:d.normalizeClass(["line-width-option",{selected:a.value===L.value}]),onClick:d.withModifiers(b=>v(L.value),["stop"])},[d.createElementVNode("span",lN,d.toDisplayString(L.label),1),d.createElementVNode("div",{class:"line-preview",style:d.normalizeStyle({height:L.value+"px",backgroundColor:a.value===L.value?"#1890ff":"#ddd"})},null,4)],10,aN)),64))],4)):d.createCommentVNode("",!0)]))]),M[12]||(M[12]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("button",{class:"control-btn",onClick:w,title:"删除选中"}," 🗑️ "),d.createElementVNode("button",{class:"control-btn",onClick:C,title:"清空"}," ❌ "),d.createElementVNode("button",{class:"control-btn",onClick:S,title:"保存"}," 💾 ")])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-3cfc8415"]]),dN={class:"measure-content"},hN={class:"measure-tools"},uN={key:0,class:"measure-results"},fN={class:"result-row"},pN={class:"result-value"},mN={class:"result-row"},gN={class:"result-value"},yN={class:"result-row"},AN={class:"result-value"},vN={class:"result-row"},bN={class:"result-value"},wN={key:1,class:"result-row"},CN={class:"result-value"},EN={key:2,class:"result-row"},xN={class:"result-value"},IN={class:"measure-controls"},SN={class:"control-group",title:"单位"},MN={class:"unit-display"},TN=["onClick"],BN=Be(d.defineComponent({__name:"LeitingMeasurement",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(null),r=d.ref(null),a=d.ref("m"),l=d.ref(!1),c=d.ref(null),h=d.ref(!1),u=d.ref({}),p=d.ref(null),f=[{label:"米 (m)",value:"m"},{label:"厘米 (cm)",value:"cm"},{label:"毫米 (mm)",value:"mm"}],m=x=>{const M=a.value;return M==="mm"?`${(x*1e3).toFixed(0)}mm`:M==="cm"?`${(x*100).toFixed(1)}cm`:`${x.toFixed(2)}m`},y=x=>x>1e6?`${(x/1e6).toFixed(2)} km²`:`${x.toFixed(2)} m²`,g=()=>{if(!o.value&&s.value?.getViewer){const x=s.value.getViewer(),M=s.value.getCesium();x&&M&&(o.value=new uc({viewer:x,cesium:M}),o.value.setUnit(a.value),o.value.setSnapping(l.value),o.value.onMeasure=L=>{c.value=L})}},A=x=>{o.value||g(),r.value===x?(r.value=null,o.value?.stop(),s.value?.baseCompt?.enableSelection()):(r.value=x,o.value?.start(x),s.value?.baseCompt?.disableSelection())},v=x=>{a.value=x,h.value=!1},w=()=>{o.value&&(o.value.clearAll(),r.value=null,o.value.stop()),s.value?.baseCompt?.enableSelection()},C=()=>{n("update:visible",!1)},S=x=>{if(h.value){h.value=!1;return}const L=x.currentTarget.getBoundingClientRect();u.value={position:"fixed",top:`${L.top}px`,left:`${L.right+5}px`,zIndex:3e3},h.value=!0},I=x=>{h.value&&p.value&&!p.value.contains(x.target)&&(h.value=!1)};return d.onMounted(()=>{document.addEventListener("click",I),t.visible&&d.nextTick(()=>g())}),d.onUnmounted(()=>{document.removeEventListener("click",I),o.value&&o.value.destroy()}),d.watch(()=>t.visible,x=>{x?d.nextTick(()=>g()):o.value&&(o.value.stop(),r.value=null)}),d.watch(s,x=>{x&&x.getViewer&&!o.value&&t.visible&&g()}),d.watch(a,x=>{o.value&&o.value.setUnit(x)}),(x,M)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"量算",width:70,"min-width":70,height:480,"onUpdate:visible":M[3]||(M[3]=L=>n("update:visible",L)),onClose:C},{default:d.withCtx(()=>[d.createElementVNode("div",dN,[d.createElementVNode("div",hN,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="distance"}]),onClick:M[0]||(M[0]=L=>A("distance")),title:"距离测量"},[...M[4]||(M[4]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="angle"}]),onClick:M[1]||(M[1]=L=>A("angle")),title:"角度测量"},[...M[5]||(M[5]=[d.createElementVNode("div",{class:"tool-icon"},"📐",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="area"}]),onClick:M[2]||(M[2]=L=>A("area")),title:"面积测量"},[...M[6]||(M[6]=[d.createElementVNode("div",{class:"tool-icon"},"🔳",-1)])],2)]),M[15]||(M[15]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value?(d.openBlock(),d.createElementBlock("div",uN,[c.value.type==="distance"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[d.createElementVNode("div",fN,[M[7]||(M[7]=d.createElementVNode("span",{class:"result-label"},"总长:",-1)),d.createElementVNode("span",pN,d.toDisplayString(m(c.value.dist)),1)]),d.createElementVNode("div",mN,[M[8]||(M[8]=d.createElementVNode("span",{class:"result-label",style:{color:"#ff4d4f"}},"ΔX:",-1)),d.createElementVNode("span",gN,d.toDisplayString(m(c.value.dx)),1)]),d.createElementVNode("div",yN,[M[9]||(M[9]=d.createElementVNode("span",{class:"result-label",style:{color:"#52c41a"}},"ΔY:",-1)),d.createElementVNode("span",AN,d.toDisplayString(m(c.value.dy)),1)]),d.createElementVNode("div",vN,[M[10]||(M[10]=d.createElementVNode("span",{class:"result-label",style:{color:"#1890ff"}},"ΔZ:",-1)),d.createElementVNode("span",bN,d.toDisplayString(m(c.value.dz)),1)])],64)):d.createCommentVNode("",!0),c.value.type==="angle"?(d.openBlock(),d.createElementBlock("div",wN,[M[11]||(M[11]=d.createElementVNode("span",{class:"result-label"},"角度:",-1)),d.createElementVNode("span",CN,d.toDisplayString(c.value.angle.toFixed(1))+"°",1)])):d.createCommentVNode("",!0),c.value.type==="area"?(d.openBlock(),d.createElementBlock("div",EN,[M[12]||(M[12]=d.createElementVNode("span",{class:"result-label"},"面积:",-1)),d.createElementVNode("span",xN,d.toDisplayString(y(c.value.area)),1)])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0),d.createElementVNode("div",IN,[d.createElementVNode("div",SN,[d.createElementVNode("div",{class:"tool-item",onClick:d.withModifiers(S,["stop"])},[d.createElementVNode("div",MN,d.toDisplayString(a.value),1)]),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[h.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"unitDropdownRef",ref:p,class:"unit-dropdown",style:d.normalizeStyle(u.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(f,L=>d.createElementVNode("div",{key:L.value,class:d.normalizeClass(["unit-option",{selected:a.value===L.value}]),onClick:d.withModifiers(b=>v(L.value),["stop"])},d.toDisplayString(L.label),11,TN)),64))],4)):d.createCommentVNode("",!0)]))]),M[14]||(M[14]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("div",{class:"tool-item control-btn",onClick:w,title:"清空"},[...M[13]||(M[13]=[d.createElementVNode("div",{class:"tool-icon"},"🗑️",-1)])])])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-8b1e070f"]]);function Mm(){const i=d.ref(!1),e=d.reactive({x:0,y:0}),t=d.ref([]),n=d.ref(null);return{visible:i,position:e,items:t,contextData:n,show:(l,c,h)=>{l instanceof MouseEvent?(l.preventDefault(),e.x=l.clientX,e.y=l.clientY):(e.x=l.x,e.y=l.y),t.value=c,n.value=h,i.value=!0},hide:()=>{i.value=!1},addItem:l=>{t.value.push(l)},removeItem:l=>{t.value=t.value.filter(c=>c.id!==l)}}}const _N=["onClick","onTouchend"],kN={class:"menu-label"},PN={key:0,class:"menu-arrow"},DN=Be(d.defineComponent({__name:"LeitingContextMenu",props:{visible:{type:Boolean},position:{},items:{}},emits:["update:visible","action"],setup(i,{emit:e}){const t=i,n=e,{isMobile:s}=Fr(),o=d.computed(()=>{let l=t.position.x,c=t.position.y;if(s.value){const u=t.items.length*48;l+200>window.innerWidth-16&&(l=window.innerWidth-200-16),c+u>window.innerHeight-16&&(c=window.innerHeight-u-16),c<16&&(c=16)}return{left:l+"px",top:c+"px"}}),r=l=>{l.disabled||(l.action&&l.action(),n("action",l),n("update:visible",!1))},a=()=>{t.visible&&n("update:visible",!1)};return d.onMounted(()=>{document.addEventListener("click",a),document.addEventListener("contextmenu",l=>{l.target.closest(".leiting-context-menu")||a()})}),d.onUnmounted(()=>{document.removeEventListener("click",a)}),(l,c)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-context-menu",{"mobile-style":d.unref(s)}]),style:d.normalizeStyle(o.value),onContextmenu:c[0]||(c[0]=d.withModifiers(()=>{},["prevent"]))},[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(i.items,h=>(d.openBlock(),d.createElementBlock("div",{key:h.id,class:d.normalizeClass(["menu-item",{"menu-divided":h.divided,"menu-disabled":h.disabled}]),onClick:u=>r(h),onTouchend:d.withModifiers(u=>r(h),["prevent"])},[d.createElementVNode("span",kN,d.toDisplayString(h.label),1),h.children?(d.openBlock(),d.createElementBlock("span",PN,"▶")):d.createCommentVNode("",!0)],42,_N))),128))],38)),[[d.vShow,i.visible]])}}),[["__scopeId","data-v-62c220a6"]]),NN={class:"mobile-nav-root"},LN={class:"nav-bar-container"},RN={key:"sub-mode",class:"nav-inner sub-menu-wrapper"},FN={class:"sub-icons-list"},ON=["onClick"],GN=["innerHTML"],UN={key:"main-mode",class:"nav-inner main-menu-wrapper"},VN=["onClick"],QN=["src","alt"],Tm=Be(d.defineComponent({__name:"MobileBottomNav",props:{activeIds:{},is2d:{type:Boolean},customItems:{}},emits:["item-click","sub-item-click","clear-measure"],setup(i,{emit:e}){const t=i,n=e,s=d.ref(null),o=d.ref(null),r={measure:[{id:"distance",label:"距离",parentId:"measure",parentKey:"measurement"},{id:"angle",label:"角度",parentId:"measure",parentKey:"measurement"},{id:"area",label:"面积",parentId:"measure",parentKey:"measurement"},{id:"coordinate",label:"坐标",parentId:"measure",parentKey:"measurement"}],section:[{id:"box",label:"剖切盒",parentId:"section",parentKey:"section"},{id:"plane-x",label:"X轴",parentId:"section",parentKey:"section"},{id:"plane-y",label:"Y轴",parentId:"section",parentKey:"section"}]},a={distance:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 17l6-6 4 4 8-8"/><path d="M17 7h4v4"/></svg>',angle:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 20H4L14 4"/></svg>',area:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/></svg>',coordinate:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20"/></svg>',box:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/></svg>'},l=g=>a[g]||a.box,c=d.ref([{ID:"home",title:"主视角",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"homeView"},{ID:"measure",title:"量算",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"measurement"},{ID:"roam",title:"漫游",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"roam"},{ID:"info",title:"信息",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"componentInfo"},{ID:"setting",title:"设置",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"setting"}]),h=d.ref([{ID:"home",title:"主视角",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"homeView"},{ID:"cadLayer",title:"CAD图层",src:Gr,key:"cadLayer"},{ID:"annotation",title:"标注",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"annotation"}]),u=d.computed(()=>{let A=[...t.is2d?h.value:c.value];return t.customItems&&(A=[...A,...t.customItems]),A}),p=d.computed(()=>s.value?r[s.value.ID]||[]:[]),f=g=>{if(r[g.ID]){if(g.ID==="measure"){n("item-click",g);return}if(s.value?.ID===g.ID)y();else{s.value=g,o.value=null;const A=r[g.ID];A&&A.length>0&&(o.value=A[0]?.id??null,setTimeout(()=>{n("sub-item-click",{parent:g,sub:A[0]})},50))}}else n("item-click",g)},m=g=>{o.value=g.id,n("sub-item-click",{parent:s.value,sub:g})},y=()=>{s.value=null,o.value=null};return(g,A)=>(d.openBlock(),d.createElementBlock("div",NN,[d.createElementVNode("nav",LN,[d.createVNode(d.Transition,{name:"nav-mode-switch",mode:"out-in"},{default:d.withCtx(()=>[s.value?(d.openBlock(),d.createElementBlock("div",RN,[d.createElementVNode("button",{class:"nav-back-icon",onClick:y},[...A[0]||(A[0]=[d.createElementVNode("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3"},[d.createElementVNode("polyline",{points:"15 18 9 12 15 6"})],-1)])]),d.createElementVNode("div",FN,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p.value,v=>(d.openBlock(),d.createElementBlock("button",{key:v.id,class:d.normalizeClass(["sub-icon-box",{active:o.value===v.id}]),onClick:w=>m(v)},[d.createElementVNode("div",{class:"icon-svg",innerHTML:l(v.id)},null,8,GN)],10,ON))),128))])])):(d.openBlock(),d.createElementBlock("div",UN,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(u.value,v=>(d.openBlock(),d.createElementBlock("div",{key:v.ID,class:d.normalizeClass(["main-tab-item",{active:i.activeIds?.includes(v.ID)}]),onClick:w=>f(v)},[d.createElementVNode("img",{src:v.src,class:"tab-img",alt:v.title},null,8,QN)],10,VN))),128))]))]),_:1})])]))}}),[["__scopeId","data-v-2e30753b"]]),zN={key:1,class:"drawer-header"},HN={class:"drawer-title"},YN={class:"drawer-content"},$N={key:2,class:"drawer-footer"},jr=Be(d.defineComponent({__name:"MobileDrawer",props:{visible:{type:Boolean},title:{},direction:{default:"bottom"},width:{default:"100%"},height:{default:"50vh"},showHandle:{type:Boolean,default:!1},closeOnOverlay:{type:Boolean,default:!0},maxHeight:{default:"60vh"}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.ref(null);let o=0,r=0;const a=d.computed(()=>{const f={};return t.direction==="right"||t.direction==="left"?(f.width=t.width,f.height="100%"):(f.width=t.width,f.height=t.height,f.maxHeight=t.maxHeight),f}),l=f=>{o=f.touches[0]?.clientY??0,s.value&&(s.value.style.transition="none")},c=f=>{if(!s.value)return;r=(f.touches[0]?.clientY??0)-o,r>0&&(s.value.style.transform=`translateY(${r}px)`)},h=()=>{s.value&&(s.value.style.transition="transform 300ms cubic-bezier(0.4, 0, 0.2, 1)",r>100?u():s.value.style.transform="",r=0)},u=()=>{n("update:visible",!1),n("close")},p=()=>{t.closeOnOverlay&&u()};return d.watch(()=>t.visible,f=>{f?document.body.style.overflow="hidden":document.body.style.overflow=""}),(f,m)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"drawer-fade"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-drawer-overlay",onClick:d.withModifiers(p,["self"])},[d.createElementVNode("div",{class:d.normalizeClass(["mobile-drawer-panel",[`direction-${i.direction}`]]),style:d.normalizeStyle(a.value),onClick:m[0]||(m[0]=d.withModifiers(()=>{},["stop"])),ref_key:"panelRef",ref:s},[i.direction==="bottom"&&i.showHandle?(d.openBlock(),d.createElementBlock("div",{key:0,class:"drawer-handle",onTouchstart:l,onTouchmove:c,onTouchend:h},[...m[1]||(m[1]=[d.createElementVNode("div",{class:"handle-bar"},null,-1)])],32)):d.createCommentVNode("",!0),i.title||f.$slots.title?(d.openBlock(),d.createElementBlock("div",zN,[d.renderSlot(f.$slots,"title",{},()=>[d.createElementVNode("span",HN,d.toDisplayString(i.title),1)],!0),d.createElementVNode("button",{class:"drawer-close-btn",onClick:u},[...m[2]||(m[2]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])):d.createCommentVNode("",!0),d.createElementVNode("div",YN,[d.renderSlot(f.$slots,"default",{},void 0,!0)]),f.$slots.footer?(d.openBlock(),d.createElementBlock("div",$N,[d.renderSlot(f.$slots,"footer",{},void 0,!0)])):d.createCommentVNode("",!0)],6)])):d.createCommentVNode("",!0)]),_:3})]))}}),[["__scopeId","data-v-66d9d696"]]),jN={class:"mobile-tree-container"},WN={class:"search-section"},qN={class:"search-inner"},KN=["innerHTML"],Bm=Be(d.defineComponent({__name:"MobileTree",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},treeData:{default:()=>[]},initialCheckedKeys:{default:()=>[]}},emits:["update:visible","update:open","close","select","check","search"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:B=>{n("update:visible",B),n("update:open",B)}}),r={key:"id",title:"name",children:"children"},a=d.ref(""),l=d.ref([]),c=d.ref([]),h=d.ref(null),u=d.ref(300),p=d.ref(!1);let f=null;d.watch(()=>t.initialCheckedKeys,B=>{B&&B.length>0&&(c.value=[...B])},{immediate:!0}),d.watch(()=>t.treeData,B=>{if(!B||B.length===0)return;const R=[],O=(E,T)=>{for(let P=0;P<E.length;P++){const F=E[P],V=F.id||F.key||F.$id,G=F.modelId||T;G&&(F.modelId=G),V&&R.push(String(V)),F.children&&F.children.length>0&&O(F.children,G)}};O(B);const N=new Set(c.value);let D=!1;R.forEach(E=>{N.has(E)||(N.add(E),D=!0)}),D&&(c.value=Array.from(N),n("check",c.value))},{immediate:!0,deep:!0});const m=(B,R)=>{const O=[],N=D=>{for(let E=0;E<D.length;E++){const T=D[E],P=T.id||T.key;!T.children||T.children.length===0?!(P&&R.has(String(P)))&&T.modelId&&T.element_Id&&O.push({modelId:T.modelId,elementId:T.element_Id,show:!1}):T.children&&N(T.children)}};return N(B),O},y=d.computed(()=>{if(!a.value)return t.treeData;p.value=!0;const B=a.value.toLowerCase(),R=O=>{const N=[];for(let D=0;D<O.length;D++){const E=O[D],T=E.name||E.title||"",P=E.id||E.key,F=T.toLowerCase().includes(B);let V;E.children&&E.children.length>0&&(V=R(E.children)),(F||V&&V.length>0)&&N.push({key:String(P),title:T,children:V&&V.length>0?V:E.children?E.children:void 0,_raw:E,_searchMatched:F})}return N};return R(t.treeData)}),g=d.computed(()=>{if(!a.value)return[];const B=[],R=O=>{for(let N=0;N<O.length;N++){const D=O[N]?.children;D&&D.length>0&&(B.push(O[N]?.key),R(D))}};return R(y.value),B}),A=(B,R)=>a.value?(B||R||"").toLowerCase().includes(a.value.toLowerCase()):!1,v=B=>{if(!a.value)return B;const R=new RegExp(`(${a.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return B.replace(R,'<mark class="search-highlight">$1</mark>')},w=qo(B=>{const R=typeof B=="object"?B.target?.value??"":B;S(R)},200),C=B=>{S(B)},S=B=>{a.value=B||"",n("search",a.value),B&&d.nextTick(()=>{l.value=[...g.value]})},I=B=>{l.value=B},x=(B,R)=>{c.value=B,n("check",c.value);const O=new Set(B.map(D=>String(D))),N=m(t.treeData,O);s?.value?.setComponentVisibility&&s.value.setComponentVisibility(N),s?.value?.onTreeCheck&&s.value.onTreeCheck(B,R)},M=B=>{o.value=B},L=()=>{n("close")},b=()=>{h.value&&(u.value=h.value.clientHeight)};return d.onMounted(()=>{h.value&&(b(),f=new ResizeObserver(()=>{b()}),f.observe(h.value))}),d.onUnmounted(()=>{f&&(f.disconnect(),f=null)}),(B,R)=>(d.openBlock(),d.createBlock(jr,{visible:o.value,title:"目录树",direction:"bottom","show-handle":!1,class:"mobile-bim-drawer","onUpdate:visible":M,onClose:L},{title:d.withCtx(()=>[...R[1]||(R[1]=[d.createElementVNode("div",{class:"custom-drawer-header"},[d.createElementVNode("span",null,"目录树")],-1)])]),default:d.withCtx(()=>[d.createElementVNode("div",jN,[R[3]||(R[3]=d.createElementVNode("div",{class:"nav-tabs"},[d.createElementVNode("div",{class:"nav-tab-item active"},"构件")],-1)),d.createElementVNode("div",WN,[d.createElementVNode("div",qN,[d.createVNode(d.unref(oe.Input),{value:a.value,"onUpdate:value":R[0]||(R[0]=O=>a.value=O),placeholder:"搜索构件","allow-clear":"",class:"custom-search",onSearch:C,onChange:d.unref(w)},null,8,["value","onChange"])])]),d.createElementVNode("div",{class:"tree-content-wrapper",ref_key:"treeContentRef",ref:h},[y.value.length>0?(d.openBlock(),d.createBlock(d.unref(oe.Tree),{key:0,"tree-data":y.value,"field-names":r,"expanded-keys":l.value,"checked-keys":c.value,checkable:"","block-node":"",class:"bim-dark-tree",onExpand:I,onCheck:x},{switcherIcon:d.withCtx(({expanded:O})=>[d.createElementVNode("span",{class:d.normalizeClass(["switcher-icon",{"is-open":O}])},[...R[2]||(R[2]=[d.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"12",height:"12"},[d.createElementVNode("path",{d:"M340.864 149.312l405.376 362.688-405.376 362.688z",fill:"currentColor"})],-1)])],2)]),title:d.withCtx(({name:O,title:N})=>[d.createElementVNode("span",{class:d.normalizeClass(["node-title",{"is-matched":A(O,N)}])},[d.createElementVNode("span",{innerHTML:v(O||N)},null,8,KN)],2)]),_:1},8,["tree-data","expanded-keys","checked-keys","onExpand","onCheck"])):d.createCommentVNode("",!0)],512)])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-c2e8ecbe"]]),XN={class:"tabs-header"},JN=["onClick"],ZN={class:"modal-content"},eL={key:0,class:"setting-section"},tL={class:"setting-item"},iL={class:"mobile-switch"},nL={class:"setting-item"},sL={class:"mobile-switch"},oL={class:"setting-item"},rL={class:"mobile-switch"},aL={key:1,class:"setting-section"},lL={class:"setting-item"},cL={class:"mobile-switch"},dL={key:0,class:"setting-item column"},hL={class:"setting-label-row"},uL={class:"setting-value"},fL={class:"setting-item"},pL={class:"mobile-switch"},mL={class:"setting-item"},gL={class:"mobile-switch"},yL={class:"setting-item column"},AL={class:"setting-label-row"},vL={class:"setting-value"},bL={class:"setting-item column"},wL={class:"setting-label-row"},CL={class:"setting-value"},EL={class:"setting-item column"},xL={class:"setting-label-row"},IL={class:"setting-value"},SL={class:"setting-item column"},ML={style:{display:"flex",gap:"8px","margin-bottom":"8px","flex-wrap":"wrap"}},TL=["onClick","title"],BL={style:{display:"flex",gap:"8px","align-items":"center"}},_m=Be(d.defineComponent({__name:"MobileSetting",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0}},emits:["update:visible","update:open","close","change"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:f=>{n("update:visible",f),n("update:open",f)}}),r=[{id:"GIS",label:"GIS"},{id:"RENDER",label:"渲染"}],a=d.ref("GIS"),l=d.ref({globe:!1,terrain:!1,depthTest:!1}),c=d.ref({shadows:!1,shadowDarkness:.5,environmentMap:!0,ambientOcclusion:!1,brightness:1,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)"}),h=["linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)","linear-gradient(0deg, #0f2027 0%, #203a43 50%, #2c5364 100%)","linear-gradient(0deg, #cfd9df 0%, #e2ebf0 100%)"],u=()=>{p()},p=()=>{n("close"),n("change",{gis:l.value,render:c.value})};return d.watch(()=>l.value.globe,f=>{s?.value&&s.value.setGlobeEnvironmentVisible?.(f)}),d.watch(()=>l.value.terrain,f=>{s?.value&&s.value.setTerrainEnable?.(f)}),d.watch(()=>l.value.depthTest,f=>{s?.value&&s.value.setDepthTestEnable?.(f)}),d.watch(()=>c.value.shadows,f=>{s?.value&&s.value.setShadowsEnable?.(f)}),d.watch(()=>c.value.shadowDarkness,f=>{s?.value&&s.value.setShadowDarkness?.(f)}),d.watch(()=>c.value.environmentMap,f=>{s?.value&&s.value.setEnvironmentMapEnable?.(f)}),d.watch(()=>c.value.ambientOcclusion,f=>{s?.value&&s.value.setAmbientOcclusion?.(f)}),d.watch(()=>[c.value.brightness,c.value.contrast,c.value.saturation],([f,m,y])=>{const g=s?.value;g&&(g.setModelColorAdjustment?g.setModelColorAdjustment({brightness:f,contrast:m,saturation:y}):g.setModelBrightness?.(f))}),d.watch(()=>c.value.backgroundColor,f=>{s?.value&&s.value.setBackgroundColor?.(f)}),d.watch(()=>o.value,f=>{f?document.body.style.overflow="hidden":document.body.style.overflow=""}),(f,m)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"setting-modal"},{default:d.withCtx(()=>[o.value?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-setting-overlay",onClick:u,onTouchmove:m[13]||(m[13]=d.withModifiers(()=>{},["prevent"]))},[d.createElementVNode("div",{class:"mobile-setting-modal",onClick:m[12]||(m[12]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("div",{class:"modal-header"},[m[15]||(m[15]=d.createElementVNode("span",{class:"modal-title"},"设置",-1)),d.createElementVNode("button",{class:"modal-close-btn",onClick:p},[...m[14]||(m[14]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),d.createElementVNode("div",XN,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(r,y=>d.createElementVNode("button",{key:y.id,class:d.normalizeClass(["tab-btn",{active:a.value===y.id}]),onClick:g=>a.value=y.id},d.toDisplayString(y.label),11,JN)),64))]),d.createElementVNode("div",ZN,[a.value==="GIS"?(d.openBlock(),d.createElementBlock("div",eL,[d.createElementVNode("div",tL,[m[17]||(m[17]=d.createElementVNode("span",{class:"setting-label"},"地球(含大气/日月/星空)",-1)),d.createElementVNode("label",iL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[0]||(m[0]=y=>l.value.globe=y)},null,512),[[d.vModelCheckbox,l.value.globe]]),m[16]||(m[16]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",nL,[m[19]||(m[19]=d.createElementVNode("span",{class:"setting-label"},"地形",-1)),d.createElementVNode("label",sL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[1]||(m[1]=y=>l.value.terrain=y)},null,512),[[d.vModelCheckbox,l.value.terrain]]),m[18]||(m[18]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",oL,[m[21]||(m[21]=d.createElementVNode("span",{class:"setting-label"},"地形遮挡",-1)),d.createElementVNode("label",rL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[2]||(m[2]=y=>l.value.depthTest=y)},null,512),[[d.vModelCheckbox,l.value.depthTest]]),m[20]||(m[20]=d.createElementVNode("span",{class:"slider"},null,-1))])])])):d.createCommentVNode("",!0),a.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",aL,[d.createElementVNode("div",lL,[m[23]||(m[23]=d.createElementVNode("span",{class:"setting-label"},"阴影",-1)),d.createElementVNode("label",cL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[3]||(m[3]=y=>c.value.shadows=y)},null,512),[[d.vModelCheckbox,c.value.shadows]]),m[22]||(m[22]=d.createElementVNode("span",{class:"slider"},null,-1))])]),c.value.shadows?(d.openBlock(),d.createElementBlock("div",dL,[d.createElementVNode("div",hL,[m[24]||(m[24]=d.createElementVNode("span",{class:"setting-label"},"阴影暗度",-1)),d.createElementVNode("span",uL,d.toDisplayString(c.value.shadowDarkness.toFixed(2)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[4]||(m[4]=y=>c.value.shadowDarkness=y),min:"0",max:"1",step:"0.05",class:"mobile-slider"},null,512),[[d.vModelText,c.value.shadowDarkness,void 0,{number:!0}]])])):d.createCommentVNode("",!0),d.createElementVNode("div",fL,[m[26]||(m[26]=d.createElementVNode("span",{class:"setting-label"},"环境贴图",-1)),d.createElementVNode("label",pL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[5]||(m[5]=y=>c.value.environmentMap=y)},null,512),[[d.vModelCheckbox,c.value.environmentMap]]),m[25]||(m[25]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",mL,[m[28]||(m[28]=d.createElementVNode("span",{class:"setting-label"},"环境光遮蔽",-1)),d.createElementVNode("label",gL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[6]||(m[6]=y=>c.value.ambientOcclusion=y)},null,512),[[d.vModelCheckbox,c.value.ambientOcclusion]]),m[27]||(m[27]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",yL,[d.createElementVNode("div",AL,[m[29]||(m[29]=d.createElementVNode("span",{class:"setting-label"},"模型亮度",-1)),d.createElementVNode("span",vL,d.toDisplayString(c.value.brightness.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[7]||(m[7]=y=>c.value.brightness=y),min:"0",max:"5",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.brightness,void 0,{number:!0}]])]),d.createElementVNode("div",bL,[d.createElementVNode("div",wL,[m[30]||(m[30]=d.createElementVNode("span",{class:"setting-label"},"模型对比度",-1)),d.createElementVNode("span",CL,d.toDisplayString(c.value.contrast.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[8]||(m[8]=y=>c.value.contrast=y),min:"0.5",max:"2",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.contrast,void 0,{number:!0}]])]),d.createElementVNode("div",EL,[d.createElementVNode("div",xL,[m[31]||(m[31]=d.createElementVNode("span",{class:"setting-label"},"模型饱和度",-1)),d.createElementVNode("span",IL,d.toDisplayString(c.value.saturation.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[9]||(m[9]=y=>c.value.saturation=y),min:"0",max:"3",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.saturation,void 0,{number:!0}]])]),d.createElementVNode("div",SL,[m[32]||(m[32]=d.createElementVNode("span",{class:"setting-label"},"背景颜色",-1)),d.createElementVNode("div",ML,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(h,(y,g)=>d.createElementVNode("div",{key:g,style:d.normalizeStyle({background:y,width:"60px",height:"40px",borderRadius:"6px",cursor:"pointer",border:"2px solid rgba(255,255,255,0.2)",flexShrink:0}),onClick:A=>c.value.backgroundColor=y,title:"预设 "+(g+1)},null,12,TL)),64))]),d.createElementVNode("div",BL,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":m[10]||(m[10]=y=>c.value.backgroundColor=y),style:{width:"50px",height:"36px",padding:"0",border:"1px solid rgba(255,255,255,0.3)","border-radius":"6px",cursor:"pointer"}},null,512),[[d.vModelText,c.value.backgroundColor]]),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":m[11]||(m[11]=y=>c.value.backgroundColor=y),type:"text",class:"mobile-input",placeholder:"CSS 颜色值",style:{flex:"1"}},null,512),[[d.vModelText,c.value.backgroundColor]])])])])):d.createCommentVNode("",!0)])])],32)):d.createCommentVNode("",!0)]),_:1})]))}}),[["__scopeId","data-v-dcec8ca4"]]),_L={class:"mobile-section-container"},kL={class:"section-main"},PL={class:"toggle-row"},DL={class:"slider-section"},NL={class:"slider-header"},LL={class:"slider-label"},RL={class:"slider-value"},FL={class:"quick-btns"},OL={class:"section-models"},GL={class:"models-header"},UL={class:"models-count"},km=Be(d.defineComponent({__name:"MobileSection",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},modelList:{default:()=>[]}},emits:["update:visible","update:open","close","visibility-change","mode-change","axis-change","model-change"],setup(i,{emit:e}){const t=i,n=e,s=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:b=>{n("update:visible",b),n("update:open",b)}}),o=d.ref(!0),r=d.ref("Box"),a=d.ref("X"),l=d.ref([]),c=d.ref([0,100]),h=d.ref([0,100]),u=d.ref([0,100]),p=[{key:"X",label:"X轴"},{key:"Y",label:"Y轴"},{key:"Z",label:"Z轴"}],f=d.computed(()=>p.find(B=>B.key===a.value)?.label||""),m=d.computed({get:()=>{switch(a.value){case"X":return c.value[1];case"Y":return h.value[1];case"Z":return u.value[1];default:return 50}},set:b=>{switch(a.value){case"X":c.value[1]=b??0;break;case"Y":h.value[1]=b??0;break;case"Z":u.value[1]=b??0;break}}}),y=d.computed(()=>{switch(a.value){case"X":return[-50,50];case"Y":return[-50,50];case"Z":return[0,100];default:return[0,100]}}),g=d.computed(()=>m.value?.toFixed(1)??"0.0"),A=d.computed(()=>l.value.length===t.modelList.length),v=b=>{s.value=b},w=()=>{n("close")},C=()=>{n("visibility-change",o.value)},S=b=>{r.value=b,n("mode-change",b)},I=()=>{m.value=50,n("axis-change",a.value,50)},x=()=>{const b=y.value;m.value=b&&b.length>=2?(b[0]+b[1])/2:50,n("axis-change",a.value,m.value)},M=()=>{n("model-change",l.value)},L=()=>{A.value?l.value=[]:l.value=t.modelList.map(b=>b.modelId),n("model-change",l.value)};return(b,B)=>(d.openBlock(),d.createBlock(jr,{visible:s.value,title:"剖切分析",direction:"bottom","show-handle":!0,"onUpdate:visible":v,onClose:w},{default:d.withCtx(()=>[d.createElementVNode("div",_L,[d.createElementVNode("div",kL,[d.createElementVNode("div",PL,[B[6]||(B[6]=d.createElementVNode("span",{class:"toggle-label"},"显示剖切盒",-1)),d.createVNode(d.unref(oe.Switch),{checked:o.value,"onUpdate:checked":B[0]||(B[0]=R=>o.value=R),onChange:C},null,8,["checked"])]),d.createVNode(d.unref(oe.RadioGroup),{value:r.value,"onUpdate:value":B[1]||(B[1]=R=>r.value=R),"button-style":"solid",class:"mode-selector",onChange:B[2]||(B[2]=R=>S(R.target.value))},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.RadioButton),{value:"Box"},{default:d.withCtx(()=>[...B[7]||(B[7]=[d.createTextVNode("剖切盒",-1)])]),_:1})]),_:1},8,["value"]),d.createVNode(d.unref(oe.RadioGroup),{value:a.value,"onUpdate:value":B[3]||(B[3]=R=>a.value=R),"button-style":"solid",class:"axis-selector"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.RadioButton),{value:"X"},{default:d.withCtx(()=>[...B[8]||(B[8]=[d.createTextVNode("X轴",-1)])]),_:1}),d.createVNode(d.unref(oe.RadioButton),{value:"Y"},{default:d.withCtx(()=>[...B[9]||(B[9]=[d.createTextVNode("Y轴",-1)])]),_:1}),d.createVNode(d.unref(oe.RadioButton),{value:"Z"},{default:d.withCtx(()=>[...B[10]||(B[10]=[d.createTextVNode("Z轴",-1)])]),_:1})]),_:1},8,["value"]),d.createElementVNode("div",DL,[d.createElementVNode("div",NL,[d.createElementVNode("span",LL,d.toDisplayString(f.value)+" 轴范围",1),d.createElementVNode("span",RL,d.toDisplayString(g.value),1)]),d.createVNode(d.unref(oe.Slider),{Value:m.value,"onUpdate:Value":B[4]||(B[4]=R=>m.value=R),min:y.value[0],max:y.value[1],step:.5,class:"section-slider"},null,8,["Value","min","max"]),d.createElementVNode("div",FL,[d.createVNode(d.unref(oe.Button),{size:"small",onClick:I},{default:d.withCtx(()=>[...B[11]||(B[11]=[d.createTextVNode("重置",-1)])]),_:1}),d.createVNode(d.unref(oe.Button),{size:"small",onClick:x},{default:d.withCtx(()=>[...B[12]||(B[12]=[d.createTextVNode("居中",-1)])]),_:1})])])]),d.createElementVNode("div",OL,[d.createElementVNode("div",GL,[B[13]||(B[13]=d.createElementVNode("span",{class:"models-title"},"选择模型",-1)),d.createElementVNode("span",UL,d.toDisplayString(l.value.length)+"/"+d.toDisplayString(i.modelList.length),1)]),d.createVNode(d.unref(oe.CheckboxGroup),{value:l.value,"onUpdate:value":B[5]||(B[5]=R=>l.value=R),class:"models-list",onChange:M},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(i.modelList,R=>(d.openBlock(),d.createBlock(d.unref(oe.Checkbox),{key:R.modelId,value:R.modelId,class:"model-item"},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(R.modelName),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),i.modelList.length>1?(d.openBlock(),d.createBlock(d.unref(oe.Button),{key:0,size:"small",type:"link",onClick:L},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(A.value?"取消全选":"全选"),1)]),_:1})):d.createCommentVNode("",!0)])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-cdacec58"]]),VL={key:0,class:"mobile-measure-root"},QL={key:0,class:"result-card"},zL={class:"card-header-row"},HL={class:"result-main"},YL={class:"type-label"},$L={class:"value-highlight"},jL={key:0,class:"coords-grid"},WL={class:"coord-item"},qL={class:"coord-item"},KL={class:"coord-item"},XL={class:"measure-toolbar-container"},JL={class:"tools-inner-row"},ZL=["onClick"],e8=["innerHTML"],Pm=Be(d.defineComponent({__name:"MobileMeasurement",props:{visible:{type:Boolean},defaultTool:{}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods");let o=null,r=!1;const a=d.ref(null),l=d.ref(null),c=d.computed(()=>t.visible&&a.value!==null),h=[{id:"distance",svg:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 17l6-6 4 4 8-8"/></svg>'},{id:"angle",svg:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 20H4L14 4"/></svg>'},{id:"area",svg:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg>'}],u={distance:"距离",angle:"角度",area:"面积"},p=d.computed(()=>a.value?u[a.value]||"":l.value&&u[l.value.type]||""),f=d.computed(()=>{if(!l.value)return a.value==="distance"?"-- m":a.value==="angle"?"--°":a.value==="area"?"-- m²":"";const C=l.value;return C.type==="distance"?`${(C.dist??0).toFixed(3)} m`:C.type==="angle"?`${(C.angle??0).toFixed(2)}°`:C.type==="area"?`${(C.area??0).toFixed(2)} m²`:""}),m=d.computed(()=>l.value?.type||a.value),y=C=>C===void 0?"--":C.toFixed(3),g=()=>{if(o)return;const C=s?.value;C?.getViewer&&(o=new uc({viewer:C.getViewer(),cesium:C.getCesium()}),o.onMeasure=S=>{r||(l.value=S)})},A=C=>{g(),a.value===C?(a.value=null,o?.stop(),s?.value?.baseCompt?.enableSelection()):(a.value=C,l.value=null,o?.start(C),s?.value?.baseCompt?.disableSelection())},v=()=>{o?.clearAll(),o?.stop(),a.value=null,l.value=null,s?.value?.baseCompt?.enableSelection()},w=()=>{v(),n("update:visible",!1),n("close")};return d.watch(()=>t.visible,C=>{C?(g(),t.defaultTool&&A(t.defaultTool)):v()}),d.onUnmounted(()=>{r=!0,o?.destroy()}),(C,S)=>(d.openBlock(),d.createBlock(d.Transition,{name:"measure-fade"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",VL,[d.createVNode(d.Transition,{name:"card-slide"},{default:d.withCtx(()=>[c.value?(d.openBlock(),d.createElementBlock("div",QL,[d.createElementVNode("div",zL,[d.createElementVNode("div",HL,[d.createElementVNode("span",YL,d.toDisplayString(p.value)+":",1),d.createElementVNode("span",$L,d.toDisplayString(f.value),1)]),d.createElementVNode("button",{class:"clear-action-btn",onClick:v,title:"清空"},[...S[0]||(S[0]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2"},[d.createElementVNode("polyline",{points:"3 6 5 6 21 6"}),d.createElementVNode("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])])]),m.value==="distance"?(d.openBlock(),d.createElementBlock("div",jL,[d.createElementVNode("div",WL,[S[1]||(S[1]=d.createElementVNode("span",{class:"label-x"},"X:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dx)),1)]),d.createElementVNode("div",qL,[S[2]||(S[2]=d.createElementVNode("span",{class:"label-y"},"Y:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dy)),1)]),d.createElementVNode("div",KL,[S[3]||(S[3]=d.createElementVNode("span",{class:"label-z"},"Z:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dz)),1)])])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0)]),_:1}),d.createElementVNode("div",XL,[d.createElementVNode("button",{class:"nav-back-icon",onClick:w},[...S[4]||(S[4]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"3"},[d.createElementVNode("polyline",{points:"15 18 9 12 15 6"})],-1)])]),d.createElementVNode("div",JL,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(h,I=>d.createElementVNode("button",{key:I.id,class:d.normalizeClass(["sub-icon-box",{active:a.value===I.id}]),onClick:x=>A(I.id)},[d.createElementVNode("span",{class:"icon-svg",innerHTML:I.svg},null,8,e8)],10,ZL)),64))])])])):d.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-7ff442b7"]]),t8={class:"joystick-base"},i8={class:"leitingbim-control-panel"},n8={class:"ctrl-row zoom-row"},s8={class:"zoom-label"},o8={class:"ctrl-grid"},r8={class:"gravity-toggle"},a8={class:"arrow-col"},Ac=40,Dm=Be(d.defineComponent({__name:"MobilePlayer",props:{visible:{type:Boolean}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods");let o=!1;const r=d.ref(null),a=d.ref(0),l=d.ref(0),c=d.ref(!1),h=d.ref({x:0,y:0}),u=[.25,.5,1,2,4,8,16],p=d.ref(2),f=d.ref(!0);let m=null;const y=d.computed(()=>({transform:`translate(${a.value}px, ${l.value}px)`})),g=d.computed(()=>`${u[p.value]}X`),A=(G,k)=>{const _=[];return(Math.abs(G)>10||Math.abs(k)>10)&&(k<-10&&_.push("moveFront"),k>10&&_.push("moveBack"),G<-10&&_.push("moveLeft"),G>10&&_.push("moveRight")),_},v=()=>{o||["moveFront","moveBack","moveLeft","moveRight"].forEach(G=>{s?.value?.setPlayerAction?.(G,!1)})},w=G=>{if(o)return;["moveFront","moveBack","moveLeft","moveRight"].forEach(_=>{const U=G.includes(_);s?.value?.setPlayerAction?.(_,U)})},C=G=>{const k=G.touches[0],_=r.value.getBoundingClientRect();h.value={x:_.left+_.width/2,y:_.top+_.height/2},c.value=!0,k&&I(k.clientX,k.clientY)},S=G=>{if(!c.value)return;const k=G.touches[0];k&&I(k.clientX,k.clientY)},I=(G,k)=>{if(o)return;let _=G-h.value.x,U=k-h.value.y;const H=Math.sqrt(_*_+U*U);H>Ac&&(_=_/H*Ac,U=U/H*Ac),a.value=_,l.value=U;const q=A(_,U);w(q)},x=()=>{c.value=!1,a.value=0,l.value=0,v()},M=()=>{B(),m=setInterval(()=>{p.value<u.length-1&&(p.value++,R())},150)},L=()=>{B(),m=setInterval(()=>{p.value>0&&(p.value--,R())},150)},b=()=>{B()},B=()=>{m&&(clearInterval(m),m=null)},R=()=>{o||s?.value?.setPlayerSpeed?.(u[p.value])},O=()=>{s?.value?.setPlayerAction?.("moveUp",!0)},N=()=>{s?.value?.setPlayerAction?.("moveUp",!1)},D=()=>{s?.value?.setPlayerAction?.("moveDown",!0)},E=()=>{s?.value?.setPlayerAction?.("moveDown",!1)},T=()=>{s?.value?.setPlayerParams?.({gravityTest:f.value,collisionTest:!0})},P=()=>{V(),n("update:visible",!1),n("close")},F=async()=>{if(!o)try{if(!s?.value){setTimeout(()=>F(),150);return}s.value.startCameraRoam&&s.value.startCameraRoam(),s.value.setPlayerSpeed?.(u[p.value])}catch(G){console.error("MobilePlayer startPlayer error:",G)}},V=()=>{v(),o||s?.value?.closePlayer?.(),B()};return d.watch(()=>t.visible,G=>{o||(G?F():V())},{immediate:!0}),d.onUnmounted(()=>{o=!0,V()}),(G,k)=>i.visible?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-player-overlay",onTouchmove:k[1]||(k[1]=d.withModifiers(()=>{},["prevent"]))},[d.createElementVNode("button",{class:"player-exit-btn",onClick:P}," 退出 "),d.createElementVNode("div",{class:"joystick-zone",ref_key:"joystickRef",ref:r,onTouchstart:d.withModifiers(C,["prevent"]),onTouchmove:d.withModifiers(S,["prevent"]),onTouchend:d.withModifiers(x,["prevent"]),onTouchcancel:d.withModifiers(x,["prevent"])},[d.createElementVNode("div",t8,[d.createElementVNode("div",{class:"joystick-knob",style:d.normalizeStyle(y.value)},null,4)])],544),d.createElementVNode("div",i8,[d.createElementVNode("div",n8,[d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-sm",onTouchstart:d.withModifiers(L,["prevent"]),onTouchend:d.withModifiers(b,["prevent"])},"−",32),d.createElementVNode("span",s8,d.toDisplayString(g.value),1),d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-sm",onTouchstart:d.withModifiers(M,["prevent"]),onTouchend:d.withModifiers(b,["prevent"])},"+",32)]),d.createElementVNode("div",o8,[d.createElementVNode("label",r8,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":k[0]||(k[0]=_=>f.value=_),onChange:T},null,544),[[d.vModelCheckbox,f.value]]),k[2]||(k[2]=d.createElementVNode("span",{class:"toggle-checkbox"},null,-1)),k[3]||(k[3]=d.createElementVNode("span",{class:"toggle-label"},"重力",-1))]),d.createElementVNode("div",a8,[d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-arrow",onTouchstart:d.withModifiers(O,["prevent"]),onTouchend:d.withModifiers(N,["prevent"])},[...k[4]||(k[4]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"18 15 12 9 6 15"})],-1)])],32),d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-arrow",onTouchstart:d.withModifiers(D,["prevent"]),onTouchend:d.withModifiers(E,["prevent"])},[...k[5]||(k[5]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])],32)])])])],32)):d.createCommentVNode("",!0)}}),[["__scopeId","data-v-d80a8120"]]),l8={key:0,class:"mobile-info-sheet-wrapper"},c8={class:"info-body"},d8={key:0,class:"empty-hint"},h8={key:0,class:"component-title"},u8={class:"group-list"},f8=["onClick"],p8={class:"group-name"},m8={key:0,class:"group-content"},g8={class:"kv-key"},y8={class:"kv-value"},Nm=Be(d.defineComponent({__name:"MobileInfo",props:{visible:{type:Boolean}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),a=d.ref(new Set),l=d.ref([]);let c=!1;const h=d.computed({get:()=>!!t.visible,set:S=>{n("update:visible",S)}}),u=S=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[S]||S,p=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],f=(S,I)=>`${S}__${I}`,m=(S,I)=>a.value.has(f(S,I)),y=(S,I)=>{const x=f(S,I);a.value.has(x)?a.value.delete(x):a.value.add(x)},g=()=>{const S=new Set;o.value.forEach(I=>{I.groups.forEach(x=>{S.add(f(I.id,x.name))})}),a.value=S},A=()=>{h.value=!1,n("close")},v=async S=>{if(c)return;if(l.value=S||[],!S||S.length===0){o.value=[];return}let I=S;S.length>10&&(pe.warning(`选中构件数量过多(${S.length}个),仅显示前10个`),I=S.slice(0,10));const x=s?.value;let M=x?.getMapTileset?x.getMapTileset():{};r.value=!0;const L=new Set;if(I.forEach(B=>{const R=M[B.modelId];R&&R.leiting&&!R.leiting?.node?.nodeExtras&&R.leiting.model?.nodeUrl&&L.add(B.modelId)}),L.size>0&&x?._loadNodeDetailsForModel)try{await Promise.all(Array.from(L).map(B=>x._loadNodeDetailsForModel(B)))}catch(B){console.error("Failed to load node details",B)}if(c)return;M=x?.getMapTileset?x.getMapTileset():{};const b=[];I.forEach((B,R)=>{const N=M[B.modelId]?.leiting||{};let D={modelName:N.model?.modelId||B.modelId};D.elementID||(D.elementID=B.elementId);let E=null;const T=N.node?.nodeExtras?.element||N.node?.nodeExtras;if(T){const V=D.elementID;T[V]&&(E=T[V])}E&&E.box3&&(D.length=`${E.box3.length?.toFixed(2)||0}米`,D.width=`${E.box3.width?.toFixed(2)||0}米`,D.height=`${E.box3.height?.toFixed(2)||0}米`);const P=[];E&&(E.name&&(D.elementName=E.name),E.categoryName&&(D.categoryName=E.categoryName),E.familySymbolName&&(D.familySymbolName=E.familySymbolName),E.levelName&&(D.levelName=E.levelName));const F={};if(p.forEach(V=>{D[V]!==void 0&&(F[V]=D[V])}),P.push({name:"基本属性",params:F}),E){const V=Array.isArray(E)?E:Array.isArray(E?.parameters)?E.parameters:null;if(V)V.flat().forEach(k=>{if(k&&k.GroupName&&Array.isArray(k.Parameters)){const _={};k.Parameters.forEach(U=>{U.name&&(_[U.name]=U.value??"")}),Object.keys(_).length>0&&P.push({name:k.GroupName,params:_})}});else{let G=!1;if(Object.keys(E).forEach(k=>{E[k]&&typeof E[k]=="object"&&!Array.isArray(E[k])&&(G=!0,P.push({name:k,params:E[k]}))}),!G){const k={};Object.keys(E).forEach(_=>{if(!p.includes(_)&&_!=="batchId"){const U=E[_];k[_]=typeof U=="string"&&U.length>500?U.substring(0,500)+"...":U}}),Object.keys(k).length>0&&P.push({name:"其他属性",params:k})}}}b.push({id:R,title:`${D.modelName}${D.elementName?` - ${D.elementName}`:""}`,groups:P})}),o.value=b,r.value=!1,!c&&b.length>0&&g()};let w=!1;const C=()=>{if(w)return;const S=s?.value;S&&S.selectionChange&&(S.selectionChange(v),w=!0)};return d.watch(()=>s?.value,()=>C(),{deep:!0,immediate:!0}),d.watch(h,S=>{S&&(C(),l.value.length>0&&v(l.value))}),d.onUnmounted(()=>{c=!0}),(S,I)=>(d.openBlock(),d.createBlock(d.Transition,{name:"info-slide"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",l8,[d.createElementVNode("div",{class:"mobile-info-sheet",onTouchmove:I[0]||(I[0]=d.withModifiers(()=>{},["stop"])),onClick:I[1]||(I[1]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("div",{class:"info-header"},[I[3]||(I[3]=d.createElementVNode("span",{class:"info-title"},"构件详情",-1)),d.createElementVNode("button",{class:"info-close-btn",onClick:A},[...I[2]||(I[2]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),I[5]||(I[5]=d.createElementVNode("div",{class:"info-tabs"},[d.createElementVNode("span",{class:"tab-item active"},"属性")],-1)),d.createElementVNode("div",c8,[d.createVNode(d.unref(oe.Spin),{spinning:r.value},{default:d.withCtx(()=>[o.value.length===0&&!r.value?(d.openBlock(),d.createElementBlock("div",d8," 暂无数据 ")):d.createCommentVNode("",!0),(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,x=>(d.openBlock(),d.createElementBlock("div",{key:x.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",h8,d.toDisplayString(x.title),1)):d.createCommentVNode("",!0),d.createElementVNode("div",u8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(x.groups,(M,L)=>(d.openBlock(),d.createElementBlock("div",{key:`${x.id}-${L}`,class:"group-item"},[d.createElementVNode("button",{class:d.normalizeClass(["group-header",{expanded:m(x.id,M.name)}]),onClick:b=>y(x.id,M.name)},[I[4]||(I[4]=d.createElementVNode("svg",{class:"arrow-icon",viewBox:"0 0 16 16",width:"12",height:"12",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"4 6 8 10 12 6"})],-1)),d.createElementVNode("span",p8,d.toDisplayString(M.name),1)],10,f8),d.createVNode(d.Transition,{name:"group-expand"},{default:d.withCtx(()=>[m(x.id,M.name)?(d.openBlock(),d.createElementBlock("div",m8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(M.params,(b,B)=>(d.openBlock(),d.createElementBlock("div",{key:B,class:"kv-row"},[d.createElementVNode("span",g8,d.toDisplayString(u(String(B))),1),d.createElementVNode("span",y8,d.toDisplayString(b),1)]))),128))])):d.createCommentVNode("",!0)]),_:2},1024)]))),128))])]))),128))]),_:1},8,["spinning"])])],32)])):d.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-c4855585"]]),A8={class:"mobile-cad-layer-container"},v8={class:"model-selector"},b8={class:"layer-list-container"},w8={class:"list-header"},C8={class:"col-check"},E8=["checked"],x8={class:"list-body"},I8=["onClick"],S8=["checked","onChange"],M8={class:"col-index"},T8=["title"],B8={class:"col-color"},_8={key:0,class:"empty-state"},k8=Be(d.defineComponent({__name:"MobileCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),a=d.computed({get:()=>t.visible,set:C=>n("update:visible",C)}),l=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(C=>({modelId:C.modelId,modelName:C.modelName}))||[])},c=d.computed(()=>r.value.map(C=>({value:C.modelId,label:C.modelName}))),h=d.ref([]),u=d.ref([]),p=d.computed(()=>h.value.length>0&&u.value.length===h.value.length),f=({modelId:C})=>{if(h.value=[],u.value=[],s.value&&s.value.getDxfLayers){const S=s.value.getDxfLayers({modelId:C});S&&Object.keys(S).forEach((I,x)=>{S[I].length&&(h.value.push({index:x+1,layerName:I,layerColor:S[I][0].color||"#ffffff",key:I}),u.value.push(I))})}},m=C=>{o.value=C,f({modelId:C})},y=C=>{C.target.checked?u.value=h.value.map(I=>I.key):u.value=[],A()},g=(C,S)=>{S.target.checked?u.value.includes(C)||u.value.push(C):u.value=u.value.filter(x=>x!==C),A()},A=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:u.value}),s.value.getDxfLayers)){const C=s.value.getDxfLayers({modelId:o.value});if(C){const S=Object.keys(C).filter(I=>!u.value.includes(I));s.value.showDxfLayer({modelId:o.value,show:!1,layers:S})}}},v=C=>{a.value=C},w=()=>{n("update:visible",!1),n("handleCloseCardByCadCard")};return d.watch(()=>t.visible,C=>{C&&(l(),t.currentModelId?(o.value=t.currentModelId,f({modelId:t.currentModelId})):c.value.length>0&&(o.value=c.value[0]?.value,f({modelId:o.value})))}),d.watch(()=>t.currentModelId,C=>{C&&t.visible&&(o.value=C,f({modelId:C}))}),(C,S)=>(d.openBlock(),d.createBlock(jr,{visible:a.value,title:"CAD图层",direction:"bottom","show-handle":!0,height:"70vh",class:"mobile-cad-layer-drawer","onUpdate:visible":v,onClose:w},{default:d.withCtx(()=>[d.createElementVNode("div",A8,[d.createElementVNode("div",v8,[S[3]||(S[3]=d.createElementVNode("span",{class:"selector-label"},"图纸:",-1)),d.createVNode(d.unref(oe.Select),{value:o.value,"onUpdate:value":S[0]||(S[0]=I=>o.value=I),options:c.value,onChange:S[1]||(S[1]=I=>m(I)),placeholder:"选择模型",class:"mobile-model-select",popupClassName:"mobile-cad-select-dropdown",size:"large"},null,8,["value","options"])]),d.createElementVNode("div",b8,[d.createElementVNode("div",w8,[d.createElementVNode("div",C8,[d.createElementVNode("input",{type:"checkbox",checked:p.value,onChange:y,class:"mobile-checkbox"},null,40,E8)]),S[4]||(S[4]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),S[5]||(S[5]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),S[6]||(S[6]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",x8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(h.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.key,class:"list-item",onClick:x=>g(I.key,{target:{checked:!u.value.includes(I.key)}})},[d.createElementVNode("div",{class:"col-check",onClick:S[2]||(S[2]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("input",{type:"checkbox",checked:u.value.includes(I.key),onChange:x=>g(I.key,x),class:"mobile-checkbox"},null,40,S8)]),d.createElementVNode("div",M8,d.toDisplayString(I.index),1),d.createElementVNode("div",{class:"col-name",title:I.layerName},d.toDisplayString(I.layerName),9,T8),d.createElementVNode("div",B8,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:I.layerColor})},null,4)])],8,I8))),128)),h.value.length===0?(d.openBlock(),d.createElementBlock("div",_8,[...S[7]||(S[7]=[d.createElementVNode("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[d.createElementVNode("path",{d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),d.createElementVNode("p",null,"暂无图层信息",-1)])])):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-63da9a15"]]),P8={class:"mobile-annotation-panel"},D8={class:"tools-section"},N8={class:"tools-grid"},L8={class:"style-section"},R8={class:"style-item"},F8={class:"color-picker-wrapper"},O8={class:"style-item"},G8={class:"line-width-options"},U8=["onClick"],V8={class:"width-label"},Q8=Be(d.defineComponent({__name:"MobileAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),a=d.ref(3),l=d.computed({get:()=>t.visible,set:v=>n("update:visible",v)}),c=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],h=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,u=()=>{const v=h();if(v&&(typeof v.hideEntityOutline=="function"&&v.hideEntityOutline(),v.selectedEntityObj=null,v.drawTool&&typeof v.drawTool.deactivate=="function"))try{v.drawTool.deactivate()}catch(w){console.warn("Failed to deactivate drawTool:",w)}o.value="",n("update:visible",!1)},p=v=>{if(o.value===v){o.value="";return}o.value=v;const w=h();if(w)switch(v){case"freehandLine":w.startFreehandLine();break;case"arrow":w.startArrow();break;case"straightLine":w.startStraightLine();break;case"rectangle":w.startRectangle();break;case"ellipse":w.startEllipse();break}},f=()=>{const v=h();v&&(v.setCurrentColor(r.value),v.changeColor(r.value))},m=v=>{a.value=v;const w=h();w&&(w.setCurrentWidth(v),w.changeWidth(v))},y=()=>{const v=h();v&&v.deleteSelectedEntity()},g=()=>{const v=h();v&&v.clearAll()},A=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const v=h();v&&v.saveAnnotations()};return(v,w)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"annotation-slide"},{default:d.withCtx(()=>[l.value?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-annotation-overlay",onClick:d.withModifiers(u,["self"])},[d.createElementVNode("div",P8,[d.createElementVNode("div",{class:"panel-header"},[w[7]||(w[7]=d.createElementVNode("span",{class:"panel-title"},"标注",-1)),d.createElementVNode("button",{class:"panel-close-btn",onClick:u},[...w[6]||(w[6]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),d.createElementVNode("div",D8,[w[13]||(w[13]=d.createElementVNode("div",{class:"section-label"},"绘图工具",-1)),d.createElementVNode("div",N8,[d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="freehandLine"}]),onClick:w[0]||(w[0]=C=>p("freehandLine"))},[...w[8]||(w[8]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1),d.createElementVNode("span",{class:"tool-label"},"手绘线",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="arrow"}]),onClick:w[1]||(w[1]=C=>p("arrow"))},[...w[9]||(w[9]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1),d.createElementVNode("span",{class:"tool-label"},"箭头",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="straightLine"}]),onClick:w[2]||(w[2]=C=>p("straightLine"))},[...w[10]||(w[10]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1),d.createElementVNode("span",{class:"tool-label"},"直线",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="rectangle"}]),onClick:w[3]||(w[3]=C=>p("rectangle"))},[...w[11]||(w[11]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1),d.createElementVNode("span",{class:"tool-label"},"矩形",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="ellipse"}]),onClick:w[4]||(w[4]=C=>p("ellipse"))},[...w[12]||(w[12]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1),d.createElementVNode("span",{class:"tool-label"},"椭圆",-1)])],2)])]),w[21]||(w[21]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",L8,[w[16]||(w[16]=d.createElementVNode("div",{class:"section-label"},"样式设置",-1)),d.createElementVNode("div",R8,[w[14]||(w[14]=d.createElementVNode("span",{class:"style-label"},"颜色",-1)),d.createElementVNode("div",F8,[d.createElementVNode("div",{class:"color-preview",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":w[5]||(w[5]=C=>r.value=C),onChange:f,class:"color-input"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",O8,[w[15]||(w[15]=d.createElementVNode("span",{class:"style-label"},"线宽",-1)),d.createElementVNode("div",G8,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(c,C=>d.createElementVNode("button",{key:C.value,class:d.normalizeClass(["width-btn",{active:a.value===C.value}]),onClick:S=>m(C.value)},[d.createElementVNode("div",{class:"width-line",style:d.normalizeStyle({height:C.value+"px",backgroundColor:a.value===C.value?"#00e5d1":"#fff"})},null,4),d.createElementVNode("span",V8,d.toDisplayString(C.label),1)],10,U8)),64))])])]),w[22]||(w[22]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",{class:"action-section"},[w[20]||(w[20]=d.createElementVNode("div",{class:"section-label"},"操作",-1)),d.createElementVNode("div",{class:"action-grid"},[d.createElementVNode("button",{class:"action-btn delete-btn",onClick:y},[...w[17]||(w[17]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("polyline",{points:"3 6 5 6 21 6"}),d.createElementVNode("path",{d:"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"})],-1),d.createElementVNode("span",null,"删除",-1)])]),d.createElementVNode("button",{class:"action-btn clear-btn",onClick:g},[...w[18]||(w[18]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1),d.createElementVNode("span",null,"清空",-1)])]),d.createElementVNode("button",{class:"action-btn save-btn",onClick:A},[...w[19]||(w[19]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("path",{d:"M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z"}),d.createElementVNode("polyline",{points:"17 21 17 13 7 13 7 21"}),d.createElementVNode("polyline",{points:"7 3 7 8 15 8"})],-1),d.createElementVNode("span",null,"保存",-1)])])])])])])):d.createCommentVNode("",!0)]),_:1})]))}}),[["__scopeId","data-v-9b4979c4"]]),z8=["src"],Wr=Be(d.defineComponent({__name:"LeitingBIM",props:{accessToken:{},cesiumUrl:{},cesiumCssUrl:{},methods:{},viewerOptions:{},treeProps:{},showTree:{type:Boolean,default:!0},showMenu:{type:Boolean,default:!1},playerUrl:{default:"https://leiting.chenxisoft.com/resource/person/person.glb"},playerModelName:{default:"Person"},playerModelId:{default:"player_111"},playerScale:{default:.0032},tiandituToken:{default:"c25f14fb6bd4397cf8fe45144ff768d6"},globe:{type:Boolean,default:void 0},terrain:{type:Boolean,default:void 0},depthTest:{type:Boolean,default:void 0},mapProvider:{},tiandituLayerType:{},tiandituShowLabel:{type:Boolean,default:void 0},arcgisUrl:{},teleportTarget:{},shadows:{type:Boolean,default:void 0},environmentMap:{type:Boolean,default:void 0},ambientOcclusion:{type:Boolean,default:void 0},time:{},brightness:{},backgroundColor:{},collision:{type:Boolean,default:void 0},mouseHabit:{},mode:{default:"3d"},mountAll3Dtiles:{},mountAllCad:{},saveRegion:{},saveCadRegion:{},saveCadCalibration:{},selectionChange:{},searchComponent:{}},emits:["register","init","ready"],setup(i,{expose:e,emit:t}){const n=d.ref(),s=d.ref(),o=d.getCurrentInstance(),r=d.ref(!1),a=d.ref(""),l=d.ref({}),c=d.ref("3d"),{isMobile:h}=Fr(),u=i,p={title:"构件树",treeData:[]},f=d.ref(!1),m=d.ref(!1),y=d.ref(!1),g=d.ref(!1),A=d.ref(!1),v=d.ref(!1),w=d.ref(!1),C=d.ref(!1),S=d.ref(!1),I=d.ref(!1),x=d.ref(!1),M=d.ref(null),{visible:L,position:b,items:B,show:R,hide:O}=Mm(),N=d.ref([]),D=j=>{N.value.push(j)},E=j=>{N.value=N.value.filter(Y=>Y.id!==j)},T=d.ref([]),P=d.ref(""),F=d.ref(null),V=d.ref([]),G=d.reactive({tree:!1,section:!1,roam:!1,info:!1,adjustModel:!1,setting:!1,cadLayer:!1,cadPosition:!1,gisCadPosition:!1,annotation:!1}),k=(j,Y)=>{j==="componentTree"&&(j="tree"),j==="componentInfo"&&(j="info"),j in G&&(G[j]=Y)},_=d.shallowRef({});d.provide("leitingMethods",_);const U=d.ref(u.showMenu),H=d.ref([]);d.watch(()=>u.showMenu,j=>{U.value=j},{immediate:!0}),d.watch(()=>u.mode,j=>{j&&_.value?.set2d&&_.value.set2d(j==="2d")});const q=d.ref("dark");d.provide("leiting-theme",q);const X=d.ref(u.teleportTarget);d.watch(()=>u.teleportTarget,j=>{X.value=j});const de=d.ref([]),fe=d.computed(()=>{const j=[];return f.value&&(j.push("tree"),j.push("componentTree")),m.value&&j.push("section"),y.value&&j.push("roam"),g.value&&(j.push("info"),j.push("componentInfo")),A.value&&j.push("adjust"),v.value&&j.push("setting"),w.value&&j.push("cadLayer"),C.value&&j.push("cadPosition"),S.value&&j.push("gisCadPosition"),I.value&&j.push("annotation"),x.value&&(j.push("measure"),j.push("measurement")),j.push(...de.value),j}),me=d.ref(null),be=(j,Y)=>{j==="componentTree"||j==="tree"?f.value=Y:j==="section"?m.value=Y:j==="roam"?y.value=Y:j==="componentInfo"||j==="info"?g.value=Y:j==="homeView"?_.value?.is2dMode?.()?_.value?.flyToTopView?.({}):_.value?.getBIMmodelId()?_.value?.flyToTileset?.({}):_.value?.getCadModelId()&&_.value?.flyToTopView?.({}):j==="adjustModel"?(A.value=Y,Y&&me.value&&me.value.setModelType("BIM")):j==="osgbAdjust"?(A.value=Y,Y&&me.value&&me.value.setModelType("OSGB")):j==="setting"?v.value=Y:j==="cadLayer"?w.value=Y:j==="cadPosition"?C.value=Y:j==="gisCadPosition"?S.value=Y:j==="annotation"?I.value=Y:j==="measurement"?x.value=Y:Y?de.value.includes(j)||de.value.push(j):de.value=de.value.filter(te=>te!==j)},_e=j=>{const Y=j.key||j.ID;if(!Y)return;if(Y==="homeView"||Y==="home"){be(Y,!0);return}if(Y==="measurement"){M.value="distance",x.value=!0;return}const te=!fe.value.includes(j.ID);be(Y,te)},Je=j=>{const Y=j.sub;if(!Y)return;const te=Y.parentKey||j.parent?.key;te==="measurement"?(M.value=Y.id.replace("measure-",""),x.value=!0):te==="section"&&(m.value=!0)};d.watch(f,async j=>{if(j&&_.value?.loadTreeForModel&&_.value?.getMapTileset){const Y=_.value.getMapTileset(),te=Object.values(Y).map(async ze=>{if(ze.leiting&&ze.leiting.model?.treeUrl){const It=ze.leiting.model.modelId;try{ze.leiting?.node?.batchIdEIDInfos||await _.value.loadNodeDetailsForModel(It);const $t=await _.value.loadTreeForModel(It);$t&&(Array.isArray($t)?$t:[$t]).forEach(Yi=>{Yi&&!V.value.find(zd=>zd.id===Yi.id)&&(Yi.modelId=It,V.value=[...V.value,Yi])})}catch($t){console.warn(`Failed to lazy load tree for ${It}`,$t)}}});await Promise.all(te)}});const lt=()=>{_.value&&(_.value.getDxfModels&&(T.value=_.value.getDxfModels()||[]),_.value.getCadModelId&&(P.value=_.value.getCadModelId()||""))};let ct;d.watch(w,j=>{j&<()}),d.watch(C,j=>{j&&(lt(),F.value&&T.value.length&&F.value.addGltfOr3dTilesModelList(T.value))});const _t=t,vt=j=>{_.value&&_.value.saveCadCalibration&&_.value.saveCadCalibration(j),_.value&&_.value.saveCadRegion&&_.value.saveCadRegion(j)};return d.onMounted(async()=>{if(s.value&&pe.setContainer(s.value),!!n.value)try{const j={...bn,cesiumUrl:u.cesiumUrl||bn.cesiumUrl,cesiumCssUrl:u.cesiumCssUrl||bn.cesiumCssUrl,accessToken:u.accessToken||Kd()||bn.accessToken};await Ua(j),r.value=!0,ct=async(te={},ze)=>{if(n.value){const{showMenu:It,showTree:$t,globe:yn,terrain:Yi,depthTest:zd,mapProvider:nU,tiandituLayerType:sU,tiandituShowLabel:oU,arcgisUrl:rU,shadows:aU,environmentMap:lU,ambientOcclusion:cU,time:dU,brightness:hU,backgroundColor:uU,collision:fU,mouseHabit:pU,heightBasedZoom:mU,mode:sy,...ci}=te||{},gU=u.showMenu!==void 0?u.showMenu:It!==void 0?It:!0;U.value=gU;const ft=(ne,He,jt)=>ne!==void 0?ne:He!==void 0?He:jt,oy=ft(u.globe,yn,!1),ry=ft(u.terrain,Yi,!1),ay=ft(u.depthTest,zd,!1),ly=ft(u.mapProvider,nU,"tianditu"),cy=ft(u.tiandituLayerType,sU,"img_w"),dy=ft(u.tiandituShowLabel,oU,!1),hy=ft(u.arcgisUrl,rU,"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"),uy=ft(u.shadows,aU,!1),fy=ft(u.environmentMap,lU,!1),py=ft(u.ambientOcclusion,cU,!1),my=ft(u.time,dU,void 0),gy=ft(u.brightness,hU,1),Na=u.mode||sy||"3d";console.log("LeitingBIM Mode:",Na,"Props:",u.mode,"Options:",sy),c.value=Na;const yU=Na==="2d"?"#000000":"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)",yy=ft(u.backgroundColor,uU,yU),Ay=ft(u.collision,fU,!1),vy=ft(u.mouseHabit,pU,0),by=ft(u.heightBasedZoom,mU,!1);l.value={globe:oy,terrain:ry,depthTest:ay,mapProvider:ly,tiandituLayerType:cy,tiandituShowLabel:dy,arcgisUrl:hy,shadows:uy,environmentMap:fy,ambientOcclusion:py,time:my,brightness:gy,backgroundColor:yy,collision:Ay,mouseHabit:vy,heightBasedZoom:by,useBrowserRecommendedResolution:!0};const No=wB({container:n.value,appContext:o?.appContext,methods:{..._.value,handleMenuAction:be,setCardFullHeight:k,onLoadingStatus:ne=>{ne?pe.loading(ne,"",s.value):pe.close()},...ci,tilesLoad3dTiles:async ne=>{let He=ne.leiting?.tree;const jt=ne.leiting?.model?.modelId;if(!He&&f.value&&_.value?.loadTreeForModel)try{He=await _.value.loadTreeForModel(jt)}catch(Ro){console.warn("Failed to lazy load tree",Ro)}He&&(Array.isArray(He)?He:[He]).forEach(vn=>{vn&&!V.value.find(Cy=>Cy.id===vn.id)&&(vn.modelId=jt,V.value=[...V.value,vn])});const{brightness:Hd,contrast:Yd,saturation:wi}=No.methods.getConfigure();No.methods.setModelColorAdjustment({brightness:Hd,contrast:Yd,saturation:wi}),ci.tilesLoad3dTiles?.(ne)},mountAll3Dtiles:ne=>{u.mountAll3Dtiles&&u.mountAll3Dtiles(ne),ci.mountAll3Dtiles?.(ne)},updateModels:ne=>{if(Array.isArray(ne))if(ne.length===0)V.value=[];else{const He=ne.map(jt=>jt.modelId);V.value=V.value.filter(jt=>He.includes(jt.modelId))}},mountAllCad:ne=>{if(No.methods.setModelBrightness){const He=u.brightness!==void 0?u.brightness:l.value.brightness;He!==void 0&&No.methods.setModelBrightness(He)}u.mountAllCad&&u.mountAllCad(ne),ci.mountAllCad?.(ne)},saveRegion:ne=>{u.saveRegion&&u.saveRegion(ne),ci.saveRegion?.(ne)},saveCadRegion:ne=>{u.saveCadRegion&&u.saveCadRegion(ne),ci.saveCadRegion?.(ne)},saveCadCalibration:ne=>{u.saveCadCalibration&&u.saveCadCalibration(ne),ci.saveCadCalibration?.(ne)},selectionChange:ne=>{u.selectionChange&&u.selectionChange(ne),ci.selectionChange?.(ne)},onSearchComponent:ne=>{u.searchComponent&&u.searchComponent(ne),ci.searchComponent?.(ne)}},viewerOptions:u.viewerOptions,options:{...ci,mode:Na,playerUrl:u.playerUrl,playerModelName:u.playerModelName,playerModelId:u.playerModelId,playerScale:u.playerScale,globe:oy,terrain:ry,depthTest:ay,mapProvider:ly,tiandituLayerType:cy,tiandituShowLabel:dy,tiandituToken:u.tiandituToken,arcgisUrl:hy,shadows:uy,environmentMap:fy,ambientOcclusion:py,time:my,brightness:gy,backgroundColor:yy,collision:Ay,mouseHabit:vy,heightBasedZoom:by},callbacks:{onLoading:ne=>ne?pe.loading(ne,"",s.value):pe.close(),onSuccess:ne=>pe.success(ne,"",void 0,s.value),onError:ne=>pe.error(ne,"",void 0,s.value)}}),{Cesium:An,viewer:gs,methods:La,menuEvents:Lo}=No,xe=La;Lo.on("showMenu",ne=>{U.value=ne}),Lo.on("insertMenu",ne=>{H.value=[...H.value,...ne]}),Lo.on("setMenuActive",(ne,He)=>{be(ne,He)}),_.value=xe,ze&&(ze.value=xe),Lo.on("setMode",ne=>{c.value=ne}),Lo.on("deleteAllModels",()=>{V.value=[]}),new An.ScreenSpaceEventHandler(gs.scene.canvas).setInputAction(async ne=>{if(O(),c.value==="2d")return;const He=gs.scene.pick(ne.position),jt=gs.container.getBoundingClientRect(),Hd=jt.left+ne.position.x,Yd=jt.top+ne.position.y,wi=[];if(An.defined(He)&&He instanceof An.Cesium3DTileFeature){const Ro=xe.baseCompt.getFeatureId(He),vn=ks(He.tileset);xe.baseCompt.hasSelectedFeaturesMap[vn]?.some(Fo=>Fo.batchId===Ro&&Fo.rank===0)||(await xe.baseCompt.clearSelection(),await xe.baseCompt.toggleMultiSelect(vn,Ro,xe.baseCompt.selectedColor)),wi.push({id:"details",label:"构件详情",action:()=>{g.value=!0}}),wi.push({id:"hide",label:"隐藏选中构件",action:async()=>{const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,show:!1}));xe.baseCompt.setComponentVisibility(Oo)}}),wi.push({id:"translucent",label:"半透明选中构件",action:async()=>{const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,rgba:{...Ci.rgba,a:.3}}));await xe.baseCompt.setSelectColorUserModelCpt(Oo,{rank:0})}}),wi.push({id:"isolate",label:"隔离选中构件",divided:!0,action:async()=>{await xe.baseCompt.loadAllNodeDetailsForModel();const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,show:!0}));xe.isolateComponents(Oo)}})}wi.push({id:"showAll",label:"显示所有",action:async()=>{xe.baseCompt.setAllComponentsVisibility(!0),await xe.baseCompt.clearSelection()}}),wi.push(...N.value),R({x:Hd,y:Yd},wi)},An.ScreenSpaceEventType.RIGHT_CLICK),xe.addContextMenuItems=D,xe.insertContextMenu=xe.addContextMenuItems,xe.removeContextMenuItems=E,xe.deleteContextMenu=xe.removeContextMenuItems,xe.closeContextMenu=O,xe.hideContextMenu=xe.closeContextMenu,xe.onSetTeleportTarget=ne=>{X.value=ne},await d.nextTick();const wy=te?.onLoaded||te?.onloaded;wy&&wy({Cesium:An,viewer:gs,methods:La}),_t("init",{Cesium:An,viewer:gs,methods:La}),_t("ready",{Cesium:An,viewer:gs,methods:La})}};let Y=!1;_t("register",(te,ze)=>{Y=!0,ct(te,ze)}),Y||setTimeout(()=>{_.value.getViewer||ct()},0)}catch(j){a.value="Failed to load Cesium: "+(j.message||j),console.error(j)}}),d.onUnmounted(()=>{pe.setContainer(null)}),e({initMap:()=>_.value,initializeViewer:(j,Y)=>ct(j,Y)}),(j,Y)=>(d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-bim-container",[`theme-${q.value}`]]),onContextmenu:Y[29]||(Y[29]=d.withModifiers(()=>{},["prevent","stop"]))},[!r.value&&!a.value?(d.openBlock(),d.createBlock(d.unref(oe.Spin),{key:0,class:"loading",size:"large",tip:"加载基础组件中..."})):d.createCommentVNode("",!0),a.value?(d.openBlock(),d.createBlock(d.unref(oe.Alert),{key:1,class:"error",type:"error",message:a.value,"show-icon":""},null,8,["message"])):d.createCommentVNode("",!0),d.createElementVNode("div",{ref_key:"containerRef",ref:n,class:"cesium-viewer"},[d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(ao,{key:0,visible:U.value,"active-ids":fe.value,"custom-items":H.value,onAction:be,"is-2d":c.value==="2d"},null,8,["visible","active-ids","custom-items","is-2d"])),d.unref(h)&&!y.value&&!x.value?(d.openBlock(),d.createBlock(Tm,{key:1,"active-ids":fe.value,"is-2d":c.value==="2d",onItemClick:_e,onSubItemClick:Je},null,8,["active-ids","is-2d"])):d.createCommentVNode("",!0),d.unref(h)&&i.showTree!==!1&&!y.value&&c.value!=="2d"?(d.openBlock(),d.createElementBlock("button",{key:2,class:d.normalizeClass(["mobile-float-tree-btn",{active:f.value}]),onClick:Y[0]||(Y[0]=te=>f.value=!f.value)},[d.createElementVNode("img",{src:d.unref(Gr),class:"mobile-float-tree-icon",alt:"目录树"},null,8,z8)],2)):d.createCommentVNode("",!0),(d.openBlock(),d.createBlock(d.Teleport,{to:X.value||"body",disabled:!X.value},[d.createElementVNode("div",{ref_key:"uiOverlayRef",ref:s,class:"leiting-ui-overlay"},[d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(ho,{key:0,visible:g.value,"full-height":G.info,"onUpdate:visible":Y[1]||(Y[1]=te=>g.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(Nm,{key:1,visible:g.value,"onUpdate:visible":Y[2]||(Y[2]=te=>g.value=te),onClose:Y[3]||(Y[3]=()=>{g.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.createVNode(uo,{ref_key:"LeitingPositionRef",ref:me,visible:A.value,"full-height":G.adjustModel,"onUpdate:visible":Y[4]||(Y[4]=te=>A.value=te)},null,8,["visible","full-height"]),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(fo,{key:2,visible:v.value,"full-height":G.setting,"tianditu-token":u.tiandituToken,"initial-config":l.value,"onUpdate:visible":Y[5]||(Y[5]=te=>v.value=te)},null,8,["visible","full-height","tianditu-token","initial-config"])),d.unref(h)?(d.openBlock(),d.createBlock(_m,{key:3,visible:v.value,"onUpdate:visible":Y[6]||(Y[6]=te=>v.value=te),onClose:Y[7]||(Y[7]=()=>{v.value=!1,de.value=de.value.filter(te=>te!=="setting")})},null,8,["visible"])):d.createCommentVNode("",!0),i.showTree!==!1&&!d.unref(h)?(d.openBlock(),d.createBlock(Or,d.mergeProps({key:4},{...p,...i.treeProps},{visible:f.value,"full-height":G.tree,"tree-data":V.value.length>0?V.value:i.treeProps?.treeData||[],"onUpdate:visible":Y[8]||(Y[8]=te=>{f.value=te})}),null,16,["visible","full-height","tree-data"])):d.createCommentVNode("",!0),i.showTree!==!1&&d.unref(h)?(d.openBlock(),d.createBlock(Bm,{key:5,visible:f.value,"tree-data":V.value.length>0?V.value:i.treeProps?.treeData||[],"onUpdate:visible":Y[9]||(Y[9]=te=>{f.value=te}),onClose:Y[10]||(Y[10]=()=>{f.value=!1})},null,8,["visible","tree-data"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(cN,{key:6,visible:I.value,"onUpdate:visible":Y[11]||(Y[11]=te=>I.value=te)},null,8,["visible"])),d.unref(h)?(d.openBlock(),d.createBlock(Q8,{key:7,visible:I.value,"onUpdate:visible":Y[12]||(Y[12]=te=>I.value=te)},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(BN,{key:8,visible:x.value,"onUpdate:visible":Y[13]||(Y[13]=te=>x.value=te)},null,8,["visible"])),d.unref(h)?(d.openBlock(),d.createBlock(Pm,{key:9,visible:x.value,"default-tool":M.value,"onUpdate:visible":Y[14]||(Y[14]=te=>{x.value=te,te||(M.value=null)}),onClose:Y[15]||(Y[15]=()=>{x.value=!1,M.value=null})},null,8,["visible","default-tool"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(lo,{key:10,visible:m.value,"full-height":G.section,"onUpdate:visible":Y[16]||(Y[16]=te=>m.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(km,{key:11,visible:m.value,"onUpdate:visible":Y[17]||(Y[17]=te=>m.value=te),onClose:Y[18]||(Y[18]=()=>{m.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(co,{key:12,visible:y.value,"full-height":G.roam,"onUpdate:visible":Y[19]||(Y[19]=te=>y.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(Dm,{key:13,visible:y.value,"onUpdate:visible":Y[20]||(Y[20]=te=>y.value=te),onClose:Y[21]||(Y[21]=()=>{y.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(Jk,{key:14,visible:w.value,"current-model-id":P.value,"onUpdate:visible":Y[22]||(Y[22]=te=>w.value=te),onHandleCloseCardByCadCard:Y[23]||(Y[23]=()=>{w.value=!1})},null,8,["visible","current-model-id"])),d.unref(h)?(d.openBlock(),d.createBlock(k8,{key:15,visible:w.value,"current-model-id":P.value,"onUpdate:visible":Y[24]||(Y[24]=te=>w.value=te),onHandleCloseCardByCadCard:Y[25]||(Y[25]=()=>{w.value=!1})},null,8,["visible","current-model-id"])):d.createCommentVNode("",!0),d.createVNode(YP,{ref_key:"cadPositionRef",ref:F,visible:C.value,"onUpdate:visible":Y[26]||(Y[26]=te=>C.value=te),onSave:vt},null,8,["visible"]),d.createVNode(eN,{visible:S.value,"onUpdate:visible":Y[27]||(Y[27]=te=>S.value=te)},null,8,["visible"]),d.createVNode(DN,{visible:d.unref(L),position:d.unref(b),items:d.unref(B),"onUpdate:visible":Y[28]||(Y[28]=te=>L.value=te)},null,8,["visible","position","items"]),d.renderSlot(j.$slots,"default",d.normalizeProps(d.guardReactiveProps({methods:_.value,isReady:r.value})),void 0,!0)],512)],8,["to","disabled"]))],512)],34))}}),[["__scopeId","data-v-23352a4a"]]);function H8(i,e={}){const{tapDelay:t=300,doubleTapDelay:n=300,moveThreshold:s=10}=e;let o=0,r={x:0,y:0},a=0,l=0,c=null;const h=[],u=[],p=[],f={},m=b=>{const B=b.touches[0]||b.changedTouches[0];return{x:B?.clientX??0,y:B?.clientY??0}},y=b=>{const B=m(b);o=Date.now(),r=B,a=0,p.forEach(({handler:R,delay:O})=>{c=window.setTimeout(()=>{R(b),c=null},O)})},g=b=>{const B=m(b),R=B.x-r.x,O=B.y-r.y;a=Math.sqrt(R*R+O*O),c&&a>s&&(clearTimeout(c),c=null)},A=b=>{const B=Date.now()-o,R=m(b),O=R.x-r.x,N=R.y-r.y;c&&(clearTimeout(c),c=null);const D=B<t&&a<s;if(D&&Date.now()-l<n&&a<s?(u.forEach(P=>P(b)),l=0):D&&(h.forEach(P=>P(b)),l=Date.now()),a>50){const P=Math.abs(O),F=Math.abs(N);P>F?O>0&&f.right?f.right(b):O<0&&f.left&&f.left(b):N>0&&f.down?f.down(b):N<0&&f.up&&f.up(b)}},v=b=>{h.push(b)},w=b=>{u.push(b)},C=(b,B=500)=>{p.push({handler:b,delay:B})},S=b=>{f.left=b},I=b=>{f.right=b},x=b=>{f.up=b},M=b=>{f.down=b},L=()=>{c&&(clearTimeout(c),c=null),h.length=0,u.length=0,p.length=0,Object.keys(f).forEach(b=>{delete f[b]})};return d.onMounted(()=>{const b=i.value;b&&(b.addEventListener("touchstart",y,{passive:!1}),b.addEventListener("touchmove",g,{passive:!1}),b.addEventListener("touchend",A,{passive:!1}))}),d.onUnmounted(()=>{L();const b=i.value;b&&(b.removeEventListener("touchstart",y),b.removeEventListener("touchmove",g),b.removeEventListener("touchend",A))}),{onTap:v,onDoubleTap:w,onLongPress:C,onSwipeLeft:S,onSwipeRight:I,onSwipeUp:x,onSwipeDown:M,destroy:L}}function Y8(i){const e=t=>{t.target instanceof HTMLInputElement||t.target instanceof HTMLTextAreaElement||t.target instanceof HTMLSelectElement||t.preventDefault()};return i.addEventListener("touchmove",e,{passive:!1}),()=>{i.removeEventListener("touchmove",e)}}function $8(){let i=0;const e=t=>{const n=Date.now();n-i<=300&&t.preventDefault(),i=n};return document.addEventListener("touchend",e,{passive:!1}),document.addEventListener("gesturestart",t=>t.preventDefault()),document.addEventListener("gesturechange",t=>t.preventDefault()),()=>{document.removeEventListener("touchend",e)}}function j8(i,e={}){const{delay:t=500,moveThreshold:n=10}=e,s=d.ref(!1);let o=null,r={x:0,y:0},a=!1;const l=f=>{if(f.touches.length!==1)return;f.preventDefault(),a=!0,s.value=!1;const m=f.touches[0];r={x:m?.clientX??0,y:m?.clientY??0},o=window.setTimeout(()=>{a&&(s.value=!0,i())},t)},c=f=>{if(!a||o===null)return;const m=f.touches[0],y=(m?.clientX??0)-r.x,g=(m?.clientY??0)-r.y;Math.sqrt(y*y+g*g)>n&&u()},h=()=>{a=!1,s.value=!1,o!==null&&(clearTimeout(o),o=null)},u=()=>{a=!1,s.value=!1,o!==null&&(clearTimeout(o),o=null)};return{isLongPressing:s,handlers:{onTouchStart:l,onTouchMove:c,onTouchEnd:h},start:l,end:h,cancel:u}}function W8(i,e,t={}){const{delay:n=500,moveThreshold:s=10}=t;let o=null,r={x:0,y:0};const a=h=>{if(h.touches.length!==1)return;h.preventDefault();const u=h.touches[0];r={x:u?.clientX??0,y:u?.clientY??0},o=window.setTimeout(()=>{e()},n)},l=h=>{if(o===null)return;const u=h.touches[0],p=(u?.clientX??0)-r.x,f=(u?.clientY??0)-r.y;Math.sqrt(p*p+f*f)>s&&(clearTimeout(o),o=null)},c=()=>{o!==null&&(clearTimeout(o),o=null)};return i.addEventListener("touchstart",a,{passive:!1}),i.addEventListener("touchmove",l,{passive:!1}),i.addEventListener("touchend",c),i.addEventListener("touchcancel",c),()=>{o!==null&&(clearTimeout(o),o=null),i.removeEventListener("touchstart",a),i.removeEventListener("touchmove",l),i.removeEventListener("touchend",c),i.removeEventListener("touchcancel",c)}}const q8={tapThreshold:10,doubleTapInterval:300,longPressDelay:500,panThreshold:20,pinchThreshold:.02};function K8(i={}){const e={...q8,...i},t=d.reactive({type:"none",startX:0,startY:0,currentX:0,currentY:0,deltaX:0,deltaY:0,scale:1,rotation:0,velocityX:0,velocityY:0,duration:0}),n=d.ref(!1),s=d.ref(!1),o=d.ref(!1);let r=0,a=0,l=null,c=0,h=1,u=0,p=null;const f={onTap:[],onDoubleTap:[],onLongPress:[],onPanStart:[],onPanMove:[],onPanEnd:[],onPinchStart:[],onPinchMove:[],onPinchEnd:[],onRotate:[]},m=N=>{if(N.length<2)return 0;const D=N[1].clientX-N[0].clientX,E=N[1].clientY-N[0].clientY;return Math.sqrt(D*D+E*E)},y=N=>N.length<2?0:Math.atan2(N[1].clientY-N[0].clientY,N[1].clientX-N[0].clientX)*(180/Math.PI);return{state:t,isActive:n,isPanning:s,isPinching:o,handlers:{onTouchStart:N=>{if(N.touches.length===1){const D=N.touches[0];p=D.identifier,r=Date.now(),t.startX=D.clientX,t.startY=D.clientY,t.currentX=D.clientX,t.currentY=D.clientY,t.deltaX=0,t.deltaY=0,n.value=!0,l=window.setTimeout(()=>{t.type="long-press",f.onLongPress.forEach(E=>E(N))},e.longPressDelay)}else N.touches.length===2&&(l&&(clearTimeout(l),l=null),o.value=!0,c=m(N.touches),h=1,u=y(N.touches),f.onPinchStart.forEach(D=>D(N)))},onTouchMove:N=>{if(N.touches.length===1&&p!==null){let D=null;for(let F=0;F<N.touches.length;F++)if(N.touches[F].identifier===p){D=N.touches[F];break}if(!D)return;const E=D.clientX-t.startX,T=D.clientY-t.startY;Math.sqrt(E*E+T*T)>e.panThreshold&&!s.value&&(s.value=!0,t.type="pan",l&&(clearTimeout(l),l=null),f.onPanStart.forEach(F=>F(N))),s.value&&(N.preventDefault(),t.deltaX=D.clientX-t.currentX,t.deltaY=D.clientY-t.currentY,t.currentX=D.clientX,t.currentY=D.clientY,t.velocityX=t.deltaX,t.velocityY=t.deltaY,f.onPanMove.forEach(F=>F(N)))}else if(N.touches.length===2&&o.value){N.preventDefault();const D=m(N.touches),E=y(N.touches),T=D/c;t.scale=h*T,t.rotation=E-u,f.onPinchMove.forEach(P=>P(N)),f.onRotate.forEach(P=>P(N))}},onTouchEnd:N=>{if(t.duration=Date.now()-r,l&&(clearTimeout(l),l=null),N.touches.length===0){if(s.value)t.type="pan",f.onPanEnd.forEach(D=>D(N));else if(o.value)f.onPinchEnd.forEach(D=>D(N));else if(t.type==="none"&&t.duration<300){const D=Date.now();D-a<e.doubleTapInterval?(t.type="double-tap",f.onDoubleTap.forEach(E=>E(N)),a=0):(t.type="tap",f.onTap.forEach(E=>E(N)),a=D)}s.value=!1,o.value=!1,n.value=!1,p=null,setTimeout(()=>{t.type="none",t.deltaX=0,t.deltaY=0,t.scale=1,t.rotation=0},50)}}},onTap:N=>{f.onTap.push(N)},onDoubleTap:N=>{f.onDoubleTap.push(N)},onLongPress:N=>{f.onLongPress.push(N)},onPanStart:N=>{f.onPanStart.push(N)},onPanMove:N=>{f.onPanMove.push(N)},onPanEnd:N=>{f.onPanEnd.push(N)},onPinchStart:N=>{f.onPinchStart.push(N)},onPinchMove:N=>{f.onPinchMove.push(N)},onPinchEnd:N=>{f.onPinchEnd.push(N)},onRotate:N=>{f.onRotate.push(N)}}}const qr={enableFpsLimit:!0,targetFps:30,enableResolutionScale:!0,resolutionScale:.75,enableLazyLoad:!0,lazyLoadDelay:200,enableModelLod:!0,modelQualityLevel:"medium",enablePostProcessing:!1,enableFxaa:!1,enableAmbientOcclusion:!1,enableShadows:!1,maxTextureSize:1024,enableDebounce:!0,debounceDelay:100};function X8(i={}){const e={...qr,...i};return{requestRenderMode:e.enableFpsLimit,maximumRenderTimeChange:e.enableFpsLimit?1e3/e.targetFps:void 0,scene3DOnly:!0,shouldAnimate:!0}}function J8(i={}){const e={...qr,...i};return{resolutionScale:e.enableResolutionScale?e.resolutionScale:1,targetFrameRate:e.enableFpsLimit?e.targetFps:void 0,sceneModePicker:!1,navigationHelpButton:!1,animation:!1,timeline:!1,fullscreenButton:!1,vrButton:!1,infoBox:!1,selectionIndicator:!1,shadows:e.enableShadows,skyAtmosphere:e.enablePostProcessing,fog:e.enablePostProcessing}}function Z8(i={}){const e={...qr,...i},n={low:{maximumScreenSpaceError:64,skipScreenSpaceErrorFactor:256,skipLevels:8,baseScreenSpaceError:2048},medium:{maximumScreenSpaceError:48,skipScreenSpaceErrorFactor:128,skipLevels:5,baseScreenSpaceError:1024},high:{maximumScreenSpaceError:32,skipScreenSpaceErrorFactor:64,skipLevels:3,baseScreenSpaceError:512}}[e.modelQualityLevel];return{cullWithChildrenBounds:!0,cullRequestsWhileMoving:!0,cullRequestsWhileMovingMultiplier:10,backFaceCulling:!0,colorBlendAmount:0,minimumPixelSize:128,maximumScreenSpaceError:n.maximumScreenSpaceError,skipLevelOfDetail:e.enableModelLod,baseScreenSpaceError:n.baseScreenSpaceError,skipScreenSpaceErrorFactor:n.skipScreenSpaceErrorFactor,skipLevels:n.skipLevels,immediatelyLoadDesiredLevelOfDetail:!1,loadSiblings:!1,maximumMemoryUsage:4096*5,preloadWhenHidden:!0,preferLeaves:e.enableModelLod,progressiveResolutionHeightFraction:.5,dynamicScreenSpaceErrorDensity:.002,dynamicScreenSpaceErrorFactor:4,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorHeightFalloff:.25,foveatedConeSize:0,foveatedTimeDelay:10,foveatedMinimumScreenSpaceErrorRelaxation:0}}function eR(i=30){const e=d.ref(60),t=d.ref(!1);let n=0,s=0,o=0;const r=1e3/i,a=()=>{t.value=!0,n=performance.now(),o=n,s=0},l=()=>{if(!t.value)return!0;const h=performance.now(),u=h-n;return s++,h-o>=1e3&&(e.value=Math.round(s*1e3/(h-o)),s=0,o=h),u>=r?(n=h-u%r,!0):!1},c=()=>{t.value=!1};return d.onUnmounted(()=>{c()}),{fps:e,isControlling:t,startControl:a,stopControl:c,tick:l}}function tR(i,e){let t=null;const n=((...s)=>{t!==null&&clearTimeout(t),t=window.setTimeout(()=>{i(...s),t=null},e)});return n.cancel=()=>{t!==null&&(clearTimeout(t),t=null)},n}function iR(i,e){let t=!1;return((...s)=>{t||(i(...s),t=!0,setTimeout(()=>{t=!1},e))})}function nR(i,e=200){let t=null;const n=()=>{t!==null&&clearTimeout(t),t=window.setTimeout(()=>{i(),t=null},e)},s=()=>{t!==null&&(clearTimeout(t),t=null)};return d.onUnmounted(()=>{s()}),{load:n,cancel:s}}function Lm(i){const e=d.ref(),t=d.ref(i.theme||"dark"),n=d.ref(i.menuSize||"medium");d.provide("leiting-theme",t),d.provide("leiting-menu-size",n);function s(a){d.onUnmounted(()=>{e.value=null}),a(i,e)}function o(){const a=d.unref(e);return a||console.error("未获取到leiting实例!"),a}const r=new Proxy({},{get(a,l){const c=o();if(!c)return;const h=c[l];return typeof h=="function"?h.bind(c):h},set(a,l,c){const h=o();return h?(h[l]=c,!0):!1}});return[s,r]}const sR=bn,oR={install:(i,e)=>{if(i.component("LeitingBIM",Wr),i.component("LeitingTree",Or),i.component("LeitingDraggableCard",gt),i.component("leiting-draggable-card",gt),i.component("LeitingMenu",ao),i.component("leiting-menu",ao),i.component("LeitingSection",lo),i.component("leiting-section",lo),i.component("LeitingPlayer",co),i.component("leiting-player",co),i.component("LeitingInfo",ho),i.component("leiting-info",ho),i.component("LeitingPosition",uo),i.component("leiting-position",uo),i.component("LeitingSetting",fo),i.component("leiting-setting",fo),!e)return;const t={...sR,...e};t.cesiumUrl&&Ua(t).catch(n=>{console.error("[LeitingBim] Failed to load Cesium resources:",n)}),i.config.globalProperties.$leitingBimOptions=t}};function rR(i,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",t==="top"&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=i:s.appendChild(document.createTextNode(i))}}var aR="@keyframes watermark{0%{background-position:0 0}25%{background-position:100% 100%}50%{background-position:100% 0}75%{background-position:0 100%}to{background-position:0 0}}@keyframes watermark-horizontal{0%{background-position-x:0}to{background-position-x:100%}}@keyframes watermark-vertical{0%{background-position-y:0}to{background-position-y:100%}}";rR(aR);var vc=function(i,e){return vc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])},vc(i,e)};function lR(i,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");vc(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var Fi=function(){return Fi=Object.assign||function(e){for(var t,n=1,s=arguments.length;n<s;n++){t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Fi.apply(this,arguments)};function pi(i,e,t,n){function s(o){return o instanceof t?o:new t(function(r){r(o)})}return new(t||(t=Promise))(function(o,r){function a(h){try{c(n.next(h))}catch(u){r(u)}}function l(h){try{c(n.throw(h))}catch(u){r(u)}}function c(h){h.done?o(h.value):s(h.value).then(a,l)}c((n=n.apply(i,e||[])).next())})}function ti(i,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,s,o,r=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return r.next=a(0),r.throw=a(1),r.return=a(2),typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(c){return function(h){return l([c,h])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r&&(r=0,c[0]&&(t=0)),t;)try{if(n=1,s&&(o=c[0]&2?s.return:c[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,c[1])).done)return o;switch(s=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(i,t)}catch(h){c=[6,h],s=0}finally{n=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}typeof SuppressedError=="function"&&SuppressedError;var Rm=function(i){return i.toDataURL("image/png",1)},Fm=function(i){return typeof i=="function"},Ht=function(i){return i===void 0},cR=function(i){return typeof i=="string"},Om=function(i,e,t){e===void 0&&(e={}),t===void 0&&(t="http://www.w3.org/2000/svg");var n=document.createElementNS(t,i);for(var s in e)n.setAttribute(s,e[s]);return n},dR=function(i,e,t){for(var n=[],s="",o="",r=0,a=e.length;r<a;r++){if(o=e.charAt(r),o===`
|
|
121
|
+
`});p.isModelAdjustment=!0,u.customShader=p}else e.brightness!==void 0&&e.brightness!==1&&!u.style&&(u.style=new n.Cesium3DTileStyle({color:`color('white') * ${e.brightness}`}))}}setModelBrightness(e){this.setModelColorAdjustment({brightness:e})}_defaultSkyBox=null;_updateLightDirection=e=>{e.light instanceof this.cesium.DirectionalLight&&(e.light.direction=e.camera.directionWC)};setEnvironmentMapEnable(e){this.is2d||(e?(this.viewer.scene.light=new this.cesium.DirectionalLight({direction:this.viewer.scene.camera.directionWC}),this.viewer.scene.preRender.addEventListener(this._updateLightDirection)):(this._defaultSkyBox&&(this.viewer.scene.skyBox=this._defaultSkyBox),this.viewer.scene.preRender.removeEventListener(this._updateLightDirection),this.viewer.scene.light=new this.cesium.SunLight),this.viewer.scene.imageBasedLighting&&(this.viewer.scene.imageBasedLighting.imageBasedLightingFactor=e?new this.cesium.Cartesian2(2,2):new this.cesium.Cartesian2(1,1)))}setAmbientOcclusion(e){if(this.is2d)return;const t=this.viewer.scene;if(!t||!t.postProcessStages||!t.postProcessStages.ambientOcclusion)return;const n=t.postProcessStages.ambientOcclusion;n.enabled=e,e&&(n.uniforms.ambientOcclusionOnly=!1,n.uniforms.intensity=3,n.uniforms.bias=.1,n.uniforms.lengthCap=.03,n.uniforms.stepSize=1,n.uniforms.blurStepSize=.86)}setCollisionDetection(e){if(this.is2d){this.viewer.scene.screenSpaceCameraController.enableCollisionDetection=!1;return}const t=this.viewer.scene.screenSpaceCameraController;t.enableCollisionDetection=e,e||t.minimumZoomDistance<1&&(t.minimumZoomDistance=1)}_customZoomHandler=null;setHeightBasedZoom(e){const t=this.viewer.scene.screenSpaceCameraController,n=this.cesium;if(this.viewer.camera.frustum.near=1e-4,this.viewer.camera.frustum.far=1e8,e||(this.viewer.camera.frustum.near=.1),this._customZoomHandler&&(this._customZoomHandler.destroy(),this._customZoomHandler=null),!e){t.zoomEventTypes.includes(n.CameraEventType.WHEEL)||t.zoomEventTypes.push(n.CameraEventType.WHEEL);return}t.zoomEventTypes=t.zoomEventTypes.filter(o=>o!==n.CameraEventType.WHEEL),this._customZoomHandler=new n.ScreenSpaceEventHandler(this.viewer.scene.canvas);let s=null;this._customZoomHandler.setInputAction(o=>{s=o.endPosition},n.ScreenSpaceEventType.MOUSE_MOVE),this._customZoomHandler.setInputAction(o=>{const r=this.viewer.camera,a=r.positionCartographic.height,l=Math.sign(o);if(a<.15&&l>0){pe.info("无法继续放大");return}const c=.3;let h=0;if(l>0){const m=a-1;h=m>0?m*c:0}else h=a*c;h=Math.max(.1,h),console.log(a);let u=null;if(!s)u=r.direction;else{const m=r.getPickRay(s);if(m){let y=this.viewer.scene.pickPosition(s);if(!y){const g=n.IntersectionTests.rayEllipsoid(m,this.viewer.scene.globe.ellipsoid);g&&(y=n.Ray.getPoint(m,g.start))}if(y){const g=n.Cartesian3.subtract(y,r.position,new n.Cartesian3);u=n.Cartesian3.normalize(g,new n.Cartesian3)}else u=r.direction}else u=r.direction}const p=l>0?h:-h*2,f=n.Cartesian3.multiplyByScalar(u,p,new n.Cartesian3);r.position=n.Cartesian3.add(r.position,f,new n.Cartesian3)},n.ScreenSpaceEventType.WHEEL)}setMouseHabit(e){if(this.is2d)return;const t=this.viewer.scene.screenSpaceCameraController;t.enableTranslate=!0,t.enableRotate=!0,t.enableZoom=!0,t.enableTilt=!0,t.enableLook=!1,t.lookEventTypes=[],e===1?(t.rotateEventTypes=[this.cesium.CameraEventType.RIGHT_DRAG],t.zoomEventTypes=[this.cesium.CameraEventType.MIDDLE_DRAG,this.cesium.CameraEventType.WHEEL,this.cesium.CameraEventType.PINCH],t.tiltEventTypes=[this.cesium.CameraEventType.PINCH,this.cesium.CameraEventType.LEFT_DRAG]):(t.rotateEventTypes=[this.cesium.CameraEventType.LEFT_DRAG],t.zoomEventTypes=[this.cesium.CameraEventType.RIGHT_DRAG,this.cesium.CameraEventType.WHEEL,this.cesium.CameraEventType.PINCH],t.tiltEventTypes=[this.cesium.CameraEventType.PINCH,this.cesium.CameraEventType.MIDDLE_DRAG])}}class bB{cesium;viewer;constructor(e){this.cesium=e.cesium,this.viewer=e.viewer}getCameraView(){const e=this.viewer.camera;return{position:{x:e.position.x,y:e.position.y,z:e.position.z},destination:{x:e.position.x,y:e.position.y,z:e.position.z},orientation:{heading:e.heading,pitch:e.pitch,roll:e.roll},duration:1}}flyToCameraView(e){const{position:t,orientation:n,duration:s}=e,o=new this.cesium.Cartesian3(t.x,t.y,t.z),r=new this.cesium.HeadingPitchRoll(n.heading,n.pitch,n.roll);!s||s<=0?this.viewer.camera.setView({destination:o,orientation:r}):this.viewer.camera.flyTo({destination:o,orientation:r,duration:s})}getCurrentCameraPositionAndTarget(){const e=this.getCameraView();return{position:e.position,target:{heading:e.orientation.heading,pitch:e.orientation.pitch,roll:e.orientation.roll},duration:e.duration}}setCameraView(e){const t=e.target||e.orientation||{},n=e.destination||e.position||{};this.flyToCameraView({position:{x:Number(n.x),y:Number(n.y),z:Number(n.z)},destination:{x:Number(n.x),y:Number(n.y),z:Number(n.z)},orientation:{heading:Number(t.heading||0),pitch:Number(t.pitch||0),roll:Number(t.roll||0)},duration:e.duration})}flyToLonLatHeight(e,t,n,s=1){const o=this.cesium.Cartesian3.fromDegrees(e,t,n),r={heading:this.cesium.Math.toRadians(0),pitch:this.cesium.Math.toRadians(-90),roll:0};!s||s<=0?this.viewer.camera.setView({destination:o,orientation:r}):this.viewer.camera.flyTo({destination:o,orientation:r,duration:s})}}function wB(i){const{container:e,appContext:t,methods:n,viewerOptions:s,options:o,callbacks:r}=i,a=new _s,l=window.Cesium;if(!l)throw new Error("Cesium is not loaded");e.id=`cesium-container-${cC()}`;const c={animation:!1,timeline:!1,infoBox:!1,homeButton:!1,fullscreenButton:!1,sceneModePicker:!1,navigationHelpButton:!1,geocoder:!1,baseLayerPicker:!1,selectionIndicator:!1,heightBasedZoom:!0,creditContainer:document.createElement("div"),contextOptions:{webgl:{alpha:!0,preserveDrawingBuffer:!0}}},h=t?.config?.globalProperties?.$leitingBimOptions,u={...c,...h?.viewerOptions??{},...s??{}},p=new l.Viewer(e,u);p.camera.setView({destination:l.Cartesian3.fromDegrees(108,32,1e7),orientation:{heading:l.Math.toRadians(0),pitch:l.Math.toRadians(-90),roll:0}});let f=n;if(!f&&h&&(h.methods||(h.methods={}),f=h.methods),f){const m=new EC({cesium:l,viewer:p,options:o,callbacks:r}),y=new ju({cesium:l,viewer:p}),g=new vB({cesium:l,viewer:p}),A=new xC({cesium:l,viewer:p}),v=new TS({cesium:l,viewer:p}),w=o?.watermark!==!1;y.watermarkEnabled=w,v.watermarkEnabled=w;const C=new bB({cesium:l,viewer:p});let S;const I=new uc({cesium:l,viewer:p});o&&(o.globe!==void 0&&g.setGlobeEnvironmentVisible(o.globe),o.terrain!==void 0&&g.setTerrainEnable(o.terrain),o.depthTest!==void 0&&g.setDepthTestEnable(o.depthTest),o.mapProvider&&o.mode!=="2d"&&g.changeBaseMap(o.mapProvider,{token:o.tiandituToken,layerType:o.tiandituLayerType,showAnnotation:o.tiandituShowLabel,url:o.arcgisUrl}),o.shadows!==void 0&&g.setShadowsEnable(o.shadows),o.environmentMap!==void 0&&g.setEnvironmentMapEnable(o.environmentMap),o.ambientOcclusion!==void 0&&g.setAmbientOcclusion(o.ambientOcclusion),o.time!==void 0&&g.setTime(o.time),o.brightness!==void 0&&g.setModelBrightness(o.brightness),o.backgroundColor!==void 0&&g.setBackgroundColor(o.backgroundColor),o.collision!==void 0&&g.setCollisionDetection(o.collision),o.mouseHabit!==void 0&&g.setMouseHabit(o.mouseHabit),o.heightBasedZoom!==void 0&&g.setHeightBasedZoom(o.heightBasedZoom)),o&&o.mode==="2d"&&(console.log("InitMap: Setting CAD Mode 2D"),g.setCadMode("2d"),S=new dm({cesium:l,viewer:p})),y.events.on("tilesetLoaded",b=>{m.baseCompt.attachTileset(b,m.baseCompt.selectedColor),m.baseSection.attachTileset(b,b.leiting?.model?.modelId),f&&f.tilesLoad3dTiles&&f.tilesLoad3dTiles(b),o?.tilesLoad3dTiles&&o.tilesLoad3dTiles(b.leiting)}),y.events.on("loadingStatus",b=>{f&&f.onLoadingStatus&&f.onLoadingStatus(b)}),y.events.on("mountAll3Dtiles",({modelList:b})=>{o?.mountAll3Dtiles&&o.mountAll3Dtiles(b),f?.mountAll3Dtiles&&f.mountAll3Dtiles(b)}),y.events.on("configureLoaded",b=>{f.setConfigure(b)}),y.events.on("updateModels",({modelList:b})=>{o?.updateModels&&o.updateModels(b),f?.updateModels&&f.updateModels(b)}),A.events.on("mountAllCad",b=>{o?.mountAllCad&&o.mountAllCad(b),f?.mountAllCad&&f.mountAllCad(b)}),v.events.on("mountAllGISCad",b=>{o?.mountAllGISCad&&o.mountAllGISCad(b),f?.mountAllGISCad&&f.mountAllGISCad(b)}),m.baseCompt.loadNodeDetailsForModel=b=>y.loadNodeDetailsForModel(b),m.baseCompt.selectionChange(b=>{b.length!==0&&(o?.selectionChange&&o.selectionChange(b),f?.selectionChange&&f.selectionChange(b))}),f.onSearchComponent=b=>{o?.searchComponent&&o.searchComponent(b),f?.searchComponent&&f.searchComponent(b)};const x=f.saveRegion;f.saveRegion=b=>{o?.saveRegion&&o.saveRegion(b),x&&x!==o?.saveRegion&&x(b)};const M=f.saveCadCalibration;f.saveCadCalibration=b=>{o?.saveCadCalibration&&o.saveCadCalibration(b),M&&M!==o?.saveCadCalibration&&M(b)};const L=f.saveCadRegion;f.saveCadRegion=b=>{o?.saveCadRegion&&o.saveCadRegion(b),L&&L!==o?.saveCadRegion&&L(b)},f.getCesium=()=>l,f.getViewer=()=>p,f.getAnnotationInstance=()=>S,f.getMeasureInstance=()=>I,f.flyToCamera=b=>{C.setCameraView(b)},f.flyToLonLatHeight=(b,B,R,O=1)=>{C.flyToLonLatHeight(b,B,R,O)},f.flyTo=f.flyToCamera,f.getCameraState=()=>C.getCameraView(),f.getCameraInfo=f.getCameraState,f.restoreCameraState=b=>C.flyToCameraView(b),f.flyToCameraView=f.restoreCameraState,f.getCameraPositionTarget=()=>C.getCurrentCameraPositionAndTarget(),f.getCurrentCameraPositionAndTarget=f.getCameraPositionTarget,f.setCameraLookAt=b=>C.setCameraView(b),f.setCameraView=f.setCameraLookAt,f.setCanvasBackground=b=>g.setBackgroundColor(b),f.setBackgroundColor=f.setCanvasBackground,f.setAntiAliasing=b=>m.enableCesiumFXAA(b),f.enableCesiumFXAA=f.setAntiAliasing,f.setSceneVisibility=b=>m.setSceneOptions(b),f.setSceneOptions=f.setSceneVisibility,f.addDebugPoint=(b,B,R=0)=>{p.entities.add({position:l.Cartesian3.fromDegrees(b,B,R),point:{pixelSize:10,color:l.Color.RED}})},f.addPoint=f.addDebugPoint,f.toggleDebugLabels=()=>m.enableTestLabel(),f.enableTestLabel=f.toggleDebugLabels,f.captureScreenshot=()=>{const b=p.scene.canvas;return p.render(),b.toDataURL("image/png")},f.getImageBase64=f.captureScreenshot,f.captureDomScreenshot=(b,B)=>m.getSnapDomSImageBase64(b,B),f.getSnapDomSImageBase64=f.captureDomScreenshot,f.addModels=b=>y.addModels(b),f.add3DtilesModel=f.addModels,f.addObliquePhotography=b=>y.addOSGB(b),f.addOSGB=f.addObliquePhotography,f.adjustOSGBModelMatrix=b=>y.updateOSGBMatrix(b),f.updateOSGBMatrix=f.adjustOSGBModelMatrix,f.setModelVisibility=b=>y.showModels(b),f.showModels=f.setModelVisibility,f.showTileset=f.setModelVisibility,f.removeModels=b=>y.deleteModels(b),f.deleteModels=f.removeModels,f.clearAllModels=()=>{y.deleteAllModels(),a.emit("deleteAllModels")},f.deleteAllModelList=f.clearAllModels,f.deleteAllModels=f.clearAllModels,f.flyToModel=b=>y.flyToTileset(b),f.flyToTileset=f.flyToModel,f.flyToByModelId=f.flyToModel,f.setModelBrightness=b=>m.updateModelEffect(b),f.updateModelEffect=f.setModelBrightness,f.getAllTilesets=()=>y.getMapTileset(),f.getMapTileset=f.getAllTilesets,f.getCurrentModelId=()=>y.getBIMmodelId(),f.getBIMmodelId=f.getCurrentModelId,f.getLoadedModels=()=>y.getModelList(),f.getModelList=f.getLoadedModels,f.loadModelStructure=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelStructure: modelId is required");return}return await y.loadTreeForModel(B)},f.loadTreeForModel=f.loadModelStructure,f.loadModelDetails=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelDetails: modelId is required");return}return await y.loadNodeDetailsForModel(B)},f.loadNodeDetailsForModel=f.loadModelDetails,f._loadNodeDetailsForModel=async b=>{const B=typeof b=="string"?b:b?.modelId;if(!B){console.warn("loadModelDetails: modelId is required");return}return await y._loadNodeDetailsForModel(B)},f.setMapTileset=b=>y.setMapTileset(b),f.setCurrentModelId=b=>y.setBIMmodelId(b),f.setBIMmodelId=f.setCurrentModelId,f.setModelList=b=>y.setModelList(b),f.highlightComponents=(b,B={})=>m.baseCompt.setSelectColorUserModelCpt(b,B),f.setSelectColorUserModelCpt=f.highlightComponents,m.baseCompt.setLoadNodeDetailsCallback(b=>y.loadNodeDetailsForModel(b)),f.highlightAllComponents=(b,B)=>m.baseCompt.setAllSelectColorUserModelCpt(b,B),f.setAllSelectColorUserModelCpt=f.highlightAllComponents,f.setSelectColorUserModelCptByClear=(b,B)=>{m.baseCompt.clearAllHaveSelected(),m.baseCompt.setSelectColorUserModelCpt(b.selectCpts,B??{rank:0})},f.clearSelectColorUserModelCpt=()=>m.baseCompt.clearAllHaveSelected(),f.selectComponents=(b,B)=>{m.baseCompt.clearAllHaveSelected(),m.baseCompt.setSelectColorUserModelCpt(b,B??{rank:0})},f.setSelecteds=f.selectComponents,f.setSelectionColor=(b,B,R,O)=>m.baseCompt.setSelectedColorRgba(b,B,R,O),f.setSelectedColor=f.setSelectionColor,f.clearSelection=()=>m.baseCompt.clearAllHaveSelected(),f.clearAllHaveSelected=f.clearSelection,f.getSelectedComponents=b=>m.baseCompt.getSelected(b),f.getSelected=f.getSelectedComponents,f.setClickToHighlightEnabled=b=>{m.baseCompt.clickToHighlightEnabled=b},f.getClickToHighlightEnabled=()=>m.baseCompt.clickToHighlightEnabled,f.onSelectionChange=b=>{m.baseCompt.selectionChange(b)},f.selectionChange=f.onSelectionChange,f.flyToComponents=b=>m.baseCompt.flyToObjects(b),f.flyToObjects=f.flyToComponents,f.setConstructionData=async b=>{if(b&&Array.isArray(b)){const B=new Set;b.forEach(R=>{R.mergeCpts&&Array.isArray(R.mergeCpts)&&R.mergeCpts.forEach(O=>{O.modelId&&B.add(O.modelId)})}),B.size>0&&await Promise.all(Array.from(B).map(R=>f.loadNodeDetailsForModel(R)))}m.baseCompt.setAllConstructionProgressTracking(b)},f.setAllConstructionProgressTracking=f.setConstructionData,f.startConstructionSimulation=()=>m.baseCompt.enableConstructionProgressTracking(),f.enableAllConstructionProgressTracking=f.startConstructionSimulation,f.stopConstructionSimulation=()=>m.baseCompt.disableConstructionProgressTracking(),f.disableConstructionProgressTracking=f.stopConstructionSimulation,f.disableAllConstructionProgressTracking=f.stopConstructionSimulation,f.resetConstructionSimulation=()=>m.baseCompt.freshConstructionProgressTracking(),f.freshConstructionProgressTracking=f.resetConstructionSimulation,f.restartConstructionSimulation=()=>m.baseCompt.reStartAnimation(),f.reStartAnimation=f.restartConstructionSimulation,f.resumeFlyTo=()=>m.baseCompt.resumeFlyTo(),f.pauseConstructionSimulation=()=>m.baseCompt.pauseFlyTo(),f.pauseFlyTo=f.pauseConstructionSimulation,f.pauseAnimation=f.pauseConstructionSimulation,f.resumeConstructionSimulation=()=>m.baseCompt.resumeFlyTo(),f.resumeAnimation=f.resumeConstructionSimulation,f.setComponentsVisibility=async b=>await m.baseCompt.setComponentVisibility(b),f.setElementsListVisible=f.setComponentsVisibility,f.setAllComponentsVisibility=async b=>await m.baseCompt.setAllComponentsVisibility(b),f.setAllElementsVisible=f.setAllComponentsVisibility,f.isolateComponents=b=>m.baseCompt.isolateComponentVisibility(b),f.isolateComponentVisibility=f.isolateComponents,f.getComponentsByVisibility=b=>m.baseCompt._getComponentsByVisibility(b),f.getShowCpts=b=>m.baseCompt.getComponentsByVisibility(b),f.getElementsVisible=b=>m.baseCompt.getComponentsByVisibility(b),f.setComponentVisibility=f.setComponentsVisibility,f.enableSectioning=(b,B)=>m.baseSection.open(b,B),f.openSection=f.enableSectioning,f.disableSectioning=b=>m.baseSection.close(b),f.closeSection=f.disableSectioning,f.updateSectionBox=b=>m.baseSection.updateRange(b),f.updateSectionRange=f.updateSectionBox,f.getSectionBox=()=>m.baseSection.getRange(),f.getSectionRange=f.getSectionBox,f.fitSectionToModel=()=>m.baseSection.fitToModels(),f.fitToModels=f.fitSectionToModel,f.setSectionBoxVisibility=b=>m.baseSection.setBoxVisibility(b),f.startFirstPersonMode=()=>{m.baseCompt.disableSelection(),m.basePlayer.openPlayer()},f.openPlayer=f.startFirstPersonMode,f.startCameraRoam=()=>{m.baseCompt.disableSelection(),m.basePlayer.openCameraRoam()},f.stopFirstPersonMode=()=>{m.basePlayer.closePlayer(),m.baseCompt.enableSelection()},f.closePlayer=f.stopFirstPersonMode,f.setPlayerPosition=b=>m.basePlayer.setPersonPosition(b),f.setPersonPosition=f.setPlayerPosition,f.setPlayerDefaultPosition=()=>m.basePlayer.setDefaultPosition(),f.setWalkSpeed=b=>m.basePlayer.setSpeed({speed:b}),f.setPlayerSpeed=f.setWalkSpeed,f.setPlayerConfig=b=>m.basePlayer.setParams(b),f.setPlayerParams=f.setPlayerConfig,f.setModelInfo=b=>m.basePlayer.setModelInfo(b),f.setPlayerAction=(b,B)=>m.basePlayer.setMoveState(b,B),f.setPlayerMoveState=f.setPlayerAction,f.bindPlayerControls=b=>m.basePlayer.bindUiKeys(b),f.bindPlayerUiKeys=f.bindPlayerControls,f.setGlobeVisibility=b=>g.setGlobeEnvironmentVisible(b),f.setGlobeEnvironmentVisible=f.setGlobeVisibility,f.setTerrainVisibility=b=>g.setTerrainEnable(b),f.setTerrainEnable=f.setTerrainVisibility,f.setDepthTest=b=>g.setDepthTestEnable(b),f.setDepthTestEnable=f.setDepthTest,f.setBaseMap=(b,B)=>g.changeBaseMap(b,B),f.changeBaseMap=f.setBaseMap,f.setWorldTime=b=>g.setTime(b),f.setTime=f.setWorldTime,f.setGisOptions=b=>{b.globe!==void 0&&g.setGlobeEnvironmentVisible(b.globe),b.elevation!==void 0&&g.setTerrainEnable(b.elevation),b.depthTestAgainstTerrain!==void 0&&g.setDepthTestEnable(b.depthTestAgainstTerrain),b.rendering!==void 0&&g.setAmbientOcclusion(b.rendering)},f.setShadowVisibility=b=>g.setShadowsEnable(b),f.setShadowsEnable=f.setShadowVisibility,f.setEnvironmentMapVisibility=b=>g.setEnvironmentMapEnable(b),f.setEnvironmentMapEnable=f.setEnvironmentMapVisibility,f.setAOVisibility=b=>g.setAmbientOcclusion(b),f.setAmbientOcclusion=f.setAOVisibility,f.setBackgroundColor=b=>g.setBackgroundColor(b),f.setGlobeColor=f.setBackgroundColor,f.setSkyBox=b=>g.setSkyBox(b),f.setModelBrightness=b=>g.setModelBrightness(b),f.adjustModelColor=b=>g.setModelColorAdjustment(b),f.setModelColorAdjustment=f.adjustModelColor,f.setShadowIntensity=b=>{g.setShadowDarkness?g.setShadowDarkness(b):console.warn("baseSetting.setShadowDarkness is not available. Please reload the page.")},f.setShadowDarkness=f.setShadowIntensity,f.switchSceneMode=async b=>{const B=b?"2d":"3d";await g.setCadMode(B),b&&!S&&(S=new dm({cesium:l,viewer:p}),f.setGlobeVisibility(!0)),a.emit("setMode",B)},f.setSceneMode=f.switchSceneMode,f.set2d=b=>f.switchSceneMode(b),f.is2dMode=()=>g.is2d,f.setMouseControlMode=b=>g.setMouseHabit(b),f.setMouseHabit=f.setMouseControlMode,f.setCollisionEnabled=b=>g.setCollisionDetection(b),f.setCollisionDetection=f.setCollisionEnabled,f.searchAndLocate=(b,B)=>g.searchLocation(b,B),f.searchLocation=f.searchAndLocate,f.getConfigure=()=>(console.warn("getConfigure is not initialized. Please ensure LeitingSetting component is mounted."),{}),f.setConfigure=b=>{console.warn("setConfigure is not initialized. Please ensure LeitingSetting component is mounted.",b)},f.addCadModel=b=>{const B={...b};return B.files&&!B.fileNames&&(B.fileNames=B.files),B.fileNames||(B.fileNames=[]),A.addDxfModel(B)},f.addDxfModel=f.addCadModel,f.addGISCadModel=b=>{const B={...b};return B.files&&!B.fileNames&&(B.fileNames=B.files),B.fileNames||(B.fileNames=[]),v.addGISCadModel(B)},f.addVectorTileByUrlTemplate=b=>v.addVectorTileByUrlTemplate(b),f.addVectorTileByTilesManifest=b=>v.addVectorTileByTilesManifest(b),f.showGISCadModel=b=>v.showJson(b),f.addGeoJsonLayer=b=>v.addGeoJsonLayer(b),f.showGISCadLayer=b=>v.showJsonByLayer(b),f.deleteGISCad=b=>v.deleteCad(b),f.deleteAllGISCad=()=>v.deleteAllCad(),f.flyToGISCadModel=(b={})=>v.flyToCadModel(b),f.flyGisCadModel=b=>v.flyToCadModel({modelId:b}),f.getGISCadModels=b=>v.getDxfModels(b),f.getGISCadModelsList=()=>v.getDxfModelsList(),f.getGISCadLayers=b=>v.getMapLayers(b),f.getGISCadModelId=()=>v.getModelId(),f.getDefaultGISCadTransformConfig=()=>v.getDefaultCoordinateTransformConfig(),f.transformGISCadCoordinate=b=>v.transformCoordinate(b),f.beginEditGISCad=b=>v.beginEditGISCad(b),f.adjustGISCadModel=b=>v.adjustGISCadModel(b),f.commitEditGISCad=b=>v.commitEditGISCad(b),f.cancelEditGISCad=b=>v.cancelEditGISCad(b),f.deleteCad=b=>A.deleteCad(b),f.deleteAllCad=()=>A.deleteAllCad(),f.showCadModel=b=>A.showJson(b),f.showGeoJson=b=>A.showJson(b),f.showDxfModel=f.showCadModel,f.showCadLayer=b=>A.showJsonByLayer(b),f.showDxfLayer=f.showCadLayer,f.flyToCadModel=(b={})=>A.flyToCadModel(b),f.getCadModels=b=>A.getDxfModels(b),f.getDxfModels=f.getCadModels,f.getCadLayers=b=>A.getMapLayers(b),f.getDxfLayers=f.getCadLayers,f.getCadModelId=()=>A.getModelId(),f.setCadOpen=b=>A.setDxfOpen(b),f.setDxfOpen=f.setCadOpen,f.getCadOpen=()=>A.getDxfOpen(),f.getDxfOpen=f.getCadOpen,f.adjustCadModel=b=>A.adjustingModelByCad(b),f.adjustingModelByCad=f.adjustCadModel,f.saveAnnotations=()=>{let b=null;return S&&(b=S.saveAnnotations()),o?.saveAnnotations&&o.saveAnnotations(b),b},f.loadAnnotations=b=>S?S.loadAnnotations(b):!1,f.flyToTopView=()=>{A.flyToCadModel()},f.menuEvents=a,f.addMenuItems=b=>{a.emit("insertMenu",b)},f.insertMenu=f.addMenuItems,f.filterMenuItems=b=>{a.emit("setMenuListFilter",b)},f.setMenuListFilter=f.filterMenuItems,f.setMenuVisibility=b=>{a.emit("showMenu",b)},f.showMenu=f.setMenuVisibility,f.setPanelVisibility=(b,B)=>{a.emit("setMenuActive",b,B)},f.setMenuActive=f.setPanelVisibility,f.addContextMenuItems=b=>{console.warn("addContextMenuItems is not initialized yet. Please wait for LeitingBIM component to mount.",b)},f.insertContextMenu=f.addContextMenuItems,f.removeContextMenuItems=b=>{console.warn("removeContextMenuItems is not initialized yet.",b)},f.deleteContextMenu=f.removeContextMenuItems,f.closeContextMenu=()=>{console.warn("closeContextMenu is not initialized yet.")},f.hideContextMenu=f.closeContextMenu,f.getModelTree=()=>{const b=[],B=y.getMapTileset();return Object.keys(B).forEach(R=>{const O=B[R];if(O&&O.leiting&&O.leiting.tree){const N=O.leiting.tree;Array.isArray(N)?b.push(...N):b.push(N)}}),b},f.getTree=f.getModelTree,f.getAllComponentDetails=()=>{const b=y.getMapTileset(),B={},R=[];try{Object.keys(b).forEach(O=>{const N=b[O];if(!N||!N.leiting)return;const D=N.leiting,E=D.node,T=D.model.formData,P=D.box;if(!E||!E.nodeExtras)return;const F=D.model.modelId;B[F]=E.nodeExtras;const V=E.nodeExtras.element;if(!V)return;const G=P?P.center:{x:0,y:0,z:0};Object.values(V).forEach(k=>{if(k.box3)try{const _=l.Quaternion.fromAxisAngle(l.Cartesian3.UNIT_Z,l.Math.toRadians(T.totalRotation||0)),U=l.Matrix4.fromRotationTranslation(l.Matrix3.fromQuaternion(_),new l.Cartesian3(0,0,0)),H=l.Cartesian3.fromDegrees(T.longitude,T.latitude,T.height),q=l.Transforms.eastNorthUpToFixedFrame(H);l.Matrix4.multiply(q,U,q);const X=new l.Cartesian3(G.x,G.y,0),de=new l.Cartesian3;l.Matrix4.multiplyByPoint(q,X,de);const fe=l.Cartographic.fromCartesian(de),me=k.box3?.Center?.x||0,be=k.box3?.Center?.y||0,_e=k.box3?.Center?.z||0,Je=new l.Cartesian3(-G.x+me,-G.y+be,0+_e),lt=l.Matrix4.fromTranslation(Je),ct=l.Matrix4.clone(lt);l.Matrix4.multiply(U,ct,ct);const _t=l.Cartesian3.fromDegrees(fe.longitude/Math.PI*180,fe.latitude/Math.PI*180,T.height),vt=l.Transforms.eastNorthUpToFixedFrame(_t);l.Matrix4.multiply(vt,ct,vt);const j=l.Cartographic.fromCartesian(new l.Cartesian3(vt[12],vt[13],vt[14]));k.box3.cartographic={longitude:j.longitude/Math.PI*180,latitude:j.latitude/Math.PI*180,height:j.height};const Y={id:k.uniqueId,billboard:[{theme:"Tag9999",position:[k.box3.cartographic.longitude,k.box3.cartographic.latitude,k.box3.cartographic.height],options:{text:k.name}}]};R.push(Y)}catch(_){console.warn("Error calculating component position:",_)}})})}catch(O){console.error("getAllComponents error:",O)}return B},f.getAllComponents=f.getAllComponentDetails,f.getComponentInfoList=async b=>{if(!Array.isArray(b))return[];const B=y.getMapTileset(),R=[],O=[],N={};b.forEach(E=>{const P=B[E.modelId]?.leiting?.model?.dbName;P&&E.elementId&&O.push({dbName:P,elementId:E.elementId,modelId:E.modelId})});const D=new Set;if(b.forEach(E=>{const T=B[E.modelId],P=`${E.modelId}_${E.elementId}`;N[P]||T&&T.leiting&&!T.leiting?.node?.nodeExtras&&T.leiting.model?.nodeUrl&&D.add(E.modelId)}),D.size>0&&y._loadNodeDetailsForModel)try{const E=Array.from(D).map(T=>y._loadNodeDetailsForModel(T));await Promise.all(E)}catch(E){console.error("Failed to load node details in getComponentInfoList",E)}try{b.forEach(E=>{const T=E.modelId,P=E.elementId,F=B[T];if(!F||!F.leiting)return;const V=`${T}_${P}`,G=N[V];let k=null;if(G)k=G;else{const _=F.leiting.node?.nodeExtras?.element||F.leiting.node?.nodeExtras;_&&_[P]&&(k=JSON.parse(JSON.stringify(_[P])))}if(k){if(k.elementId=P,k.modelId=T,k.box3&&!k.box3.cartographic)try{const _=F.leiting,U=_.model.formData,H=_.box,q=H?H.center:{x:0,y:0,z:0},X=l.Quaternion.fromAxisAngle(l.Cartesian3.UNIT_Z,l.Math.toRadians(U.totalRotation||0)),de=l.Matrix4.fromRotationTranslation(l.Matrix3.fromQuaternion(X),new l.Cartesian3(0,0,0)),fe=l.Cartesian3.fromDegrees(U.longitude,U.latitude,U.height),me=l.Transforms.eastNorthUpToFixedFrame(fe);l.Matrix4.multiply(me,de,me);const be=new l.Cartesian3(q.x,q.y,0),_e=new l.Cartesian3;l.Matrix4.multiplyByPoint(me,be,_e);const Je=l.Cartographic.fromCartesian(_e),lt=k.box3?.Center?.x||0,ct=k.box3?.Center?.y||0,_t=k.box3?.Center?.z||0,vt=new l.Cartesian3(-q.x+lt,-q.y+ct,0+_t),j=l.Matrix4.fromTranslation(vt),Y=l.Matrix4.clone(j);l.Matrix4.multiply(de,Y,Y);const te=l.Cartesian3.fromDegrees(Je.longitude/Math.PI*180,Je.latitude/Math.PI*180,U.height),ze=l.Transforms.eastNorthUpToFixedFrame(te);l.Matrix4.multiply(ze,Y,ze);const It=l.Cartographic.fromCartesian(new l.Cartesian3(ze[12],ze[13],ze[14]));k.box3.cartographic={longitude:It.longitude/Math.PI*180,latitude:It.latitude/Math.PI*180,height:It.height}}catch(_){console.warn("Error calculating component position:",_)}R.push(k)}})}catch(E){console.error("getComponentInfoList processing error:",E)}return R},f.getCptInfos=f.getComponentInfoList,f.baseCompt=m.baseCompt,f.setTeleportTarget=b=>{f.onSetTeleportTarget&&f.onSetTeleportTarget(b)},window.Methods=f}return console.log("methods",f),{Cesium:l,viewer:p,methods:f,menuEvents:a}}function mc(i){return d.getCurrentScope()?(d.onScopeDispose(i),!0):!1}function gc(i){return typeof i=="function"?i():d.unref(i)}const CB=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const EB=Object.prototype.toString,xB=i=>EB.call(i)==="[object Object]",IB=()=>{};function SB(i){return d.getCurrentInstance()}function fm(i,e=!0,t){SB()?d.onMounted(i,t):e?i():d.nextTick(i)}function ln(i){var e;const t=gc(i);return(e=t?.$el)!=null?e:t}const ro=CB?window:void 0;function MB(...i){let e,t,n,s;if(typeof i[0]=="string"||Array.isArray(i[0])?([t,n,s]=i,e=ro):[e,t,n,s]=i,!e)return IB;Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]);const o=[],r=()=>{o.forEach(h=>h()),o.length=0},a=(h,u,p,f)=>(h.addEventListener(u,p,f),()=>h.removeEventListener(u,p,f)),l=d.watch(()=>[ln(e),gc(s)],([h,u])=>{if(r(),!h)return;const p=xB(u)?{...u}:u;o.push(...t.flatMap(f=>n.map(m=>a(h,f,m,p))))},{immediate:!0,flush:"post"}),c=()=>{l(),r()};return mc(c),c}function TB(){const i=d.ref(!1),e=d.getCurrentInstance();return e&&d.onMounted(()=>{i.value=!0},e),i}function pm(i){const e=TB();return d.computed(()=>(e.value,!!i()))}function mm(i,e={}){const{window:t=ro}=e,n=pm(()=>t&&"matchMedia"in t&&typeof t.matchMedia=="function");let s;const o=d.ref(!1),r=c=>{o.value=c.matches},a=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",r):s.removeListener(r))},l=d.watchEffect(()=>{n.value&&(a(),s=t.matchMedia(gc(i)),"addEventListener"in s?s.addEventListener("change",r):s.addListener(r),o.value=s.matches)});return mc(()=>{l(),a(),s=void 0}),o}function BB(i,e,t={}){const{window:n=ro,...s}=t;let o;const r=pm(()=>n&&"ResizeObserver"in n),a=()=>{o&&(o.disconnect(),o=void 0)},l=d.computed(()=>Array.isArray(i)?i.map(u=>ln(u)):[ln(i)]),c=d.watch(l,u=>{if(a(),r.value&&n){o=new ResizeObserver(e);for(const p of u)p&&o.observe(p,s)}},{immediate:!0,flush:"post"}),h=()=>{a(),c()};return mc(h),{isSupported:r,stop:h}}function _B(i,e={width:0,height:0},t={}){const{window:n=ro,box:s="content-box"}=t,o=d.computed(()=>{var u,p;return(p=(u=ln(i))==null?void 0:u.namespaceURI)==null?void 0:p.includes("svg")}),r=d.ref(e.width),a=d.ref(e.height),{stop:l}=BB(i,([u])=>{const p=s==="border-box"?u.borderBoxSize:s==="content-box"?u.contentBoxSize:u.devicePixelContentBoxSize;if(n&&o.value){const f=ln(i);if(f){const m=f.getBoundingClientRect();r.value=m.width,a.value=m.height}}else if(p){const f=Array.isArray(p)?p:[p];r.value=f.reduce((m,{inlineSize:y})=>m+y,0),a.value=f.reduce((m,{blockSize:y})=>m+y,0)}else r.value=u.contentRect.width,a.value=u.contentRect.height},t);fm(()=>{const u=ln(i);u&&(r.value="offsetWidth"in u?u.offsetWidth:e.width,a.value="offsetHeight"in u?u.offsetHeight:e.height)});const c=d.watch(()=>ln(i),u=>{r.value=u?e.width:0,a.value=u?e.height:0});function h(){l(),c()}return{width:r,height:a,stop:h}}function gm(i={}){const{window:e=ro,initialWidth:t=Number.POSITIVE_INFINITY,initialHeight:n=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=i,r=d.ref(t),a=d.ref(n),l=()=>{e&&(o?(r.value=e.innerWidth,a.value=e.innerHeight):(r.value=e.document.documentElement.clientWidth,a.value=e.document.documentElement.clientHeight))};if(l(),fm(l),MB("resize",l,{passive:!0}),s){const c=mm("(orientation: portrait)");d.watch(c,()=>l())}return{width:r,height:a}}function Fr(){const{width:i,height:e}=gm(),t=mm("(pointer: coarse)"),n=d.ref(!1),s=d.ref(!1),o=d.ref(!0),r=d.ref("other"),a=d.ref("other"),l=d.ref("medium"),c=d.ref("portrait"),h=()=>{const m=navigator.userAgent.toLowerCase(),y=/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i,g=navigator;if("userAgentData"in navigator&&g.userAgentData?.mobile!==void 0)return g.userAgentData.mobile||y.test(m);if(y.test(m))return!0;const A=/windows nt/i.test(m),v=/macintosh|mac os x/i.test(m)&&!/mobile/i.test(m),w=/linux/i.test(m)&&!/android/i.test(m);return!1},u=()=>{const m=navigator.userAgent.toLowerCase();n.value=h(),s.value=i.value>=768&&i.value<1024&&t.value,o.value=!n.value,/iphone|ipad|ipod/i.test(m)?r.value="ios":/android/i.test(m)?r.value="android":/win/i.test(m)?r.value="windows":/mac/i.test(m)?r.value="macos":/linux/i.test(m)&&(r.value="linux"),/safari/i.test(m)&&!/chrome/i.test(m)?a.value="safari":/chrome/i.test(m)?a.value="chrome":/firefox/i.test(m)?a.value="firefox":/edge/i.test(m)&&(a.value="edge"),i.value<576?l.value="small":i.value<1024?l.value="medium":l.value="large",c.value=i.value>e.value?"landscape":"portrait"},p=()=>{u()};d.onMounted(()=>{u(),window.addEventListener("resize",p),window.addEventListener("orientationchange",p)}),d.onUnmounted(()=>{window.removeEventListener("resize",p),window.removeEventListener("orientationchange",p)});const f=()=>({isMobile:n.value,isTablet:s.value,isDesktop:o.value,isTouchDevice:t.value,os:r.value,browser:a.value,screenSize:l.value,orientation:c.value});return{isMobile:d.readonly(n),isTablet:d.readonly(s),isDesktop:d.readonly(o),isTouchDevice:d.readonly(t),os:d.readonly(r),browser:d.readonly(a),screenSize:d.readonly(l),orientation:d.readonly(c),width:i,height:e,info:f}}const kB={class:"title"},PB={class:"actions"},DB={class:"card-body"},NB=d.defineComponent({__name:"LeitingDraggableCard",props:{visible:{type:Boolean,default:!0},open:{type:Boolean,default:void 0},title:{type:String,default:"Title"},initialPosition:{type:Object,default:()=>({x:0,y:0})},width:{type:[Number,String],default:300},minWidth:{type:Number,default:200},fullHeight:{type:Boolean,default:!1},align:{type:String,default:""}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=d.inject("leiting-theme",d.ref("dark")),{isMobile:s}=Fr(),o=e,r=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:x=>{o("update:visible",x),o("update:open",x)}}),a=d.ref(null),l=d.ref(t.initialPosition?.x||0),c=d.ref(t.initialPosition?.y||0),h=d.ref(t.width),u=d.ref(t.fullHeight?"100%":"600px");d.watch(()=>t.fullHeight,x=>{x?u.value="100%":u.value==="100%"&&(u.value="600px")});const{height:p}=gm();d.watch(p,()=>{t.fullHeight&&(u.value="100%")});const f=d.ref(!1),m=x=>{f.value=!0,x.preventDefault(),x.stopPropagation();const M=x.clientX,L=x.clientY,b=typeof h.value=="number"?h.value:a.value?.offsetWidth||0,B=typeof u.value=="number"?u.value:a.value?.offsetHeight||0,R=N=>{if(!f.value)return;N.preventDefault();const D=N.clientX-M,E=N.clientY-L,T=b+D,P=B+E;T>100&&(h.value=T),P>100&&(u.value=P)},O=()=>{f.value=!1,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O)};document.addEventListener("mousemove",R),document.addEventListener("mouseup",O)},y=d.computed(()=>({left:`${l.value}px`,top:`${c.value}px`,width:typeof h.value=="number"?`${h.value}px`:h.value,height:typeof u.value=="number"?`${u.value}px`:u.value,position:"absolute",zIndex:2e3})),g=()=>{d.nextTick(()=>{if(a.value){const x=a.value.offsetParent||document.body,M=x.clientWidth,L=x.clientHeight,b=typeof h.value=="number"?h.value:a.value.offsetWidth||350,B=typeof u.value=="number"?u.value:a.value.offsetHeight||600;l.value+b>M&&(l.value=Math.max(0,M-b-20)),c.value+B>L&&(c.value=Math.max(0,L-B-20)),l.value<0&&(l.value=0),c.value<0&&(c.value=0)}})},A=d.ref(!1),v=x=>{if(x.target.closest(".close-btn")||x.target.closest(".actions"))return;A.value=!0,x.preventDefault(),x.stopPropagation();const M=x.clientX,L=x.clientY,b=l.value,B=c.value,R=N=>{if(!A.value)return;N.preventDefault();const D=N.clientX-M,E=N.clientY-L;l.value=b+D,c.value=B+E},O=()=>{A.value=!1,document.removeEventListener("mousemove",R),document.removeEventListener("mouseup",O),g()};document.addEventListener("mousemove",R),document.addEventListener("mouseup",O)},w=()=>{d.nextTick(()=>{if(t.align&&a.value){const x=a.value.offsetParent||document.body,M=typeof h.value=="number"?h.value:a.value.offsetWidth||350;t.align==="right"?l.value=Math.max(0,x.clientWidth-M-20):t.align==="center"&&(l.value=Math.max(0,(x.clientWidth-M)/2))}g()})};d.onMounted(()=>{t.align?w():g()}),d.watch(r,x=>{x&&(t.align?w():g())});const C=()=>{r.value=!1,o("close")},S=x=>{if(x.target.closest(".close-btn")||x.target.closest(".actions")||x.touches.length!==1)return;A.value=!0,x.preventDefault(),x.stopPropagation();const M=x.touches[0],L=M?.clientX??0,b=M?.clientY??0,B=l.value,R=c.value,O=D=>{if(!A.value||D.touches.length!==1)return;D.preventDefault();const E=D.touches[0],T=(E?.clientX??0)-L,P=(E?.clientY??0)-b;l.value=B+T,c.value=R+P},N=()=>{A.value=!1,document.removeEventListener("touchmove",O),document.removeEventListener("touchend",N),g()};document.addEventListener("touchmove",O,{passive:!1}),document.addEventListener("touchend",N)},I=x=>{if(x.touches.length!==1)return;f.value=!0,x.preventDefault(),x.stopPropagation();const M=x.touches[0],L=M?.clientX??0,b=M?.clientY??0,B=typeof h.value=="number"?h.value:a.value?.offsetWidth||0,R=typeof u.value=="number"?u.value:a.value?.offsetHeight||0,O=D=>{if(!f.value||D.touches.length!==1)return;D.preventDefault();const E=D.touches[0],T=(E?.clientX??0)-L,P=(E?.clientY??0)-b,F=B+T,V=R+P;F>100&&(h.value=F),V>100&&(u.value=V)},N=()=>{f.value=!1,document.removeEventListener("touchmove",O),document.removeEventListener("touchend",N)};document.addEventListener("touchmove",O,{passive:!1}),document.addEventListener("touchend",N)};return(x,M)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{ref_key:"cardRef",ref:a,class:d.normalizeClass(["draggable-card leiting-scroll",["leiting-theme-"+d.unref(n)]]),style:d.normalizeStyle(y.value)},[d.createElementVNode("div",{ref:"headerRef",class:"card-header",onMousedown:v,onTouchstart:S},[d.createElementVNode("span",kB,d.toDisplayString(i.title),1),d.createElementVNode("div",PB,[d.renderSlot(x.$slots,"header-extra",{},void 0,!0),d.createElementVNode("span",{class:"close-btn",onClick:C},"×")])],544),d.createElementVNode("div",DB,[d.renderSlot(x.$slots,"default",{},void 0,!0)]),d.unref(s)?d.createCommentVNode("",!0):(d.openBlock(),d.createElementBlock("div",{key:0,class:"resize-handle",onMousedown:m,onTouchstart:I},[...M[0]||(M[0]=[d.createElementVNode("svg",{viewBox:"0 0 10 10",width:"10",height:"10",fill:"currentColor"},[d.createElementVNode("path",{d:"M10 10 L10 2 L2 10 Z"})],-1)])],32))],6)),[[d.vShow,r.value]])}}),Be=(i,e)=>{const t=i.__vccOpts||i;for(const[n,s]of e)t[n]=s;return t},gt=Be(NB,[["__scopeId","data-v-4d38393b"]]);function ym(i){const e=d.ref([]),t=d.ref([]),n=d.ref([]),s=d.ref(""),o=d.ref(!0);d.watch(()=>d.unref(i),u=>{if(!u||u.length===0)return;const p=[],f=(g,A)=>{g.forEach(v=>{const w=v.id||v.key||v.$id,C=v.modelId||A;C&&(v.modelId=C),w&&p.push(w),v.children&&v.children.length>0&&f(v.children,C)})};f(u);const m=new Set(n.value);let y=!1;p.forEach(g=>{m.has(g)||(m.add(g),y=!0)}),y&&(n.value=Array.from(m))},{immediate:!0,deep:!0});const r=d.computed(()=>{const u=d.unref(i);if(!u)return[];const p=[],f=(m,y)=>{m.forEach(g=>{const A=g.id||g.key||g.$id,v=g.name||g.title;p.push({key:A,title:v,parentKey:y}),g.children&&g.children.length>0&&f(g.children,A)})};return f(u),p}),a=u=>{e.value=u,o.value=!1},l=u=>{n.value=u},c=u=>{t.value=u},h=u=>r.value.find(f=>f.key===u)?.parentKey;return d.watch(s,u=>{if(!u)return;const f=r.value.filter(y=>y.title&&y.title.toLowerCase().includes(u.toLowerCase())).map(y=>y.parentKey),m=new Set;f.forEach(y=>{let g=y;for(;g;)m.add(g),g=h(g)}),e.value=[...m],o.value=!0}),{expandedKeys:e,selectedKeys:t,checkedKeys:n,searchValue:s,autoExpandParent:o,onExpand:a,onCheck:l,onSelect:c}}const LB={class:"search-box"},RB={key:0},FB={style:{color:"#f50"}},OB={key:1},GB={key:1,class:"empty-tip"},Or=Be(d.defineComponent({__name:"LeitingTree",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"构件树"},width:{type:[Number,String],default:320},treeData:{type:Array,default:()=>[]},initialPosition:{type:Object,default:()=>({x:0,y:0})},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close","select","check"],setup(i,{emit:e}){const t=oe.Input.Search,n=oe.Tree,s=i,o=e,r=d.inject("leiting-theme",d.ref("dark")),a=d.inject("leitingMethods"),l=b=>{a?.value?.onSearchComponent&&a.value.onSearchComponent(b)},c=d.computed({get:()=>s.open!==void 0?s.open:s.visible,set:b=>{o("update:visible",b),o("update:open",b)}}),h=d.ref(null),{height:u}=_B(h),p=d.computed(()=>u.value||300),f=d.ref({children:"children",title:"name",key:"id"}),m=d.ref([]),{expandedKeys:y,selectedKeys:g,checkedKeys:A,searchValue:v,autoExpandParent:w}=ym(d.toRef(s,"treeData")),C=(b,B)=>{if(!B)return b;const R=B.toLowerCase();return b.reduce((O,N)=>{const E=(N.name||N.title||"").toLowerCase().includes(R);if(N.children&&N.children.length>0){const T=C(N.children,B);(T.length>0||E)&&O.push({...N,children:T})}else E&&O.push({...N});return O},[])};d.watch([()=>s.treeData,v],([b,B])=>{b?m.value=C(b,B||""):m.value=[]},{immediate:!0,deep:!0});const S=b=>{y.value=b,w.value=!1},I=b=>{const B=[],R=O=>{if(!O.children||O.children.length===0){const D=O.element_Id;O.modelId&&D&&B.push({modelId:O.modelId,elementId:D})}else O.children.forEach(R)};return R(b),B},x=(b,B)=>{A.value=b,o("check",b,B);const R=[],O=new Set(b.map(D=>String(D))),N=D=>{for(let E=0;E<D.length;E++){const T=D[E];if(!T.children||T.children.length===0){if(!O.has(String(T.id))){const V=T.element_Id;T.modelId&&V&&R.push({modelId:T.modelId,elementId:V,show:!1})}}else T.children&&N(T.children)}};s.treeData&&N(s.treeData),a?.value?.setComponentVisibility&&a.value.setComponentVisibility(R),a?.value?.onTreeCheck&&a.value.onTreeCheck(b,B)},M=(b,B)=>{if(g.value=b,o("select",b,B),B.selected){const R=I(B.node);R.length>0&&a?.value?.flyToObjects&&a.value.flyToObjects({selectCpts:R})}a?.value?.onTreeSelect&&a.value.onTreeSelect(b,B)},L=()=>{o("update:visible",!1),o("close")};return(b,B)=>(d.openBlock(),d.createBlock(gt,{visible:c.value,"onUpdate:visible":B[1]||(B[1]=R=>c.value=R),title:i.title,"initial-position":i.initialPosition,"full-height":i.fullHeight,onClose:L},{default:d.withCtx(()=>[d.createElementVNode("div",{class:d.normalizeClass(["leiting-tree-container",[`theme-${d.unref(r)}`]])},[d.createElementVNode("div",LB,[d.createVNode(d.unref(t),{value:d.unref(v),"onUpdate:value":B[0]||(B[0]=R=>d.isRef(v)?v.value=R:null),placeholder:"搜索构件","allow-clear":"","enter-button":"",onSearch:l},null,8,["value"])]),d.createElementVNode("div",{class:"tree-wrapper",ref_key:"treeWrapperRef",ref:h},[m.value&&m.value.length?(d.openBlock(),d.createBlock(d.unref(n),{key:0,"tree-data":m.value,"field-names":f.value,height:p.value,"expanded-keys":d.unref(y),"auto-expand-parent":d.unref(w),"selected-keys":d.unref(g),"checked-keys":d.unref(A),checkable:"","block-node":"",onExpand:S,onSelect:M,onCheck:x},{title:d.withCtx(({name:R,title:O})=>[(R||O)&&d.unref(v)&&(R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())>-1?(d.openBlock(),d.createElementBlock("span",RB,[d.createTextVNode(d.toDisplayString((R||O).substr(0,(R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())))+" ",1),d.createElementVNode("span",FB,d.toDisplayString(d.unref(v)),1),d.createTextVNode(" "+d.toDisplayString((R||O).substr((R||O).toLowerCase().indexOf(d.unref(v).toLowerCase())+d.unref(v).length)),1)])):(d.openBlock(),d.createElementBlock("span",OB,d.toDisplayString(R||O),1))]),_:1},8,["tree-data","field-names","height","expanded-keys","auto-expand-parent","selected-keys","checked-keys"])):(d.openBlock(),d.createElementBlock("div",GB,"暂无数据"))],512)],2)]),_:1},8,["visible","title","initial-position","full-height"]))}}),[["__scopeId","data-v-3748c20d"]]),UB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",Gr="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAERSURBVDhPvZTrEYIwEISTCrQD6EA7gA60AylBK1Aq0A7ECrQDoQPsADrACuLuTMJkIiHxjzezgyR7H3d5KJVSqRAigcaQUjYYX2JgZY/P/O4lEgYYFo7pgPcc2kSCBoIUzDeo0klPPEsNYlX7AKzA/M6ASrRzYoIGG5DAOCvzBvzMOxqQazSgLLI1QdAW5jWpUAPV0AVKIc7FRCuNy7RkWozJtj1BED7ANbpDXHhffFXUwUnZwRYp7qw7Rx8/lLkV9R4QD2w1A8pjW3sA4h5au+pXEBS76P8D6Ut9/nXXaiRQdnBXqBfEC+4GdzSxW5v6F7CTeHnbCVCBsWIE+RYVrdF4DSz6OwgiADDexbmT3X0A4fSDfDjUugcAAAAASUVORK5CYII=",VB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",QB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAHDSURBVDhPlZOxL0NRFIe9ECubhehoIIjJ1HYwCkIiJpUQEkN1YZBobU0kFKNI3iTGYrDRv0BIhLXCYpCwiO35fs25zWva98JNvpz37j33d8+551yvLWIEQXDG0izMe55XjvJz816MUJG1LVuvYJcQrEb5xwkV2JSHGfAhgBJiu63E4oSUzpRtusa+wBooKkWnKOujQYh7SbCShQx0m9cpds4iOseOw7BFmUPwU341IQT2MaOQgi9QND+wiqNnBxT4X7SIbrAqhNI9wiUvJ+W8A99wDEWdwrw25iVkkenAEb5LkIQPuIMJWJGQoriFd+iBCkhc8zUhfJSm7mva5l3aadubDgtpMgGKpB/eoBfuQZFoPNhBj9gTaC3kKkEEGXPswF7Y5rLro1AW8UI6GmelmAzfkUWlNaWt6/iT0DOOA5bqoSuzHfIvofATqSJQb8KoiJbtPi6x2dA9FPjXE1F/uZKrv3IwCFcNqVmoPlal7QJ9q/wZCbk7Ioo9/tehE9q1r0nIxNQbG4YEXdkVjQ5J2OZXbB88gVrgQIJNj9aaT4LboPK7J6O0Ktb1KYtc/aYxGff6h3AYY6Nvzk2GQ1WQTVj4BST70jYaqceXAAAAAElFTkSuQmCC",zB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",HB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",Am="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEcSURBVDhPrZSNDYIwEIXpBOIGjMAIOIE4AbgBGwAbOIJu4Aa4gW4gI+gE9b3mjjSmibSR5ALX3H33W4y1Ns+yrIe0EH7HPC8YnyGjAegkEB5cYyiwrdWXIEc1xnSREGcuiTQEWeg7gG4+CMcl9ALnLkvogwScv+wq6FMQJJCJDgBtBcSAI3QClwe2YZAHcY2Ho4kGAVLA6U5/CEvdp4KYhesFhBPpCZIAz6jStHhproJcHyAHbb5nF+6RZ8CsGslIQaHp/gSxRzlApU4GugPxNuDN/eNarAJxapUPgm8rQ9C1SAI9AOGiHhGApSdnRN8FshbEiLwiLI1rMUM6zSQ0tX9c2lp/Iw0iMIPU38iFIN1mTmOjKa98vyWB4QM5XQnvsbFsyAAAAABJRU5ErkJggg==",YB="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",$B="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",jB={class:"menu-container"},WB=["onClick","title"],qB={class:"menu-icon"},KB=["src","alt"],XB={key:3,style:{"font-size":"12px"}},JB={key:0,class:"sub-menu"},ZB=["onClick"],ao=d.defineComponent({__name:"LeitingMenu",props:{visible:{type:Boolean,default:!0},activeIds:{type:Array,default:()=>[]},is2d:{type:Boolean,default:!1},customItems:{type:Array,default:()=>[]}},emits:["action"],setup(i,{emit:e}){const t=i,n=d.inject("leiting-theme",d.ref("dark")),s=d.inject("leiting-menu-size",d.ref("medium")),o=d.inject("leitingMethods",d.ref({})),r=d.computed(()=>n.value||n),a=d.computed(()=>s.value||s),l=d.ref([{ID:"home",title:"主视角",src:UB,key:"homeView"},{ID:"tree",title:"目录树",src:Gr,key:"componentTree"},{ID:"cadLayer",title:"图层",src:Gr,key:"cadLayer"},{ID:"gisCadPosition",title:"GIS调整",src:Am,key:"gisCadPosition"},{ID:"measure",title:"量算",src:VB,key:"measurement"},{ID:"section",title:"剖切",src:QB,key:"section"},{ID:"roam",title:"人物漫游",src:zB,key:"roam"},{ID:"info",title:"构件信息",src:HB,key:"componentInfo"},{ID:"cadPosition",title:"调整位置",src:Am,key:"cadPosition"},{ID:"annotation",title:"标注",src:$B,key:"annotation"},{ID:"setting",title:"场景配置",src:YB,key:"setting"}]),c=d.ref([]),h=d.ref([...t.activeIds]);d.watch(()=>t.activeIds,C=>{h.value=[...C]},{deep:!0});const u=d.computed(()=>t.visible);o.value&&o.value.menuEvents&&(o.value.menuEvents.on("setMenuListFilter",C=>{c.value=C}),o.value.menuEvents.on("setMenuActive",(C,S)=>{S?h.value.includes(C)||h.value.push(C):h.value=h.value.filter(I=>I!==C)}));const p=d.computed(()=>{let C=l.value;if(t.is2d){const S=["homeView","measurement","cadLayer","gisCadPosition","annotation"];C=C.filter(I=>I.key&&S.includes(I.key))}else{const S=["cadLayer","cadPosition","gisCadPosition","annotation"];C=C.filter(I=>!I.key||!S.includes(I.key))}if(c.value.length>0&&(C=C.filter(S=>!S.key||!c.value.includes(S.key))),t.customItems&&t.customItems.length>0){const S=t.customItems.map(I=>({...I,key:I.ID,src:I.src||I.icon}));return[...C,...S]}return C}),f=e,m=C=>{const S=["homeView"];if(C.key&&S.includes(C.key))h.value.includes(C.ID)||(h.value.push(C.ID),setTimeout(()=>{const x=h.value.indexOf(C.ID);x>-1&&h.value.splice(x,1)},1e3));else{const x=h.value.indexOf(C.ID);x>-1?h.value.splice(x,1):h.value.push(C.ID)}const I=h.value.includes(C.ID);C.func&&C.func(C),C.key&&f("action",C.key,I)},y=C=>{c.value=C},g=C=>{console.log("LeitingMenu received showMenu event:",C)},A=(C,S)=>{const I=p.value.find(x=>x.ID===C||x.key===C);if(I){const x=h.value.indexOf(I.ID);S&&x===-1?h.value.push(I.ID):!S&&x>-1&&h.value.splice(x,1)}};let v=null;const w=()=>{o.value?.menuEvents&&(v&&(v.off("setMenuListFilter",y),v.off("showMenu",g),v.off("setMenuActive",A)),v=o.value.menuEvents,v.on("setMenuListFilter",y),v.on("showMenu",g),v.on("setMenuActive",A))};return d.onMounted(()=>{w()}),d.onUnmounted(()=>{v&&(v.off("setMenuListFilter",y),v.off("showMenu",g),v.off("setMenuActive",A))}),d.watch(o,()=>{w()},{deep:!0}),(C,S)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-menu-wrapper",["leiting-theme-"+r.value,"size-"+a.value]])},[d.createElementVNode("div",jB,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.ID,class:d.normalizeClass(["menu-item",{active:h.value.includes(I.ID)}]),onClick:x=>m(I),title:I.title},[d.createElementVNode("div",qB,[I.src?(d.openBlock(),d.createElementBlock("img",{key:0,src:I.src,alt:I.title},null,8,KB)):typeof I.icon=="object"?(d.openBlock(),d.createBlock(d.resolveDynamicComponent(I.icon),{key:1})):typeof I.icon=="string"?(d.openBlock(),d.createElementBlock("i",{key:2,class:d.normalizeClass(["iconfont",`icon-${I.icon}`])},null,2)):(d.openBlock(),d.createElementBlock("span",XB,d.toDisplayString(I.title.substring(0,2)),1))]),I.children&&I.children.length>0?(d.openBlock(),d.createElementBlock("div",JB,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(I.children,x=>(d.openBlock(),d.createElementBlock("div",{key:x.ID,class:d.normalizeClass(["sub-menu-item",{active:h.value.includes(x.ID)}]),onClick:d.withModifiers(M=>m(x),["stop"])},d.toDisplayString(x.title),11,ZB))),128))])):d.createCommentVNode("",!0)],10,WB))),128))])],2)),[[d.vShow,u.value]])}}),e3={class:"leiting-section-content"},t3={class:"section-form-item"},i3={class:"radio-group"},n3={class:"section-form-item"},s3={class:"switch-container"},o3={class:"switch"},r3={class:"status-text"},a3={class:"section-form-item slider-item"},l3={class:"slider-wrapper"},c3={class:"section-form-item slider-item"},d3={class:"slider-wrapper"},h3={class:"section-form-item slider-item"},u3={class:"slider-wrapper"},f3={class:"section-form-item table-item"},p3={class:"model-table-container"},m3={class:"model-table"},g3={width:"40"},y3=["checked"],A3=["onClick"],v3=["value"],b3={class:"model-name"},lo=Be(d.defineComponent({__name:"LeitingSection",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"剖切控制"},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:N=>{n("update:visible",N),n("update:open",N)}}),r=d.ref("Box"),a=d.ref(!1),l=d.ref([]),c=d.ref([]),h=d.computed(()=>c.value.length===0?!1:c.value.every(N=>l.value.includes(N.modelId))),u=N=>{N.target.checked?l.value=c.value.map(E=>E.modelId):l.value=[],L()},p=d.ref([-10,10]),f=d.ref([-10,10]),m=d.ref([-10,10]),y=d.ref([-100,100]),g=d.ref([-100,100]),A=d.ref([-100,100]);let v=!1;const w=N=>{v=!0;const{targetZPlus:D,targetZMinus:E,targetXPlus:T,targetXMinus:P,targetYPlus:F,targetYMinus:V}=N;m.value=[-E,D],p.value=[-P,T],f.value=[-V,F],setTimeout(()=>{v=!1},100)},C=()=>{v||l.value.length===0||!s?.value?.updateSectionRange||s.value.updateSectionRange({targetZPlus:m.value[1],targetZMinus:-m.value[0],targetXPlus:p.value[1],targetXMinus:-p.value[0],targetYPlus:f.value[1],targetYMinus:-f.value[0]})},S=()=>{s?.value?.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(a.value)},I=N=>{if(!s?.value?.getMapTileset||!s?.value?.openSection)return;const E=s.value.getMapTileset()[N];if(E&&E.leiting?.box){const{min:T,max:P}=E.leiting.box,F=(P.x-T.x)/2,V=(P.y-T.y)/2,G=(P.z-T.z)/2;l.value.length<=1&&(y.value=[-F*2,F*2],g.value=[-V*2,V*2],A.value=[-G*2,G*2],p.value=[-F,F],f.value=[-V,V],m.value=[-G,G],s.value.updateSectionRange&&s.value.updateSectionRange({targetZPlus:G,targetZMinus:G,targetXPlus:F,targetXMinus:F,targetYPlus:V,targetYMinus:V})),s.value.openSection(N,{moveCallBack:w}),s.value.setSectionBoxVisibility&&s.value.setSectionBoxVisibility(a.value)}},x=N=>{const D=l.value.indexOf(N);D>-1?l.value.splice(D,1):l.value.push(N),L()};let M=[];const L=()=>{const N=l.value.filter(E=>!M.includes(E)),D=M.filter(E=>!l.value.includes(E));N.forEach(E=>I(E)),D.forEach(E=>{s?.value?.closeSection&&s.value.closeSection(E)}),M=[...l.value]},b=()=>{},B=()=>{o.value=!1,n("close")},R=()=>{a.value=!1,l.value=[],M=[],p.value=[-10,10],f.value=[-10,10],m.value=[-10,10],y.value=[-100,100],g.value=[-100,100],A.value=[-100,100]};d.watch(()=>t.visible,N=>{N?O():(s?.value?.closeSection&&s.value.closeSection(),R())});const O=()=>{s?.value&&typeof s.value.getModelList=="function"&&(c.value=s.value.getModelList()||[],c.value.length>0&&l.value.length===0&&(l.value=[c.value[0].modelId],M=[...l.value]),t.visible&&l.value.length>0&&(a.value=!0,l.value.forEach(N=>I(N))))};return d.watch(()=>s?.value,()=>{O()},{immediate:!0,deep:!0}),d.onMounted(()=>{O()}),(N,D)=>(d.openBlock(),d.createBlock(gt,{visible:o.value,title:"剖切分析","full-height":i.fullHeight,"onUpdate:visible":B},{default:d.withCtx(()=>[d.createElementVNode("div",e3,[d.createElementVNode("div",t3,[D[8]||(D[8]=d.createElementVNode("span",{class:"label"},"模式",-1)),d.createElementVNode("div",i3,[d.createElementVNode("label",{class:d.normalizeClass(["radio-item",{active:r.value==="Box"}])},[d.withDirectives(d.createElementVNode("input",{type:"radio",value:"Box","onUpdate:modelValue":D[0]||(D[0]=E=>r.value=E),onChange:b},null,544),[[d.vModelRadio,r.value]]),D[7]||(D[7]=d.createTextVNode(" 剖切盒 ",-1))],2)])]),d.createElementVNode("div",n3,[D[10]||(D[10]=d.createElementVNode("span",{class:"label"},"显示",-1)),d.createElementVNode("div",s3,[d.createElementVNode("label",o3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":D[1]||(D[1]=E=>a.value=E),onChange:S},null,544),[[d.vModelCheckbox,a.value]]),D[9]||(D[9]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",r3,d.toDisplayString(a.value?"显示":"隐藏"),1)])]),d.createElementVNode("div",a3,[D[11]||(D[11]=d.createElementVNode("span",{class:"label"},"X 轴",-1)),d.createElementVNode("div",l3,[d.createVNode(d.unref(oe.Slider),{value:p.value,"onUpdate:value":D[2]||(D[2]=E=>p.value=E),range:"",min:y.value[0],max:y.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",c3,[D[12]||(D[12]=d.createElementVNode("span",{class:"label"},"Y 轴",-1)),d.createElementVNode("div",d3,[d.createVNode(d.unref(oe.Slider),{value:f.value,"onUpdate:value":D[3]||(D[3]=E=>f.value=E),range:"",min:g.value[0],max:g.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",h3,[D[13]||(D[13]=d.createElementVNode("span",{class:"label"},"Z 轴",-1)),d.createElementVNode("div",u3,[d.createVNode(d.unref(oe.Slider),{value:m.value,"onUpdate:value":D[4]||(D[4]=E=>m.value=E),range:"",min:A.value[0],max:A.value[1],step:.1,onChange:C},null,8,["value","min","max"])])]),d.createElementVNode("div",f3,[D[15]||(D[15]=d.createElementVNode("span",{class:"label"},"模型",-1)),d.createElementVNode("div",p3,[d.createElementVNode("table",m3,[d.createElementVNode("thead",null,[d.createElementVNode("tr",null,[d.createElementVNode("th",g3,[d.createElementVNode("input",{type:"checkbox",checked:h.value,onChange:u},null,40,y3)]),D[14]||(D[14]=d.createElementVNode("th",null,"名称",-1))])]),d.createElementVNode("tbody",null,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,E=>(d.openBlock(),d.createElementBlock("tr",{key:E.modelId,class:d.normalizeClass({selected:l.value.includes(E.modelId)}),onClick:T=>x(E.modelId)},[d.createElementVNode("td",null,[d.withDirectives(d.createElementVNode("input",{type:"checkbox",value:E.modelId,"onUpdate:modelValue":D[5]||(D[5]=T=>l.value=T),onClick:D[6]||(D[6]=d.withModifiers(()=>{},["stop"])),onChange:L},null,40,v3),[[d.vModelCheckbox,l.value]])]),d.createElementVNode("td",b3,d.toDisplayString(E.modelName),1)],10,A3))),128))])])])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-ee4d9a12"]]),w3={class:"leiting-player-content"},C3={class:"player-form-item"},E3={class:"switch-container"},x3={class:"switch"},I3={class:"status-text"},S3={class:"player-form-item"},M3={class:"switch-container"},T3={class:"switch"},B3={class:"status-text"},_3={class:"player-form-item"},k3={class:"switch-container"},P3={class:"switch"},D3={class:"status-text"},N3={class:"player-form-item slider-item"},L3={class:"slider-wrapper"},R3={class:"value-text"},F3={class:"instructions"},O3={class:"key-map"},G3={class:"key-row"},U3={class:"key-row"},V3={class:"key-row"},Q3={class:"key-row"},z3={class:"key-row"},H3={class:"key-row"},co=Be(d.defineComponent({__name:"LeitingPlayer",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},title:{type:String,default:"漫游控制"},fullHeight:{type:Boolean,default:!1}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(!1),r=d.ref(!1),a=d.ref(!0),l=d.ref(5),c=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:I=>{n("update:visible",I),n("update:open",I)}}),h=d.ref(null),u=d.ref(null),p=d.ref(null),f=d.ref(null),m=d.ref(null),y=d.ref(null),g=()=>{o.value?v():w()},A=()=>{s?.value?.setPlayerParams&&s.value.setPlayerParams({gravityTest:r.value,collisionTest:a.value})},v=async()=>{s?.value?.openPlayer&&(await s.value.openPlayer(),s.value.setPlayerSpeed&&s.value.setPlayerSpeed(l.value),A(),s.value.bindPlayerUiKeys&&(await d.nextTick(),s.value.bindPlayerUiKeys({moveFront:h.value,moveBack:u.value,moveLeft:p.value,moveRight:f.value,moveUp:m.value,moveDown:y.value})))},w=()=>{s?.value?.closePlayer&&s.value.closePlayer()},C=()=>{s?.value?.setPlayerSpeed&&s.value.setPlayerSpeed(l.value)},S=()=>{c.value=!1,n("close")};return d.watch(()=>t.visible,I=>{I?(o.value=!0,s?.value?v():setTimeout(()=>{s?.value&&v()},100)):o.value&&(o.value=!1,w())},{immediate:!0}),(I,x)=>(d.openBlock(),d.createBlock(gt,{title:i.title,visible:c.value,"full-height":i.fullHeight,"onUpdate:visible":S},{default:d.withCtx(()=>[d.createElementVNode("div",w3,[d.createElementVNode("div",C3,[x[5]||(x[5]=d.createElementVNode("span",{class:"label"},"启用",-1)),d.createElementVNode("div",E3,[d.createElementVNode("label",x3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[0]||(x[0]=M=>o.value=M),onChange:g},null,544),[[d.vModelCheckbox,o.value]]),x[4]||(x[4]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",I3,d.toDisplayString(o.value?"开启":"关闭"),1)])]),d.createElementVNode("div",S3,[x[7]||(x[7]=d.createElementVNode("span",{class:"label"},"重力",-1)),d.createElementVNode("div",M3,[d.createElementVNode("label",T3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[1]||(x[1]=M=>r.value=M),onChange:A},null,544),[[d.vModelCheckbox,r.value]]),x[6]||(x[6]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",B3,d.toDisplayString(r.value?"开启":"关闭"),1)])]),d.createElementVNode("div",_3,[x[9]||(x[9]=d.createElementVNode("span",{class:"label"},"碰撞",-1)),d.createElementVNode("div",k3,[d.createElementVNode("label",P3,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":x[2]||(x[2]=M=>a.value=M),onChange:A},null,544),[[d.vModelCheckbox,a.value]]),x[8]||(x[8]=d.createElementVNode("span",{class:"slider round"},null,-1))]),d.createElementVNode("span",D3,d.toDisplayString(a.value?"开启":"关闭"),1)])]),d.createElementVNode("div",N3,[x[10]||(x[10]=d.createElementVNode("span",{class:"label"},"速度",-1)),d.createElementVNode("div",L3,[d.createVNode(d.unref(oe.Slider),{value:l.value,"onUpdate:value":x[3]||(x[3]=M=>l.value=M),min:1,max:10,step:1,onChange:C},null,8,["value"])]),d.createElementVNode("span",R3,d.toDisplayString(l.value),1)]),x[19]||(x[19]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",F3,[x[18]||(x[18]=d.createElementVNode("div",{class:"instruction-title"},"操作说明",-1)),d.createElementVNode("div",O3,[d.createElementVNode("div",G3,[d.createElementVNode("span",{class:"key",ref_key:"btnFront",ref:h},"W",512),x[11]||(x[11]=d.createTextVNode(" 前进 ",-1))]),d.createElementVNode("div",U3,[d.createElementVNode("span",{class:"key",ref_key:"btnBack",ref:u},"S",512),x[12]||(x[12]=d.createTextVNode(" 后退 ",-1))]),d.createElementVNode("div",V3,[d.createElementVNode("span",{class:"key",ref_key:"btnLeft",ref:p},"A",512),x[13]||(x[13]=d.createTextVNode(" 左移 ",-1))]),d.createElementVNode("div",Q3,[d.createElementVNode("span",{class:"key",ref_key:"btnRight",ref:f},"D",512),x[14]||(x[14]=d.createTextVNode(" 右移 ",-1))]),d.createElementVNode("div",z3,[d.createElementVNode("span",{class:"key",ref_key:"btnUp",ref:m},"Q",512),x[15]||(x[15]=d.createTextVNode(" 上升 ",-1))]),d.createElementVNode("div",H3,[d.createElementVNode("span",{class:"key",ref_key:"btnDown",ref:y},"E",512),x[16]||(x[16]=d.createTextVNode(" 下降 ",-1))]),x[17]||(x[17]=d.createElementVNode("div",{class:"key-row"},[d.createElementVNode("span",{class:"mouse-icon"},"🖱️"),d.createTextVNode(" 按住左键拖拽旋转视角 ")],-1))])])])]),_:1},8,["title","visible","full-height"]))}}),[["__scopeId","data-v-ff3f266e"]]),Y3={class:"info-content"},$3={key:0,class:"component-title"},ho=Be(d.defineComponent({__name:"LeitingInfo",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),a=d.ref([]),l=d.ref([]),c=d.ref(0),h=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:A=>{n("update:visible",A),n("update:open",A)}}),u=()=>{h.value=!1},p=A=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[A]||A,f=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],m=async A=>{const v=++c.value;if(l.value=A,!A||A.length===0){o.value=[];return}if(!h.value)return;let w=A;A.length>10&&(pe.warning(`选中构件数量过多(${A.length}个),仅显示前10个`),w=A.slice(0,10));const C=s?.value;let S=C?.getMapTileset?C.getMapTileset():{};r.value=!0;const I=[],x={};w.forEach(b=>{const R=S[b.modelId]?.leiting?.model?.dbName;R&&b.elementId&&I.push({dbName:R,elementId:b.elementId,modelId:b.modelId})});const M=new Set;if(w.forEach(b=>{const B=S[b.modelId],R=`${b.modelId}_${b.elementId}`;x[R]||B&&B.leiting&&!B.leiting?.node?.nodeExtras&&B.leiting.model?.nodeUrl&&M.add(b.modelId)}),M.size>0&&C?._loadNodeDetailsForModel)try{const b=Array.from(M).map(B=>C._loadNodeDetailsForModel(B));await Promise.all(b)}catch(b){console.error("Failed to load node details",b)}if(v!==c.value)return;S=C?.getMapTileset?C.getMapTileset():{};const L=[];w.forEach((b,B)=>{const O=S[b.modelId]?.leiting||{},N=x[`${b.modelId}_${b.elementId}`];let D={modelName:O.model?.modelId||b.modelId};D.elementID||(D.elementID=b.elementId);let E=null;if(N)E=N;else{const F=O.node?.nodeExtras?.element||O.node?.nodeExtras;if(F){const V=D.elementID;F[V]&&(E=F[V])}}E&&E.box3&&(D.length=`${E.box3.length?.toFixed(2)||0}米`,D.width=`${E.box3.width?.toFixed(2)||0}米`,D.height=`${E.box3.height?.toFixed(2)||0}米`);const T=[];E&&(E.name&&(D.elementName=E.name),E.categoryName&&(D.categoryName=E.categoryName),E.familySymbolName&&(D.familySymbolName=E.familySymbolName),E.levelName&&(D.levelName=E.levelName));const P={};if(f.forEach(F=>{D[F]!==void 0&&(P[F]=D[F])}),T.push({name:"基础信息",params:P}),E){const F=Array.isArray(E)?E:Array.isArray(E?.parameters)?E.parameters:null;if(F){if(F.flat().forEach(G=>{if(G&&G.GroupName&&Array.isArray(G.Parameters)){const k={};G.Parameters.forEach(_=>{_.name&&(k[_.name]=_.value??"")}),Object.keys(k).length>0&&T.push({name:G.GroupName,params:k})}}),!Array.isArray(E)){const{parameters:G,...k}=E,_={};Object.keys(k).forEach(U=>{!f.includes(U)&&U!=="uniqueId"&&typeof k[U]!="object"&&(_[U]=k[U])}),Object.keys(_).length>0&&T.push({name:"其他属性",params:_})}}else{let V=!1;if(Object.keys(E).forEach(G=>{E[G]&&typeof E[G]=="object"&&!Array.isArray(E[G])&&(V=!0,T.push({name:G,params:E[G]}))}),!V){const G={};Object.keys(E).forEach(k=>{if(!f.includes(k)&&k!=="batchId"){const _=E[k];typeof _=="string"&&_.length>500?G[k]=_.substring(0,500)+"...":G[k]=_}}),Object.keys(G).length>0&&T.push({name:"属性",params:G})}}}L.push({id:B,title:`${D.modelName}${D.elementName?` - ${D.elementName}`:""}`,groups:T})}),o.value=L,v===c.value&&(r.value=!1),L.length>0?a.value=[`${L[0].id}-基础信息`]:a.value=[]};let y=!1;const g=()=>{if(y)return;const A=s?.value;A&&A.selectionChange&&(A.selectionChange(m),y=!0)};return d.watch(()=>s?.value,()=>{g()},{deep:!0,immediate:!0}),d.watch(h,A=>{A&&l.value.length>0&&m(l.value)}),d.onMounted(()=>{g()}),(A,v)=>(d.openBlock(),d.createBlock(gt,{visible:h.value,title:"构件详情",width:350,align:"right","initial-position":{x:0,y:0},"full-height":i.fullHeight,onClose:u,"onUpdate:visible":v[1]||(v[1]=w=>h.value=w),class:"base-info-card"},{default:d.withCtx(()=>[d.createElementVNode("div",Y3,[d.createVNode(d.unref(oe.Spin),{spinning:r.value},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,w=>(d.openBlock(),d.createElementBlock("div",{key:w.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",$3,d.toDisplayString(w.title),1)):d.createCommentVNode("",!0),d.createVNode(d.unref(oe.Collapse),{activeKey:a.value,"onUpdate:activeKey":v[0]||(v[0]=C=>a.value=C),ghost:"","expand-icon-position":"end"},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(w.groups,C=>(d.openBlock(),d.createBlock(d.unref(oe.CollapsePanel),{key:`${w.id}-${C.name}`,header:C.name},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.Descriptions),{size:"small",bordered:"",column:1,labelStyle:{width:"100px",background:"rgba(255,255,255,0.05)",color:"#aaa"},contentStyle:{color:"#fff"}},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(C.params,(S,I)=>(d.openBlock(),d.createBlock(d.unref(oe.DescriptionsItem),{key:I,label:p(String(I))},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(S),1)]),_:2},1032,["label"]))),128))]),_:2},1024)]),_:2},1032,["header"]))),128))]),_:2},1032,["activeKey"])]))),128))]),_:1},8,["spinning"])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-375a1f55"]]);class yc{viewer;Cesium;pickHandler=null;bimEntityId="";mapEntityId="";constructor(e,t){this.viewer=e,this.Cesium=t}removeMarker(e){if(!this.viewer)return;const t=e==="BIM"?this.bimEntityId:this.mapEntityId;t&&(this.viewer.entities.removeById(t),e==="BIM"?this.bimEntityId="":this.mapEntityId="")}clearMarkers(){this.removeMarker("BIM"),this.removeMarker("MAP")}addMarker(e,t){if(!this.viewer||!this.Cesium)return;this.removeMarker(e);const n=`adjust-marker-${e}-${Date.now()}`;e==="BIM"?this.bimEntityId=n:this.mapEntityId=n,this.viewer.entities.add({id:n,position:this.Cesium.Cartesian3.fromDegrees(t.longitude,t.latitude,t.height),point:{pixelSize:10,color:e==="BIM"?this.Cesium.Color.RED:this.Cesium.Color.ORANGE,outlineColor:this.Cesium.Color.WHITE,outlineWidth:2,disableDepthTestDistance:Number.POSITIVE_INFINITY},label:{text:`${e==="BIM"?"BIM":"地图"}标记点`,font:"14pt sans-serif",style:this.Cesium.LabelStyle.FILL_AND_OUTLINE,outlineWidth:2,verticalOrigin:this.Cesium.VerticalOrigin.BOTTOM,pixelOffset:new this.Cesium.Cartesian2(0,-10),fillColor:this.Cesium.Color.WHITE,outlineColor:this.Cesium.Color.BLACK,backgroundColor:new this.Cesium.Color(.1,.1,.1,.8),showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY}})}registerPickHandler(e){this.destroyPickHandler(),!(!this.Cesium||!this.viewer)&&(this.pickHandler=new this.Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas),this.pickHandler.setInputAction(t=>{let n;try{n=this.viewer.scene.pickPosition(t.position)}catch(s){console.warn("pickPosition failed:",s)}if(!n){const s=this.viewer.camera.getPickRay(t.position);n=this.viewer.scene.globe.pick(s,this.viewer.scene)}if(n||(n=this.viewer.camera.pickEllipsoid(t.position,this.viewer.scene.globe.ellipsoid)),n){const s=this.Cesium.Cartographic.fromCartesian(n),o=this.Cesium.Math.toDegrees(s.longitude),r=this.Cesium.Math.toDegrees(s.latitude),a=s.height;e({longitude:o,latitude:r,height:a})}},this.Cesium.ScreenSpaceEventType.LEFT_CLICK,this.Cesium.KeyboardEventModifier.SHIFT))}destroyPickHandler(){this.pickHandler&&(this.pickHandler.destroy(),this.pickHandler=null)}calculateOffset(e,t){return{dLon:t.longitude-e.longitude,dLat:t.latitude-e.latitude,dHeight:t.height-e.height}}}const j3={class:"leitingbim-model-adjust-panel"},W3={class:"leitingbim-control-panel"},q3={class:"form-item"},K3={class:"radio-group"},X3={class:"form-item"},J3={class:"radio-group"},Z3={class:"form-item"},e_={class:"value"},t_={class:"param-row"},i_={class:"param-row"},n_={class:"param-row"},s_={class:"param-row"},o_={class:"param-row"},r_={class:"param-row"},a_={class:"param-row"},l_={class:"button-grid"},c_={key:1,class:"pick-mode-ui"},d_={class:"form-item",style:{display:"block","margin-bottom":"15px"}},h_={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},u_=["checked"],f_={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},p_={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},m_={class:"form-item",style:{display:"block","margin-bottom":"15px"}},g_={class:"radio-group",style:{width:"100%",display:"flex","align-items":"flex-start","flex-direction":"column"}},y_=["checked"],A_={key:0,style:{"font-size":"12px",color:"#aaa","margin-left":"20px"}},v_={key:1,style:{"font-size":"12px",color:"#666","margin-left":"20px"}},b_={class:"list-panel"},w_={class:"list-header"},C_={class:"col-check"},E_=["checked"],x_={class:"list-body"},I_={class:"col-check"},S_=["onUpdate:modelValue"],M_={class:"col-index"},T_=["title"],B_={class:"col-main"},__=["checked","onChange"],uo=Be(d.defineComponent({__name:"LeitingPosition",props:{visible:{type:Boolean},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean}},emits:["update:visible","update:open","close","save"],setup(i,{expose:e,emit:t}){const n=i,s=t,o=d.computed({get:()=>n.open!==void 0?n.open:n.visible,set:G=>{s("update:visible",G),s("update:open",G)}}),r=d.inject("leitingMethods"),a=d.ref("BIM"),l=d.ref("param"),c=d.ref(""),h=d.ref([]),u=d.ref("BIM"),p=d.ref(null),f=d.ref(null),m=d.ref(null),y=()=>(!m.value&&r?.value?.getViewer&&r?.value?.getCesium&&(m.value=new yc(r.value.getViewer(),r.value.getCesium())),m.value),g=()=>{y()?.clearMarkers(),p.value=null,f.value=null},A=(G,k)=>{G==="BIM"?p.value=k:f.value=k,y()?.addMarker(G,k),pe.success(`${G==="BIM"?"BIM":"地图"}标记点已添加`)},v=()=>{y()?.registerPickHandler(G=>{A(u.value,G)})},w=()=>{y()?.destroyPickHandler()},C=()=>{if(!p.value||!f.value){pe.warning("请先选择BIM标记点和地图标记点");return}if(!c.value){pe.warning("请先选择主模型");return}const G=y();let k=0,_=0,U=0;if(G){const{dLon:H,dLat:q,dHeight:X}=G.calculateOffset(p.value,f.value);k=H,_=q,U=X}else k=f.value.longitude-p.value.longitude,_=f.value.latitude-p.value.latitude,U=f.value.height-p.value.height;I.value.longitude+=k,I.value.latitude+=_,I.value.height+=U,E(c.value,{longitude:I.value.longitude,latitude:I.value.latitude,height:I.value.height}),pe.success("位置已调整")};d.watch(()=>l.value,G=>{G==="pick"?v():w()}),e({addMarker:A,setModelType:G=>{(G==="BIM"||G==="OSGB")&&(a.value=G)}});const I=d.ref({longitude:0,latitude:0,lonlat:1e-6,heightDistance:1,rotation:30,totalRotation:0,height:0,X:0,Y:0,Z:0}),x=d.computed(()=>{const G=h.value.find(k=>k.modelId===c.value);return G?G.modelName:""}),M=d.computed(()=>b.value.length>0&&b.value.every(G=>G.selected)),L=()=>{o.value=!1,s("close")},b=d.computed(()=>h.value.filter(G=>G.type===a.value)),B=G=>{const k=G.target.checked;b.value.forEach(_=>_.selected=k)},R=()=>{if(!r?.value)return;const G=r.value,k=G.getMapTileset?G.getMapTileset():{},_=[];if(Object.keys(k).forEach(U=>{const q=k[U].leiting||{};q.model&&_.push({modelId:q.model.modelId,modelName:q.model.modelName,selected:!1,formData:q.model.formData||{},dbName:q.model.dbName,url:q.model.url,type:q.model.type||"BIM"})}),h.value=_,_.length>0){const U=G.getBIMmodelId?G.getBIMmodelId():"";U&&_.find(H=>H.modelId===U)?N(U):N(_[0].modelId),_.forEach(H=>H.selected=!0)}},O=()=>{pe.info("拖动右下角标,可显示模型列表",void 0,2)},N=G=>{c.value=G;const k=h.value.find(_=>_.modelId===G);k&&k.formData&&Object.keys(I.value).forEach(_=>{k.formData[_]!==void 0&&(I.value[_]=k.formData[_])})},D=G=>r?.value?.getMapTileset?r.value.getMapTileset()[G]:null,E=(G,k)=>{const _=D(G),U=r.value.getCesium();if(_&&U){if(_.leiting?.model){_.leiting.model.formData={..._.leiting.model.formData,...k};const H=h.value.find(q=>q.modelId===G);H&&(H.formData=_.leiting.model.formData)}Xa({Cesium:U,tileset:_})}},T=G=>{if(!c.value)return;const _=h.value.find(q=>q.modelId===c.value)?.formData?.[G]??0,U=I.value[G],H=U-_;E(c.value,{[G]:U}),H!==0&&b.value.filter(X=>X.selected&&X.modelId!==c.value).forEach(X=>{const fe=(X.formData?.[G]??0)+H;E(X.modelId,{[G]:fe})})},P=G=>{const k=b.value.filter(q=>q.selected);if(k.length===0){pe.warning("请先选择要调整的模型");return}const{lonlat:_,heightDistance:U,rotation:H}=I.value;k.forEach(q=>{const X={...q.formData};switch(G){case"north":X.latitude+=_;break;case"south":X.latitude-=_;break;case"east":X.longitude+=_;break;case"west":X.longitude-=_;break;case"up":X.height+=U;break;case"down":X.height-=U;break;case"rotateLeft":X.totalRotation=(X.totalRotation||0)+H;break;case"rotateRight":X.totalRotation=(X.totalRotation||0)-H;break}q.modelId===c.value&&(X.lonlat=_,X.heightDistance=U,X.rotation=H,Object.assign(I.value,X)),E(q.modelId,X)})},F=()=>{if(!c.value){pe.warning("请先选择主模型");return}const G=D(c.value);if(!G||!r?.value?.getViewer)return;const k=r.value.getViewer(),_=r.value.getCesium(),U=G.boundingSphere;k.camera.flyToBoundingSphere(U,{offset:new _.HeadingPitchRange(0,_.Math.toRadians(-90),U.radius*2),duration:1.5})},V=()=>{r?.value?.saveRegion?(r.value.saveRegion(h.value),s("save",d.unref(h))):(console.log("Save models:",h.value),pe.warning("未找到保存接口,数据已打印控制台"))};return d.watch(()=>n.visible,G=>{G?(R(),O(),l.value==="pick"&&v()):(w(),g())}),d.onMounted(()=>{n.visible&&(R(),O(),l.value==="pick"&&v())}),(G,k)=>(d.openBlock(),d.createBlock(gt,{visible:o.value,title:"调整位置(调整前可选择正北俯视)","full-height":i.fullHeight,width:260,"onUpdate:visible":k[25]||(k[25]=_=>o.value=_),onClose:L,onSave:V,class:"base-position-card"},{default:d.withCtx(()=>[d.createElementVNode("div",j3,[d.createElementVNode("div",W3,[d.createElementVNode("div",q3,[k[26]||(k[26]=d.createElementVNode("label",null,"模型类型:",-1)),d.createElementVNode("div",K3,[d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="BIM"}),onClick:k[0]||(k[0]=_=>a.value="BIM")},"BIM模型",2),d.createElementVNode("span",{class:d.normalizeClass({active:a.value==="OSGB"}),onClick:k[1]||(k[1]=_=>a.value="OSGB")},"倾斜摄影",2)])]),d.createElementVNode("div",X3,[k[27]||(k[27]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",J3,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="param"}),onClick:k[2]||(k[2]=_=>l.value="param")},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="pick"}),onClick:k[3]||(k[3]=_=>l.value="pick")},"地图点选",2)])]),d.createElementVNode("div",Z3,[k[28]||(k[28]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",e_,d.toDisplayString(x.value||"未选择"),1)]),k[42]||(k[42]=d.createElementVNode("div",{class:"separator"},null,-1)),l.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[k[36]||(k[36]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",t_,[k[29]||(k[29]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[4]||(k[4]=_=>I.value.longitude=_),onChange:k[5]||(k[5]=_=>T("longitude")),step:"0.000001"},null,544),[[d.vModelText,I.value.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",i_,[k[30]||(k[30]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[6]||(k[6]=_=>I.value.latitude=_),onChange:k[7]||(k[7]=_=>T("latitude")),step:"0.000001"},null,544),[[d.vModelText,I.value.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",n_,[k[31]||(k[31]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[8]||(k[8]=_=>I.value.height=_),onChange:k[9]||(k[9]=_=>T("height")),step:"0.1"},null,544),[[d.vModelText,I.value.height,void 0,{number:!0}]])]),d.createElementVNode("div",s_,[k[32]||(k[32]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[10]||(k[10]=_=>I.value.totalRotation=_),onChange:k[11]||(k[11]=_=>T("totalRotation")),step:"1"},null,544),[[d.vModelText,I.value.totalRotation,void 0,{number:!0}]])]),k[37]||(k[37]=d.createElementVNode("div",{class:"separator"},null,-1)),k[38]||(k[38]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",o_,[k[33]||(k[33]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[12]||(k[12]=_=>I.value.lonlat=_),step:"0.000001"},null,512),[[d.vModelText,I.value.lonlat,void 0,{number:!0}]])]),d.createElementVNode("div",r_,[k[34]||(k[34]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[13]||(k[13]=_=>I.value.heightDistance=_),step:"0.1"},null,512),[[d.vModelText,I.value.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",a_,[k[35]||(k[35]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":k[14]||(k[14]=_=>I.value.rotation=_),step:"1"},null,512),[[d.vModelText,I.value.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",l_,[d.createElementVNode("button",{onClick:k[15]||(k[15]=_=>P("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:k[16]||(k[16]=_=>P("north"))},"北移"),d.createElementVNode("button",{onClick:k[17]||(k[17]=_=>P("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:k[18]||(k[18]=_=>P("west"))},"西移"),d.createElementVNode("button",{onClick:k[19]||(k[19]=_=>P("south"))},"南移"),d.createElementVNode("button",{onClick:k[20]||(k[20]=_=>P("east"))},"东移"),d.createElementVNode("button",{onClick:k[21]||(k[21]=_=>P("up"))},"上移"),d.createElementVNode("button",{onClick:k[22]||(k[22]=_=>P("down"))},"下移"),d.createElementVNode("button",{onClick:F,class:"primary-btn"},"正北俯视"),d.createElementVNode("button",{onClick:V,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):l.value==="pick"?(d.openBlock(),d.createElementBlock("div",c_,[d.createElementVNode("div",d_,[d.createElementVNode("div",h_,[d.createElementVNode("div",{onClick:k[23]||(k[23]=_=>u.value="BIM"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:u.value==="BIM",style:{"margin-right":"5px"}},null,8,u_),k[39]||(k[39]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"BIM标记点:",-1))]),p.value?(d.openBlock(),d.createElementBlock("div",f_,[d.createElementVNode("div",null,"经度:"+d.toDisplayString(p.value.longitude.toFixed(10)),1),d.createElementVNode("div",null,"纬度:"+d.toDisplayString(p.value.latitude.toFixed(10)),1)])):(d.openBlock(),d.createElementBlock("div",p_,"未选择"))])]),d.createElementVNode("div",m_,[d.createElementVNode("div",g_,[d.createElementVNode("div",{onClick:k[24]||(k[24]=_=>u.value="MAP"),style:{cursor:"pointer",display:"flex","align-items":"center","margin-bottom":"5px"}},[d.createElementVNode("input",{type:"radio",checked:u.value==="MAP",style:{"margin-right":"5px"}},null,8,y_),k[40]||(k[40]=d.createElementVNode("span",{style:{"font-weight":"bold"}},"地图标记点:",-1))]),f.value?(d.openBlock(),d.createElementBlock("div",A_,[d.createElementVNode("div",null,"经度:"+d.toDisplayString(f.value.longitude.toFixed(10)),1),d.createElementVNode("div",null,"纬度:"+d.toDisplayString(f.value.latitude.toFixed(10)),1)])):(d.openBlock(),d.createElementBlock("div",v_,"未选择"))])]),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:C},"调整位置"),d.createElementVNode("button",{onClick:V},"保存")]),k[41]||(k[41]=d.createElementVNode("div",{class:"instructions",style:{"margin-top":"15px",color:"#999","font-size":"12px","line-height":"1.5"}},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 勾选上方 BIM 或 地图 标记点选项。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“调整位置”进行校准。")],-1))])):d.createCommentVNode("",!0)]),d.createElementVNode("div",b_,[d.createElementVNode("div",w_,[d.createElementVNode("div",C_,[d.createElementVNode("input",{type:"checkbox",checked:M.value,onChange:B},null,40,E_)]),k[43]||(k[43]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),k[44]||(k[44]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),k[45]||(k[45]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",x_,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(b.value,(_,U)=>(d.openBlock(),d.createElementBlock("div",{key:_.modelId,class:d.normalizeClass(["list-item",{active:_.modelId===c.value}])},[d.createElementVNode("div",I_,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":H=>_.selected=H},null,8,S_),[[d.vModelCheckbox,_.selected]])]),d.createElementVNode("div",M_,d.toDisplayString(U+1),1),d.createElementVNode("div",{class:"col-name",title:_.modelName},d.toDisplayString(_.modelName),9,T_),d.createElementVNode("div",B_,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:_.modelId===c.value,onChange:H=>N(_.modelId)},null,40,__)])],2))),128))])])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-fd4822ea"]]);function Ur(){return Ur=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)({}).hasOwnProperty.call(t,n)&&(i[n]=t[n])}return i},Ur.apply(null,arguments)}const k_={locale:"zh_CN",today:"今天",now:"此刻",backToToday:"返回今天",ok:"确定",timeSelect:"选择时间",dateSelect:"选择日期",weekSelect:"选择周",clear:"清除",month:"月",year:"年",previousMonth:"上个月 (翻页上键)",nextMonth:"下个月 (翻页下键)",monthSelect:"选择月份",yearSelect:"选择年份",decadeSelect:"选择年代",yearFormat:"YYYY年",dayFormat:"D日",dateFormat:"YYYY年M月D日",dateTimeFormat:"YYYY年M月D日 HH时mm分ss秒",previousYear:"上一年 (Control键加左方向键)",nextYear:"下一年 (Control键加右方向键)",previousDecade:"上一年代",nextDecade:"下一年代",previousCentury:"上一世纪",nextCentury:"下一世纪"},P_={placeholder:"请选择时间",rangePlaceholder:["开始时间","结束时间"]},vm={lang:Ur({placeholder:"请选择日期",yearPlaceholder:"请选择年份",quarterPlaceholder:"请选择季度",monthPlaceholder:"请选择月份",weekPlaceholder:"请选择周",rangePlaceholder:["开始日期","结束日期"],rangeYearPlaceholder:["开始年份","结束年份"],rangeMonthPlaceholder:["开始月份","结束月份"],rangeQuarterPlaceholder:["开始季度","结束季度"],rangeWeekPlaceholder:["开始周","结束周"]},k_),timePickerLocale:Ur({},P_)};vm.lang.ok="确定";var Vr={exports:{}},D_=Vr.exports,bm;function wm(){return bm||(bm=1,(function(i,e){(function(t,n){i.exports=n()})(D_,(function(){var t=1e3,n=6e4,s=36e5,o="millisecond",r="second",a="minute",l="hour",c="day",h="week",u="month",p="quarter",f="year",m="date",y="Invalid Date",g=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,A=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,v={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(N){var D=["th","st","nd","rd"],E=N%100;return"["+N+(D[(E-20)%10]||D[E]||D[0])+"]"}},w=function(N,D,E){var T=String(N);return!T||T.length>=D?N:""+Array(D+1-T.length).join(E)+N},C={s:w,z:function(N){var D=-N.utcOffset(),E=Math.abs(D),T=Math.floor(E/60),P=E%60;return(D<=0?"+":"-")+w(T,2,"0")+":"+w(P,2,"0")},m:function N(D,E){if(D.date()<E.date())return-N(E,D);var T=12*(E.year()-D.year())+(E.month()-D.month()),P=D.clone().add(T,u),F=E-P<0,V=D.clone().add(T+(F?-1:1),u);return+(-(T+(E-P)/(F?P-V:V-P))||0)},a:function(N){return N<0?Math.ceil(N)||0:Math.floor(N)},p:function(N){return{M:u,y:f,w:h,d:c,D:m,h:l,m:a,s:r,ms:o,Q:p}[N]||String(N||"").toLowerCase().replace(/s$/,"")},u:function(N){return N===void 0}},S="en",I={};I[S]=v;var x="$isDayjsObject",M=function(N){return N instanceof R||!(!N||!N[x])},L=function N(D,E,T){var P;if(!D)return S;if(typeof D=="string"){var F=D.toLowerCase();I[F]&&(P=F),E&&(I[F]=E,P=F);var V=D.split("-");if(!P&&V.length>1)return N(V[0])}else{var G=D.name;I[G]=D,P=G}return!T&&P&&(S=P),P||!T&&S},b=function(N,D){if(M(N))return N.clone();var E=typeof D=="object"?D:{};return E.date=N,E.args=arguments,new R(E)},B=C;B.l=L,B.i=M,B.w=function(N,D){return b(N,{locale:D.$L,utc:D.$u,x:D.$x,$offset:D.$offset})};var R=(function(){function N(E){this.$L=L(E.locale,null,!0),this.parse(E),this.$x=this.$x||E.x||{},this[x]=!0}var D=N.prototype;return D.parse=function(E){this.$d=(function(T){var P=T.date,F=T.utc;if(P===null)return new Date(NaN);if(B.u(P))return new Date;if(P instanceof Date)return new Date(P);if(typeof P=="string"&&!/Z$/i.test(P)){var V=P.match(g);if(V){var G=V[2]-1||0,k=(V[7]||"0").substring(0,3);return F?new Date(Date.UTC(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,k)):new Date(V[1],G,V[3]||1,V[4]||0,V[5]||0,V[6]||0,k)}}return new Date(P)})(E),this.init()},D.init=function(){var E=this.$d;this.$y=E.getFullYear(),this.$M=E.getMonth(),this.$D=E.getDate(),this.$W=E.getDay(),this.$H=E.getHours(),this.$m=E.getMinutes(),this.$s=E.getSeconds(),this.$ms=E.getMilliseconds()},D.$utils=function(){return B},D.isValid=function(){return this.$d.toString()!==y},D.isSame=function(E,T){var P=b(E);return this.startOf(T)<=P&&P<=this.endOf(T)},D.isAfter=function(E,T){return b(E)<this.startOf(T)},D.isBefore=function(E,T){return this.endOf(T)<b(E)},D.$g=function(E,T,P){return B.u(E)?this[T]:this.set(P,E)},D.unix=function(){return Math.floor(this.valueOf()/1e3)},D.valueOf=function(){return this.$d.getTime()},D.startOf=function(E,T){var P=this,F=!!B.u(T)||T,V=B.p(E),G=function(fe,me){var be=B.w(P.$u?Date.UTC(P.$y,me,fe):new Date(P.$y,me,fe),P);return F?be:be.endOf(c)},k=function(fe,me){return B.w(P.toDate()[fe].apply(P.toDate("s"),(F?[0,0,0,0]:[23,59,59,999]).slice(me)),P)},_=this.$W,U=this.$M,H=this.$D,q="set"+(this.$u?"UTC":"");switch(V){case f:return F?G(1,0):G(31,11);case u:return F?G(1,U):G(0,U+1);case h:var X=this.$locale().weekStart||0,de=(_<X?_+7:_)-X;return G(F?H-de:H+(6-de),U);case c:case m:return k(q+"Hours",0);case l:return k(q+"Minutes",1);case a:return k(q+"Seconds",2);case r:return k(q+"Milliseconds",3);default:return this.clone()}},D.endOf=function(E){return this.startOf(E,!1)},D.$set=function(E,T){var P,F=B.p(E),V="set"+(this.$u?"UTC":""),G=(P={},P[c]=V+"Date",P[m]=V+"Date",P[u]=V+"Month",P[f]=V+"FullYear",P[l]=V+"Hours",P[a]=V+"Minutes",P[r]=V+"Seconds",P[o]=V+"Milliseconds",P)[F],k=F===c?this.$D+(T-this.$W):T;if(F===u||F===f){var _=this.clone().set(m,1);_.$d[G](k),_.init(),this.$d=_.set(m,Math.min(this.$D,_.daysInMonth())).$d}else G&&this.$d[G](k);return this.init(),this},D.set=function(E,T){return this.clone().$set(E,T)},D.get=function(E){return this[B.p(E)]()},D.add=function(E,T){var P,F=this;E=Number(E);var V=B.p(T),G=function(U){var H=b(F);return B.w(H.date(H.date()+Math.round(U*E)),F)};if(V===u)return this.set(u,this.$M+E);if(V===f)return this.set(f,this.$y+E);if(V===c)return G(1);if(V===h)return G(7);var k=(P={},P[a]=n,P[l]=s,P[r]=t,P)[V]||1,_=this.$d.getTime()+E*k;return B.w(_,this)},D.subtract=function(E,T){return this.add(-1*E,T)},D.format=function(E){var T=this,P=this.$locale();if(!this.isValid())return P.invalidDate||y;var F=E||"YYYY-MM-DDTHH:mm:ssZ",V=B.z(this),G=this.$H,k=this.$m,_=this.$M,U=P.weekdays,H=P.months,q=P.meridiem,X=function(me,be,_e,Je){return me&&(me[be]||me(T,F))||_e[be].slice(0,Je)},de=function(me){return B.s(G%12||12,me,"0")},fe=q||function(me,be,_e){var Je=me<12?"AM":"PM";return _e?Je.toLowerCase():Je};return F.replace(A,(function(me,be){return be||(function(_e){switch(_e){case"YY":return String(T.$y).slice(-2);case"YYYY":return B.s(T.$y,4,"0");case"M":return _+1;case"MM":return B.s(_+1,2,"0");case"MMM":return X(P.monthsShort,_,H,3);case"MMMM":return X(H,_);case"D":return T.$D;case"DD":return B.s(T.$D,2,"0");case"d":return String(T.$W);case"dd":return X(P.weekdaysMin,T.$W,U,2);case"ddd":return X(P.weekdaysShort,T.$W,U,3);case"dddd":return U[T.$W];case"H":return String(G);case"HH":return B.s(G,2,"0");case"h":return de(1);case"hh":return de(2);case"a":return fe(G,k,!0);case"A":return fe(G,k,!1);case"m":return String(k);case"mm":return B.s(k,2,"0");case"s":return String(T.$s);case"ss":return B.s(T.$s,2,"0");case"SSS":return B.s(T.$ms,3,"0");case"Z":return V}return null})(me)||V.replace(":","")}))},D.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},D.diff=function(E,T,P){var F,V=this,G=B.p(T),k=b(E),_=(k.utcOffset()-this.utcOffset())*n,U=this-k,H=function(){return B.m(V,k)};switch(G){case f:F=H()/12;break;case u:F=H();break;case p:F=H()/3;break;case h:F=(U-_)/6048e5;break;case c:F=(U-_)/864e5;break;case l:F=U/s;break;case a:F=U/n;break;case r:F=U/t;break;default:F=U}return P?F:B.a(F)},D.daysInMonth=function(){return this.endOf(u).$D},D.$locale=function(){return I[this.$L]},D.locale=function(E,T){if(!E)return this.$L;var P=this.clone(),F=L(E,T,!0);return F&&(P.$L=F),P},D.clone=function(){return B.w(this.$d,this)},D.toDate=function(){return new Date(this.valueOf())},D.toJSON=function(){return this.isValid()?this.toISOString():null},D.toISOString=function(){return this.$d.toISOString()},D.toString=function(){return this.$d.toUTCString()},N})(),O=R.prototype;return b.prototype=O,[["$ms",o],["$s",r],["$m",a],["$H",l],["$W",c],["$M",u],["$y",f],["$D",m]].forEach((function(N){O[N[1]]=function(D){return this.$g(D,N[0],N[1])}})),b.extend=function(N,D){return N.$i||(N(D,R,b),N.$i=!0),b},b.locale=L,b.isDayjs=M,b.unix=function(N){return b(1e3*N)},b.en=I[S],b.Ls=I,b.p={},b}))})(Vr)),Vr.exports}var N_=wm();const zt=nn(N_);var Qr={exports:{}},L_=Qr.exports,Cm;function R_(){return Cm||(Cm=1,(function(i,e){(function(t,n){i.exports=n(wm())})(L_,(function(t){function n(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=n(t),o={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(r,a){return a==="W"?r+"周":r+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(r,a){var l=100*r+a;return l<600?"凌晨":l<900?"早上":l<1100?"上午":l<1300?"中午":l<1800?"下午":"晚上"}};return s.default.locale(o,null,!0),o}))})(Qr)),Qr.exports}R_();var zr={exports:{}},F_=zr.exports,Em;function O_(){return Em||(Em=1,(function(i,e){(function(t,n){i.exports=n()})(F_,(function(){return function(t,n,s){var o=n.prototype,r=function(u){return u&&(u.indexOf?u:u.s)},a=function(u,p,f,m,y){var g=u.name?u:u.$locale(),A=r(g[p]),v=r(g[f]),w=A||v.map((function(S){return S.slice(0,m)}));if(!y)return w;var C=g.weekStart;return w.map((function(S,I){return w[(I+(C||0))%7]}))},l=function(){return s.Ls[s.locale()]},c=function(u,p){return u.formats[p]||(function(f){return f.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(m,y,g){return y||g.slice(1)}))})(u.formats[p.toUpperCase()])},h=function(){var u=this;return{months:function(p){return p?p.format("MMMM"):a(u,"months")},monthsShort:function(p){return p?p.format("MMM"):a(u,"monthsShort","months",3)},firstDayOfWeek:function(){return u.$locale().weekStart||0},weekdays:function(p){return p?p.format("dddd"):a(u,"weekdays")},weekdaysMin:function(p){return p?p.format("dd"):a(u,"weekdaysMin","weekdays",2)},weekdaysShort:function(p){return p?p.format("ddd"):a(u,"weekdaysShort","weekdays",3)},longDateFormat:function(p){return c(u.$locale(),p)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return h.bind(this)()},s.localeData=function(){var u=l();return{firstDayOfWeek:function(){return u.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(p){return c(u,p)},meridiem:u.meridiem,ordinal:u.ordinal}},s.months=function(){return a(l(),"months")},s.monthsShort=function(){return a(l(),"monthsShort","months",3)},s.weekdays=function(u){return a(l(),"weekdays",null,null,u)},s.weekdaysShort=function(u){return a(l(),"weekdaysShort","weekdays",3,u)},s.weekdaysMin=function(u){return a(l(),"weekdaysMin","weekdays",2,u)}}}))})(zr)),zr.exports}var G_=O_();const U_=nn(G_);var Hr={exports:{}},V_=Hr.exports,xm;function Q_(){return xm||(xm=1,(function(i,e){(function(t,n){i.exports=n()})(V_,(function(){return function(t,n){n.prototype.weekday=function(s){var o=this.$locale().weekStart||0,r=this.$W,a=(r<o?r+7:r)-o;return this.$utils().u(s)?a:this.subtract(a,"day").add(s,"day")}}}))})(Hr)),Hr.exports}var z_=Q_();const H_=nn(z_);var Yr={exports:{}},Y_=Yr.exports,Im;function $_(){return Im||(Im=1,(function(i,e){(function(t,n){i.exports=n()})(Y_,(function(){var t="week",n="year";return function(s,o,r){var a=o.prototype;a.week=function(l){if(l===void 0&&(l=null),l!==null)return this.add(7*(l-this.week()),"day");var c=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var h=r(this).startOf(n).add(1,n).date(c),u=r(this).endOf(t);if(h.isBefore(u))return 1}var p=r(this).startOf(n).date(c).startOf(t).subtract(1,"millisecond"),f=this.diff(p,t,!0);return f<0?r(this).startOf("week").week():Math.ceil(f)},a.weeks=function(l){return l===void 0&&(l=null),this.week(l)}}}))})(Yr)),Yr.exports}var j_=$_();const W_=nn(j_);var $r={exports:{}},q_=$r.exports,Sm;function K_(){return Sm||(Sm=1,(function(i,e){(function(t,n){i.exports=n()})(q_,(function(){var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},n=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d/,o=/\d\d/,r=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,l={},c=function(g){return(g=+g)+(g>68?1900:2e3)},h=function(g){return function(A){this[g]=+A}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=(function(A){if(!A||A==="Z")return 0;var v=A.match(/([+-]|\d\d)/g),w=60*v[1]+(+v[2]||0);return w===0?0:v[0]==="+"?-w:w})(g)}],p=function(g){var A=l[g];return A&&(A.indexOf?A:A.s.concat(A.f))},f=function(g,A){var v,w=l.meridiem;if(w){for(var C=1;C<=24;C+=1)if(g.indexOf(w(C,0,A))>-1){v=C>12;break}}else v=g===(A?"pm":"PM");return v},m={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[s,function(g){this.month=3*(g-1)+1}],S:[s,function(g){this.milliseconds=100*+g}],SS:[o,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[r,h("seconds")],ss:[r,h("seconds")],m:[r,h("minutes")],mm:[r,h("minutes")],H:[r,h("hours")],h:[r,h("hours")],HH:[r,h("hours")],hh:[r,h("hours")],D:[r,h("day")],DD:[o,h("day")],Do:[a,function(g){var A=l.ordinal,v=g.match(/\d+/);if(this.day=v[0],A)for(var w=1;w<=31;w+=1)A(w).replace(/\[|\]/g,"")===g&&(this.day=w)}],w:[r,h("week")],ww:[o,h("week")],M:[r,h("month")],MM:[o,h("month")],MMM:[a,function(g){var A=p("months"),v=(p("monthsShort")||A.map((function(w){return w.slice(0,3)}))).indexOf(g)+1;if(v<1)throw new Error;this.month=v%12||v}],MMMM:[a,function(g){var A=p("months").indexOf(g)+1;if(A<1)throw new Error;this.month=A%12||A}],Y:[/[+-]?\d+/,h("year")],YY:[o,function(g){this.year=c(g)}],YYYY:[/\d{4}/,h("year")],Z:u,ZZ:u};function y(g){var A,v;A=g,v=l&&l.formats;for(var w=(g=A.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(b,B,R){var O=R&&R.toUpperCase();return B||v[R]||t[R]||v[O].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(N,D,E){return D||E.slice(1)}))}))).match(n),C=w.length,S=0;S<C;S+=1){var I=w[S],x=m[I],M=x&&x[0],L=x&&x[1];w[S]=L?{regex:M,parser:L}:I.replace(/^\[|\]$/g,"")}return function(b){for(var B={},R=0,O=0;R<C;R+=1){var N=w[R];if(typeof N=="string")O+=N.length;else{var D=N.regex,E=N.parser,T=b.slice(O),P=D.exec(T)[0];E.call(B,P),b=b.replace(P,"")}}return(function(F){var V=F.afternoon;if(V!==void 0){var G=F.hours;V?G<12&&(F.hours+=12):G===12&&(F.hours=0),delete F.afternoon}})(B),B}}return function(g,A,v){v.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(c=g.parseTwoDigitYear);var w=A.prototype,C=w.parse;w.parse=function(S){var I=S.date,x=S.utc,M=S.args;this.$u=x;var L=M[1];if(typeof L=="string"){var b=M[2]===!0,B=M[3]===!0,R=b||B,O=M[2];B&&(O=M[2]),l=this.$locale(),!b&&O&&(l=v.Ls[O]),this.$d=(function(T,P,F,V){try{if(["x","X"].indexOf(P)>-1)return new Date((P==="X"?1e3:1)*T);var G=y(P)(T),k=G.year,_=G.month,U=G.day,H=G.hours,q=G.minutes,X=G.seconds,de=G.milliseconds,fe=G.zone,me=G.week,be=new Date,_e=U||(k||_?1:be.getDate()),Je=k||be.getFullYear(),lt=0;k&&!_||(lt=_>0?_-1:be.getMonth());var ct,_t=H||0,vt=q||0,j=X||0,Y=de||0;return fe?new Date(Date.UTC(Je,lt,_e,_t,vt,j,Y+60*fe.offset*1e3)):F?new Date(Date.UTC(Je,lt,_e,_t,vt,j,Y)):(ct=new Date(Je,lt,_e,_t,vt,j,Y),me&&(ct=V(ct).week(me).toDate()),ct)}catch{return new Date("")}})(I,L,x,v),this.init(),O&&O!==!0&&(this.$L=this.locale(O).$L),R&&I!=this.format(L)&&(this.$d=new Date("")),l={}}else if(L instanceof Array)for(var N=L.length,D=1;D<=N;D+=1){M[1]=L[D-1];var E=v.apply(this,M);if(E.isValid()){this.$d=E.$d,this.$L=E.$L,this.init();break}D===N&&(this.$d=new Date(""))}else C.call(this,S)}}}))})($r)),$r.exports}var X_=K_();const J_=nn(X_),Z_={class:"setting-panel"},ek={class:"tabs-header"},tk={class:"tab-content"},ik={key:0,class:"section"},nk={class:"setting-item"},sk={class:"setting-item"},ok={class:"setting-item"},rk={key:1,class:"section"},ak={class:"tabs-header",style:{"margin-bottom":"8px"}},lk={key:0},ck={class:"setting-item column"},dk={class:"setting-item"},hk={key:1},uk={class:"setting-item column"},fk={class:"setting-item column",style:{"margin-top":"12px","border-top":"1px solid rgba(255,255,255,0.1)","padding-top":"8px"}},pk={class:"search-box",style:{position:"relative"}},mk={key:0,class:"search-dropdown"},gk=["onClick"],yk={class:"result-name"},Ak={class:"result-coord"},vk={key:2,class:"section"},bk={class:"setting-item"},wk={key:0,class:"setting-item column"},Ck={class:"sub-label"},Ek={class:"setting-item"},xk={class:"setting-item"},Ik={class:"setting-item column"},Sk={class:"setting-item column"},Mk={class:"sub-label"},Tk={class:"setting-item column"},Bk={class:"sub-label"},_k={class:"setting-item column"},kk={class:"sub-label"},Pk={class:"setting-item column"},Dk={style:{display:"flex",gap:"8px","margin-bottom":"8px"}},Nk=["onClick","title"],Lk={style:{display:"flex",gap:"8px","align-items":"center"}},Rk={key:3,class:"section"},Fk={class:"setting-item"},Ok={class:"setting-item column"},fo=Be(d.defineComponent({__name:"LeitingSetting",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},fullHeight:{type:Boolean,default:!1},tiandituToken:{type:String,default:""},initialConfig:{type:Object,default:()=>({})}},emits:["update:visible","update:open","close"],setup(i,{emit:e}){zt.locale("zh-cn"),zt.extend(U_),zt.extend(H_),zt.extend(W_),zt.extend(J_);const t=oe.Switch,n=oe.Radio.Group,s=oe.Radio,o=oe.Input,r=oe.Slider,a=oe.Select,l=oe.Select.Option,c=oe.DatePicker,h=i,u=e,p=d.inject("leitingMethods"),f=d.computed({get:()=>h.open!==void 0?h.open:h.visible,set:E=>{u("update:visible",E),u("update:open",E)}}),m=d.ref("GIS"),y=d.reactive({globe:!1,terrain:!1,depthTest:!1}),g=d.reactive({provider:"tianditu",tianditu:{token:"c25f14fb6bd4397cf8fe45144ff768d6",layerType:"img_w",showLabel:!1},arcgis:{url:"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"},baseMap:"tianditu"}),A=d.reactive({shadows:!1,shadowDarkness:.7,environmentMap:!1,ambientOcclusion:!1,time:zt("2025-06-22 10:00"),brightness:1,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)",skyBox:""}),v=d.reactive({collision:!1,habit:0}),w=E=>{E&&(E.globe!==void 0&&(y.globe=E.globe),E.terrain!==void 0&&(y.terrain=E.terrain),E.depthTest!==void 0&&(y.depthTest=E.depthTest),E.mapProvider!==void 0&&(g.provider=E.mapProvider),E.tiandituLayerType!==void 0&&(g.tianditu.layerType=E.tiandituLayerType),E.tiandituShowLabel!==void 0&&(g.tianditu.showLabel=E.tiandituShowLabel),E.arcgisUrl!==void 0&&(g.arcgis.url=E.arcgisUrl),E.shadows!==void 0&&(A.shadows=E.shadows),E.shadowDarkness!==void 0&&(A.shadowDarkness=E.shadowDarkness),E.environmentMap!==void 0&&(A.environmentMap=E.environmentMap),E.ambientOcclusion!==void 0&&(A.ambientOcclusion=E.ambientOcclusion),E.time!==void 0&&(typeof E.time=="number"?A.time=zt().startOf("day").add(E.time,"hour"):A.time=zt(E.time)),E.brightness!==void 0&&(A.brightness=E.brightness),E.contrast!==void 0&&(A.contrast=E.contrast),E.saturation!==void 0&&(A.saturation=E.saturation),E.backgroundColor!==void 0&&(A.backgroundColor=E.backgroundColor),E.skyBox!==void 0&&(A.skyBox=E.skyBox),E.collision!==void 0&&(v.collision=E.collision),E.mouseHabit!==void 0&&(v.habit=E.mouseHabit))};d.watch(()=>h.initialConfig,E=>{w(E)},{deep:!0,immediate:!0});const C=["linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)","linear-gradient(0deg, #0f2027 0%, #203a43 50%, #2c5364 100%)","linear-gradient(0deg, #cfd9df 0%, #e2ebf0 100%)"],S=[{label:"全球影像地图服务(墨卡托)",value:"img_w"},{label:"全球影像地图服务(经纬度)",value:"img_c"},{label:"全球矢量地图服务(墨卡托)",value:"vec_w"},{label:"全球矢量地图服务(经纬度)",value:"vec_c"},{label:"全球地形晕渲服务(墨卡托)",value:"ter_w"},{label:"全球地形晕渲服务(经纬度)",value:"ter_c"}],I=()=>{const E=g.provider,T={};E==="tianditu"?(T.token=g.tianditu.token,T.layerType=g.tianditu.layerType,T.showAnnotation=g.tianditu.showLabel):E==="arcgis"&&(T.url=g.arcgis.url),p.value?.changeBaseMap?.(E,T)};d.watch(()=>g.provider,I),d.watch(()=>g.tianditu.layerType,I),d.watch(()=>g.tianditu.showLabel,I),d.watch(()=>g.tianditu.token,qo(I,1e3)),d.watch(()=>g.arcgis.url,qo(I,1e3)),d.onMounted(()=>{h.tiandituToken&&(g.tianditu.token=h.tiandituToken)}),d.watch(()=>y.globe,E=>p.value?.setGlobeEnvironmentVisible?.(E)),d.watch(()=>y.terrain,E=>p.value?.setTerrainEnable?.(E)),d.watch(()=>y.depthTest,E=>p.value?.setDepthTestEnable?.(E)),d.watch(()=>p?.value,E=>{if(E){if(E.getConfigure=()=>({globe:y.globe,terrain:y.terrain,depthTest:y.depthTest,mapProvider:g.provider,tiandituLayerType:g.tianditu.layerType,tiandituShowLabel:g.tianditu.showLabel,arcgisUrl:g.arcgis.url,shadows:A.shadows,shadowDarkness:A.shadowDarkness,environmentMap:A.environmentMap,ambientOcclusion:A.ambientOcclusion,time:zt.isDayjs(A.time)?A.time.format("YYYY-MM-DD HH:mm"):A.time,brightness:A.brightness,contrast:A.contrast,saturation:A.saturation,backgroundColor:A.backgroundColor,skyBox:A.skyBox,collision:v.collision,mouseHabit:v.habit}),E.setConfigure=T=>{w(T)},E.setBackgroundColor&&A.backgroundColor&&E.setBackgroundColor(A.backgroundColor),E.setSkyBox&&E.setSkyBox(A.skyBox||null),E.setGlobeEnvironmentVisible&&E.setGlobeEnvironmentVisible(y.globe),E.setShadowsEnable&&E.setShadowsEnable(A.shadows),E.setShadowDarkness&&E.setShadowDarkness(A.shadowDarkness),E.setEnvironmentMapEnable&&E.setEnvironmentMapEnable(A.environmentMap),E.setAmbientOcclusion&&E.setAmbientOcclusion(A.ambientOcclusion),E.setTime){const T=zt.isDayjs(A.time)?A.time.toDate():new Date;E.setTime(T)}E.setModelBrightness&&E.setModelBrightness(A.brightness),E.setCollisionDetection&&E.setCollisionDetection(v.collision),E.setMouseHabit&&E.setMouseHabit(v.habit),E.changeBaseMap&&g.baseMap&&E.changeBaseMap(g.baseMap,{token:g.tianditu.token,layerType:g.tianditu.layerType,showAnnotation:g.tianditu.showLabel,url:g.arcgis.url})}},{immediate:!0});const x=d.computed({get:()=>{const E=A.backgroundColor;return/^#[0-9A-Fa-f]{6}$/.test(E)?E:"#ffffff"},set:E=>{A.backgroundColor=E}}),M=d.ref(""),L=d.ref(!1),b=d.ref([]);d.watch(()=>y.globe,E=>p.value?.setGlobeEnvironmentVisible?.(E)),d.watch(()=>y.terrain,E=>p.value?.setTerrainEnable?.(E)),d.watch(()=>g.baseMap,E=>{p.value?.changeBaseMap?.(E,{token:h.tiandituToken})}),d.watch(()=>A.shadows,E=>p.value?.setShadowsEnable?.(E)),d.watch(()=>A.shadowDarkness,E=>p.value?.setShadowDarkness?.(E)),d.watch(()=>A.environmentMap,E=>p.value?.setEnvironmentMapEnable?.(E)),d.watch(()=>A.ambientOcclusion,E=>p.value?.setAmbientOcclusion?.(E)),d.watch(()=>A.time,E=>{const T=zt.isDayjs(E)?E.toDate():new Date;p.value?.setTime?.(T)}),d.watch(()=>[A.brightness,A.contrast,A.saturation],([E,T,P])=>{const F=p.value;F?.setModelColorAdjustment?F.setModelColorAdjustment({brightness:E,contrast:T,saturation:P}):F?.setModelBrightness?.(E)}),d.watch(()=>A.backgroundColor,E=>{if(p.value?.setBackgroundColor)p.value.setBackgroundColor(E);else{const T=document.querySelector(".cesium-viewer");T&&(T.style.background=E)}}),d.watch(()=>A.skyBox,E=>{p.value?.setSkyBox?.(E||null)}),d.watch(()=>v.collision,E=>p.value?.setCollisionDetection?.(E)),d.watch(()=>v.habit,E=>p.value?.setMouseHabit?.(E));const B=E=>{const T=[];if(E?.pois&&Array.isArray(E.pois)){for(const P of E.pois)if(P.lonlat){const F=P.lonlat.split(/[, ]/).map(Number);F.length>=2&&!isNaN(F[0])&&!isNaN(F[1])&&T.push({name:P.name||"未命名",lon:F[0],lat:F[1],raw:P})}}if(E?.area&&E.area.lonlat){const P=E.area,F=P.lonlat.split(/[, ]/).map(Number);F.length>=2&&!isNaN(F[0])&&!isNaN(F[1])&&T.push({name:P.name||"未命名",lon:F[0],lat:F[1],raw:P})}if(E?.prompt&&Array.isArray(E.prompt)){for(const P of E.prompt)if(P.admins&&Array.isArray(P.admins)){for(const F of P.admins)if(F.lonlat){const V=F.lonlat.split(/[, ]/).map(Number);V.length>=2&&!isNaN(V[0])&&!isNaN(V[1])&&T.push({name:F.adminName||F.name||"未命名",lon:V[0],lat:V[1],raw:F})}}}return T},O=qo(async()=>{const E=(M.value||"").trim();if(!E){b.value=[];return}const T=h.tiandituToken||"c25f14fb6bd4397cf8fe45144ff768d6";L.value=!0,b.value=[];try{const F=`https://api.tianditu.gov.cn/v2/search?postStr=${encodeURIComponent(JSON.stringify({keyWord:E,level:12,mapBound:"-180,-90,180,90",queryType:1,start:0,count:10}))}&type=query&tk=${encodeURIComponent(T)}`,V=await fetch(F);if(!V.ok)throw new Error(`HTTP ${V.status}`);const G=await V.json();b.value=B(G)}catch(P){console.error("tianditu search error",P)}finally{L.value=!1}},800);d.watch(M,()=>{O()});const N=E=>{p.value?.flyToLonLatHeight?.(E.lon,E.lat,5e3),M.value=E.name,b.value=[]},D=()=>{f.value=!1,u("close")};return d.onMounted(()=>{}),(E,T)=>(d.openBlock(),d.createBlock(gt,{visible:f.value,title:"设置","full-height":i.fullHeight,onClose:D,"onUpdate:visible":T[25]||(T[25]=P=>f.value=P)},{default:d.withCtx(()=>[d.createElementVNode("div",Z_,[d.createElementVNode("div",ek,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="GIS"}]),onClick:T[0]||(T[0]=P=>m.value="GIS")},"GIS",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="MAP"}]),onClick:T[1]||(T[1]=P=>m.value="MAP")},"地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="RENDER"}]),onClick:T[2]||(T[2]=P=>m.value="RENDER")},"渲染",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:m.value==="MOUSE"}]),onClick:T[3]||(T[3]=P=>m.value="MOUSE")},"鼠标",2)]),d.createElementVNode("div",tk,[m.value==="GIS"?(d.openBlock(),d.createElementBlock("div",ik,[d.createElementVNode("div",nk,[T[26]||(T[26]=d.createElementVNode("span",null,"地球 (含大气/日月/星空)",-1)),d.createVNode(d.unref(t),{checked:y.globe,"onUpdate:checked":T[4]||(T[4]=P=>y.globe=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",sk,[T[27]||(T[27]=d.createElementVNode("span",null,"地形 (高程)",-1)),d.createVNode(d.unref(t),{checked:y.terrain,"onUpdate:checked":T[5]||(T[5]=P=>y.terrain=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",ok,[T[28]||(T[28]=d.createElementVNode("span",null,"地形遮挡",-1)),d.createVNode(d.unref(t),{checked:y.depthTest,"onUpdate:checked":T[6]||(T[6]=P=>y.depthTest=P),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),m.value==="MAP"?(d.openBlock(),d.createElementBlock("div",rk,[d.createElementVNode("div",ak,[d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:g.provider==="tianditu"}]),onClick:T[7]||(T[7]=P=>g.provider="tianditu")},"天地图",2),d.createElementVNode("div",{class:d.normalizeClass(["tab-item",{active:g.provider==="arcgis"}]),onClick:T[8]||(T[8]=P=>g.provider="arcgis")},"ArcGIS",2)]),g.provider==="tianditu"?(d.openBlock(),d.createElementBlock("div",lk,[d.createElementVNode("div",ck,[T[29]||(T[29]=d.createElementVNode("div",{class:"sub-label"},"地图风格",-1)),d.createVNode(d.unref(a),{value:g.tianditu.layerType,"onUpdate:value":T[9]||(T[9]=P=>g.tianditu.layerType=P),size:"small",style:{width:"100%"}},{default:d.withCtx(()=>[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(S,P=>d.createVNode(d.unref(l),{key:P.value,value:P.value},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(P.label),1)]),_:2},1032,["value"])),64))]),_:1},8,["value"])]),d.createElementVNode("div",dk,[T[30]||(T[30]=d.createElementVNode("span",null,"路网注记",-1)),d.createVNode(d.unref(t),{checked:g.tianditu.showLabel,"onUpdate:checked":T[10]||(T[10]=P=>g.tianditu.showLabel=P),size:"small"},null,8,["checked"])])])):d.createCommentVNode("",!0),g.provider==="arcgis"?(d.openBlock(),d.createElementBlock("div",hk,[d.createElementVNode("div",uk,[T[31]||(T[31]=d.createElementVNode("div",{class:"sub-label"},"服务地址",-1)),d.createVNode(d.unref(o),{value:g.arcgis.url,"onUpdate:value":T[11]||(T[11]=P=>g.arcgis.url=P),size:"small",placeholder:"输入ArcGIS MapServer地址"},null,8,["value"])])])):d.createCommentVNode("",!0),d.createElementVNode("div",fk,[T[32]||(T[32]=d.createElementVNode("div",{class:"sub-label"},"位置搜索 (天地图)",-1)),d.createElementVNode("div",pk,[d.createVNode(d.unref(o),{value:M.value,"onUpdate:value":T[12]||(T[12]=P=>M.value=P),placeholder:"输入地名搜索",size:"small","allow-clear":"",loading:L.value},null,8,["value","loading"]),b.value.length>0?(d.openBlock(),d.createElementBlock("div",mk,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(b.value,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:F,class:"search-result-item",onClick:V=>N(P)},[d.createElementVNode("span",yk,d.toDisplayString(P.name),1),d.createElementVNode("span",Ak,d.toDisplayString(P.lon.toFixed(4))+", "+d.toDisplayString(P.lat.toFixed(4)),1)],8,gk))),128))])):d.createCommentVNode("",!0)])])])):d.createCommentVNode("",!0),m.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",vk,[d.createElementVNode("div",bk,[T[33]||(T[33]=d.createElementVNode("span",null,"阴影",-1)),d.createVNode(d.unref(t),{checked:A.shadows,"onUpdate:checked":T[13]||(T[13]=P=>A.shadows=P),size:"small"},null,8,["checked"])]),A.shadows?(d.openBlock(),d.createElementBlock("div",wk,[d.createElementVNode("div",Ck,"阴影暗度 ("+d.toDisplayString(A.shadowDarkness.toFixed(2))+")",1),d.createVNode(d.unref(r),{value:A.shadowDarkness,"onUpdate:value":T[14]||(T[14]=P=>A.shadowDarkness=P),min:0,max:1,step:.05,size:"small"},null,8,["value"])])):d.createCommentVNode("",!0),d.createElementVNode("div",Ek,[T[34]||(T[34]=d.createElementVNode("span",null,"环境贴图 (HDR)",-1)),d.createVNode(d.unref(t),{checked:A.environmentMap,"onUpdate:checked":T[15]||(T[15]=P=>A.environmentMap=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",xk,[T[35]||(T[35]=d.createElementVNode("span",null,"环境光遮蔽 (AO)",-1)),d.createVNode(d.unref(t),{checked:A.ambientOcclusion,"onUpdate:checked":T[16]||(T[16]=P=>A.ambientOcclusion=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Ik,[T[36]||(T[36]=d.createElementVNode("div",{class:"sub-label"},"日期时间",-1)),d.createVNode(d.unref(c),{value:A.time,"onUpdate:value":T[17]||(T[17]=P=>A.time=P),"show-time":"",locale:d.unref(vm),format:"YYYY-MM-DD HH:mm",size:"small",style:{width:"100%"}},null,8,["value","locale"])]),d.createElementVNode("div",Sk,[d.createElementVNode("div",Mk,"模型亮度 ("+d.toDisplayString(A.brightness.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.brightness,"onUpdate:value":T[18]||(T[18]=P=>A.brightness=P),min:0,max:5,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Tk,[d.createElementVNode("div",Bk,"模型对比度 ("+d.toDisplayString(A.contrast.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.contrast,"onUpdate:value":T[19]||(T[19]=P=>A.contrast=P),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",_k,[d.createElementVNode("div",kk,"模型饱和度 ("+d.toDisplayString(A.saturation.toFixed(1))+")",1),d.createVNode(d.unref(r),{value:A.saturation,"onUpdate:value":T[20]||(T[20]=P=>A.saturation=P),min:0,max:3,step:.1,size:"small"},null,8,["value"])]),d.createElementVNode("div",Pk,[T[37]||(T[37]=d.createElementVNode("div",{class:"sub-label"},"背景颜色",-1)),d.createElementVNode("div",Dk,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(C,(P,F)=>d.createElementVNode("div",{key:F,style:d.normalizeStyle({background:P,width:"32px",height:"24px",borderRadius:"2px",cursor:"pointer",border:"1px solid #d9d9d9",flexShrink:0}),onClick:V=>A.backgroundColor=P,title:"预设 "+(F+1)},null,12,Nk)),64))]),d.createElementVNode("div",Lk,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":T[21]||(T[21]=P=>x.value=P),style:{width:"40px",height:"24px",padding:"0",border:"1px solid #d9d9d9"}},null,512),[[d.vModelText,x.value]]),d.createVNode(d.unref(o),{value:A.backgroundColor,"onUpdate:value":T[22]||(T[22]=P=>A.backgroundColor=P),size:"small",style:{flex:"1"},placeholder:"CSS 颜色值"},null,8,["value"])])])])):d.createCommentVNode("",!0),m.value==="MOUSE"?(d.openBlock(),d.createElementBlock("div",Rk,[d.createElementVNode("div",Fk,[T[38]||(T[38]=d.createElementVNode("span",null,"碰撞检测",-1)),d.createVNode(d.unref(t),{checked:v.collision,"onUpdate:checked":T[23]||(T[23]=P=>v.collision=P),size:"small"},null,8,["checked"])]),d.createElementVNode("div",Ok,[T[41]||(T[41]=d.createElementVNode("div",{class:"sub-label"},"操作习惯",-1)),d.createVNode(d.unref(n),{value:v.habit,"onUpdate:value":T[24]||(T[24]=P=>v.habit=P),size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(s),{value:0},{default:d.withCtx(()=>[...T[39]||(T[39]=[d.createTextVNode("默认 (中键旋转)",-1)])]),_:1}),d.createVNode(d.unref(s),{value:1},{default:d.withCtx(()=>[...T[40]||(T[40]=[d.createTextVNode("习惯1 (左键旋转)",-1)])]),_:1})]),_:1},8,["value"])])])):d.createCommentVNode("",!0)])])]),_:1},8,["visible","full-height"]))}}),[["__scopeId","data-v-e7a4d783"]]),Gk={class:"cad-layer-panel"},Uk={class:"layer-list-container"},Vk={class:"list-header"},Qk={class:"col-check"},zk=["checked"],Hk={class:"list-body"},Yk={class:"col-check"},$k=["checked","onChange"],jk={class:"col-index"},Wk=["title"],qk={class:"col-color"},Kk=["value"],Xk={key:0,class:"empty-text"},Jk=Be(d.defineComponent({__name:"LeitingCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),a=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(v=>({modelId:v.modelId,modelName:v.modelName}))||[])},l=d.computed(()=>r.value.map(v=>({value:v.modelId,label:v.modelName}))),c=d.ref([]),h=d.ref([]),u=d.computed(()=>c.value.length>0&&h.value.length===c.value.length),p=({modelId:v})=>{if(c.value=[],h.value=[],s.value&&s.value.getDxfLayers){const w=s.value.getDxfLayers({modelId:v});w&&Object.keys(w).forEach((C,S)=>{w[C].length&&(c.value.push({index:S+1,layerName:C,layerColor:w[C][0].color||"#ffffff",key:C}),h.value.push(C))})}},f=v=>{o.value=v,p({modelId:v})},m=v=>{v.target.checked?h.value=c.value.map(C=>C.key):h.value=[],g()},y=(v,w)=>{w.target.checked?h.value.includes(v)||h.value.push(v):h.value=h.value.filter(S=>S!==v),g()},g=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:h.value}),s.value.getDxfLayers)){const v=s.value.getDxfLayers({modelId:o.value});if(v){const w=Object.keys(v).filter(C=>!h.value.includes(C));s.value.showDxfLayer({modelId:o.value,show:!1,layers:w})}}},A=()=>{n("update:visible",!1),n("handleCloseCardByCadCard")};return d.watch(()=>t.visible,v=>{v&&(a(),t.currentModelId?(o.value=t.currentModelId,p({modelId:t.currentModelId})):l.value.length>0&&(o.value=l.value[0]?.value,p({modelId:o.value})))}),d.watch(()=>t.currentModelId,v=>{v&&t.visible&&(o.value=v,p({modelId:v}))}),(v,w)=>(d.openBlock(),d.createBlock(gt,{visible:i.visible,title:"CAD图层","onUpdate:visible":w[3]||(w[3]=C=>v.$emit("update:visible",C)),onClose:A,width:360,align:"right","initial-position":{x:0,y:60}},{"header-extra":d.withCtx(()=>[d.createElementVNode("div",{class:"header-select-container",onMousedown:w[2]||(w[2]=d.withModifiers(()=>{},["stop"]))},[w[4]||(w[4]=d.createElementVNode("span",{class:"header-label"},"图纸:",-1)),d.createVNode(d.unref(oe.Select),{value:o.value,"onUpdate:value":w[0]||(w[0]=C=>o.value=C),options:l.value,onChange:w[1]||(w[1]=C=>f(C)),placeholder:"选择模型",style:{width:"140px"},bordered:!1,class:"custom-header-select",popupClassName:"leiting-select-dropdown",size:"small"},null,8,["value","options"])],32)]),default:d.withCtx(()=>[d.createElementVNode("div",Gk,[d.createElementVNode("div",Uk,[d.createElementVNode("div",Vk,[d.createElementVNode("div",Qk,[d.createElementVNode("input",{type:"checkbox",checked:u.value,onChange:m},null,40,zk)]),w[5]||(w[5]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),w[6]||(w[6]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),w[7]||(w[7]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",Hk,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(c.value,C=>(d.openBlock(),d.createElementBlock("div",{key:C.key,class:"list-item"},[d.createElementVNode("div",Yk,[d.createElementVNode("input",{type:"checkbox",checked:h.value.includes(C.key),onChange:S=>y(C.key,S)},null,40,$k)]),d.createElementVNode("div",jk,d.toDisplayString(C.index),1),d.createElementVNode("div",{class:"col-name",title:C.layerName},d.toDisplayString(C.layerName),9,Wk),d.createElementVNode("div",qk,[d.createElementVNode("input",{type:"color",value:C.layerColor,disabled:""},null,8,Kk)])]))),128)),c.value.length===0?(d.openBlock(),d.createElementBlock("div",Xk,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-a4db4977"]]),Zk={class:"leiting-cad-adjust-panel"},eP={class:"leitingbim-control-panel"},tP={class:"form-item"},iP={class:"radio-group"},nP={class:"form-item"},sP=["title"],oP={class:"param-row"},rP=["step"],aP={class:"param-row"},lP=["step"],cP={class:"param-row"},dP=["step"],hP={class:"param-row"},uP=["step"],fP={class:"param-row"},pP=["step"],mP={class:"param-row"},gP=["step"],yP={class:"param-row"},AP=["step"],vP={class:"button-grid"},bP={key:1,class:"pick-mode-ui"},wP=["onClick"],CP=["checked"],EP={style:{"font-size":"12px",color:"#aaa","padding-left":"10px"}},xP={class:"param-row"},IP={style:{width:"40px"}},SP=["onUpdate:modelValue"],MP={class:"param-row"},TP={style:{width:"40px"}},BP=["onUpdate:modelValue"],_P={class:"param-row"},kP={style:{width:"40px"}},PP=["onUpdate:modelValue"],DP={class:"list-panel"},NP={class:"list-header"},LP={class:"col-check"},RP=["checked"],FP={class:"list-body"},OP={class:"col-check"},GP=["onUpdate:modelValue"],UP={class:"col-index"},VP=["title"],QP={class:"col-main"},zP=["checked","onChange"],HP={key:0,style:{padding:"10px","text-align":"center",color:"#999"}},YP=Be(d.defineComponent({__name:"LeitingCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","handleSavingByCadCard","clearBimPointList","save"],setup(i,{expose:e,emit:t}){const n=i,s=t,o=d.inject("leitingMethods"),r=d.ref([]),a=d.ref(""),l=d.computed(()=>r.value.length>0&&r.value.every(E=>E.selected)),c=d.ref("param"),h=d.ref("bimPoint1"),u=d.ref(null),p=d.ref("bimPoint1"),f=d.reactive({bimPoint1:{longitude:void 0,latitude:void 0,type:"CAD标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程",height:void 0},bimPoint2:{longitude:void 0,latitude:void 0,type:"地图标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程",height:void 0}}),m=d.ref(1e-6),y=d.reactive({modelId:"",longitude:0,latitude:0,distance:1e-6,rotation:1,totalRotation:0,heightDistance:1,height:0,lonlat:1e-6,modelOptions:[],selectPoint:{longitude:0,latitude:0,height:0},selectedMode:!1,X:0,Y:0,Z:0}),g=d.computed(()=>{const E=r.value.find(T=>T.modelId===a.value);return E?E.modelName:""}),A=()=>{s("update:visible",!1)},v=()=>(!u.value&&o?.value?.getViewer&&o?.value?.getCesium&&(u.value=new yc(o.value.getViewer(),o.value.getCesium())),u.value),w=()=>{v()?.clearMarkers(),f.bimPoint1.longitude=void 0,f.bimPoint1.latitude=void 0,f.bimPoint1.height=void 0,f.bimPoint2.longitude=void 0,f.bimPoint2.latitude=void 0,f.bimPoint2.height=void 0},C=E=>{const T=h.value,P=f[T];if(P){P.longitude=E.longitude,P.latitude=E.latitude,P.height=E.height;const F=T==="bimPoint1"?"BIM":"MAP";v()?.addMarker(F,E),pe.success(`${P.type}已添加`)}},S=()=>{v()?.registerPickHandler(E=>{C(E)})},I=()=>{v()?.destroyPickHandler()},x=E=>{c.value=E,E!=="pick"&&s("clearBimPointList")};d.watch(()=>c.value,E=>{E==="pick"?S():I()}),d.onUnmounted(()=>{I()});const M=()=>{if(!o?.value?.getDxfModels)return;const E=o.value.getDxfModels();if(Array.isArray(E)?r.value=E.map(T=>({modelId:T.modelId,modelName:T.modelName,formData:T.formData||{},selected:!1,tileset:T})):r.value=[],r.value.length>0){const T=o.value.getCadModelId?o.value.getCadModelId():"";T&&r.value.find(P=>P.modelId===T)?L(T):L(r.value[0].modelId),r.value.forEach(P=>P.selected=!0)}},L=E=>{a.value=E;const T=r.value.find(P=>P.modelId===E);T&&T.formData&&Object.keys(y).forEach(P=>{T.formData[P]!==void 0&&(y[P]=T.formData[P])})},b=(E,T)=>{if(!o?.value?.adjustingModelByCad)return;const P=r.value.find(F=>F.modelId===E);P&&P.tileset&&(P.formData={...P.formData,...T},P.tileset.formData=P.formData,o.value.adjustingModelByCad({...P.formData,tileset:P.tileset}))},B=E=>{if(!a.value)return;const T=y[E];b(a.value,{[E]:T})},R=E=>{const T=r.value.filter(G=>G.selected);if(T.length===0){pe.warning("请先选择要调整的模型");return}const{distance:P,heightDistance:F,rotation:V}=y;T.forEach(G=>{const k={...G.formData};switch(E){case"north":k.latitude+=P;break;case"south":k.latitude-=P;break;case"east":k.longitude+=P;break;case"west":k.longitude-=P;break;case"up":k.height+=F;break;case"down":k.height-=F;break;case"rotateLeft":k.totalRotation=(k.totalRotation||0)-V;break;case"rotateRight":k.totalRotation=(k.totalRotation||0)+V;break}G.modelId===a.value&&Object.assign(y,k),b(G.modelId,k)})},O=E=>{const T=E.target.checked;r.value.forEach(P=>P.selected=T)},N=()=>{s("handleSavingByCadCard",r.value),s("save",r.value)},D=()=>{const E=f.bimPoint1,T=f.bimPoint2;if(E.longitude===void 0||T.longitude===void 0){pe.warning("请先完成点选操作");return}const P=r.value.filter(_=>_.selected);if(P.length===0){pe.warning("请先选择要调整的模型");return}let F=0,V=0,G=0;const k=v();if(k){const{dLon:_,dLat:U,dHeight:H}=k.calculateOffset(E,T);F=_,V=U,G=H}else F=T.longitude-E.longitude,V=T.latitude-E.latitude,G=T.height-E.height;P.forEach(_=>{const U={..._.formData};U.longitude+=F,U.latitude+=V,U.height+=G,_.modelId===a.value&&Object.assign(y,U),b(_.modelId,U)}),pe.success("位置已调整")};return d.watch(()=>n.visible,E=>{E?M():(I(),w())}),d.onMounted(()=>{n.visible&&M()}),e({setBIMPointsList:({longitude:E,latitude:T,height:P})=>{f[p.value].longitude=E,f[p.value].latitude=T,f[p.value].height=P},addGltfOr3dTilesModelList:E=>{console.warn("addGltfOr3dTilesModelList is deprecated, use internal loading")}}),(E,T)=>(d.openBlock(),d.createBlock(gt,{visible:n.visible,title:"Cad校准",width:282,height:600,"onUpdate:visible":T[21]||(T[21]=P=>s("update:visible",P)),onClose:A},{default:d.withCtx(()=>[d.createElementVNode("div",Zk,[d.createElementVNode("div",eP,[d.createElementVNode("div",tP,[T[22]||(T[22]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",iP,[d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="param"}),onClick:T[0]||(T[0]=P=>x("param"))},"参数模式",2),d.createElementVNode("span",{class:d.normalizeClass({active:c.value==="pick"}),onClick:T[1]||(T[1]=P=>x("pick"))},"地图点选",2)])]),d.createElementVNode("div",nP,[T[23]||(T[23]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:g.value},d.toDisplayString(g.value||"未选择"),9,sP)]),T[35]||(T[35]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[T[31]||(T[31]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",oP,[T[24]||(T[24]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[2]||(T[2]=P=>y.longitude=P),onChange:T[3]||(T[3]=P=>B("longitude")),step:m.value},null,40,rP),[[d.vModelText,y.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",aP,[T[25]||(T[25]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[4]||(T[4]=P=>y.latitude=P),onChange:T[5]||(T[5]=P=>B("latitude")),step:m.value},null,40,lP),[[d.vModelText,y.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",cP,[T[26]||(T[26]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[6]||(T[6]=P=>y.height=P),onChange:T[7]||(T[7]=P=>B("height")),step:m.value},null,40,dP),[[d.vModelText,y.height,void 0,{number:!0}]])]),d.createElementVNode("div",hP,[T[27]||(T[27]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[8]||(T[8]=P=>y.totalRotation=P),onChange:T[9]||(T[9]=P=>B("totalRotation")),step:m.value},null,40,uP),[[d.vModelText,y.totalRotation,void 0,{number:!0}]])]),T[32]||(T[32]=d.createElementVNode("div",{class:"separator"},null,-1)),T[33]||(T[33]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",fP,[T[28]||(T[28]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[10]||(T[10]=P=>y.distance=P),step:m.value},null,8,pP),[[d.vModelText,y.distance,void 0,{number:!0}]])]),d.createElementVNode("div",mP,[T[29]||(T[29]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[11]||(T[11]=P=>y.heightDistance=P),step:m.value},null,8,gP),[[d.vModelText,y.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",yP,[T[30]||(T[30]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":T[12]||(T[12]=P=>y.rotation=P),step:m.value},null,8,AP),[[d.vModelText,y.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",vP,[d.createElementVNode("button",{onClick:T[13]||(T[13]=P=>R("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:T[14]||(T[14]=P=>R("north"))},"北移"),d.createElementVNode("button",{onClick:T[15]||(T[15]=P=>R("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:T[16]||(T[16]=P=>R("west"))},"西移"),d.createElementVNode("button",{onClick:T[17]||(T[17]=P=>R("south"))},"南移"),d.createElementVNode("button",{onClick:T[18]||(T[18]=P=>R("east"))},"东移"),d.createElementVNode("button",{onClick:T[19]||(T[19]=P=>R("up"))},"上移"),d.createElementVNode("button",{onClick:T[20]||(T[20]=P=>R("down"))},"下移"),d.createElementVNode("button",{onClick:N,class:"primary-btn",style:{"grid-column":"span 3","margin-top":"5px"}},"保存当前位置")])],64)):(d.openBlock(),d.createElementBlock("div",bP,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(f,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:F,class:"form-item",style:{display:"block","margin-bottom":"15px"}},[d.createElementVNode("div",{style:{"font-weight":"bold","margin-bottom":"5px",cursor:"pointer",display:"flex","align-items":"center"},onClick:V=>h.value=F},[d.createElementVNode("input",{type:"radio",checked:h.value===F,style:{"margin-right":"5px"}},null,8,CP),d.createTextVNode(" "+d.toDisplayString(P.type)+": ",1)],8,wP),d.createElementVNode("div",EP,[d.createElementVNode("div",xP,[d.createElementVNode("label",IP,d.toDisplayString(P.longitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.longitude=V,readonly:"",style:{width:"100px"}},null,8,SP),[[d.vModelText,P.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",MP,[d.createElementVNode("label",TP,d.toDisplayString(P.latitudeText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.latitude=V,readonly:"",style:{width:"100px"}},null,8,BP),[[d.vModelText,P.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",_P,[d.createElementVNode("label",kP,d.toDisplayString(P.heightText),1),d.withDirectives(d.createElementVNode("input",{type:"number","onUpdate:modelValue":V=>P.height=V,readonly:"",style:{width:"100px"}},null,8,PP),[[d.vModelText,P.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",{class:"button-grid",style:{"grid-template-columns":"1fr"}},[d.createElementVNode("button",{onClick:D,class:"primary-btn"},"应用校准"),d.createElementVNode("button",{onClick:N},"保存")]),T[34]||(T[34]=d.createElementVNode("div",{class:"instructions",style:{"margin-top":"15px",color:"#999","font-size":"12px","line-height":"1.5"}},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 勾选上方 CAD 或 地图 标记点选项。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“应用校准”进行校准。")],-1))]))]),d.createElementVNode("div",DP,[d.createElementVNode("div",NP,[d.createElementVNode("div",LP,[d.createElementVNode("input",{type:"checkbox",checked:l.value,onChange:O},null,40,RP)]),T[36]||(T[36]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),T[37]||(T[37]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),T[38]||(T[38]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",FP,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(P,F)=>(d.openBlock(),d.createElementBlock("div",{key:P.modelId,class:d.normalizeClass(["list-item",{active:P.modelId===a.value}])},[d.createElementVNode("div",OP,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":V=>P.selected=V},null,8,GP),[[d.vModelCheckbox,P.selected]])]),d.createElementVNode("div",UP,d.toDisplayString(F+1),1),d.createElementVNode("div",{class:"col-name",title:P.modelName},d.toDisplayString(P.modelName),9,VP),d.createElementVNode("div",QP,[d.createElementVNode("input",{type:"radio",name:"mainModel",checked:P.modelId===a.value,onChange:V=>L(P.modelId)},null,40,zP)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",HP,"暂无数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-4dfe6448"]]),$P={class:"coord-transform-card"},jP={class:"param-row"},WP={class:"param-row"},qP={class:"param-row"},KP={class:"param-row"},XP={class:"param-row"},JP={class:"param-row"},ZP={class:"param-row"},eD={class:"button-grid transform-actions"},tD=Be(d.defineComponent({__name:"LeitingGISCadCoordTransform",emits:["apply-transform","save-position"],setup(i,{emit:e}){const t=e,n=d.inject("leitingMethods"),s=d.ref("projectedToLonlat"),o=d.reactive({centralMeridian:117,latOrigin:0,scaleFactor:1,falseEasting:5e5,falseNorthing:0,ellipsoid:"GRS80"}),r=()=>{const l=n?.value?.getDefaultGISCadTransformConfig?.()||{centralMeridian:117,latOrigin:0,scaleFactor:1,falseEasting:5e5,falseNorthing:0,ellipsoid:"GRS80"};Object.assign(o,l)},a=()=>{t("apply-transform",{direction:s.value,config:{...o}})};return r(),(l,c)=>(d.openBlock(),d.createElementBlock("div",$P,[d.createElementVNode("div",jP,[c[10]||(c[10]=d.createElementVNode("label",null,"转换方向:",-1)),d.createVNode(d.unref(oe.Select),{value:s.value,"onUpdate:value":c[0]||(c[0]=h=>s.value=h),class:"custom-select",popupClassName:"leiting-select-dropdown",size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.SelectOption),{value:"projectedToLonlat"},{default:d.withCtx(()=>[...c[8]||(c[8]=[d.createTextVNode("投影转经纬 (根据模型局部坐标)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"lonlatToProjected"},{default:d.withCtx(()=>[...c[9]||(c[9]=[d.createTextVNode("经纬转投影 (根据模型经纬度)",-1)])]),_:1})]),_:1},8,["value"])]),d.createElementVNode("div",WP,[c[11]||(c[11]=d.createElementVNode("label",null,"中央经线:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[1]||(c[1]=h=>o.centralMeridian=h),type:"number"},null,512),[[d.vModelText,o.centralMeridian,void 0,{number:!0}]])]),d.createElementVNode("div",qP,[c[12]||(c[12]=d.createElementVNode("label",null,"纬度基线:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[2]||(c[2]=h=>o.latOrigin=h),type:"number"},null,512),[[d.vModelText,o.latOrigin,void 0,{number:!0}]])]),d.createElementVNode("div",KP,[c[13]||(c[13]=d.createElementVNode("label",null,"投影比例:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[3]||(c[3]=h=>o.scaleFactor=h),type:"number",step:"0.000001"},null,512),[[d.vModelText,o.scaleFactor,void 0,{number:!0}]])]),d.createElementVNode("div",XP,[c[14]||(c[14]=d.createElementVNode("label",null,"东偏移:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[4]||(c[4]=h=>o.falseEasting=h),type:"number"},null,512),[[d.vModelText,o.falseEasting,void 0,{number:!0}]])]),d.createElementVNode("div",JP,[c[15]||(c[15]=d.createElementVNode("label",null,"北偏移:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":c[5]||(c[5]=h=>o.falseNorthing=h),type:"number"},null,512),[[d.vModelText,o.falseNorthing,void 0,{number:!0}]])]),d.createElementVNode("div",ZP,[c[20]||(c[20]=d.createElementVNode("label",null,"椭球体:",-1)),d.createVNode(d.unref(oe.Select),{value:o.ellipsoid,"onUpdate:value":c[6]||(c[6]=h=>o.ellipsoid=h),class:"custom-select",popupClassName:"leiting-select-dropdown",size:"small"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.SelectOption),{value:"GRS80"},{default:d.withCtx(()=>[...c[16]||(c[16]=[d.createTextVNode("CGCS2000 (GRS80)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"WGS84"},{default:d.withCtx(()=>[...c[17]||(c[17]=[d.createTextVNode("WGS84",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"krass"},{default:d.withCtx(()=>[...c[18]||(c[18]=[d.createTextVNode("北京54 (Krassovsky)",-1)])]),_:1}),d.createVNode(d.unref(oe.SelectOption),{value:"IAU76"},{default:d.withCtx(()=>[...c[19]||(c[19]=[d.createTextVNode("西安80 (IAU76)",-1)])]),_:1})]),_:1},8,["value"])]),d.createElementVNode("div",eD,[d.createElementVNode("button",{class:"primary-btn",onClick:a,style:{"grid-column":"span 2"}},"应用到选中模型"),d.createElementVNode("button",{onClick:c[7]||(c[7]=h=>t("save-position"))},"保存位置")]),c[21]||(c[21]=d.createElementVNode("div",{class:"instructions"},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 在列表中勾选需要转换的模型。"),d.createElementVNode("div",null,"2. 配置对应坐标系的转换参数。"),d.createElementVNode("div",null,"3. 点击“应用到选中模型”进行批量转换预览。")],-1))]))}}),[["__scopeId","data-v-f069993f"]]),iD={class:"adjust-panel"},nD={class:"leitingbim-control-panel"},sD={class:"form-item"},oD={class:"radio-group"},rD={class:"form-item"},aD=["title"],lD={class:"param-row"},cD=["step"],dD={class:"param-row"},hD=["step"],uD={class:"param-row"},fD=["step"],pD={class:"param-row"},mD=["step"],gD={class:"param-row"},yD=["step"],AD={class:"param-row"},vD=["step"],bD={class:"param-row"},wD=["step"],CD={class:"param-row"},ED=["step"],xD={class:"param-row"},ID=["step"],SD={class:"button-grid"},MD={class:"action-buttons"},TD={key:1,class:"pick-mode-ui"},BD=["onClick"],_D=["checked","onChange"],kD={class:"pick-point-body"},PD={class:"param-row"},DD={class:"pick-label"},ND=["onUpdate:modelValue"],LD={class:"param-row"},RD={class:"pick-label"},FD=["onUpdate:modelValue"],OD={class:"param-row"},GD={class:"pick-label"},UD=["onUpdate:modelValue"],VD={class:"button-grid pick-button-grid"},QD={class:"list-panel"},zD={class:"list-header"},HD={class:"col-check"},YD=["checked"],$D={class:"list-body"},jD={class:"col-check"},WD=["onUpdate:modelValue"],qD={class:"col-index"},KD=["title"],XD={class:"col-main"},JD=["checked","onChange"],ZD={key:0,class:"empty-text"},eN=Be(d.defineComponent({__name:"LeitingGISCadPosition",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(1e-6),r=d.ref([]),a=d.ref(""),l=d.ref("param"),c=d.ref("cadPoint"),h=d.ref(null),u=d.reactive({cadPoint:{longitude:void 0,latitude:void 0,height:void 0,type:"CAD标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程"},mapPoint:{longitude:void 0,latitude:void 0,height:void 0,type:"地图标记点",longitudeText:"经度",latitudeText:"纬度",heightText:"高程"}}),p=d.reactive({modelId:"",longitude:0,latitude:0,height:0,totalRotation:0,scale:1,distance:1e-4,heightDistance:1,rotation:1,scaleStep:.1,localOriginX:0,localOriginY:0,clampToGround:!1}),f=d.computed(()=>r.value.length>0&&r.value.every(k=>k.selected)),m=d.computed(()=>r.value.find(k=>k.modelId===a.value)?.modelName||""),y=()=>(!h.value&&s?.value?.getViewer&&s?.value?.getCesium&&(h.value=new yc(s.value.getViewer(),s.value.getCesium())),h.value),g=()=>{u.cadPoint.longitude=void 0,u.cadPoint.latitude=void 0,u.cadPoint.height=void 0,u.mapPoint.longitude=void 0,u.mapPoint.latitude=void 0,u.mapPoint.height=void 0},A=()=>{h.value?.clearMarkers(),g()},v=k=>{const _=c.value,U=u[_];U&&(U.longitude=k.longitude,U.latitude=k.latitude,U.height=k.height,y()?.addMarker(_==="cadPoint"?"BIM":"MAP",k),pe.success(`${U.type}已添加`))},w=()=>{y()?.registerPickHandler(_=>{v(_)})},C=()=>{h.value?.destroyPickHandler()},S=k=>{l.value=k},I=k=>{(k==="cadPoint"||k==="mapPoint")&&(c.value=k)},x=k=>{const _=k?.editingFormData||k?.formData||{};return{modelId:k?.modelId||"",longitude:Number(_.longitude??0),latitude:Number(_.latitude??0),height:Number(_.height??0),totalRotation:Number(_.totalRotation??0),scale:Math.max(1e-6,Number(_.scale??1)),distance:Number(_.distance??1e-6),heightDistance:Number(_.heightDistance??1),rotation:Number(_.rotation??1),scaleStep:Number(_.scaleStep??.1),localOriginX:Number(_.localOriginX??0),localOriginY:Number(_.localOriginY??0),transformConfig:_.transformConfig||void 0,transformDirection:_.transformDirection||void 0,clampToGround:_.clampToGround??!1}},M=()=>{const k=r.value.find(_=>_.modelId===a.value);k&&Object.assign(p,k.formData,{modelId:k.modelId})},L=()=>{if(!s?.value?.getGISCadModels){r.value=[];return}const k=new Map(r.value.map(X=>[X.modelId,X.selected])),_=s.value.getGISCadModels()||[];if(r.value=Array.isArray(_)?_.map(X=>({modelId:X.modelId,modelName:X.modelName,selected:k.get(X.modelId)??!0,runtimeModel:X,formData:x(X)})):[],!r.value.length){a.value="";return}const U=r.value[0];if(!U)return;const H=s.value.getGISCadModelId?.()||a.value||U.modelId,q=r.value.find(X=>X.modelId===H);a.value=q?.modelId||U.modelId,M()},b=k=>{a.value=k,M()},B=(k,_)=>{if(!s?.value?.adjustGISCadModel)return null;s.value.beginEditGISCad?.({modelId:k});const U=s.value.adjustGISCadModel({modelId:k,..._}),H=r.value.find(q=>q.modelId===k);return H&&U&&(H.formData={...H.formData,...U,modelId:k},H.runtimeModel={...H.runtimeModel,editingFormData:U,isEditing:!0}),k===a.value&&Object.assign(p,H?.formData||p,{modelId:k}),U},R=k=>{if(!a.value)return;const _=r.value.find(X=>X.modelId===a.value);if(!_)return;if(k==="clampToGround"){const X=!!p[k];B(a.value,{[k]:X}),r.value.filter(de=>de.selected&&de.modelId!==a.value).forEach(de=>{B(de.modelId,{[k]:X})});return}const U=Number(p[k]),H=Number(_.formData[k]),q=U-H;B(a.value,{[k]:k==="scale"?Math.max(1e-6,U):U}),!(q===0||k==="scale")&&r.value.filter(X=>X.selected&&X.modelId!==a.value).forEach(X=>{B(X.modelId,{[k]:Number(X.formData[k])+q})})},O=k=>{const _=r.value.filter(U=>U.selected);if(!_.length){pe.warning("请先选择要调整的模型");return}_.forEach(U=>{const H={...U.formData};switch(k){case"north":H.latitude+=p.distance;break;case"south":H.latitude-=p.distance;break;case"east":H.longitude+=p.distance;break;case"west":H.longitude-=p.distance;break;case"up":H.height+=p.heightDistance;break;case"down":H.height-=p.heightDistance;break;case"rotateLeft":H.totalRotation-=p.rotation;break;case"rotateRight":H.totalRotation+=p.rotation;break;case"scaleUp":H.scale=Math.max(1e-6,H.scale+p.scaleStep);break;case"scaleDown":H.scale=Math.max(1e-6,H.scale-p.scaleStep);break;default:return}H.distance=p.distance,H.heightDistance=p.heightDistance,H.rotation=p.rotation,H.scaleStep=p.scaleStep,B(U.modelId,H)})},N=({direction:k,config:_})=>{const U=r.value.filter(X=>X.selected);if(!U.length){pe.warning("请先选择要转换的模型");return}if(!s?.value?.transformGISCadCoordinate){pe.warning("未找到 GIS CAD 坐标转换方法");return}let q=0;U.forEach(X=>{try{const de=Number(X.formData.localOriginX),fe=Number(X.formData.localOriginY);let me={longitude:X.formData.longitude,latitude:X.formData.latitude};const be=s?.value?.transformGISCadCoordinate;if(be){const _e=be({direction:k,...k==="projectedToLonlat"?{x:de,y:fe}:{longitude:X.formData.longitude,latitude:X.formData.latitude},config:{..._}});k==="projectedToLonlat"&&_e.longitude&&(me.longitude=_e.longitude,me.latitude=_e.latitude)}B(X.modelId,{transformConfig:{..._},transformDirection:k,longitude:me.longitude,latitude:me.latitude}),q++}catch(de){console.warn("Transform failed for model",X.modelId,de)}}),q>0?pe.success(`已成功转换 ${q} 个模型的坐标并重新加载,请预览后提交贴地`):pe.error("坐标转换失败,请检查参数或模型状态")},D=()=>{p.clampToGround=!p.clampToGround,R("clampToGround")},E=()=>{const k=u.cadPoint,_=u.mapPoint;if(k.longitude===void 0||k.latitude===void 0||k.height===void 0||_.longitude===void 0||_.latitude===void 0||_.height===void 0){pe.warning("请先完成 CAD 和地图点位采集");return}const H=r.value.filter(fe=>fe.selected);if(!H.length){pe.warning("请先选择要调整的模型");return}const{dLon:q,dLat:X,dHeight:de}=y()?.calculateOffset(k,_)||{dLon:_.longitude-k.longitude,dLat:_.latitude-k.latitude,dHeight:_.height-k.height};H.forEach(fe=>{B(fe.modelId,{longitude:Number(fe.formData.longitude)+q,latitude:Number(fe.formData.latitude)+X,height:Number(fe.formData.height)+de})}),pe.success("点选校准预览已更新")},T=()=>{const k=r.value.filter(U=>U.selected);if(!k.length){pe.warning("请先选择要提交的模型");return}const _=[];k.forEach(U=>{const H=s?.value?.commitEditGISCad?.({modelId:U.modelId});H&&H.formData&&_.push({modelId:H.modelId,formData:H.formData})}),L(),_.length>0&&s?.value?.onGISCadPositionChange&&s.value.onGISCadPositionChange(_),pe.success("GIS CAD 已提交为贴地结果")},P=()=>{r.value.forEach(k=>{s?.value?.cancelEditGISCad?.({modelId:k.modelId})})},F=()=>{if(!a.value){pe.warning("请先选择主模型");return}if(!s?.value?.flyToGISCadModel){pe.warning("飞转方法不可用");return}s.value.flyToGISCadModel({modelId:a.value,duration:1.5})},V=k=>{const _=k.target.checked;r.value.forEach(U=>{U.selected=_})},G=()=>{P(),C(),A(),n("update:visible",!1)};return d.watch(l,k=>{t.visible&&(k==="pick"?w():C())}),d.watch(()=>t.visible,k=>{k?(L(),l.value==="pick"&&w()):(C(),A(),P(),L())}),d.onMounted(()=>{t.visible&&(L(),l.value==="pick"&&w())}),d.onUnmounted(()=>{C(),A(),P()}),(k,_)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"GIS CAD调整",width:340,"onUpdate:visible":_[27]||(_[27]=U=>n("update:visible",U)),onClose:G},{default:d.withCtx(()=>[d.createElementVNode("div",iD,[d.createElementVNode("div",nD,[d.createElementVNode("div",sD,[_[28]||(_[28]=d.createElementVNode("label",null,"调整操作:",-1)),d.createElementVNode("div",oD,[d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="param"}),onClick:_[0]||(_[0]=U=>S("param"))}," 参数模式 ",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="pick"}),onClick:_[1]||(_[1]=U=>S("pick"))}," 地图点选 ",2),d.createElementVNode("span",{class:d.normalizeClass({active:l.value==="transform"}),onClick:_[2]||(_[2]=U=>S("transform"))}," 坐标转换 ",2)])]),d.createElementVNode("div",rD,[_[29]||(_[29]=d.createElementVNode("label",null,"当前主模型:",-1)),d.createElementVNode("span",{class:"value",title:m.value},d.toDisplayString(m.value||"未选择"),9,aD)]),_[43]||(_[43]=d.createElementVNode("div",{class:"separator"},null,-1)),l.value==="param"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[_[39]||(_[39]=d.createElementVNode("div",{class:"group-header"},"当前状态",-1)),d.createElementVNode("div",lD,[_[30]||(_[30]=d.createElementVNode("label",null,"经度(东西):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[3]||(_[3]=U=>p.longitude=U),type:"number",step:o.value,onChange:_[4]||(_[4]=U=>R("longitude"))},null,40,cD),[[d.vModelText,p.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",dD,[_[31]||(_[31]=d.createElementVNode("label",null,"纬度(南北):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[5]||(_[5]=U=>p.latitude=U),type:"number",step:o.value,onChange:_[6]||(_[6]=U=>R("latitude"))},null,40,hD),[[d.vModelText,p.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",uD,[_[32]||(_[32]=d.createElementVNode("label",null,"高度(m):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[7]||(_[7]=U=>p.height=U),type:"number",step:o.value,onChange:_[8]||(_[8]=U=>R("height"))},null,40,fD),[[d.vModelText,p.height,void 0,{number:!0}]])]),d.createElementVNode("div",pD,[_[33]||(_[33]=d.createElementVNode("label",null,"累计旋转(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[9]||(_[9]=U=>p.totalRotation=U),type:"number",step:o.value,onChange:_[10]||(_[10]=U=>R("totalRotation"))},null,40,mD),[[d.vModelText,p.totalRotation,void 0,{number:!0}]])]),d.createElementVNode("div",gD,[_[34]||(_[34]=d.createElementVNode("label",null,"缩放比例:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[11]||(_[11]=U=>p.scale=U),type:"number",min:"0.000001",step:o.value,onChange:_[12]||(_[12]=U=>R("scale"))},null,40,yD),[[d.vModelText,p.scale,void 0,{number:!0}]])]),_[40]||(_[40]=d.createElementVNode("div",{class:"separator"},null,-1)),_[41]||(_[41]=d.createElementVNode("div",{class:"group-header"},"调整步长",-1)),d.createElementVNode("div",AD,[_[35]||(_[35]=d.createElementVNode("label",null,"经纬步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[13]||(_[13]=U=>p.distance=U),type:"number",step:o.value},null,8,vD),[[d.vModelText,p.distance,void 0,{number:!0}]])]),d.createElementVNode("div",bD,[_[36]||(_[36]=d.createElementVNode("label",null,"高度步长(m):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[14]||(_[14]=U=>p.heightDistance=U),type:"number",step:o.value},null,8,wD),[[d.vModelText,p.heightDistance,void 0,{number:!0}]])]),d.createElementVNode("div",CD,[_[37]||(_[37]=d.createElementVNode("label",null,"旋转步长(°):",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[15]||(_[15]=U=>p.rotation=U),type:"number",step:o.value},null,8,ED),[[d.vModelText,p.rotation,void 0,{number:!0}]])]),d.createElementVNode("div",xD,[_[38]||(_[38]=d.createElementVNode("label",null,"缩放步长:",-1)),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":_[16]||(_[16]=U=>p.scaleStep=U),type:"number",step:o.value},null,8,ID),[[d.vModelText,p.scaleStep,void 0,{number:!0}]])]),d.createElementVNode("div",SD,[d.createElementVNode("button",{onClick:_[17]||(_[17]=U=>O("rotateLeft"))},"左转"),d.createElementVNode("button",{onClick:_[18]||(_[18]=U=>O("north"))},"北移"),d.createElementVNode("button",{onClick:_[19]||(_[19]=U=>O("rotateRight"))},"右转"),d.createElementVNode("button",{onClick:_[20]||(_[20]=U=>O("west"))},"西移"),d.createElementVNode("button",{onClick:_[21]||(_[21]=U=>O("south"))},"南移"),d.createElementVNode("button",{onClick:_[22]||(_[22]=U=>O("east"))},"东移"),d.createElementVNode("button",{onClick:_[23]||(_[23]=U=>O("up"))},"上移"),d.createElementVNode("button",{onClick:_[24]||(_[24]=U=>O("scaleDown"))},"缩小"),d.createElementVNode("button",{onClick:_[25]||(_[25]=U=>O("scaleUp"))},"放大"),d.createElementVNode("button",{onClick:_[26]||(_[26]=U=>O("down"))},"下移")]),d.createElementVNode("div",MD,[d.createElementVNode("button",{class:d.normalizeClass({"primary-btn":p.clampToGround}),onClick:D}," 贴地 ",2),d.createElementVNode("button",{onClick:T},"保存位置"),d.createElementVNode("button",{onClick:F},"正北俯视")])],64)):l.value==="pick"?(d.openBlock(),d.createElementBlock("div",TD,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(u,(U,H)=>(d.openBlock(),d.createElementBlock("div",{key:H,class:"pick-point-item"},[d.createElementVNode("div",{class:"pick-point-title",onClick:q=>I(H)},[d.createElementVNode("input",{type:"radio",name:"gisCadPickPoint",checked:c.value===H,onChange:q=>I(H)},null,40,_D),d.createElementVNode("span",null,d.toDisplayString(U.type)+":",1)],8,BD),d.createElementVNode("div",kD,[d.createElementVNode("div",PD,[d.createElementVNode("label",DD,d.toDisplayString(U.longitudeText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.longitude=q,type:"number",readonly:""},null,8,ND),[[d.vModelText,U.longitude,void 0,{number:!0}]])]),d.createElementVNode("div",LD,[d.createElementVNode("label",RD,d.toDisplayString(U.latitudeText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.latitude=q,type:"number",readonly:""},null,8,FD),[[d.vModelText,U.latitude,void 0,{number:!0}]])]),d.createElementVNode("div",OD,[d.createElementVNode("label",GD,d.toDisplayString(U.heightText),1),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.height=q,type:"number",readonly:""},null,8,UD),[[d.vModelText,U.height,void 0,{number:!0}]])])])]))),128)),d.createElementVNode("div",VD,[d.createElementVNode("button",{class:"primary-btn",onClick:E},"应用校准"),d.createElementVNode("button",{class:d.normalizeClass({"primary-btn":p.clampToGround}),onClick:D}," 贴地 ",2),d.createElementVNode("button",{onClick:T},"保存位置"),d.createElementVNode("button",{onClick:F},"正北俯视")]),_[42]||(_[42]=d.createElementVNode("div",{class:"instructions"},[d.createElementVNode("div",null,"操作指南:"),d.createElementVNode("div",null,"1. 先选择上方 CAD 标记点或地图标记点。"),d.createElementVNode("div",null,"2. Shift + 左键 点击场景拾取对应坐标。"),d.createElementVNode("div",null,"3. 采集两点后,点击“应用校准”进行预览。"),d.createElementVNode("div",null,"4. 确认结果后,点击“提交贴地”生效。")],-1))])):l.value==="transform"?(d.openBlock(),d.createBlock(tD,{key:2,onApplyTransform:N,onSavePosition:T})):d.createCommentVNode("",!0)]),d.createElementVNode("div",QD,[d.createElementVNode("div",zD,[d.createElementVNode("div",HD,[d.createElementVNode("input",{type:"checkbox",checked:f.value,onChange:V},null,40,YD)]),_[44]||(_[44]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),_[45]||(_[45]=d.createElementVNode("div",{class:"col-name"},"名称",-1)),_[46]||(_[46]=d.createElementVNode("div",{class:"col-main"},"主模型",-1))]),d.createElementVNode("div",$D,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(r.value,(U,H)=>(d.openBlock(),d.createElementBlock("div",{key:U.modelId,class:d.normalizeClass(["list-item",{active:U.modelId===a.value}])},[d.createElementVNode("div",jD,[d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":q=>U.selected=q,type:"checkbox"},null,8,WD),[[d.vModelCheckbox,U.selected]])]),d.createElementVNode("div",qD,d.toDisplayString(H+1),1),d.createElementVNode("div",{class:"col-name",title:U.modelName},d.toDisplayString(U.modelName),9,KD),d.createElementVNode("div",XD,[d.createElementVNode("input",{checked:U.modelId===a.value,type:"radio",name:"gisCadMainModel",onChange:q=>b(U.modelId)},null,40,JD)])],2))),128)),r.value.length===0?(d.openBlock(),d.createElementBlock("div",ZD,"暂无 GIS CAD 数据")):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-25694d77"]]),tN={class:"annotation-content"},iN={class:"annotation-tools"},nN={class:"annotation-controls"},sN={class:"control-group",title:"颜色"},oN={class:"tool-item color-tool"},rN={class:"control-group line-width-container",title:"线宽"},aN=["onClick"],lN={class:"option-label"},cN=Be(d.defineComponent({__name:"LeitingAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),a=d.ref(1),l=d.ref(!1),c=d.ref(null),h=d.ref(null),u=d.ref({top:"0px",left:"0px"}),p=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],f=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,m=()=>{n("update:visible",!1)},y=x=>{o.value=x;const M=f();if(M)switch(x){case"freehandLine":M.startFreehandLine();break;case"arrow":M.startArrow();break;case"straightLine":M.startStraightLine();break;case"rectangle":M.startRectangle();break;case"ellipse":M.startEllipse();break}},g=()=>{const x=f();x&&(x.setCurrentColor(r.value),x.changeColor(r.value))},A=()=>{if(!l.value&&c.value){const x=c.value.getBoundingClientRect();u.value={top:`${x.top}px`,left:`${x.right+8}px`}}l.value=!l.value},v=x=>{a.value=x,l.value=!1;const M=f();M&&(M.setCurrentWidth(x),M.changeWidth(x))},w=()=>{const x=f();x&&x.deleteSelectedEntity()},C=()=>{const x=f();x&&x.clearAll()},S=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const x=f();x&&x.saveAnnotations()},I=x=>{const M=x.target,L=c.value&&c.value.contains(M),b=h.value&&h.value.contains(M);!L&&!b&&(l.value=!1)};return d.onMounted(()=>{document.addEventListener("click",I)}),d.onUnmounted(()=>{document.removeEventListener("click",I)}),(x,M)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"标注",width:70,"min-width":70,height:480,"onUpdate:visible":M[6]||(M[6]=L=>n("update:visible",L)),onClose:m},{default:d.withCtx(()=>[d.createElementVNode("div",tN,[d.createElementVNode("div",iN,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="freehandLine"}]),onClick:M[0]||(M[0]=L=>y("freehandLine")),title:"手绘线"},[...M[7]||(M[7]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="arrow"}]),onClick:M[1]||(M[1]=L=>y("arrow")),title:"箭头"},[...M[8]||(M[8]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="straightLine"}]),onClick:M[2]||(M[2]=L=>y("straightLine")),title:"直线"},[...M[9]||(M[9]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="rectangle"}]),onClick:M[3]||(M[3]=L=>y("rectangle")),title:"矩形"},[...M[10]||(M[10]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:o.value==="ellipse"}]),onClick:M[4]||(M[4]=L=>y("ellipse")),title:"椭圆"},[...M[11]||(M[11]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1)])],2)]),M[13]||(M[13]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",nN,[d.createElementVNode("div",sN,[d.createElementVNode("div",oN,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":M[5]||(M[5]=L=>r.value=L),onChange:g,class:"color-input-overlay"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",rN,[d.createElementVNode("div",{ref_key:"lineWidthBtnRef",ref:c,class:"tool-item",onClick:d.withModifiers(A,["stop"])},[d.createElementVNode("div",{class:"current-width-preview",style:d.normalizeStyle({height:a.value+"px",backgroundColor:"#fff"})},null,4)],512),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[l.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"dropdownRef",ref:h,class:"line-width-dropdown",style:d.normalizeStyle(u.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(p,L=>d.createElementVNode("div",{key:L.value,class:d.normalizeClass(["line-width-option",{selected:a.value===L.value}]),onClick:d.withModifiers(b=>v(L.value),["stop"])},[d.createElementVNode("span",lN,d.toDisplayString(L.label),1),d.createElementVNode("div",{class:"line-preview",style:d.normalizeStyle({height:L.value+"px",backgroundColor:a.value===L.value?"#1890ff":"#ddd"})},null,4)],10,aN)),64))],4)):d.createCommentVNode("",!0)]))]),M[12]||(M[12]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("button",{class:"control-btn",onClick:w,title:"删除选中"}," 🗑️ "),d.createElementVNode("button",{class:"control-btn",onClick:C,title:"清空"}," ❌ "),d.createElementVNode("button",{class:"control-btn",onClick:S,title:"保存"}," 💾 ")])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-3cfc8415"]]),dN={class:"measure-content"},hN={class:"measure-tools"},uN={key:0,class:"measure-results"},fN={class:"result-row"},pN={class:"result-value"},mN={class:"result-row"},gN={class:"result-value"},yN={class:"result-row"},AN={class:"result-value"},vN={class:"result-row"},bN={class:"result-value"},wN={key:1,class:"result-row"},CN={class:"result-value"},EN={key:2,class:"result-row"},xN={class:"result-value"},IN={class:"measure-controls"},SN={class:"control-group",title:"单位"},MN={class:"unit-display"},TN=["onClick"],BN=Be(d.defineComponent({__name:"LeitingMeasurement",props:{visible:{type:Boolean,default:!1}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(null),r=d.ref(null),a=d.ref("m"),l=d.ref(!1),c=d.ref(null),h=d.ref(!1),u=d.ref({}),p=d.ref(null),f=[{label:"米 (m)",value:"m"},{label:"厘米 (cm)",value:"cm"},{label:"毫米 (mm)",value:"mm"}],m=x=>{const M=a.value;return M==="mm"?`${(x*1e3).toFixed(0)}mm`:M==="cm"?`${(x*100).toFixed(1)}cm`:`${x.toFixed(2)}m`},y=x=>x>1e6?`${(x/1e6).toFixed(2)} km²`:`${x.toFixed(2)} m²`,g=()=>{if(!o.value&&s.value?.getViewer){const x=s.value.getViewer(),M=s.value.getCesium();x&&M&&(o.value=new uc({viewer:x,cesium:M}),o.value.setUnit(a.value),o.value.setSnapping(l.value),o.value.onMeasure=L=>{c.value=L})}},A=x=>{o.value||g(),r.value===x?(r.value=null,o.value?.stop(),s.value?.baseCompt?.enableSelection()):(r.value=x,o.value?.start(x),s.value?.baseCompt?.disableSelection())},v=x=>{a.value=x,h.value=!1},w=()=>{o.value&&(o.value.clearAll(),r.value=null,o.value.stop()),s.value?.baseCompt?.enableSelection()},C=()=>{n("update:visible",!1)},S=x=>{if(h.value){h.value=!1;return}const L=x.currentTarget.getBoundingClientRect();u.value={position:"fixed",top:`${L.top}px`,left:`${L.right+5}px`,zIndex:3e3},h.value=!0},I=x=>{h.value&&p.value&&!p.value.contains(x.target)&&(h.value=!1)};return d.onMounted(()=>{document.addEventListener("click",I),t.visible&&d.nextTick(()=>g())}),d.onUnmounted(()=>{document.removeEventListener("click",I),o.value&&o.value.destroy()}),d.watch(()=>t.visible,x=>{x?d.nextTick(()=>g()):o.value&&(o.value.stop(),r.value=null)}),d.watch(s,x=>{x&&x.getViewer&&!o.value&&t.visible&&g()}),d.watch(a,x=>{o.value&&o.value.setUnit(x)}),(x,M)=>(d.openBlock(),d.createBlock(gt,{visible:t.visible,title:"量算",width:70,"min-width":70,height:480,"onUpdate:visible":M[3]||(M[3]=L=>n("update:visible",L)),onClose:C},{default:d.withCtx(()=>[d.createElementVNode("div",dN,[d.createElementVNode("div",hN,[d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="distance"}]),onClick:M[0]||(M[0]=L=>A("distance")),title:"距离测量"},[...M[4]||(M[4]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="angle"}]),onClick:M[1]||(M[1]=L=>A("angle")),title:"角度测量"},[...M[5]||(M[5]=[d.createElementVNode("div",{class:"tool-icon"},"📐",-1)])],2),d.createElementVNode("div",{class:d.normalizeClass(["tool-item",{active:r.value==="area"}]),onClick:M[2]||(M[2]=L=>A("area")),title:"面积测量"},[...M[6]||(M[6]=[d.createElementVNode("div",{class:"tool-icon"},"🔳",-1)])],2)]),M[15]||(M[15]=d.createElementVNode("div",{class:"separator"},null,-1)),c.value?(d.openBlock(),d.createElementBlock("div",uN,[c.value.type==="distance"?(d.openBlock(),d.createElementBlock(d.Fragment,{key:0},[d.createElementVNode("div",fN,[M[7]||(M[7]=d.createElementVNode("span",{class:"result-label"},"总长:",-1)),d.createElementVNode("span",pN,d.toDisplayString(m(c.value.dist)),1)]),d.createElementVNode("div",mN,[M[8]||(M[8]=d.createElementVNode("span",{class:"result-label",style:{color:"#ff4d4f"}},"ΔX:",-1)),d.createElementVNode("span",gN,d.toDisplayString(m(c.value.dx)),1)]),d.createElementVNode("div",yN,[M[9]||(M[9]=d.createElementVNode("span",{class:"result-label",style:{color:"#52c41a"}},"ΔY:",-1)),d.createElementVNode("span",AN,d.toDisplayString(m(c.value.dy)),1)]),d.createElementVNode("div",vN,[M[10]||(M[10]=d.createElementVNode("span",{class:"result-label",style:{color:"#1890ff"}},"ΔZ:",-1)),d.createElementVNode("span",bN,d.toDisplayString(m(c.value.dz)),1)])],64)):d.createCommentVNode("",!0),c.value.type==="angle"?(d.openBlock(),d.createElementBlock("div",wN,[M[11]||(M[11]=d.createElementVNode("span",{class:"result-label"},"角度:",-1)),d.createElementVNode("span",CN,d.toDisplayString(c.value.angle.toFixed(1))+"°",1)])):d.createCommentVNode("",!0),c.value.type==="area"?(d.openBlock(),d.createElementBlock("div",EN,[M[12]||(M[12]=d.createElementVNode("span",{class:"result-label"},"面积:",-1)),d.createElementVNode("span",xN,d.toDisplayString(y(c.value.area)),1)])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0),d.createElementVNode("div",IN,[d.createElementVNode("div",SN,[d.createElementVNode("div",{class:"tool-item",onClick:d.withModifiers(S,["stop"])},[d.createElementVNode("div",MN,d.toDisplayString(a.value),1)]),(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[h.value?(d.openBlock(),d.createElementBlock("div",{key:0,ref_key:"unitDropdownRef",ref:p,class:"unit-dropdown",style:d.normalizeStyle(u.value)},[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(f,L=>d.createElementVNode("div",{key:L.value,class:d.normalizeClass(["unit-option",{selected:a.value===L.value}]),onClick:d.withModifiers(b=>v(L.value),["stop"])},d.toDisplayString(L.label),11,TN)),64))],4)):d.createCommentVNode("",!0)]))]),M[14]||(M[14]=d.createElementVNode("div",{class:"separator"},null,-1)),d.createElementVNode("div",{class:"action-buttons"},[d.createElementVNode("div",{class:"tool-item control-btn",onClick:w,title:"清空"},[...M[13]||(M[13]=[d.createElementVNode("div",{class:"tool-icon"},"🗑️",-1)])])])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-8b1e070f"]]);function Mm(){const i=d.ref(!1),e=d.reactive({x:0,y:0}),t=d.ref([]),n=d.ref(null);return{visible:i,position:e,items:t,contextData:n,show:(l,c,h)=>{l instanceof MouseEvent?(l.preventDefault(),e.x=l.clientX,e.y=l.clientY):(e.x=l.x,e.y=l.y),t.value=c,n.value=h,i.value=!0},hide:()=>{i.value=!1},addItem:l=>{t.value.push(l)},removeItem:l=>{t.value=t.value.filter(c=>c.id!==l)}}}const _N=["onClick","onTouchend"],kN={class:"menu-label"},PN={key:0,class:"menu-arrow"},DN=Be(d.defineComponent({__name:"LeitingContextMenu",props:{visible:{type:Boolean},position:{},items:{}},emits:["update:visible","action"],setup(i,{emit:e}){const t=i,n=e,{isMobile:s}=Fr(),o=d.computed(()=>{let l=t.position.x,c=t.position.y;if(s.value){const u=t.items.length*48;l+200>window.innerWidth-16&&(l=window.innerWidth-200-16),c+u>window.innerHeight-16&&(c=window.innerHeight-u-16),c<16&&(c=16)}return{left:l+"px",top:c+"px"}}),r=l=>{l.disabled||(l.action&&l.action(),n("action",l),n("update:visible",!1))},a=()=>{t.visible&&n("update:visible",!1)};return d.onMounted(()=>{document.addEventListener("click",a),document.addEventListener("contextmenu",l=>{l.target.closest(".leiting-context-menu")||a()})}),d.onUnmounted(()=>{document.removeEventListener("click",a)}),(l,c)=>d.withDirectives((d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-context-menu",{"mobile-style":d.unref(s)}]),style:d.normalizeStyle(o.value),onContextmenu:c[0]||(c[0]=d.withModifiers(()=>{},["prevent"]))},[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(i.items,h=>(d.openBlock(),d.createElementBlock("div",{key:h.id,class:d.normalizeClass(["menu-item",{"menu-divided":h.divided,"menu-disabled":h.disabled}]),onClick:u=>r(h),onTouchend:d.withModifiers(u=>r(h),["prevent"])},[d.createElementVNode("span",kN,d.toDisplayString(h.label),1),h.children?(d.openBlock(),d.createElementBlock("span",PN,"▶")):d.createCommentVNode("",!0)],42,_N))),128))],38)),[[d.vShow,i.visible]])}}),[["__scopeId","data-v-62c220a6"]]),NN={class:"mobile-nav-root"},LN={class:"nav-bar-container"},RN={key:"sub-mode",class:"nav-inner sub-menu-wrapper"},FN={class:"sub-icons-list"},ON=["onClick"],GN=["innerHTML"],UN={key:"main-mode",class:"nav-inner main-menu-wrapper"},VN=["onClick"],QN=["src","alt"],Tm=Be(d.defineComponent({__name:"MobileBottomNav",props:{activeIds:{},is2d:{type:Boolean},customItems:{}},emits:["item-click","sub-item-click","clear-measure"],setup(i,{emit:e}){const t=i,n=e,s=d.ref(null),o=d.ref(null),r={measure:[{id:"distance",label:"距离",parentId:"measure",parentKey:"measurement"},{id:"angle",label:"角度",parentId:"measure",parentKey:"measurement"},{id:"area",label:"面积",parentId:"measure",parentKey:"measurement"},{id:"coordinate",label:"坐标",parentId:"measure",parentKey:"measurement"}],section:[{id:"box",label:"剖切盒",parentId:"section",parentKey:"section"},{id:"plane-x",label:"X轴",parentId:"section",parentKey:"section"},{id:"plane-y",label:"Y轴",parentId:"section",parentKey:"section"}]},a={distance:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 17l6-6 4 4 8-8"/><path d="M17 7h4v4"/></svg>',angle:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 20H4L14 4"/></svg>',area:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2"/></svg>',coordinate:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M2 12h20"/></svg>',box:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/></svg>'},l=g=>a[g]||a.box,c=d.ref([{ID:"home",title:"主视角",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"homeView"},{ID:"measure",title:"量算",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAFESURBVDhPlZMNEcIwDIVXBQwFgAJAAcMBDgAFIGE4wAHgABSwOdgcIAEUjPd6aS/rfhi7y12bJl9f0sxEf3xVVV0RPoetjTFvnWqGcgSylfgihA0CKcgJgBfsAqMiKiM0+gkKlCyZCN8uhPWCFOSBxARWORU4W2CdeV9XjxSEJcwkjokTqBpzjxjCn7CyVRECzjg8wHLYCmabK7CplBcLhMr2DZCqP0dCovYZ9hYGXx1izLUGUkkfxI/sTQiCf4N1zLWAWCKV2nP6PEhB2Ngd7B4GC4SJnCcP8SAFoc/Ph/TqjVvTPogFKUiJ/VGU+GdmUAA5ObA7cyC+iPt/MjUfKRL4emyuK+cGH8tufFRUHywZ+RYlnRDdIwfzLzVUibtQv1oNhoAExtfpVdIAiQIOWiY9o2sQxJemOydTS1jR1di2Zn8B8f27apou9kMAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"measurement"},{ID:"roam",title:"漫游",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADhSURBVHgBvVOBEYIwDEw9B2ADO4IjuIEjwAa6Aa7ABMAEuIIjOIFsUDao37vgxVZbBI+/+0tI0+fJBaIIrLUFaMAHmNNcsMAIE+vdJLQykQ+0wFHBrsyiT/sL2I1DDTac/+4Klzobov7WHxt29qGmaYaQnlhLCmUTa2l4C2ljvamFlEvY0xpCW/kA924GblfGWciZaJyXQvSmlOoDITSdXQBbcA8eKfy/nHDFeY470FIX8tzUIu84FmLWuTzz7yhRLPm54dKJ4+A5uoJ3HgHBUfUmxGIa4QDuKA4n3kLk9ZInw0qu5b1R1aYAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"roam"},{ID:"info",title:"信息",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAADFSURBVDhPxVPBDYMwDIwnKJu0G9ANYJMyQrsBbNIRGAE2gEnSO6mpIMJxkBC1lEds52zfOeK9b51zV5wte4lIr8RWbgGQh2fGmaIHJe4EetKPtDpRcA5AvwcB7FtgCcTOH0p3YzaQNd75QBiVXJG3LRtCRyQ6Jvsekd3gTsJVoDcihZLQQjXGTRMzIzPhOCCQyNYvSuEue7Qdm02yK0u1nM2m/FQyKb8JZHH+l81Ofdpdm82tvikjThyNlbSEBvIPFj+MfwA76qSYUG3g9QAAAABJRU5ErkJggg==",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"componentInfo"},{ID:"setting",title:"设置",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAGPSURBVDhPrZT9UQIxEMUvFSgViBUoFQgVABV4VqBW4FmBUIFQgZRwVqBU4HUAVHC+X2aXycQw/sPOvLncZvdlv5JQFaTv+1upp8IyhLDHRLpLfe6FrXRt7hZShYyH+n8RauGAv/AkQNYIHICshFcRdu6fE/kGRN/mQGTIpzAzMoh6EV2fIsJ5IwNOj2IpVZ6i6difSecRVnlELZHIgHROisgXRCa78Z+IrMBf2pjLYJNENGSd1kO2pPghjKQniyqY8lFr2NfaqC18wn7nZCMlWg7xLq70TxfRLyHqtABN2lbp40mSSCzBcSebif1TPyKjDBcQ0eJJRkIUpHkMPUlnkBU+pnlWItL6ERgw8o1iqRHtgzAUGNRD2qmkvgMvNnneUQcZ4ggR6VGXG+OOA1koNvrFcY7+af++VJe0hucfyKQu+RWJc+SDZ3aNvlPpRl7T0qXdafNZYPDehLEZt/rOBR9U8QSaEKX0jHAaE4tshVrgLeJ+Xdl6rS8D3BWJXKnCEwWXEuco9grQ3bb0sP0Cn8/nPm/SMRQAAAAASUVORK5CYII=",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"setting"}]),h=d.ref([{ID:"home",title:"主视角",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAEhSURBVDhP1ZRhkcIwEIWJAsDBOTgkgAJAAYcCQAFFAUgoDjgFh4Q7B+cAUFC+19kyS0hL+Ulm3nS6+/ZLNkkbOk9GURRDWUIIxyZraEoCWZLfmmcOLK/z14KAqGiGvq14zDMHNk/BHkAAehh/0ABtKMxUSFzPNfpFI+JnD7wDYVaxIIov41bIfxHfoROakhe0HDeQmbQfFzTxJj+zTXYg1kWrarISRFKzLNAfGsbL9iDzq/0j+kQZ/k1wm7onoKW3Hq42F0jLVK//Tcebott2fJAbVK1lvKwBNd6rRIsFsfJka0G2qdpQPy7+EPC0AumexKAzoH5FbgvSbHuUW6EOYubbfwX0cLPfFJS4K6mPNrbdHb+uvP498dhVn4v9FWo9V3RZzFxAv8L9AAAAAElFTkSuQmCC",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"homeView"},{ID:"cadLayer",title:"CAD图层",src:Gr,key:"cadLayer"},{ID:"annotation",title:"标注",src:new URL("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACDSURBVHgB1ZFhDYAgEIWfzgBGIIINpIEViGAkG2gEbWADjWADfMw/iDgUfji/7e3gxt3uHsDXZFrrlrFBHJNpsPAgEEmORArn3lFroEZQCjcTbAhzepPsgbuCgn8FBWvsUAMfFR5OIPGS5G80JkrG2sopHKbO1BCoHy8ZNhRUT5X4BTu6qyNSwwCiMAAAAABJRU5ErkJggg==",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:ke&&ke.tagName.toUpperCase()==="SCRIPT"&&ke.src||new URL("leiting-bim.umd.js",document.baseURI).href).href,key:"annotation"}]),u=d.computed(()=>{let A=[...t.is2d?h.value:c.value];return t.customItems&&(A=[...A,...t.customItems]),A}),p=d.computed(()=>s.value?r[s.value.ID]||[]:[]),f=g=>{if(r[g.ID]){if(g.ID==="measure"){n("item-click",g);return}if(s.value?.ID===g.ID)y();else{s.value=g,o.value=null;const A=r[g.ID];A&&A.length>0&&(o.value=A[0]?.id??null,setTimeout(()=>{n("sub-item-click",{parent:g,sub:A[0]})},50))}}else n("item-click",g)},m=g=>{o.value=g.id,n("sub-item-click",{parent:s.value,sub:g})},y=()=>{s.value=null,o.value=null};return(g,A)=>(d.openBlock(),d.createElementBlock("div",NN,[d.createElementVNode("nav",LN,[d.createVNode(d.Transition,{name:"nav-mode-switch",mode:"out-in"},{default:d.withCtx(()=>[s.value?(d.openBlock(),d.createElementBlock("div",RN,[d.createElementVNode("button",{class:"nav-back-icon",onClick:y},[...A[0]||(A[0]=[d.createElementVNode("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3"},[d.createElementVNode("polyline",{points:"15 18 9 12 15 6"})],-1)])]),d.createElementVNode("div",FN,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(p.value,v=>(d.openBlock(),d.createElementBlock("button",{key:v.id,class:d.normalizeClass(["sub-icon-box",{active:o.value===v.id}]),onClick:w=>m(v)},[d.createElementVNode("div",{class:"icon-svg",innerHTML:l(v.id)},null,8,GN)],10,ON))),128))])])):(d.openBlock(),d.createElementBlock("div",UN,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(u.value,v=>(d.openBlock(),d.createElementBlock("div",{key:v.ID,class:d.normalizeClass(["main-tab-item",{active:i.activeIds?.includes(v.ID)}]),onClick:w=>f(v)},[d.createElementVNode("img",{src:v.src,class:"tab-img",alt:v.title},null,8,QN)],10,VN))),128))]))]),_:1})])]))}}),[["__scopeId","data-v-2e30753b"]]),zN={key:1,class:"drawer-header"},HN={class:"drawer-title"},YN={class:"drawer-content"},$N={key:2,class:"drawer-footer"},jr=Be(d.defineComponent({__name:"MobileDrawer",props:{visible:{type:Boolean},title:{},direction:{default:"bottom"},width:{default:"100%"},height:{default:"50vh"},showHandle:{type:Boolean,default:!1},closeOnOverlay:{type:Boolean,default:!0},maxHeight:{default:"60vh"}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.ref(null);let o=0,r=0;const a=d.computed(()=>{const f={};return t.direction==="right"||t.direction==="left"?(f.width=t.width,f.height="100%"):(f.width=t.width,f.height=t.height,f.maxHeight=t.maxHeight),f}),l=f=>{o=f.touches[0]?.clientY??0,s.value&&(s.value.style.transition="none")},c=f=>{if(!s.value)return;r=(f.touches[0]?.clientY??0)-o,r>0&&(s.value.style.transform=`translateY(${r}px)`)},h=()=>{s.value&&(s.value.style.transition="transform 300ms cubic-bezier(0.4, 0, 0.2, 1)",r>100?u():s.value.style.transform="",r=0)},u=()=>{n("update:visible",!1),n("close")},p=()=>{t.closeOnOverlay&&u()};return d.watch(()=>t.visible,f=>{f?document.body.style.overflow="hidden":document.body.style.overflow=""}),(f,m)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"drawer-fade"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-drawer-overlay",onClick:d.withModifiers(p,["self"])},[d.createElementVNode("div",{class:d.normalizeClass(["mobile-drawer-panel",[`direction-${i.direction}`]]),style:d.normalizeStyle(a.value),onClick:m[0]||(m[0]=d.withModifiers(()=>{},["stop"])),ref_key:"panelRef",ref:s},[i.direction==="bottom"&&i.showHandle?(d.openBlock(),d.createElementBlock("div",{key:0,class:"drawer-handle",onTouchstart:l,onTouchmove:c,onTouchend:h},[...m[1]||(m[1]=[d.createElementVNode("div",{class:"handle-bar"},null,-1)])],32)):d.createCommentVNode("",!0),i.title||f.$slots.title?(d.openBlock(),d.createElementBlock("div",zN,[d.renderSlot(f.$slots,"title",{},()=>[d.createElementVNode("span",HN,d.toDisplayString(i.title),1)],!0),d.createElementVNode("button",{class:"drawer-close-btn",onClick:u},[...m[2]||(m[2]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])])):d.createCommentVNode("",!0),d.createElementVNode("div",YN,[d.renderSlot(f.$slots,"default",{},void 0,!0)]),f.$slots.footer?(d.openBlock(),d.createElementBlock("div",$N,[d.renderSlot(f.$slots,"footer",{},void 0,!0)])):d.createCommentVNode("",!0)],6)])):d.createCommentVNode("",!0)]),_:3})]))}}),[["__scopeId","data-v-66d9d696"]]),jN={class:"mobile-tree-container"},WN={class:"search-section"},qN={class:"search-inner"},KN=["innerHTML"],Bm=Be(d.defineComponent({__name:"MobileTree",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},treeData:{default:()=>[]},initialCheckedKeys:{default:()=>[]}},emits:["update:visible","update:open","close","select","check","search"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:B=>{n("update:visible",B),n("update:open",B)}}),r={key:"id",title:"name",children:"children"},a=d.ref(""),l=d.ref([]),c=d.ref([]),h=d.ref(null),u=d.ref(300),p=d.ref(!1);let f=null;d.watch(()=>t.initialCheckedKeys,B=>{B&&B.length>0&&(c.value=[...B])},{immediate:!0}),d.watch(()=>t.treeData,B=>{if(!B||B.length===0)return;const R=[],O=(E,T)=>{for(let P=0;P<E.length;P++){const F=E[P],V=F.id||F.key||F.$id,G=F.modelId||T;G&&(F.modelId=G),V&&R.push(String(V)),F.children&&F.children.length>0&&O(F.children,G)}};O(B);const N=new Set(c.value);let D=!1;R.forEach(E=>{N.has(E)||(N.add(E),D=!0)}),D&&(c.value=Array.from(N),n("check",c.value))},{immediate:!0,deep:!0});const m=(B,R)=>{const O=[],N=D=>{for(let E=0;E<D.length;E++){const T=D[E],P=T.id||T.key;!T.children||T.children.length===0?!(P&&R.has(String(P)))&&T.modelId&&T.element_Id&&O.push({modelId:T.modelId,elementId:T.element_Id,show:!1}):T.children&&N(T.children)}};return N(B),O},y=d.computed(()=>{if(!a.value)return t.treeData;p.value=!0;const B=a.value.toLowerCase(),R=O=>{const N=[];for(let D=0;D<O.length;D++){const E=O[D],T=E.name||E.title||"",P=E.id||E.key,F=T.toLowerCase().includes(B);let V;E.children&&E.children.length>0&&(V=R(E.children)),(F||V&&V.length>0)&&N.push({key:String(P),title:T,children:V&&V.length>0?V:E.children?E.children:void 0,_raw:E,_searchMatched:F})}return N};return R(t.treeData)}),g=d.computed(()=>{if(!a.value)return[];const B=[],R=O=>{for(let N=0;N<O.length;N++){const D=O[N]?.children;D&&D.length>0&&(B.push(O[N]?.key),R(D))}};return R(y.value),B}),A=(B,R)=>a.value?(B||R||"").toLowerCase().includes(a.value.toLowerCase()):!1,v=B=>{if(!a.value)return B;const R=new RegExp(`(${a.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})`,"gi");return B.replace(R,'<mark class="search-highlight">$1</mark>')},w=qo(B=>{const R=typeof B=="object"?B.target?.value??"":B;S(R)},200),C=B=>{S(B)},S=B=>{a.value=B||"",n("search",a.value),B&&d.nextTick(()=>{l.value=[...g.value]})},I=B=>{l.value=B},x=(B,R)=>{c.value=B,n("check",c.value);const O=new Set(B.map(D=>String(D))),N=m(t.treeData,O);s?.value?.setComponentVisibility&&s.value.setComponentVisibility(N),s?.value?.onTreeCheck&&s.value.onTreeCheck(B,R)},M=B=>{o.value=B},L=()=>{n("close")},b=()=>{h.value&&(u.value=h.value.clientHeight)};return d.onMounted(()=>{h.value&&(b(),f=new ResizeObserver(()=>{b()}),f.observe(h.value))}),d.onUnmounted(()=>{f&&(f.disconnect(),f=null)}),(B,R)=>(d.openBlock(),d.createBlock(jr,{visible:o.value,title:"目录树",direction:"bottom","show-handle":!1,class:"mobile-bim-drawer","onUpdate:visible":M,onClose:L},{title:d.withCtx(()=>[...R[1]||(R[1]=[d.createElementVNode("div",{class:"custom-drawer-header"},[d.createElementVNode("span",null,"目录树")],-1)])]),default:d.withCtx(()=>[d.createElementVNode("div",jN,[R[3]||(R[3]=d.createElementVNode("div",{class:"nav-tabs"},[d.createElementVNode("div",{class:"nav-tab-item active"},"构件")],-1)),d.createElementVNode("div",WN,[d.createElementVNode("div",qN,[d.createVNode(d.unref(oe.Input),{value:a.value,"onUpdate:value":R[0]||(R[0]=O=>a.value=O),placeholder:"搜索构件","allow-clear":"",class:"custom-search",onSearch:C,onChange:d.unref(w)},null,8,["value","onChange"])])]),d.createElementVNode("div",{class:"tree-content-wrapper",ref_key:"treeContentRef",ref:h},[y.value.length>0?(d.openBlock(),d.createBlock(d.unref(oe.Tree),{key:0,"tree-data":y.value,"field-names":r,"expanded-keys":l.value,"checked-keys":c.value,checkable:"","block-node":"",class:"bim-dark-tree",onExpand:I,onCheck:x},{switcherIcon:d.withCtx(({expanded:O})=>[d.createElementVNode("span",{class:d.normalizeClass(["switcher-icon",{"is-open":O}])},[...R[2]||(R[2]=[d.createElementVNode("svg",{viewBox:"0 0 1024 1024",width:"12",height:"12"},[d.createElementVNode("path",{d:"M340.864 149.312l405.376 362.688-405.376 362.688z",fill:"currentColor"})],-1)])],2)]),title:d.withCtx(({name:O,title:N})=>[d.createElementVNode("span",{class:d.normalizeClass(["node-title",{"is-matched":A(O,N)}])},[d.createElementVNode("span",{innerHTML:v(O||N)},null,8,KN)],2)]),_:1},8,["tree-data","expanded-keys","checked-keys","onExpand","onCheck"])):d.createCommentVNode("",!0)],512)])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-c2e8ecbe"]]),XN={class:"tabs-header"},JN=["onClick"],ZN={class:"modal-content"},eL={key:0,class:"setting-section"},tL={class:"setting-item"},iL={class:"mobile-switch"},nL={class:"setting-item"},sL={class:"mobile-switch"},oL={class:"setting-item"},rL={class:"mobile-switch"},aL={key:1,class:"setting-section"},lL={class:"setting-item"},cL={class:"mobile-switch"},dL={key:0,class:"setting-item column"},hL={class:"setting-label-row"},uL={class:"setting-value"},fL={class:"setting-item"},pL={class:"mobile-switch"},mL={class:"setting-item"},gL={class:"mobile-switch"},yL={class:"setting-item column"},AL={class:"setting-label-row"},vL={class:"setting-value"},bL={class:"setting-item column"},wL={class:"setting-label-row"},CL={class:"setting-value"},EL={class:"setting-item column"},xL={class:"setting-label-row"},IL={class:"setting-value"},SL={class:"setting-item column"},ML={style:{display:"flex",gap:"8px","margin-bottom":"8px","flex-wrap":"wrap"}},TL=["onClick","title"],BL={style:{display:"flex",gap:"8px","align-items":"center"}},_m=Be(d.defineComponent({__name:"MobileSetting",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0}},emits:["update:visible","update:open","close","change"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:f=>{n("update:visible",f),n("update:open",f)}}),r=[{id:"GIS",label:"GIS"},{id:"RENDER",label:"渲染"}],a=d.ref("GIS"),l=d.ref({globe:!1,terrain:!1,depthTest:!1}),c=d.ref({shadows:!1,shadowDarkness:.5,environmentMap:!0,ambientOcclusion:!1,brightness:1,contrast:1,saturation:1,backgroundColor:"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)"}),h=["linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)","linear-gradient(0deg, #0f2027 0%, #203a43 50%, #2c5364 100%)","linear-gradient(0deg, #cfd9df 0%, #e2ebf0 100%)"],u=()=>{p()},p=()=>{n("close"),n("change",{gis:l.value,render:c.value})};return d.watch(()=>l.value.globe,f=>{s?.value&&s.value.setGlobeEnvironmentVisible?.(f)}),d.watch(()=>l.value.terrain,f=>{s?.value&&s.value.setTerrainEnable?.(f)}),d.watch(()=>l.value.depthTest,f=>{s?.value&&s.value.setDepthTestEnable?.(f)}),d.watch(()=>c.value.shadows,f=>{s?.value&&s.value.setShadowsEnable?.(f)}),d.watch(()=>c.value.shadowDarkness,f=>{s?.value&&s.value.setShadowDarkness?.(f)}),d.watch(()=>c.value.environmentMap,f=>{s?.value&&s.value.setEnvironmentMapEnable?.(f)}),d.watch(()=>c.value.ambientOcclusion,f=>{s?.value&&s.value.setAmbientOcclusion?.(f)}),d.watch(()=>[c.value.brightness,c.value.contrast,c.value.saturation],([f,m,y])=>{const g=s?.value;g&&(g.setModelColorAdjustment?g.setModelColorAdjustment({brightness:f,contrast:m,saturation:y}):g.setModelBrightness?.(f))}),d.watch(()=>c.value.backgroundColor,f=>{s?.value&&s.value.setBackgroundColor?.(f)}),d.watch(()=>o.value,f=>{f?document.body.style.overflow="hidden":document.body.style.overflow=""}),(f,m)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"setting-modal"},{default:d.withCtx(()=>[o.value?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-setting-overlay",onClick:u,onTouchmove:m[13]||(m[13]=d.withModifiers(()=>{},["prevent"]))},[d.createElementVNode("div",{class:"mobile-setting-modal",onClick:m[12]||(m[12]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("div",{class:"modal-header"},[m[15]||(m[15]=d.createElementVNode("span",{class:"modal-title"},"设置",-1)),d.createElementVNode("button",{class:"modal-close-btn",onClick:p},[...m[14]||(m[14]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),d.createElementVNode("div",XN,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(r,y=>d.createElementVNode("button",{key:y.id,class:d.normalizeClass(["tab-btn",{active:a.value===y.id}]),onClick:g=>a.value=y.id},d.toDisplayString(y.label),11,JN)),64))]),d.createElementVNode("div",ZN,[a.value==="GIS"?(d.openBlock(),d.createElementBlock("div",eL,[d.createElementVNode("div",tL,[m[17]||(m[17]=d.createElementVNode("span",{class:"setting-label"},"地球(含大气/日月/星空)",-1)),d.createElementVNode("label",iL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[0]||(m[0]=y=>l.value.globe=y)},null,512),[[d.vModelCheckbox,l.value.globe]]),m[16]||(m[16]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",nL,[m[19]||(m[19]=d.createElementVNode("span",{class:"setting-label"},"地形",-1)),d.createElementVNode("label",sL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[1]||(m[1]=y=>l.value.terrain=y)},null,512),[[d.vModelCheckbox,l.value.terrain]]),m[18]||(m[18]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",oL,[m[21]||(m[21]=d.createElementVNode("span",{class:"setting-label"},"地形遮挡",-1)),d.createElementVNode("label",rL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[2]||(m[2]=y=>l.value.depthTest=y)},null,512),[[d.vModelCheckbox,l.value.depthTest]]),m[20]||(m[20]=d.createElementVNode("span",{class:"slider"},null,-1))])])])):d.createCommentVNode("",!0),a.value==="RENDER"?(d.openBlock(),d.createElementBlock("div",aL,[d.createElementVNode("div",lL,[m[23]||(m[23]=d.createElementVNode("span",{class:"setting-label"},"阴影",-1)),d.createElementVNode("label",cL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[3]||(m[3]=y=>c.value.shadows=y)},null,512),[[d.vModelCheckbox,c.value.shadows]]),m[22]||(m[22]=d.createElementVNode("span",{class:"slider"},null,-1))])]),c.value.shadows?(d.openBlock(),d.createElementBlock("div",dL,[d.createElementVNode("div",hL,[m[24]||(m[24]=d.createElementVNode("span",{class:"setting-label"},"阴影暗度",-1)),d.createElementVNode("span",uL,d.toDisplayString(c.value.shadowDarkness.toFixed(2)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[4]||(m[4]=y=>c.value.shadowDarkness=y),min:"0",max:"1",step:"0.05",class:"mobile-slider"},null,512),[[d.vModelText,c.value.shadowDarkness,void 0,{number:!0}]])])):d.createCommentVNode("",!0),d.createElementVNode("div",fL,[m[26]||(m[26]=d.createElementVNode("span",{class:"setting-label"},"环境贴图",-1)),d.createElementVNode("label",pL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[5]||(m[5]=y=>c.value.environmentMap=y)},null,512),[[d.vModelCheckbox,c.value.environmentMap]]),m[25]||(m[25]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",mL,[m[28]||(m[28]=d.createElementVNode("span",{class:"setting-label"},"环境光遮蔽",-1)),d.createElementVNode("label",gL,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":m[6]||(m[6]=y=>c.value.ambientOcclusion=y)},null,512),[[d.vModelCheckbox,c.value.ambientOcclusion]]),m[27]||(m[27]=d.createElementVNode("span",{class:"slider"},null,-1))])]),d.createElementVNode("div",yL,[d.createElementVNode("div",AL,[m[29]||(m[29]=d.createElementVNode("span",{class:"setting-label"},"模型亮度",-1)),d.createElementVNode("span",vL,d.toDisplayString(c.value.brightness.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[7]||(m[7]=y=>c.value.brightness=y),min:"0",max:"5",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.brightness,void 0,{number:!0}]])]),d.createElementVNode("div",bL,[d.createElementVNode("div",wL,[m[30]||(m[30]=d.createElementVNode("span",{class:"setting-label"},"模型对比度",-1)),d.createElementVNode("span",CL,d.toDisplayString(c.value.contrast.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[8]||(m[8]=y=>c.value.contrast=y),min:"0.5",max:"2",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.contrast,void 0,{number:!0}]])]),d.createElementVNode("div",EL,[d.createElementVNode("div",xL,[m[31]||(m[31]=d.createElementVNode("span",{class:"setting-label"},"模型饱和度",-1)),d.createElementVNode("span",IL,d.toDisplayString(c.value.saturation.toFixed(1)),1)]),d.withDirectives(d.createElementVNode("input",{type:"range","onUpdate:modelValue":m[9]||(m[9]=y=>c.value.saturation=y),min:"0",max:"3",step:"0.1",class:"mobile-slider"},null,512),[[d.vModelText,c.value.saturation,void 0,{number:!0}]])]),d.createElementVNode("div",SL,[m[32]||(m[32]=d.createElementVNode("span",{class:"setting-label"},"背景颜色",-1)),d.createElementVNode("div",ML,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(h,(y,g)=>d.createElementVNode("div",{key:g,style:d.normalizeStyle({background:y,width:"60px",height:"40px",borderRadius:"6px",cursor:"pointer",border:"2px solid rgba(255,255,255,0.2)",flexShrink:0}),onClick:A=>c.value.backgroundColor=y,title:"预设 "+(g+1)},null,12,TL)),64))]),d.createElementVNode("div",BL,[d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":m[10]||(m[10]=y=>c.value.backgroundColor=y),style:{width:"50px",height:"36px",padding:"0",border:"1px solid rgba(255,255,255,0.3)","border-radius":"6px",cursor:"pointer"}},null,512),[[d.vModelText,c.value.backgroundColor]]),d.withDirectives(d.createElementVNode("input",{"onUpdate:modelValue":m[11]||(m[11]=y=>c.value.backgroundColor=y),type:"text",class:"mobile-input",placeholder:"CSS 颜色值",style:{flex:"1"}},null,512),[[d.vModelText,c.value.backgroundColor]])])])])):d.createCommentVNode("",!0)])])],32)):d.createCommentVNode("",!0)]),_:1})]))}}),[["__scopeId","data-v-dcec8ca4"]]),_L={class:"mobile-section-container"},kL={class:"section-main"},PL={class:"toggle-row"},DL={class:"slider-section"},NL={class:"slider-header"},LL={class:"slider-label"},RL={class:"slider-value"},FL={class:"quick-btns"},OL={class:"section-models"},GL={class:"models-header"},UL={class:"models-count"},km=Be(d.defineComponent({__name:"MobileSection",props:{visible:{type:Boolean,default:!1},open:{type:Boolean,default:void 0},modelList:{default:()=>[]}},emits:["update:visible","update:open","close","visibility-change","mode-change","axis-change","model-change"],setup(i,{emit:e}){const t=i,n=e,s=d.computed({get:()=>t.open!==void 0?t.open:t.visible,set:b=>{n("update:visible",b),n("update:open",b)}}),o=d.ref(!0),r=d.ref("Box"),a=d.ref("X"),l=d.ref([]),c=d.ref([0,100]),h=d.ref([0,100]),u=d.ref([0,100]),p=[{key:"X",label:"X轴"},{key:"Y",label:"Y轴"},{key:"Z",label:"Z轴"}],f=d.computed(()=>p.find(B=>B.key===a.value)?.label||""),m=d.computed({get:()=>{switch(a.value){case"X":return c.value[1];case"Y":return h.value[1];case"Z":return u.value[1];default:return 50}},set:b=>{switch(a.value){case"X":c.value[1]=b??0;break;case"Y":h.value[1]=b??0;break;case"Z":u.value[1]=b??0;break}}}),y=d.computed(()=>{switch(a.value){case"X":return[-50,50];case"Y":return[-50,50];case"Z":return[0,100];default:return[0,100]}}),g=d.computed(()=>m.value?.toFixed(1)??"0.0"),A=d.computed(()=>l.value.length===t.modelList.length),v=b=>{s.value=b},w=()=>{n("close")},C=()=>{n("visibility-change",o.value)},S=b=>{r.value=b,n("mode-change",b)},I=()=>{m.value=50,n("axis-change",a.value,50)},x=()=>{const b=y.value;m.value=b&&b.length>=2?(b[0]+b[1])/2:50,n("axis-change",a.value,m.value)},M=()=>{n("model-change",l.value)},L=()=>{A.value?l.value=[]:l.value=t.modelList.map(b=>b.modelId),n("model-change",l.value)};return(b,B)=>(d.openBlock(),d.createBlock(jr,{visible:s.value,title:"剖切分析",direction:"bottom","show-handle":!0,"onUpdate:visible":v,onClose:w},{default:d.withCtx(()=>[d.createElementVNode("div",_L,[d.createElementVNode("div",kL,[d.createElementVNode("div",PL,[B[6]||(B[6]=d.createElementVNode("span",{class:"toggle-label"},"显示剖切盒",-1)),d.createVNode(d.unref(oe.Switch),{checked:o.value,"onUpdate:checked":B[0]||(B[0]=R=>o.value=R),onChange:C},null,8,["checked"])]),d.createVNode(d.unref(oe.RadioGroup),{value:r.value,"onUpdate:value":B[1]||(B[1]=R=>r.value=R),"button-style":"solid",class:"mode-selector",onChange:B[2]||(B[2]=R=>S(R.target.value))},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.RadioButton),{value:"Box"},{default:d.withCtx(()=>[...B[7]||(B[7]=[d.createTextVNode("剖切盒",-1)])]),_:1})]),_:1},8,["value"]),d.createVNode(d.unref(oe.RadioGroup),{value:a.value,"onUpdate:value":B[3]||(B[3]=R=>a.value=R),"button-style":"solid",class:"axis-selector"},{default:d.withCtx(()=>[d.createVNode(d.unref(oe.RadioButton),{value:"X"},{default:d.withCtx(()=>[...B[8]||(B[8]=[d.createTextVNode("X轴",-1)])]),_:1}),d.createVNode(d.unref(oe.RadioButton),{value:"Y"},{default:d.withCtx(()=>[...B[9]||(B[9]=[d.createTextVNode("Y轴",-1)])]),_:1}),d.createVNode(d.unref(oe.RadioButton),{value:"Z"},{default:d.withCtx(()=>[...B[10]||(B[10]=[d.createTextVNode("Z轴",-1)])]),_:1})]),_:1},8,["value"]),d.createElementVNode("div",DL,[d.createElementVNode("div",NL,[d.createElementVNode("span",LL,d.toDisplayString(f.value)+" 轴范围",1),d.createElementVNode("span",RL,d.toDisplayString(g.value),1)]),d.createVNode(d.unref(oe.Slider),{Value:m.value,"onUpdate:Value":B[4]||(B[4]=R=>m.value=R),min:y.value[0],max:y.value[1],step:.5,class:"section-slider"},null,8,["Value","min","max"]),d.createElementVNode("div",FL,[d.createVNode(d.unref(oe.Button),{size:"small",onClick:I},{default:d.withCtx(()=>[...B[11]||(B[11]=[d.createTextVNode("重置",-1)])]),_:1}),d.createVNode(d.unref(oe.Button),{size:"small",onClick:x},{default:d.withCtx(()=>[...B[12]||(B[12]=[d.createTextVNode("居中",-1)])]),_:1})])])]),d.createElementVNode("div",OL,[d.createElementVNode("div",GL,[B[13]||(B[13]=d.createElementVNode("span",{class:"models-title"},"选择模型",-1)),d.createElementVNode("span",UL,d.toDisplayString(l.value.length)+"/"+d.toDisplayString(i.modelList.length),1)]),d.createVNode(d.unref(oe.CheckboxGroup),{value:l.value,"onUpdate:value":B[5]||(B[5]=R=>l.value=R),class:"models-list",onChange:M},{default:d.withCtx(()=>[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(i.modelList,R=>(d.openBlock(),d.createBlock(d.unref(oe.Checkbox),{key:R.modelId,value:R.modelId,class:"model-item"},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(R.modelName),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),i.modelList.length>1?(d.openBlock(),d.createBlock(d.unref(oe.Button),{key:0,size:"small",type:"link",onClick:L},{default:d.withCtx(()=>[d.createTextVNode(d.toDisplayString(A.value?"取消全选":"全选"),1)]),_:1})):d.createCommentVNode("",!0)])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-cdacec58"]]),VL={key:0,class:"mobile-measure-root"},QL={key:0,class:"result-card"},zL={class:"card-header-row"},HL={class:"result-main"},YL={class:"type-label"},$L={class:"value-highlight"},jL={key:0,class:"coords-grid"},WL={class:"coord-item"},qL={class:"coord-item"},KL={class:"coord-item"},XL={class:"measure-toolbar-container"},JL={class:"tools-inner-row"},ZL=["onClick"],e8=["innerHTML"],Pm=Be(d.defineComponent({__name:"MobileMeasurement",props:{visible:{type:Boolean},defaultTool:{}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods");let o=null,r=!1;const a=d.ref(null),l=d.ref(null),c=d.computed(()=>t.visible&&a.value!==null),h=[{id:"distance",svg:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 17l6-6 4 4 8-8"/></svg>'},{id:"angle",svg:'<svg viewBox="0 0 24 24" width="22" height="22" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 20H4L14 4"/></svg>'},{id:"area",svg:'<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg>'}],u={distance:"距离",angle:"角度",area:"面积"},p=d.computed(()=>a.value?u[a.value]||"":l.value&&u[l.value.type]||""),f=d.computed(()=>{if(!l.value)return a.value==="distance"?"-- m":a.value==="angle"?"--°":a.value==="area"?"-- m²":"";const C=l.value;return C.type==="distance"?`${(C.dist??0).toFixed(3)} m`:C.type==="angle"?`${(C.angle??0).toFixed(2)}°`:C.type==="area"?`${(C.area??0).toFixed(2)} m²`:""}),m=d.computed(()=>l.value?.type||a.value),y=C=>C===void 0?"--":C.toFixed(3),g=()=>{if(o)return;const C=s?.value;C?.getViewer&&(o=new uc({viewer:C.getViewer(),cesium:C.getCesium()}),o.onMeasure=S=>{r||(l.value=S)})},A=C=>{g(),a.value===C?(a.value=null,o?.stop(),s?.value?.baseCompt?.enableSelection()):(a.value=C,l.value=null,o?.start(C),s?.value?.baseCompt?.disableSelection())},v=()=>{o?.clearAll(),o?.stop(),a.value=null,l.value=null,s?.value?.baseCompt?.enableSelection()},w=()=>{v(),n("update:visible",!1),n("close")};return d.watch(()=>t.visible,C=>{C?(g(),t.defaultTool&&A(t.defaultTool)):v()}),d.onUnmounted(()=>{r=!0,o?.destroy()}),(C,S)=>(d.openBlock(),d.createBlock(d.Transition,{name:"measure-fade"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",VL,[d.createVNode(d.Transition,{name:"card-slide"},{default:d.withCtx(()=>[c.value?(d.openBlock(),d.createElementBlock("div",QL,[d.createElementVNode("div",zL,[d.createElementVNode("div",HL,[d.createElementVNode("span",YL,d.toDisplayString(p.value)+":",1),d.createElementVNode("span",$L,d.toDisplayString(f.value),1)]),d.createElementVNode("button",{class:"clear-action-btn",onClick:v,title:"清空"},[...S[0]||(S[0]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2"},[d.createElementVNode("polyline",{points:"3 6 5 6 21 6"}),d.createElementVNode("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])])]),m.value==="distance"?(d.openBlock(),d.createElementBlock("div",jL,[d.createElementVNode("div",WL,[S[1]||(S[1]=d.createElementVNode("span",{class:"label-x"},"X:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dx)),1)]),d.createElementVNode("div",qL,[S[2]||(S[2]=d.createElementVNode("span",{class:"label-y"},"Y:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dy)),1)]),d.createElementVNode("div",KL,[S[3]||(S[3]=d.createElementVNode("span",{class:"label-z"},"Z:",-1)),d.createTextVNode(" "+d.toDisplayString(y(l.value?.dz)),1)])])):d.createCommentVNode("",!0)])):d.createCommentVNode("",!0)]),_:1}),d.createElementVNode("div",XL,[d.createElementVNode("button",{class:"nav-back-icon",onClick:w},[...S[4]||(S[4]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"3"},[d.createElementVNode("polyline",{points:"15 18 9 12 15 6"})],-1)])]),d.createElementVNode("div",JL,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(h,I=>d.createElementVNode("button",{key:I.id,class:d.normalizeClass(["sub-icon-box",{active:a.value===I.id}]),onClick:x=>A(I.id)},[d.createElementVNode("span",{class:"icon-svg",innerHTML:I.svg},null,8,e8)],10,ZL)),64))])])])):d.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-7ff442b7"]]),t8={class:"joystick-base"},i8={class:"leitingbim-control-panel"},n8={class:"ctrl-row zoom-row"},s8={class:"zoom-label"},o8={class:"ctrl-grid"},r8={class:"gravity-toggle"},a8={class:"arrow-col"},Ac=40,Dm=Be(d.defineComponent({__name:"MobilePlayer",props:{visible:{type:Boolean}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods");let o=!1;const r=d.ref(null),a=d.ref(0),l=d.ref(0),c=d.ref(!1),h=d.ref({x:0,y:0}),u=[.25,.5,1,2,4,8,16],p=d.ref(2),f=d.ref(!0);let m=null;const y=d.computed(()=>({transform:`translate(${a.value}px, ${l.value}px)`})),g=d.computed(()=>`${u[p.value]}X`),A=(G,k)=>{const _=[];return(Math.abs(G)>10||Math.abs(k)>10)&&(k<-10&&_.push("moveFront"),k>10&&_.push("moveBack"),G<-10&&_.push("moveLeft"),G>10&&_.push("moveRight")),_},v=()=>{o||["moveFront","moveBack","moveLeft","moveRight"].forEach(G=>{s?.value?.setPlayerAction?.(G,!1)})},w=G=>{if(o)return;["moveFront","moveBack","moveLeft","moveRight"].forEach(_=>{const U=G.includes(_);s?.value?.setPlayerAction?.(_,U)})},C=G=>{const k=G.touches[0],_=r.value.getBoundingClientRect();h.value={x:_.left+_.width/2,y:_.top+_.height/2},c.value=!0,k&&I(k.clientX,k.clientY)},S=G=>{if(!c.value)return;const k=G.touches[0];k&&I(k.clientX,k.clientY)},I=(G,k)=>{if(o)return;let _=G-h.value.x,U=k-h.value.y;const H=Math.sqrt(_*_+U*U);H>Ac&&(_=_/H*Ac,U=U/H*Ac),a.value=_,l.value=U;const q=A(_,U);w(q)},x=()=>{c.value=!1,a.value=0,l.value=0,v()},M=()=>{B(),m=setInterval(()=>{p.value<u.length-1&&(p.value++,R())},150)},L=()=>{B(),m=setInterval(()=>{p.value>0&&(p.value--,R())},150)},b=()=>{B()},B=()=>{m&&(clearInterval(m),m=null)},R=()=>{o||s?.value?.setPlayerSpeed?.(u[p.value])},O=()=>{s?.value?.setPlayerAction?.("moveUp",!0)},N=()=>{s?.value?.setPlayerAction?.("moveUp",!1)},D=()=>{s?.value?.setPlayerAction?.("moveDown",!0)},E=()=>{s?.value?.setPlayerAction?.("moveDown",!1)},T=()=>{s?.value?.setPlayerParams?.({gravityTest:f.value,collisionTest:!0})},P=()=>{V(),n("update:visible",!1),n("close")},F=async()=>{if(!o)try{if(!s?.value){setTimeout(()=>F(),150);return}s.value.startCameraRoam&&s.value.startCameraRoam(),s.value.setPlayerSpeed?.(u[p.value])}catch(G){console.error("MobilePlayer startPlayer error:",G)}},V=()=>{v(),o||s?.value?.closePlayer?.(),B()};return d.watch(()=>t.visible,G=>{o||(G?F():V())},{immediate:!0}),d.onUnmounted(()=>{o=!0,V()}),(G,k)=>i.visible?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-player-overlay",onTouchmove:k[1]||(k[1]=d.withModifiers(()=>{},["prevent"]))},[d.createElementVNode("button",{class:"player-exit-btn",onClick:P}," 退出 "),d.createElementVNode("div",{class:"joystick-zone",ref_key:"joystickRef",ref:r,onTouchstart:d.withModifiers(C,["prevent"]),onTouchmove:d.withModifiers(S,["prevent"]),onTouchend:d.withModifiers(x,["prevent"]),onTouchcancel:d.withModifiers(x,["prevent"])},[d.createElementVNode("div",t8,[d.createElementVNode("div",{class:"joystick-knob",style:d.normalizeStyle(y.value)},null,4)])],544),d.createElementVNode("div",i8,[d.createElementVNode("div",n8,[d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-sm",onTouchstart:d.withModifiers(L,["prevent"]),onTouchend:d.withModifiers(b,["prevent"])},"−",32),d.createElementVNode("span",s8,d.toDisplayString(g.value),1),d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-sm",onTouchstart:d.withModifiers(M,["prevent"]),onTouchend:d.withModifiers(b,["prevent"])},"+",32)]),d.createElementVNode("div",o8,[d.createElementVNode("label",r8,[d.withDirectives(d.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":k[0]||(k[0]=_=>f.value=_),onChange:T},null,544),[[d.vModelCheckbox,f.value]]),k[2]||(k[2]=d.createElementVNode("span",{class:"toggle-checkbox"},null,-1)),k[3]||(k[3]=d.createElementVNode("span",{class:"toggle-label"},"重力",-1))]),d.createElementVNode("div",a8,[d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-arrow",onTouchstart:d.withModifiers(O,["prevent"]),onTouchend:d.withModifiers(N,["prevent"])},[...k[4]||(k[4]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"18 15 12 9 6 15"})],-1)])],32),d.createElementVNode("button",{class:"ctrl-btn ctrl-btn-arrow",onTouchstart:d.withModifiers(D,["prevent"]),onTouchend:d.withModifiers(E,["prevent"])},[...k[5]||(k[5]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)])],32)])])])],32)):d.createCommentVNode("",!0)}}),[["__scopeId","data-v-d80a8120"]]),l8={key:0,class:"mobile-info-sheet-wrapper"},c8={class:"info-body"},d8={key:0,class:"empty-hint"},h8={key:0,class:"component-title"},u8={class:"group-list"},f8=["onClick"],p8={class:"group-name"},m8={key:0,class:"group-content"},g8={class:"kv-key"},y8={class:"kv-value"},Nm=Be(d.defineComponent({__name:"MobileInfo",props:{visible:{type:Boolean}},emits:["update:visible","close"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref([]),r=d.ref(!1),a=d.ref(new Set),l=d.ref([]);let c=!1;const h=d.computed({get:()=>!!t.visible,set:S=>{n("update:visible",S)}}),u=S=>({elementID:"构件ID",elementName:"构件名",categoryName:"类别",familySymbolName:"族类型",levelName:"标高",modelName:"文件名",length:"长",width:"宽",height:"高"})[S]||S,p=["elementName","elementID","modelName","length","width","height","levelName","categoryName","familySymbolName"],f=(S,I)=>`${S}__${I}`,m=(S,I)=>a.value.has(f(S,I)),y=(S,I)=>{const x=f(S,I);a.value.has(x)?a.value.delete(x):a.value.add(x)},g=()=>{const S=new Set;o.value.forEach(I=>{I.groups.forEach(x=>{S.add(f(I.id,x.name))})}),a.value=S},A=()=>{h.value=!1,n("close")},v=async S=>{if(c)return;if(l.value=S||[],!S||S.length===0){o.value=[];return}let I=S;S.length>10&&(pe.warning(`选中构件数量过多(${S.length}个),仅显示前10个`),I=S.slice(0,10));const x=s?.value;let M=x?.getMapTileset?x.getMapTileset():{};r.value=!0;const L=new Set;if(I.forEach(B=>{const R=M[B.modelId];R&&R.leiting&&!R.leiting?.node?.nodeExtras&&R.leiting.model?.nodeUrl&&L.add(B.modelId)}),L.size>0&&x?._loadNodeDetailsForModel)try{await Promise.all(Array.from(L).map(B=>x._loadNodeDetailsForModel(B)))}catch(B){console.error("Failed to load node details",B)}if(c)return;M=x?.getMapTileset?x.getMapTileset():{};const b=[];I.forEach((B,R)=>{const N=M[B.modelId]?.leiting||{};let D={modelName:N.model?.modelId||B.modelId};D.elementID||(D.elementID=B.elementId);let E=null;const T=N.node?.nodeExtras?.element||N.node?.nodeExtras;if(T){const V=D.elementID;T[V]&&(E=T[V])}E&&E.box3&&(D.length=`${E.box3.length?.toFixed(2)||0}米`,D.width=`${E.box3.width?.toFixed(2)||0}米`,D.height=`${E.box3.height?.toFixed(2)||0}米`);const P=[];E&&(E.name&&(D.elementName=E.name),E.categoryName&&(D.categoryName=E.categoryName),E.familySymbolName&&(D.familySymbolName=E.familySymbolName),E.levelName&&(D.levelName=E.levelName));const F={};if(p.forEach(V=>{D[V]!==void 0&&(F[V]=D[V])}),P.push({name:"基本属性",params:F}),E){const V=Array.isArray(E)?E:Array.isArray(E?.parameters)?E.parameters:null;if(V)V.flat().forEach(k=>{if(k&&k.GroupName&&Array.isArray(k.Parameters)){const _={};k.Parameters.forEach(U=>{U.name&&(_[U.name]=U.value??"")}),Object.keys(_).length>0&&P.push({name:k.GroupName,params:_})}});else{let G=!1;if(Object.keys(E).forEach(k=>{E[k]&&typeof E[k]=="object"&&!Array.isArray(E[k])&&(G=!0,P.push({name:k,params:E[k]}))}),!G){const k={};Object.keys(E).forEach(_=>{if(!p.includes(_)&&_!=="batchId"){const U=E[_];k[_]=typeof U=="string"&&U.length>500?U.substring(0,500)+"...":U}}),Object.keys(k).length>0&&P.push({name:"其他属性",params:k})}}}b.push({id:R,title:`${D.modelName}${D.elementName?` - ${D.elementName}`:""}`,groups:P})}),o.value=b,r.value=!1,!c&&b.length>0&&g()};let w=!1;const C=()=>{if(w)return;const S=s?.value;S&&S.selectionChange&&(S.selectionChange(v),w=!0)};return d.watch(()=>s?.value,()=>C(),{deep:!0,immediate:!0}),d.watch(h,S=>{S&&(C(),l.value.length>0&&v(l.value))}),d.onUnmounted(()=>{c=!0}),(S,I)=>(d.openBlock(),d.createBlock(d.Transition,{name:"info-slide"},{default:d.withCtx(()=>[i.visible?(d.openBlock(),d.createElementBlock("div",l8,[d.createElementVNode("div",{class:"mobile-info-sheet",onTouchmove:I[0]||(I[0]=d.withModifiers(()=>{},["stop"])),onClick:I[1]||(I[1]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("div",{class:"info-header"},[I[3]||(I[3]=d.createElementVNode("span",{class:"info-title"},"构件详情",-1)),d.createElementVNode("button",{class:"info-close-btn",onClick:A},[...I[2]||(I[2]=[d.createElementVNode("svg",{viewBox:"0 0 24 24",width:"20",height:"20",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),I[5]||(I[5]=d.createElementVNode("div",{class:"info-tabs"},[d.createElementVNode("span",{class:"tab-item active"},"属性")],-1)),d.createElementVNode("div",c8,[d.createVNode(d.unref(oe.Spin),{spinning:r.value},{default:d.withCtx(()=>[o.value.length===0&&!r.value?(d.openBlock(),d.createElementBlock("div",d8," 暂无数据 ")):d.createCommentVNode("",!0),(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(o.value,x=>(d.openBlock(),d.createElementBlock("div",{key:x.id,class:"component-block"},[o.value.length>1?(d.openBlock(),d.createElementBlock("div",h8,d.toDisplayString(x.title),1)):d.createCommentVNode("",!0),d.createElementVNode("div",u8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(x.groups,(M,L)=>(d.openBlock(),d.createElementBlock("div",{key:`${x.id}-${L}`,class:"group-item"},[d.createElementVNode("button",{class:d.normalizeClass(["group-header",{expanded:m(x.id,M.name)}]),onClick:b=>y(x.id,M.name)},[I[4]||(I[4]=d.createElementVNode("svg",{class:"arrow-icon",viewBox:"0 0 16 16",width:"12",height:"12",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"},[d.createElementVNode("polyline",{points:"4 6 8 10 12 6"})],-1)),d.createElementVNode("span",p8,d.toDisplayString(M.name),1)],10,f8),d.createVNode(d.Transition,{name:"group-expand"},{default:d.withCtx(()=>[m(x.id,M.name)?(d.openBlock(),d.createElementBlock("div",m8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(M.params,(b,B)=>(d.openBlock(),d.createElementBlock("div",{key:B,class:"kv-row"},[d.createElementVNode("span",g8,d.toDisplayString(u(String(B))),1),d.createElementVNode("span",y8,d.toDisplayString(b),1)]))),128))])):d.createCommentVNode("",!0)]),_:2},1024)]))),128))])]))),128))]),_:1},8,["spinning"])])],32)])):d.createCommentVNode("",!0)]),_:1}))}}),[["__scopeId","data-v-c4855585"]]),A8={class:"mobile-cad-layer-container"},v8={class:"model-selector"},b8={class:"layer-list-container"},w8={class:"list-header"},C8={class:"col-check"},E8=["checked"],x8={class:"list-body"},I8=["onClick"],S8=["checked","onChange"],M8={class:"col-index"},T8=["title"],B8={class:"col-color"},_8={key:0,class:"empty-state"},k8=Be(d.defineComponent({__name:"MobileCadLayer",props:{visible:{type:Boolean,default:!1},currentModelId:{type:String,default:""}},emits:["update:visible","handleCloseCardByCadCard"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods",d.ref({})),o=d.ref(""),r=d.ref([]),a=d.computed({get:()=>t.visible,set:C=>n("update:visible",C)}),l=()=>{s.value&&s.value.getDxfModels&&(r.value=s.value.getDxfModels().map(C=>({modelId:C.modelId,modelName:C.modelName}))||[])},c=d.computed(()=>r.value.map(C=>({value:C.modelId,label:C.modelName}))),h=d.ref([]),u=d.ref([]),p=d.computed(()=>h.value.length>0&&u.value.length===h.value.length),f=({modelId:C})=>{if(h.value=[],u.value=[],s.value&&s.value.getDxfLayers){const S=s.value.getDxfLayers({modelId:C});S&&Object.keys(S).forEach((I,x)=>{S[I].length&&(h.value.push({index:x+1,layerName:I,layerColor:S[I][0].color||"#ffffff",key:I}),u.value.push(I))})}},m=C=>{o.value=C,f({modelId:C})},y=C=>{C.target.checked?u.value=h.value.map(I=>I.key):u.value=[],A()},g=(C,S)=>{S.target.checked?u.value.includes(C)||u.value.push(C):u.value=u.value.filter(x=>x!==C),A()},A=()=>{if(s.value&&s.value.showDxfLayer&&(s.value.showDxfLayer({modelId:o.value,show:!0,layers:u.value}),s.value.getDxfLayers)){const C=s.value.getDxfLayers({modelId:o.value});if(C){const S=Object.keys(C).filter(I=>!u.value.includes(I));s.value.showDxfLayer({modelId:o.value,show:!1,layers:S})}}},v=C=>{a.value=C},w=()=>{n("update:visible",!1),n("handleCloseCardByCadCard")};return d.watch(()=>t.visible,C=>{C&&(l(),t.currentModelId?(o.value=t.currentModelId,f({modelId:t.currentModelId})):c.value.length>0&&(o.value=c.value[0]?.value,f({modelId:o.value})))}),d.watch(()=>t.currentModelId,C=>{C&&t.visible&&(o.value=C,f({modelId:C}))}),(C,S)=>(d.openBlock(),d.createBlock(jr,{visible:a.value,title:"CAD图层",direction:"bottom","show-handle":!0,height:"70vh",class:"mobile-cad-layer-drawer","onUpdate:visible":v,onClose:w},{default:d.withCtx(()=>[d.createElementVNode("div",A8,[d.createElementVNode("div",v8,[S[3]||(S[3]=d.createElementVNode("span",{class:"selector-label"},"图纸:",-1)),d.createVNode(d.unref(oe.Select),{value:o.value,"onUpdate:value":S[0]||(S[0]=I=>o.value=I),options:c.value,onChange:S[1]||(S[1]=I=>m(I)),placeholder:"选择模型",class:"mobile-model-select",popupClassName:"mobile-cad-select-dropdown",size:"large"},null,8,["value","options"])]),d.createElementVNode("div",b8,[d.createElementVNode("div",w8,[d.createElementVNode("div",C8,[d.createElementVNode("input",{type:"checkbox",checked:p.value,onChange:y,class:"mobile-checkbox"},null,40,E8)]),S[4]||(S[4]=d.createElementVNode("div",{class:"col-index"},"序号",-1)),S[5]||(S[5]=d.createElementVNode("div",{class:"col-name"},"图层名称",-1)),S[6]||(S[6]=d.createElementVNode("div",{class:"col-color"},"颜色",-1))]),d.createElementVNode("div",x8,[(d.openBlock(!0),d.createElementBlock(d.Fragment,null,d.renderList(h.value,I=>(d.openBlock(),d.createElementBlock("div",{key:I.key,class:"list-item",onClick:x=>g(I.key,{target:{checked:!u.value.includes(I.key)}})},[d.createElementVNode("div",{class:"col-check",onClick:S[2]||(S[2]=d.withModifiers(()=>{},["stop"]))},[d.createElementVNode("input",{type:"checkbox",checked:u.value.includes(I.key),onChange:x=>g(I.key,x),class:"mobile-checkbox"},null,40,S8)]),d.createElementVNode("div",M8,d.toDisplayString(I.index),1),d.createElementVNode("div",{class:"col-name",title:I.layerName},d.toDisplayString(I.layerName),9,T8),d.createElementVNode("div",B8,[d.createElementVNode("div",{class:"color-swatch",style:d.normalizeStyle({backgroundColor:I.layerColor})},null,4)])],8,I8))),128)),h.value.length===0?(d.openBlock(),d.createElementBlock("div",_8,[...S[7]||(S[7]=[d.createElementVNode("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5"},[d.createElementVNode("path",{d:"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"})],-1),d.createElementVNode("p",null,"暂无图层信息",-1)])])):d.createCommentVNode("",!0)])])])]),_:1},8,["visible"]))}}),[["__scopeId","data-v-63da9a15"]]),P8={class:"mobile-annotation-panel"},D8={class:"tools-section"},N8={class:"tools-grid"},L8={class:"style-section"},R8={class:"style-item"},F8={class:"color-picker-wrapper"},O8={class:"style-item"},G8={class:"line-width-options"},U8=["onClick"],V8={class:"width-label"},Q8=Be(d.defineComponent({__name:"MobileAnnotationCard",props:{visible:{type:Boolean,default:!1}},emits:["update:visible"],setup(i,{emit:e}){const t=i,n=e,s=d.inject("leitingMethods"),o=d.ref(""),r=d.ref("#ff0000"),a=d.ref(3),l=d.computed({get:()=>t.visible,set:v=>n("update:visible",v)}),c=[{value:6,label:"粗"},{value:3,label:"中"},{value:1,label:"细"}],h=()=>s?.value?.getAnnotationInstance?s.value.getAnnotationInstance():null,u=()=>{const v=h();if(v&&(typeof v.hideEntityOutline=="function"&&v.hideEntityOutline(),v.selectedEntityObj=null,v.drawTool&&typeof v.drawTool.deactivate=="function"))try{v.drawTool.deactivate()}catch(w){console.warn("Failed to deactivate drawTool:",w)}o.value="",n("update:visible",!1)},p=v=>{if(o.value===v){o.value="";return}o.value=v;const w=h();if(w)switch(v){case"freehandLine":w.startFreehandLine();break;case"arrow":w.startArrow();break;case"straightLine":w.startStraightLine();break;case"rectangle":w.startRectangle();break;case"ellipse":w.startEllipse();break}},f=()=>{const v=h();v&&(v.setCurrentColor(r.value),v.changeColor(r.value))},m=v=>{a.value=v;const w=h();w&&(w.setCurrentWidth(v),w.changeWidth(v))},y=()=>{const v=h();v&&v.deleteSelectedEntity()},g=()=>{const v=h();v&&v.clearAll()},A=()=>{if(s?.value?.saveAnnotations){s.value.saveAnnotations();return}const v=h();v&&v.saveAnnotations()};return(v,w)=>(d.openBlock(),d.createBlock(d.Teleport,{to:"body"},[d.createVNode(d.Transition,{name:"annotation-slide"},{default:d.withCtx(()=>[l.value?(d.openBlock(),d.createElementBlock("div",{key:0,class:"mobile-annotation-overlay",onClick:d.withModifiers(u,["self"])},[d.createElementVNode("div",P8,[d.createElementVNode("div",{class:"panel-header"},[w[7]||(w[7]=d.createElementVNode("span",{class:"panel-title"},"标注",-1)),d.createElementVNode("button",{class:"panel-close-btn",onClick:u},[...w[6]||(w[6]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1)])])]),d.createElementVNode("div",D8,[w[13]||(w[13]=d.createElementVNode("div",{class:"section-label"},"绘图工具",-1)),d.createElementVNode("div",N8,[d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="freehandLine"}]),onClick:w[0]||(w[0]=C=>p("freehandLine"))},[...w[8]||(w[8]=[d.createElementVNode("div",{class:"tool-icon"},"✏️",-1),d.createElementVNode("span",{class:"tool-label"},"手绘线",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="arrow"}]),onClick:w[1]||(w[1]=C=>p("arrow"))},[...w[9]||(w[9]=[d.createElementVNode("div",{class:"tool-icon"},"↗️",-1),d.createElementVNode("span",{class:"tool-label"},"箭头",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="straightLine"}]),onClick:w[2]||(w[2]=C=>p("straightLine"))},[...w[10]||(w[10]=[d.createElementVNode("div",{class:"tool-icon"},"📏",-1),d.createElementVNode("span",{class:"tool-label"},"直线",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="rectangle"}]),onClick:w[3]||(w[3]=C=>p("rectangle"))},[...w[11]||(w[11]=[d.createElementVNode("div",{class:"tool-icon"},"▭",-1),d.createElementVNode("span",{class:"tool-label"},"矩形",-1)])],2),d.createElementVNode("button",{class:d.normalizeClass(["tool-btn",{active:o.value==="ellipse"}]),onClick:w[4]||(w[4]=C=>p("ellipse"))},[...w[12]||(w[12]=[d.createElementVNode("div",{class:"tool-icon"},"⭕",-1),d.createElementVNode("span",{class:"tool-label"},"椭圆",-1)])],2)])]),w[21]||(w[21]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",L8,[w[16]||(w[16]=d.createElementVNode("div",{class:"section-label"},"样式设置",-1)),d.createElementVNode("div",R8,[w[14]||(w[14]=d.createElementVNode("span",{class:"style-label"},"颜色",-1)),d.createElementVNode("div",F8,[d.createElementVNode("div",{class:"color-preview",style:d.normalizeStyle({backgroundColor:r.value})},null,4),d.withDirectives(d.createElementVNode("input",{type:"color","onUpdate:modelValue":w[5]||(w[5]=C=>r.value=C),onChange:f,class:"color-input"},null,544),[[d.vModelText,r.value]])])]),d.createElementVNode("div",O8,[w[15]||(w[15]=d.createElementVNode("span",{class:"style-label"},"线宽",-1)),d.createElementVNode("div",G8,[(d.openBlock(),d.createElementBlock(d.Fragment,null,d.renderList(c,C=>d.createElementVNode("button",{key:C.value,class:d.normalizeClass(["width-btn",{active:a.value===C.value}]),onClick:S=>m(C.value)},[d.createElementVNode("div",{class:"width-line",style:d.normalizeStyle({height:C.value+"px",backgroundColor:a.value===C.value?"#00e5d1":"#fff"})},null,4),d.createElementVNode("span",V8,d.toDisplayString(C.label),1)],10,U8)),64))])])]),w[22]||(w[22]=d.createElementVNode("div",{class:"divider"},null,-1)),d.createElementVNode("div",{class:"action-section"},[w[20]||(w[20]=d.createElementVNode("div",{class:"section-label"},"操作",-1)),d.createElementVNode("div",{class:"action-grid"},[d.createElementVNode("button",{class:"action-btn delete-btn",onClick:y},[...w[17]||(w[17]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("polyline",{points:"3 6 5 6 21 6"}),d.createElementVNode("path",{d:"M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2"})],-1),d.createElementVNode("span",null,"删除",-1)])]),d.createElementVNode("button",{class:"action-btn clear-btn",onClick:g},[...w[18]||(w[18]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),d.createElementVNode("line",{x1:"6",y1:"6",x2:"18",y2:"18"})],-1),d.createElementVNode("span",null,"清空",-1)])]),d.createElementVNode("button",{class:"action-btn save-btn",onClick:A},[...w[19]||(w[19]=[d.createElementVNode("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},[d.createElementVNode("path",{d:"M19 21H5a2 2 0 01-2-2V5a2 2 0 012-2h11l5 5v11a2 2 0 01-2 2z"}),d.createElementVNode("polyline",{points:"17 21 17 13 7 13 7 21"}),d.createElementVNode("polyline",{points:"7 3 7 8 15 8"})],-1),d.createElementVNode("span",null,"保存",-1)])])])])])])):d.createCommentVNode("",!0)]),_:1})]))}}),[["__scopeId","data-v-9b4979c4"]]),z8=["src"],Wr=Be(d.defineComponent({__name:"LeitingBIM",props:{accessToken:{},cesiumUrl:{},cesiumCssUrl:{},methods:{},viewerOptions:{},treeProps:{},showTree:{type:Boolean,default:!0},showMenu:{type:Boolean,default:!1},playerUrl:{default:"https://leiting.chenxisoft.com/resource/person/person.glb"},playerModelName:{default:"Person"},playerModelId:{default:"player_111"},playerScale:{default:.0032},tiandituToken:{default:"c25f14fb6bd4397cf8fe45144ff768d6"},globe:{type:Boolean,default:void 0},terrain:{type:Boolean,default:void 0},depthTest:{type:Boolean,default:void 0},mapProvider:{},tiandituLayerType:{},tiandituShowLabel:{type:Boolean,default:void 0},arcgisUrl:{},teleportTarget:{},shadows:{type:Boolean,default:void 0},environmentMap:{type:Boolean,default:void 0},ambientOcclusion:{type:Boolean,default:void 0},time:{},brightness:{},backgroundColor:{},collision:{type:Boolean,default:void 0},mouseHabit:{},mode:{default:"3d"},mountAll3Dtiles:{},mountAllCad:{},saveRegion:{},saveCadRegion:{},saveCadCalibration:{},selectionChange:{},searchComponent:{}},emits:["register","init","ready"],setup(i,{expose:e,emit:t}){const n=d.ref(),s=d.ref(),o=d.getCurrentInstance(),r=d.ref(!1),a=d.ref(""),l=d.ref({}),c=d.ref("3d"),{isMobile:h}=Fr(),u=i,p={title:"构件树",treeData:[]},f=d.ref(!1),m=d.ref(!1),y=d.ref(!1),g=d.ref(!1),A=d.ref(!1),v=d.ref(!1),w=d.ref(!1),C=d.ref(!1),S=d.ref(!1),I=d.ref(!1),x=d.ref(!1),M=d.ref(null),{visible:L,position:b,items:B,show:R,hide:O}=Mm(),N=d.ref([]),D=j=>{N.value.push(j)},E=j=>{N.value=N.value.filter(Y=>Y.id!==j)},T=d.ref([]),P=d.ref(""),F=d.ref(null),V=d.ref([]),G=d.reactive({tree:!1,section:!1,roam:!1,info:!1,adjustModel:!1,setting:!1,cadLayer:!1,cadPosition:!1,gisCadPosition:!1,annotation:!1}),k=(j,Y)=>{j==="componentTree"&&(j="tree"),j==="componentInfo"&&(j="info"),j in G&&(G[j]=Y)},_=d.shallowRef({});d.provide("leitingMethods",_);const U=d.ref(u.showMenu),H=d.ref([]);d.watch(()=>u.showMenu,j=>{U.value=j},{immediate:!0}),d.watch(()=>u.mode,j=>{j&&_.value?.set2d&&_.value.set2d(j==="2d")});const q=d.ref("dark");d.provide("leiting-theme",q);const X=d.ref(u.teleportTarget);d.watch(()=>u.teleportTarget,j=>{X.value=j});const de=d.ref([]),fe=d.computed(()=>{const j=[];return f.value&&(j.push("tree"),j.push("componentTree")),m.value&&j.push("section"),y.value&&j.push("roam"),g.value&&(j.push("info"),j.push("componentInfo")),A.value&&j.push("adjust"),v.value&&j.push("setting"),w.value&&j.push("cadLayer"),C.value&&j.push("cadPosition"),S.value&&j.push("gisCadPosition"),I.value&&j.push("annotation"),x.value&&(j.push("measure"),j.push("measurement")),j.push(...de.value),j}),me=d.ref(null),be=(j,Y)=>{j==="componentTree"||j==="tree"?f.value=Y:j==="section"?m.value=Y:j==="roam"?y.value=Y:j==="componentInfo"||j==="info"?g.value=Y:j==="homeView"?_.value?.is2dMode?.()?_.value?.flyToTopView?.({}):_.value?.getBIMmodelId()?_.value?.flyToTileset?.({}):_.value?.getCadModelId()&&_.value?.flyToTopView?.({}):j==="adjustModel"?(A.value=Y,Y&&me.value&&me.value.setModelType("BIM")):j==="osgbAdjust"?(A.value=Y,Y&&me.value&&me.value.setModelType("OSGB")):j==="setting"?v.value=Y:j==="cadLayer"?w.value=Y:j==="cadPosition"?C.value=Y:j==="gisCadPosition"?S.value=Y:j==="annotation"?I.value=Y:j==="measurement"?x.value=Y:Y?de.value.includes(j)||de.value.push(j):de.value=de.value.filter(te=>te!==j)},_e=j=>{const Y=j.key||j.ID;if(!Y)return;if(Y==="homeView"||Y==="home"){be(Y,!0);return}if(Y==="measurement"){M.value="distance",x.value=!0;return}const te=!fe.value.includes(j.ID);be(Y,te)},Je=j=>{const Y=j.sub;if(!Y)return;const te=Y.parentKey||j.parent?.key;te==="measurement"?(M.value=Y.id.replace("measure-",""),x.value=!0):te==="section"&&(m.value=!0)};d.watch(f,async j=>{if(j&&_.value?.loadTreeForModel&&_.value?.getMapTileset){const Y=_.value.getMapTileset(),te=Object.values(Y).map(async ze=>{if(ze.leiting&&ze.leiting.model?.treeUrl){const It=ze.leiting.model.modelId;try{ze.leiting?.node?.batchIdEIDInfos||await _.value.loadNodeDetailsForModel(It);const $t=await _.value.loadTreeForModel(It);$t&&(Array.isArray($t)?$t:[$t]).forEach(Yi=>{Yi&&!V.value.find(zd=>zd.id===Yi.id)&&(Yi.modelId=It,V.value=[...V.value,Yi])})}catch($t){console.warn(`Failed to lazy load tree for ${It}`,$t)}}});await Promise.all(te)}});const lt=()=>{_.value&&(_.value.getDxfModels&&(T.value=_.value.getDxfModels()||[]),_.value.getCadModelId&&(P.value=_.value.getCadModelId()||""))};let ct;d.watch(w,j=>{j&<()}),d.watch(C,j=>{j&&(lt(),F.value&&T.value.length&&F.value.addGltfOr3dTilesModelList(T.value))});const _t=t,vt=j=>{_.value&&_.value.saveCadCalibration&&_.value.saveCadCalibration(j),_.value&&_.value.saveCadRegion&&_.value.saveCadRegion(j)};return d.onMounted(async()=>{if(s.value&&pe.setContainer(s.value),!!n.value)try{const j={...bn,cesiumUrl:u.cesiumUrl||bn.cesiumUrl,cesiumCssUrl:u.cesiumCssUrl||bn.cesiumCssUrl,accessToken:u.accessToken||Kd()||bn.accessToken};await Ua(j),r.value=!0,ct=async(te={},ze)=>{if(n.value){const{showMenu:It,showTree:$t,globe:yn,terrain:Yi,depthTest:zd,mapProvider:nU,tiandituLayerType:sU,tiandituShowLabel:oU,arcgisUrl:rU,shadows:aU,environmentMap:lU,ambientOcclusion:cU,time:dU,brightness:hU,backgroundColor:uU,collision:fU,mouseHabit:pU,heightBasedZoom:mU,mode:sy,...ci}=te||{},gU=u.showMenu!==void 0?u.showMenu:It!==void 0?It:!0;U.value=gU;const ft=(ne,He,jt)=>ne!==void 0?ne:He!==void 0?He:jt,oy=ft(u.globe,yn,!1),ry=ft(u.terrain,Yi,!1),ay=ft(u.depthTest,zd,!1),ly=ft(u.mapProvider,nU,"tianditu"),cy=ft(u.tiandituLayerType,sU,"img_w"),dy=ft(u.tiandituShowLabel,oU,!1),hy=ft(u.arcgisUrl,rU,"https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"),uy=ft(u.shadows,aU,!1),fy=ft(u.environmentMap,lU,!1),py=ft(u.ambientOcclusion,cU,!1),my=ft(u.time,dU,void 0),gy=ft(u.brightness,hU,1),Na=u.mode||sy||"3d";console.log("LeitingBIM Mode:",Na,"Props:",u.mode,"Options:",sy),c.value=Na;const yU=Na==="2d"?"#000000":"linear-gradient(0deg, rgb(238, 247, 255) 0%, rgb(178, 218, 244) 70%, rgb(141, 190, 221) 100%)",yy=ft(u.backgroundColor,uU,yU),Ay=ft(u.collision,fU,!1),vy=ft(u.mouseHabit,pU,0),by=ft(u.heightBasedZoom,mU,!1);l.value={globe:oy,terrain:ry,depthTest:ay,mapProvider:ly,tiandituLayerType:cy,tiandituShowLabel:dy,arcgisUrl:hy,shadows:uy,environmentMap:fy,ambientOcclusion:py,time:my,brightness:gy,backgroundColor:yy,collision:Ay,mouseHabit:vy,heightBasedZoom:by,useBrowserRecommendedResolution:!0};const No=wB({container:n.value,appContext:o?.appContext,methods:{..._.value,handleMenuAction:be,setCardFullHeight:k,onLoadingStatus:ne=>{ne?pe.loading(ne,"",s.value):pe.close()},...ci,tilesLoad3dTiles:async ne=>{let He=ne.leiting?.tree;const jt=ne.leiting?.model?.modelId;if(!He&&f.value&&_.value?.loadTreeForModel)try{He=await _.value.loadTreeForModel(jt)}catch(Ro){console.warn("Failed to lazy load tree",Ro)}He&&(Array.isArray(He)?He:[He]).forEach(vn=>{vn&&!V.value.find(Cy=>Cy.id===vn.id)&&(vn.modelId=jt,V.value=[...V.value,vn])});const{brightness:Hd,contrast:Yd,saturation:wi}=No.methods.getConfigure();No.methods.setModelColorAdjustment({brightness:Hd,contrast:Yd,saturation:wi}),ci.tilesLoad3dTiles?.(ne)},mountAll3Dtiles:ne=>{u.mountAll3Dtiles&&u.mountAll3Dtiles(ne),ci.mountAll3Dtiles?.(ne)},updateModels:ne=>{if(Array.isArray(ne))if(ne.length===0)V.value=[];else{const He=ne.map(jt=>jt.modelId);V.value=V.value.filter(jt=>He.includes(jt.modelId))}},mountAllCad:ne=>{if(No.methods.setModelBrightness){const He=u.brightness!==void 0?u.brightness:l.value.brightness;He!==void 0&&No.methods.setModelBrightness(He)}u.mountAllCad&&u.mountAllCad(ne),ci.mountAllCad?.(ne)},saveRegion:ne=>{u.saveRegion&&u.saveRegion(ne),ci.saveRegion?.(ne)},saveCadRegion:ne=>{u.saveCadRegion&&u.saveCadRegion(ne),ci.saveCadRegion?.(ne)},saveCadCalibration:ne=>{u.saveCadCalibration&&u.saveCadCalibration(ne),ci.saveCadCalibration?.(ne)},selectionChange:ne=>{u.selectionChange&&u.selectionChange(ne),ci.selectionChange?.(ne)},onSearchComponent:ne=>{u.searchComponent&&u.searchComponent(ne),ci.searchComponent?.(ne)}},viewerOptions:u.viewerOptions,options:{...ci,mode:Na,playerUrl:u.playerUrl,playerModelName:u.playerModelName,playerModelId:u.playerModelId,playerScale:u.playerScale,globe:oy,terrain:ry,depthTest:ay,mapProvider:ly,tiandituLayerType:cy,tiandituShowLabel:dy,tiandituToken:u.tiandituToken,arcgisUrl:hy,shadows:uy,environmentMap:fy,ambientOcclusion:py,time:my,brightness:gy,backgroundColor:yy,collision:Ay,mouseHabit:vy,heightBasedZoom:by},callbacks:{onLoading:ne=>ne?pe.loading(ne,"",s.value):pe.close(),onSuccess:ne=>pe.success(ne,"",void 0,s.value),onError:ne=>pe.error(ne,"",void 0,s.value)}}),{Cesium:An,viewer:gs,methods:La,menuEvents:Lo}=No,xe=La;Lo.on("showMenu",ne=>{U.value=ne}),Lo.on("insertMenu",ne=>{H.value=[...H.value,...ne]}),Lo.on("setMenuActive",(ne,He)=>{be(ne,He)}),_.value=xe,ze&&(ze.value=xe),Lo.on("setMode",ne=>{c.value=ne}),Lo.on("deleteAllModels",()=>{V.value=[]}),new An.ScreenSpaceEventHandler(gs.scene.canvas).setInputAction(async ne=>{if(O(),c.value==="2d")return;const He=gs.scene.pick(ne.position),jt=gs.container.getBoundingClientRect(),Hd=jt.left+ne.position.x,Yd=jt.top+ne.position.y,wi=[];if(An.defined(He)&&He instanceof An.Cesium3DTileFeature){const Ro=xe.baseCompt.getFeatureId(He),vn=ks(He.tileset);xe.baseCompt.hasSelectedFeaturesMap[vn]?.some(Fo=>Fo.batchId===Ro&&Fo.rank===0)||(await xe.baseCompt.clearSelection(),await xe.baseCompt.toggleMultiSelect(vn,Ro,xe.baseCompt.selectedColor)),wi.push({id:"details",label:"构件详情",action:()=>{g.value=!0}}),wi.push({id:"hide",label:"隐藏选中构件",action:async()=>{const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,show:!1}));xe.baseCompt.setComponentVisibility(Oo)}}),wi.push({id:"translucent",label:"半透明选中构件",action:async()=>{const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,rgba:{...Ci.rgba,a:.3}}));await xe.baseCompt.setSelectColorUserModelCpt(Oo,{rank:0})}}),wi.push({id:"isolate",label:"隔离选中构件",divided:!0,action:async()=>{await xe.baseCompt.loadAllNodeDetailsForModel();const Oo=(await xe.baseCompt.getSelected()).map(Ci=>({elementId:Ci.elementId,modelId:Ci.modelId,show:!0}));xe.isolateComponents(Oo)}})}wi.push({id:"showAll",label:"显示所有",action:async()=>{xe.baseCompt.setAllComponentsVisibility(!0),await xe.baseCompt.clearSelection()}}),wi.push(...N.value),R({x:Hd,y:Yd},wi)},An.ScreenSpaceEventType.RIGHT_CLICK),xe.addContextMenuItems=D,xe.insertContextMenu=xe.addContextMenuItems,xe.removeContextMenuItems=E,xe.deleteContextMenu=xe.removeContextMenuItems,xe.closeContextMenu=O,xe.hideContextMenu=xe.closeContextMenu,xe.onSetTeleportTarget=ne=>{X.value=ne},await d.nextTick();const wy=te?.onLoaded||te?.onloaded;wy&&wy({Cesium:An,viewer:gs,methods:La}),_t("init",{Cesium:An,viewer:gs,methods:La}),_t("ready",{Cesium:An,viewer:gs,methods:La})}};let Y=!1;_t("register",(te,ze)=>{Y=!0,ct(te,ze)}),Y||setTimeout(()=>{_.value.getViewer||ct()},0)}catch(j){a.value="Failed to load Cesium: "+(j.message||j),console.error(j)}}),d.onUnmounted(()=>{pe.setContainer(null)}),e({initMap:()=>_.value,initializeViewer:(j,Y)=>ct(j,Y)}),(j,Y)=>(d.openBlock(),d.createElementBlock("div",{class:d.normalizeClass(["leiting-bim-container",[`theme-${q.value}`]]),onContextmenu:Y[29]||(Y[29]=d.withModifiers(()=>{},["prevent","stop"]))},[!r.value&&!a.value?(d.openBlock(),d.createBlock(d.unref(oe.Spin),{key:0,class:"loading",size:"large",tip:"加载基础组件中..."})):d.createCommentVNode("",!0),a.value?(d.openBlock(),d.createBlock(d.unref(oe.Alert),{key:1,class:"error",type:"error",message:a.value,"show-icon":""},null,8,["message"])):d.createCommentVNode("",!0),d.createElementVNode("div",{ref_key:"containerRef",ref:n,class:"cesium-viewer"},[d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(ao,{key:0,visible:U.value,"active-ids":fe.value,"custom-items":H.value,onAction:be,"is-2d":c.value==="2d"},null,8,["visible","active-ids","custom-items","is-2d"])),d.unref(h)&&!y.value&&!x.value?(d.openBlock(),d.createBlock(Tm,{key:1,"active-ids":fe.value,"is-2d":c.value==="2d",onItemClick:_e,onSubItemClick:Je},null,8,["active-ids","is-2d"])):d.createCommentVNode("",!0),d.unref(h)&&i.showTree!==!1&&!y.value&&c.value!=="2d"?(d.openBlock(),d.createElementBlock("button",{key:2,class:d.normalizeClass(["mobile-float-tree-btn",{active:f.value}]),onClick:Y[0]||(Y[0]=te=>f.value=!f.value)},[d.createElementVNode("img",{src:d.unref(Gr),class:"mobile-float-tree-icon",alt:"目录树"},null,8,z8)],2)):d.createCommentVNode("",!0),(d.openBlock(),d.createBlock(d.Teleport,{to:X.value||"body",disabled:!X.value},[d.createElementVNode("div",{ref_key:"uiOverlayRef",ref:s,class:"leiting-ui-overlay"},[d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(ho,{key:0,visible:g.value,"full-height":G.info,"onUpdate:visible":Y[1]||(Y[1]=te=>g.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(Nm,{key:1,visible:g.value,"onUpdate:visible":Y[2]||(Y[2]=te=>g.value=te),onClose:Y[3]||(Y[3]=()=>{g.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.createVNode(uo,{ref_key:"LeitingPositionRef",ref:me,visible:A.value,"full-height":G.adjustModel,"onUpdate:visible":Y[4]||(Y[4]=te=>A.value=te)},null,8,["visible","full-height"]),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(fo,{key:2,visible:v.value,"full-height":G.setting,"tianditu-token":u.tiandituToken,"initial-config":l.value,"onUpdate:visible":Y[5]||(Y[5]=te=>v.value=te)},null,8,["visible","full-height","tianditu-token","initial-config"])),d.unref(h)?(d.openBlock(),d.createBlock(_m,{key:3,visible:v.value,"onUpdate:visible":Y[6]||(Y[6]=te=>v.value=te),onClose:Y[7]||(Y[7]=()=>{v.value=!1,de.value=de.value.filter(te=>te!=="setting")})},null,8,["visible"])):d.createCommentVNode("",!0),i.showTree!==!1&&!d.unref(h)?(d.openBlock(),d.createBlock(Or,d.mergeProps({key:4},{...p,...i.treeProps},{visible:f.value,"full-height":G.tree,"tree-data":V.value.length>0?V.value:i.treeProps?.treeData||[],"onUpdate:visible":Y[8]||(Y[8]=te=>{f.value=te})}),null,16,["visible","full-height","tree-data"])):d.createCommentVNode("",!0),i.showTree!==!1&&d.unref(h)?(d.openBlock(),d.createBlock(Bm,{key:5,visible:f.value,"tree-data":V.value.length>0?V.value:i.treeProps?.treeData||[],"onUpdate:visible":Y[9]||(Y[9]=te=>{f.value=te}),onClose:Y[10]||(Y[10]=()=>{f.value=!1})},null,8,["visible","tree-data"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(cN,{key:6,visible:I.value,"onUpdate:visible":Y[11]||(Y[11]=te=>I.value=te)},null,8,["visible"])),d.unref(h)?(d.openBlock(),d.createBlock(Q8,{key:7,visible:I.value,"onUpdate:visible":Y[12]||(Y[12]=te=>I.value=te)},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(BN,{key:8,visible:x.value,"onUpdate:visible":Y[13]||(Y[13]=te=>x.value=te)},null,8,["visible"])),d.unref(h)?(d.openBlock(),d.createBlock(Pm,{key:9,visible:x.value,"default-tool":M.value,"onUpdate:visible":Y[14]||(Y[14]=te=>{x.value=te,te||(M.value=null)}),onClose:Y[15]||(Y[15]=()=>{x.value=!1,M.value=null})},null,8,["visible","default-tool"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(lo,{key:10,visible:m.value,"full-height":G.section,"onUpdate:visible":Y[16]||(Y[16]=te=>m.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(km,{key:11,visible:m.value,"onUpdate:visible":Y[17]||(Y[17]=te=>m.value=te),onClose:Y[18]||(Y[18]=()=>{m.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(co,{key:12,visible:y.value,"full-height":G.roam,"onUpdate:visible":Y[19]||(Y[19]=te=>y.value=te)},null,8,["visible","full-height"])),d.unref(h)?(d.openBlock(),d.createBlock(Dm,{key:13,visible:y.value,"onUpdate:visible":Y[20]||(Y[20]=te=>y.value=te),onClose:Y[21]||(Y[21]=()=>{y.value=!1})},null,8,["visible"])):d.createCommentVNode("",!0),d.unref(h)?d.createCommentVNode("",!0):(d.openBlock(),d.createBlock(Jk,{key:14,visible:w.value,"current-model-id":P.value,"onUpdate:visible":Y[22]||(Y[22]=te=>w.value=te),onHandleCloseCardByCadCard:Y[23]||(Y[23]=()=>{w.value=!1})},null,8,["visible","current-model-id"])),d.unref(h)?(d.openBlock(),d.createBlock(k8,{key:15,visible:w.value,"current-model-id":P.value,"onUpdate:visible":Y[24]||(Y[24]=te=>w.value=te),onHandleCloseCardByCadCard:Y[25]||(Y[25]=()=>{w.value=!1})},null,8,["visible","current-model-id"])):d.createCommentVNode("",!0),d.createVNode(YP,{ref_key:"cadPositionRef",ref:F,visible:C.value,"onUpdate:visible":Y[26]||(Y[26]=te=>C.value=te),onSave:vt},null,8,["visible"]),d.createVNode(eN,{visible:S.value,"onUpdate:visible":Y[27]||(Y[27]=te=>S.value=te)},null,8,["visible"]),d.createVNode(DN,{visible:d.unref(L),position:d.unref(b),items:d.unref(B),"onUpdate:visible":Y[28]||(Y[28]=te=>L.value=te)},null,8,["visible","position","items"]),d.renderSlot(j.$slots,"default",d.normalizeProps(d.guardReactiveProps({methods:_.value,isReady:r.value})),void 0,!0)],512)],8,["to","disabled"]))],512)],34))}}),[["__scopeId","data-v-23352a4a"]]);function H8(i,e={}){const{tapDelay:t=300,doubleTapDelay:n=300,moveThreshold:s=10}=e;let o=0,r={x:0,y:0},a=0,l=0,c=null;const h=[],u=[],p=[],f={},m=b=>{const B=b.touches[0]||b.changedTouches[0];return{x:B?.clientX??0,y:B?.clientY??0}},y=b=>{const B=m(b);o=Date.now(),r=B,a=0,p.forEach(({handler:R,delay:O})=>{c=window.setTimeout(()=>{R(b),c=null},O)})},g=b=>{const B=m(b),R=B.x-r.x,O=B.y-r.y;a=Math.sqrt(R*R+O*O),c&&a>s&&(clearTimeout(c),c=null)},A=b=>{const B=Date.now()-o,R=m(b),O=R.x-r.x,N=R.y-r.y;c&&(clearTimeout(c),c=null);const D=B<t&&a<s;if(D&&Date.now()-l<n&&a<s?(u.forEach(P=>P(b)),l=0):D&&(h.forEach(P=>P(b)),l=Date.now()),a>50){const P=Math.abs(O),F=Math.abs(N);P>F?O>0&&f.right?f.right(b):O<0&&f.left&&f.left(b):N>0&&f.down?f.down(b):N<0&&f.up&&f.up(b)}},v=b=>{h.push(b)},w=b=>{u.push(b)},C=(b,B=500)=>{p.push({handler:b,delay:B})},S=b=>{f.left=b},I=b=>{f.right=b},x=b=>{f.up=b},M=b=>{f.down=b},L=()=>{c&&(clearTimeout(c),c=null),h.length=0,u.length=0,p.length=0,Object.keys(f).forEach(b=>{delete f[b]})};return d.onMounted(()=>{const b=i.value;b&&(b.addEventListener("touchstart",y,{passive:!1}),b.addEventListener("touchmove",g,{passive:!1}),b.addEventListener("touchend",A,{passive:!1}))}),d.onUnmounted(()=>{L();const b=i.value;b&&(b.removeEventListener("touchstart",y),b.removeEventListener("touchmove",g),b.removeEventListener("touchend",A))}),{onTap:v,onDoubleTap:w,onLongPress:C,onSwipeLeft:S,onSwipeRight:I,onSwipeUp:x,onSwipeDown:M,destroy:L}}function Y8(i){const e=t=>{t.target instanceof HTMLInputElement||t.target instanceof HTMLTextAreaElement||t.target instanceof HTMLSelectElement||t.preventDefault()};return i.addEventListener("touchmove",e,{passive:!1}),()=>{i.removeEventListener("touchmove",e)}}function $8(){let i=0;const e=t=>{const n=Date.now();n-i<=300&&t.preventDefault(),i=n};return document.addEventListener("touchend",e,{passive:!1}),document.addEventListener("gesturestart",t=>t.preventDefault()),document.addEventListener("gesturechange",t=>t.preventDefault()),()=>{document.removeEventListener("touchend",e)}}function j8(i,e={}){const{delay:t=500,moveThreshold:n=10}=e,s=d.ref(!1);let o=null,r={x:0,y:0},a=!1;const l=f=>{if(f.touches.length!==1)return;f.preventDefault(),a=!0,s.value=!1;const m=f.touches[0];r={x:m?.clientX??0,y:m?.clientY??0},o=window.setTimeout(()=>{a&&(s.value=!0,i())},t)},c=f=>{if(!a||o===null)return;const m=f.touches[0],y=(m?.clientX??0)-r.x,g=(m?.clientY??0)-r.y;Math.sqrt(y*y+g*g)>n&&u()},h=()=>{a=!1,s.value=!1,o!==null&&(clearTimeout(o),o=null)},u=()=>{a=!1,s.value=!1,o!==null&&(clearTimeout(o),o=null)};return{isLongPressing:s,handlers:{onTouchStart:l,onTouchMove:c,onTouchEnd:h},start:l,end:h,cancel:u}}function W8(i,e,t={}){const{delay:n=500,moveThreshold:s=10}=t;let o=null,r={x:0,y:0};const a=h=>{if(h.touches.length!==1)return;h.preventDefault();const u=h.touches[0];r={x:u?.clientX??0,y:u?.clientY??0},o=window.setTimeout(()=>{e()},n)},l=h=>{if(o===null)return;const u=h.touches[0],p=(u?.clientX??0)-r.x,f=(u?.clientY??0)-r.y;Math.sqrt(p*p+f*f)>s&&(clearTimeout(o),o=null)},c=()=>{o!==null&&(clearTimeout(o),o=null)};return i.addEventListener("touchstart",a,{passive:!1}),i.addEventListener("touchmove",l,{passive:!1}),i.addEventListener("touchend",c),i.addEventListener("touchcancel",c),()=>{o!==null&&(clearTimeout(o),o=null),i.removeEventListener("touchstart",a),i.removeEventListener("touchmove",l),i.removeEventListener("touchend",c),i.removeEventListener("touchcancel",c)}}const q8={tapThreshold:10,doubleTapInterval:300,longPressDelay:500,panThreshold:20,pinchThreshold:.02};function K8(i={}){const e={...q8,...i},t=d.reactive({type:"none",startX:0,startY:0,currentX:0,currentY:0,deltaX:0,deltaY:0,scale:1,rotation:0,velocityX:0,velocityY:0,duration:0}),n=d.ref(!1),s=d.ref(!1),o=d.ref(!1);let r=0,a=0,l=null,c=0,h=1,u=0,p=null;const f={onTap:[],onDoubleTap:[],onLongPress:[],onPanStart:[],onPanMove:[],onPanEnd:[],onPinchStart:[],onPinchMove:[],onPinchEnd:[],onRotate:[]},m=N=>{if(N.length<2)return 0;const D=N[1].clientX-N[0].clientX,E=N[1].clientY-N[0].clientY;return Math.sqrt(D*D+E*E)},y=N=>N.length<2?0:Math.atan2(N[1].clientY-N[0].clientY,N[1].clientX-N[0].clientX)*(180/Math.PI);return{state:t,isActive:n,isPanning:s,isPinching:o,handlers:{onTouchStart:N=>{if(N.touches.length===1){const D=N.touches[0];p=D.identifier,r=Date.now(),t.startX=D.clientX,t.startY=D.clientY,t.currentX=D.clientX,t.currentY=D.clientY,t.deltaX=0,t.deltaY=0,n.value=!0,l=window.setTimeout(()=>{t.type="long-press",f.onLongPress.forEach(E=>E(N))},e.longPressDelay)}else N.touches.length===2&&(l&&(clearTimeout(l),l=null),o.value=!0,c=m(N.touches),h=1,u=y(N.touches),f.onPinchStart.forEach(D=>D(N)))},onTouchMove:N=>{if(N.touches.length===1&&p!==null){let D=null;for(let F=0;F<N.touches.length;F++)if(N.touches[F].identifier===p){D=N.touches[F];break}if(!D)return;const E=D.clientX-t.startX,T=D.clientY-t.startY;Math.sqrt(E*E+T*T)>e.panThreshold&&!s.value&&(s.value=!0,t.type="pan",l&&(clearTimeout(l),l=null),f.onPanStart.forEach(F=>F(N))),s.value&&(N.preventDefault(),t.deltaX=D.clientX-t.currentX,t.deltaY=D.clientY-t.currentY,t.currentX=D.clientX,t.currentY=D.clientY,t.velocityX=t.deltaX,t.velocityY=t.deltaY,f.onPanMove.forEach(F=>F(N)))}else if(N.touches.length===2&&o.value){N.preventDefault();const D=m(N.touches),E=y(N.touches),T=D/c;t.scale=h*T,t.rotation=E-u,f.onPinchMove.forEach(P=>P(N)),f.onRotate.forEach(P=>P(N))}},onTouchEnd:N=>{if(t.duration=Date.now()-r,l&&(clearTimeout(l),l=null),N.touches.length===0){if(s.value)t.type="pan",f.onPanEnd.forEach(D=>D(N));else if(o.value)f.onPinchEnd.forEach(D=>D(N));else if(t.type==="none"&&t.duration<300){const D=Date.now();D-a<e.doubleTapInterval?(t.type="double-tap",f.onDoubleTap.forEach(E=>E(N)),a=0):(t.type="tap",f.onTap.forEach(E=>E(N)),a=D)}s.value=!1,o.value=!1,n.value=!1,p=null,setTimeout(()=>{t.type="none",t.deltaX=0,t.deltaY=0,t.scale=1,t.rotation=0},50)}}},onTap:N=>{f.onTap.push(N)},onDoubleTap:N=>{f.onDoubleTap.push(N)},onLongPress:N=>{f.onLongPress.push(N)},onPanStart:N=>{f.onPanStart.push(N)},onPanMove:N=>{f.onPanMove.push(N)},onPanEnd:N=>{f.onPanEnd.push(N)},onPinchStart:N=>{f.onPinchStart.push(N)},onPinchMove:N=>{f.onPinchMove.push(N)},onPinchEnd:N=>{f.onPinchEnd.push(N)},onRotate:N=>{f.onRotate.push(N)}}}const qr={enableFpsLimit:!0,targetFps:30,enableResolutionScale:!0,resolutionScale:.75,enableLazyLoad:!0,lazyLoadDelay:200,enableModelLod:!0,modelQualityLevel:"medium",enablePostProcessing:!1,enableFxaa:!1,enableAmbientOcclusion:!1,enableShadows:!1,maxTextureSize:1024,enableDebounce:!0,debounceDelay:100};function X8(i={}){const e={...qr,...i};return{requestRenderMode:e.enableFpsLimit,maximumRenderTimeChange:e.enableFpsLimit?1e3/e.targetFps:void 0,scene3DOnly:!0,shouldAnimate:!0}}function J8(i={}){const e={...qr,...i};return{resolutionScale:e.enableResolutionScale?e.resolutionScale:1,targetFrameRate:e.enableFpsLimit?e.targetFps:void 0,sceneModePicker:!1,navigationHelpButton:!1,animation:!1,timeline:!1,fullscreenButton:!1,vrButton:!1,infoBox:!1,selectionIndicator:!1,shadows:e.enableShadows,skyAtmosphere:e.enablePostProcessing,fog:e.enablePostProcessing}}function Z8(i={}){const e={...qr,...i},n={low:{maximumScreenSpaceError:64,skipScreenSpaceErrorFactor:256,skipLevels:8,baseScreenSpaceError:2048},medium:{maximumScreenSpaceError:48,skipScreenSpaceErrorFactor:128,skipLevels:5,baseScreenSpaceError:1024},high:{maximumScreenSpaceError:32,skipScreenSpaceErrorFactor:64,skipLevels:3,baseScreenSpaceError:512}}[e.modelQualityLevel];return{cullWithChildrenBounds:!0,cullRequestsWhileMoving:!0,cullRequestsWhileMovingMultiplier:10,backFaceCulling:!0,colorBlendAmount:0,minimumPixelSize:128,maximumScreenSpaceError:n.maximumScreenSpaceError,skipLevelOfDetail:e.enableModelLod,baseScreenSpaceError:n.baseScreenSpaceError,skipScreenSpaceErrorFactor:n.skipScreenSpaceErrorFactor,skipLevels:n.skipLevels,immediatelyLoadDesiredLevelOfDetail:!1,loadSiblings:!1,maximumMemoryUsage:4096*5,preloadWhenHidden:!0,preferLeaves:e.enableModelLod,progressiveResolutionHeightFraction:.5,dynamicScreenSpaceErrorDensity:.002,dynamicScreenSpaceErrorFactor:4,dynamicScreenSpaceError:!0,dynamicScreenSpaceErrorHeightFalloff:.25,foveatedConeSize:0,foveatedTimeDelay:10,foveatedMinimumScreenSpaceErrorRelaxation:0}}function eR(i=30){const e=d.ref(60),t=d.ref(!1);let n=0,s=0,o=0;const r=1e3/i,a=()=>{t.value=!0,n=performance.now(),o=n,s=0},l=()=>{if(!t.value)return!0;const h=performance.now(),u=h-n;return s++,h-o>=1e3&&(e.value=Math.round(s*1e3/(h-o)),s=0,o=h),u>=r?(n=h-u%r,!0):!1},c=()=>{t.value=!1};return d.onUnmounted(()=>{c()}),{fps:e,isControlling:t,startControl:a,stopControl:c,tick:l}}function tR(i,e){let t=null;const n=((...s)=>{t!==null&&clearTimeout(t),t=window.setTimeout(()=>{i(...s),t=null},e)});return n.cancel=()=>{t!==null&&(clearTimeout(t),t=null)},n}function iR(i,e){let t=!1;return((...s)=>{t||(i(...s),t=!0,setTimeout(()=>{t=!1},e))})}function nR(i,e=200){let t=null;const n=()=>{t!==null&&clearTimeout(t),t=window.setTimeout(()=>{i(),t=null},e)},s=()=>{t!==null&&(clearTimeout(t),t=null)};return d.onUnmounted(()=>{s()}),{load:n,cancel:s}}function Lm(i){const e=d.ref(),t=d.ref(i.theme||"dark"),n=d.ref(i.menuSize||"medium");d.provide("leiting-theme",t),d.provide("leiting-menu-size",n);function s(a){d.onUnmounted(()=>{e.value=null}),a(i,e)}function o(){const a=d.unref(e);return a||console.error("未获取到leiting实例!"),a}const r=new Proxy({},{get(a,l){const c=o();if(!c)return;const h=c[l];return typeof h=="function"?h.bind(c):h},set(a,l,c){const h=o();return h?(h[l]=c,!0):!1}});return[s,r]}const sR=bn,oR={install:(i,e)=>{if(i.component("LeitingBIM",Wr),i.component("LeitingTree",Or),i.component("LeitingDraggableCard",gt),i.component("leiting-draggable-card",gt),i.component("LeitingMenu",ao),i.component("leiting-menu",ao),i.component("LeitingSection",lo),i.component("leiting-section",lo),i.component("LeitingPlayer",co),i.component("leiting-player",co),i.component("LeitingInfo",ho),i.component("leiting-info",ho),i.component("LeitingPosition",uo),i.component("leiting-position",uo),i.component("LeitingSetting",fo),i.component("leiting-setting",fo),!e)return;const t={...sR,...e};t.cesiumUrl&&Ua(t).catch(n=>{console.error("[LeitingBim] Failed to load Cesium resources:",n)}),i.config.globalProperties.$leitingBimOptions=t}};function rR(i,e){e===void 0&&(e={});var t=e.insertAt;if(!(typeof document>"u")){var n=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",t==="top"&&n.firstChild?n.insertBefore(s,n.firstChild):n.appendChild(s),s.styleSheet?s.styleSheet.cssText=i:s.appendChild(document.createTextNode(i))}}var aR="@keyframes watermark{0%{background-position:0 0}25%{background-position:100% 100%}50%{background-position:100% 0}75%{background-position:0 100%}to{background-position:0 0}}@keyframes watermark-horizontal{0%{background-position-x:0}to{background-position-x:100%}}@keyframes watermark-vertical{0%{background-position-y:0}to{background-position-y:100%}}";rR(aR);var vc=function(i,e){return vc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])},vc(i,e)};function lR(i,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");vc(i,e);function t(){this.constructor=i}i.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var Fi=function(){return Fi=Object.assign||function(e){for(var t,n=1,s=arguments.length;n<s;n++){t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},Fi.apply(this,arguments)};function pi(i,e,t,n){function s(o){return o instanceof t?o:new t(function(r){r(o)})}return new(t||(t=Promise))(function(o,r){function a(h){try{c(n.next(h))}catch(u){r(u)}}function l(h){try{c(n.throw(h))}catch(u){r(u)}}function c(h){h.done?o(h.value):s(h.value).then(a,l)}c((n=n.apply(i,e||[])).next())})}function ti(i,e){var t={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,s,o,r=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return r.next=a(0),r.throw=a(1),r.return=a(2),typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(c){return function(h){return l([c,h])}}function l(c){if(n)throw new TypeError("Generator is already executing.");for(;r&&(r=0,c[0]&&(t=0)),t;)try{if(n=1,s&&(o=c[0]&2?s.return:c[0]?s.throw||((o=s.return)&&o.call(s),0):s.next)&&!(o=o.call(s,c[1])).done)return o;switch(s=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return t.label++,{value:c[1],done:!1};case 5:t.label++,s=c[1],c=[0];continue;case 7:c=t.ops.pop(),t.trys.pop();continue;default:if(o=t.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){t=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){t.label=c[1];break}if(c[0]===6&&t.label<o[1]){t.label=o[1],o=c;break}if(o&&t.label<o[2]){t.label=o[2],t.ops.push(c);break}o[2]&&t.ops.pop(),t.trys.pop();continue}c=e.call(i,t)}catch(h){c=[6,h],s=0}finally{n=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}typeof SuppressedError=="function"&&SuppressedError;var Rm=function(i){return i.toDataURL("image/png",1)},Fm=function(i){return typeof i=="function"},Ht=function(i){return i===void 0},cR=function(i){return typeof i=="string"},Om=function(i,e,t){e===void 0&&(e={}),t===void 0&&(t="http://www.w3.org/2000/svg");var n=document.createElementNS(t,i);for(var s in e)n.setAttribute(s,e[s]);return n},dR=function(i,e,t){for(var n=[],s="",o="",r=0,a=e.length;r<a;r++){if(o=e.charAt(r),o===`
|
|
122
122
|
`){n.push(s),s="";continue}s+=o,i.measureText(s).width>t&&(n.push(s.substring(0,s.length-1)),s="",r--)}return n.push(s),n},hR=function(i,e){return pi(void 0,void 0,void 0,function(){var t,n,s,o,r,a,l,c,h;return ti(this,function(u){switch(u.label){case 0:return t=Om("svg",{xmlns:"http://www.w3.org/2000/svg"}),n=document.createElement("div"),n.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),n.style.cssText=`
|
|
123
123
|
text-align: center;
|
|
124
124
|
display: flex;
|